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