IVGCVSW-3170 Refactor the Strided Slice Ref workload for Float32 and
QAsymm8 types

 * RefStridedSliceWorkload is no longer a template class
 * Refactoring of the ref StridedSlice implementation
 * Added ValidateTensorQuantizationSpace function

Change-Id: Ifa182a33d79d42137731f48b995a7973c9d92152
Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com>
diff --git a/src/backends/reference/workloads/RefStridedSliceWorkload.cpp b/src/backends/reference/workloads/RefStridedSliceWorkload.cpp
index bcc3520..8bb1670 100644
--- a/src/backends/reference/workloads/RefStridedSliceWorkload.cpp
+++ b/src/backends/reference/workloads/RefStridedSliceWorkload.cpp
@@ -4,31 +4,37 @@
 //
 
 #include "RefStridedSliceWorkload.hpp"
+#include "RefWorkloadUtils.hpp"
 #include "StridedSlice.hpp"
 
-#include "RefWorkloadUtils.hpp"
-#include <ResolveType.hpp>
+#include <boost/format.hpp>
 
 namespace armnn
 {
 
-template<armnn::DataType DataType>
-void RefStridedSliceWorkload<DataType>::Execute() const
+RefStridedSliceWorkload::RefStridedSliceWorkload(const StridedSliceQueueDescriptor& descriptor,
+                                                 const WorkloadInfo& info)
+    : BaseWorkload(descriptor, info)
+{}
+
+void RefStridedSliceWorkload::Execute() const
 {
-    using T = ResolveType<DataType>;
+    ARMNN_SCOPED_PROFILING_EVENT(Compute::CpuRef, "RefStridedSliceWorkload_Execute");
 
-    ARMNN_SCOPED_PROFILING_EVENT(Compute::CpuRef, GetName() + "_Execute");
-
-    const TensorInfo& inputInfo = GetTensorInfo(m_Data.m_Inputs[0]);
+    const TensorInfo& inputInfo  = GetTensorInfo(m_Data.m_Inputs[0]);
     const TensorInfo& outputInfo = GetTensorInfo(m_Data.m_Outputs[0]);
 
-    const T* inputData = GetInputTensorData<T>(0, m_Data);
-    T* outputData = GetOutputTensorData<T>(0, m_Data);
+    DataType inputDataType  = inputInfo.GetDataType();
+    DataType outputDataType = outputInfo.GetDataType();
 
-    StridedSlice(inputInfo, outputInfo, m_Data.m_Parameters, inputData, outputData);
+    BOOST_ASSERT(inputDataType == outputDataType);
+    boost::ignore_unused(outputDataType);
+
+    StridedSlice(inputInfo,
+                 m_Data.m_Parameters,
+                 m_Data.m_Inputs[0]->Map(),
+                 m_Data.m_Outputs[0]->Map(),
+                 GetDataTypeSize(inputDataType));
 }
 
-template class RefStridedSliceWorkload<DataType::Float32>;
-template class RefStridedSliceWorkload<DataType::QuantisedAsymm8>;
-
-} //namespace armnn
+} // namespace armnn