IVGCVSW-2861 Refactor the Reference Elementwise workload
* Refactor Reference Comparison workload
* Removed templating based on the DataType
* Implemented BaseIterator to do decode/encode
Change-Id: I18f299f47ee23772f90152c1146b42f07465e105
Signed-off-by: Sadik Armagan <sadik.armagan@arm.com>
Signed-off-by: Kevin May <kevin.may@arm.com>
diff --git a/src/backends/reference/workloads/RefElementwiseWorkload.hpp b/src/backends/reference/workloads/RefElementwiseWorkload.hpp
index 3719049..81af196 100644
--- a/src/backends/reference/workloads/RefElementwiseWorkload.hpp
+++ b/src/backends/reference/workloads/RefElementwiseWorkload.hpp
@@ -15,90 +15,43 @@
namespace armnn
{
-template <typename Functor,
- typename armnn::DataType DataType,
- typename ParentDescriptor,
- typename armnn::StringMapping::Id DebugString>
-class RefElementwiseWorkload
- : public TypedWorkload<ParentDescriptor, DataType>
+template <typename Functor, typename ParentDescriptor, typename armnn::StringMapping::Id DebugString>
+class RefElementwiseWorkload : public BaseWorkload<ParentDescriptor>
{
public:
-
- using TypedWorkload<ParentDescriptor, DataType>::m_Data;
- using TypedWorkload<ParentDescriptor, DataType>::TypedWorkload;
+ using BaseWorkload<ParentDescriptor>::m_Data;
+ using BaseWorkload<ParentDescriptor>::BaseWorkload;
void Execute() const override;
};
-using RefAdditionFloat32Workload =
+using RefAdditionWorkload =
RefElementwiseWorkload<std::plus<float>,
- DataType::Float32,
AdditionQueueDescriptor,
StringMapping::RefAdditionWorkload_Execute>;
-using RefAdditionUint8Workload =
- RefElementwiseWorkload<std::plus<float>,
- DataType::QuantisedAsymm8,
- AdditionQueueDescriptor,
- StringMapping::RefAdditionWorkload_Execute>;
-
-using RefSubtractionFloat32Workload =
+using RefSubtractionWorkload =
RefElementwiseWorkload<std::minus<float>,
- DataType::Float32,
SubtractionQueueDescriptor,
StringMapping::RefSubtractionWorkload_Execute>;
-using RefSubtractionUint8Workload =
- RefElementwiseWorkload<std::minus<float>,
- DataType::QuantisedAsymm8,
- SubtractionQueueDescriptor,
- StringMapping::RefSubtractionWorkload_Execute>;
-
-using RefMultiplicationFloat32Workload =
+using RefMultiplicationWorkload =
RefElementwiseWorkload<std::multiplies<float>,
- DataType::Float32,
MultiplicationQueueDescriptor,
StringMapping::RefMultiplicationWorkload_Execute>;
-using RefMultiplicationUint8Workload =
- RefElementwiseWorkload<std::multiplies<float>,
- DataType::QuantisedAsymm8,
- MultiplicationQueueDescriptor,
- StringMapping::RefMultiplicationWorkload_Execute>;
-
-using RefDivisionFloat32Workload =
+using RefDivisionWorkload =
RefElementwiseWorkload<std::divides<float>,
- DataType::Float32,
DivisionQueueDescriptor,
StringMapping::RefDivisionWorkload_Execute>;
-using RefDivisionUint8Workload =
- RefElementwiseWorkload<std::divides<float>,
- DataType::QuantisedAsymm8,
- DivisionQueueDescriptor,
- StringMapping::RefDivisionWorkload_Execute>;
-
-using RefMaximumFloat32Workload =
+using RefMaximumWorkload =
RefElementwiseWorkload<armnn::maximum<float>,
- DataType::Float32,
MaximumQueueDescriptor,
StringMapping::RefMaximumWorkload_Execute>;
-using RefMaximumUint8Workload =
- RefElementwiseWorkload<armnn::maximum<float>,
- DataType::QuantisedAsymm8,
- MaximumQueueDescriptor,
- StringMapping::RefMaximumWorkload_Execute>;
-
-using RefMinimumFloat32Workload =
- RefElementwiseWorkload<minimum<float>,
- DataType::Float32,
- MinimumQueueDescriptor,
- StringMapping::RefMinimumWorkload_Execute>;
-
-using RefMinimumUint8Workload =
- RefElementwiseWorkload<minimum<float>,
- DataType::QuantisedAsymm8,
+using RefMinimumWorkload =
+ RefElementwiseWorkload<armnn::minimum<float>,
MinimumQueueDescriptor,
StringMapping::RefMinimumWorkload_Execute>;
} // armnn