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