Release 18.03
[platform/upstream/armnn.git] / src / armnn / backends / RefWorkloads / RefMultiplicationUint8Workload.cpp
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // See LICENSE file in the project root for full license information.
4 //
5
6 #include "RefMultiplicationUint8Workload.hpp"
7
8 #include "Multiplication.hpp"
9 #include "RefWorkloadUtils.hpp"
10
11 #include "Profiling.hpp"
12
13 #include <vector>
14
15 namespace armnn
16 {
17
18 void RefMultiplicationUint8Workload::Execute() const
19 {
20     ARMNN_SCOPED_PROFILING_EVENT(Compute::CpuRef, "RefMultiplicationUint8Workload_Execute");
21
22     const TensorInfo& inputInfo0 = GetTensorInfo(m_Data.m_Inputs[0]);
23     const TensorInfo& inputInfo1 = GetTensorInfo(m_Data.m_Inputs[1]);
24     const TensorInfo& outputInfo = GetTensorInfo(m_Data.m_Outputs[0]);
25
26     auto dequant0 = Dequantize(GetInputTensorDataU8(0, m_Data), inputInfo0);
27     auto dequant1 = Dequantize(GetInputTensorDataU8(1, m_Data), inputInfo1);
28
29     std::vector<float> results(outputInfo.GetNumElements());
30     Multiplication(
31         inputInfo0.GetShape(), inputInfo1.GetShape(), outputInfo.GetShape(),
32         dequant0.data(), dequant1.data(),results.data());
33
34    Quantize(GetOutputTensorDataU8(0, m_Data), results.data(), outputInfo);
35 }
36
37 } //namespace armnn