aboutsummaryrefslogtreecommitdiff
path: root/src/backends/reference/workloads/RefGatherWorkload.cpp
diff options
context:
space:
mode:
authorEllen Norris-Thompson <ellen.norris-thompson@arm.com>2019-06-21 15:50:00 +0100
committerEllen Norris-Thompson <ellen.norris-thompson@arm.com>2019-06-24 11:14:48 +0100
commit6858d3fb714cc20d5fcfd814c35ed3a84dc82145 (patch)
treedb6a6651fff0dce4095be58bc155e63175abe33e /src/backends/reference/workloads/RefGatherWorkload.cpp
parent389aa70c8a24fa2faf33df5f8cd9a99b0fabe971 (diff)
downloadarmnn-6858d3fb714cc20d5fcfd814c35ed3a84dc82145.tar.gz
IVGCVSW-3247: Refactor reference Gather workload
* Refactored Gather reference workload to not use templates for different types * Added quantization values in Gather unit tests for Quantized types Signed-off-by: Ellen Norris-Thompson <ellen.norris-thompson@arm.com> Change-Id: Ibe5d655aa1c287824e45b83818c5862bda7f92b0
Diffstat (limited to 'src/backends/reference/workloads/RefGatherWorkload.cpp')
-rw-r--r--src/backends/reference/workloads/RefGatherWorkload.cpp18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/backends/reference/workloads/RefGatherWorkload.cpp b/src/backends/reference/workloads/RefGatherWorkload.cpp
index bca3f18796..8edf14c8f8 100644
--- a/src/backends/reference/workloads/RefGatherWorkload.cpp
+++ b/src/backends/reference/workloads/RefGatherWorkload.cpp
@@ -13,25 +13,23 @@
namespace armnn
{
-template <armnn::DataType DataType>
-void RefGatherWorkload<DataType>::Execute() const
+void RefGatherWorkload::Execute() const
{
- using T = ResolveType<DataType>;
-
ARMNN_SCOPED_PROFILING_EVENT(Compute::CpuRef, "RefGatherWorkload_Execute");
const TensorInfo& inputInfo0 = GetTensorInfo(m_Data.m_Inputs[0]);
const TensorInfo& inputInfo1 = GetTensorInfo(m_Data.m_Inputs[1]);
const TensorInfo& outputInfo = GetTensorInfo(m_Data.m_Outputs[0]);
- const T* paramsData = GetInputTensorData<T>(0, m_Data);
+ std::unique_ptr<Decoder<float>> decoderPtr = MakeDecoder<float>(inputInfo0, m_Data.m_Inputs[0]->Map());
+ Decoder<float>& decoder = *decoderPtr;
+
const int32_t* indicesData = GetInputTensorData<int32_t>(1, m_Data);
- T* outputData = GetOutputTensorData<T>(0, m_Data);
- Gather(inputInfo0, inputInfo1, outputInfo, paramsData, indicesData, outputData);
-}
+ std::unique_ptr<Encoder<float>> encoderPtr = MakeEncoder<float>(outputInfo, m_Data.m_Outputs[0]->Map());
+ Encoder<float>& encoder = *encoderPtr;
-template class RefGatherWorkload<DataType::Float32>;
-template class RefGatherWorkload<DataType::QuantisedAsymm8>;
+ Gather(inputInfo0, inputInfo1, outputInfo, decoder, indicesData, encoder);
+}
} //namespace armnn