blob: 07517f45d62793081b43262d32c773ef45e92bd3 [file] [log] [blame]
Nikhil Raj68c2c902019-09-19 11:21:11 +01001//
Teresa Charlinfbf0e5b2020-08-17 01:01:06 +01002// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
Nikhil Raj68c2c902019-09-19 11:21:11 +01003// SPDX-License-Identifier: MIT
4//
5
6#include "ArgMinMaxTestImpl.hpp"
7
Nikhil Raj68c2c902019-09-19 11:21:11 +01008
Sadik Armagana097d2a2021-11-24 15:47:28 +00009#include <DataTypeUtils.hpp>
10#include <armnnTestUtils/TensorCopyUtils.hpp>
Colm Donelan0c479742021-12-10 12:43:54 +000011#include <armnnTestUtils/WorkloadTestUtils.hpp>
Nikhil Raj68c2c902019-09-19 11:21:11 +010012
Colm Donelanc42a9872022-02-02 16:35:09 +000013#include <armnnTestUtils/TensorHelpers.hpp>
Nikhil Raj68c2c902019-09-19 11:21:11 +010014
15namespace
16{
17
18template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
19LayerTestResult<int32_t, 3> ArgMinMaxTestCommon(
20 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +010021 const armnn::IBackendInternal::IMemoryManagerSharedPtr&,
Sadik Armagan89de3b42020-08-28 10:38:53 +010022 const armnn::ITensorHandleFactory& tensorHandleFactory,
Nikhil Raj68c2c902019-09-19 11:21:11 +010023 armnn::ArgMinMaxFunction argMinMaxFunction,
24 const armnn::TensorInfo inputTensorInfo,
25 const armnn::TensorInfo outputTensorInfo,
26 const std::vector<float>& inputData,
27 const std::vector<int32_t>& outputData,
28 int axis = 3)
29{
Sadik Armagan483c8112021-06-01 09:24:52 +010030 std::vector<T> inputTensor = ConvertToDataType<ArmnnType>(inputData, inputTensorInfo);
31 std::vector<int32_t> actualOutput(outputTensorInfo.GetNumElements());
Nikhil Raj68c2c902019-09-19 11:21:11 +010032
Sadik Armagan89de3b42020-08-28 10:38:53 +010033 std::unique_ptr<armnn::ITensorHandle> inputHandle = tensorHandleFactory.CreateTensorHandle(inputTensorInfo);
34 std::unique_ptr<armnn::ITensorHandle> outputHandle = tensorHandleFactory.CreateTensorHandle(outputTensorInfo);
Nikhil Raj68c2c902019-09-19 11:21:11 +010035
36 armnn::ArgMinMaxQueueDescriptor descriptor;
37 descriptor.m_Parameters.m_Function = argMinMaxFunction;
38 descriptor.m_Parameters.m_Axis = axis;
39 armnn::WorkloadInfo info;
40
41 AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
42 AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
43
Teresa Charlin611c7fb2022-01-07 09:47:29 +000044 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateWorkload(armnn::LayerType::ArgMinMax,
45 descriptor, info);
Nikhil Raj68c2c902019-09-19 11:21:11 +010046
47 inputHandle->Allocate();
48 outputHandle->Allocate();
49
Sadik Armagan483c8112021-06-01 09:24:52 +010050 CopyDataToITensorHandle(inputHandle.get(), inputTensor.data());
Nikhil Raj68c2c902019-09-19 11:21:11 +010051
52 workload->PostAllocationConfigure();
53 workload->Execute();
54
Sadik Armagan483c8112021-06-01 09:24:52 +010055 CopyDataFromITensorHandle(actualOutput.data(), outputHandle.get());
Nikhil Raj68c2c902019-09-19 11:21:11 +010056
Sadik Armagan483c8112021-06-01 09:24:52 +010057 return LayerTestResult<int32_t, 3>(actualOutput,
58 outputData,
59 outputHandle->GetShape(),
60 outputTensorInfo.GetShape());
Nikhil Raj68c2c902019-09-19 11:21:11 +010061}
62
63} // namespace
64
65template<armnn::DataType ArmnnType, typename T>
66LayerTestResult<int32_t, 3> ArgMaxSimpleTest(
67 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +010068 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +010069 const armnn::ITensorHandleFactory& tensorHandleFactory)
Nikhil Raj68c2c902019-09-19 11:21:11 +010070{
71 const armnn::TensorShape inputShape{ 1, 1, 1, 5 };
72 const armnn::TensorShape outputShape{ 1, 1, 1 };
73
74 armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType);
75
Francis Murtagh52ec3462019-11-19 12:24:19 +000076 if (armnn::IsQuantizedType<T>())
Nikhil Raj68c2c902019-09-19 11:21:11 +010077 {
78 inputTensorInfo.SetQuantizationScale(1.0f);
79 inputTensorInfo.SetQuantizationOffset(0);
80 }
81
82 armnn::TensorInfo outputTensorInfo(outputShape, armnn::DataType::Signed32);
83
84 std::vector<float> inputValues({ 5.0f, 2.0f, 8.0f, 10.0f, 9.0f });
85 std::vector<int32_t> outputValues({ 3 });
86
Sadik Armagan43528ac2020-08-27 09:06:40 +010087 return ArgMinMaxTestCommon<ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory,
Nikhil Raj68c2c902019-09-19 11:21:11 +010088 armnn::ArgMinMaxFunction::Max,
89 inputTensorInfo, outputTensorInfo,
James Conroyd47a0642019-09-17 14:22:06 +010090 inputValues, outputValues, -1); // axis -1 === 3
Nikhil Raj68c2c902019-09-19 11:21:11 +010091}
92
93template<armnn::DataType ArmnnType, typename T>
94LayerTestResult<int32_t, 3> ArgMinSimpleTest(
95 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +010096 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +010097 const armnn::ITensorHandleFactory& tensorHandleFactory)
Nikhil Raj68c2c902019-09-19 11:21:11 +010098{
99 const armnn::TensorShape inputShape{ 1, 1, 1, 5 };
100 const armnn::TensorShape outputShape{ 1, 1, 1 };
101
102 armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType);
103
Francis Murtagh52ec3462019-11-19 12:24:19 +0000104 if (armnn::IsQuantizedType<T>())
Nikhil Raj68c2c902019-09-19 11:21:11 +0100105 {
106 inputTensorInfo.SetQuantizationScale(1.0f);
107 inputTensorInfo.SetQuantizationOffset(0);
108 }
109
110 armnn::TensorInfo outputTensorInfo(outputShape, armnn::DataType::Signed32);
111
112 std::vector<float> inputValues({ 5.0f, 2.0f, 8.0f, 10.0f, 9.0f });
113 std::vector<int32_t> outputValues({ 1 });
114
Sadik Armagan43528ac2020-08-27 09:06:40 +0100115 return ArgMinMaxTestCommon<ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory,
Nikhil Raj68c2c902019-09-19 11:21:11 +0100116 armnn::ArgMinMaxFunction::Min,
117 inputTensorInfo, outputTensorInfo,
118 inputValues, outputValues, 3);
119}
120
121template<armnn::DataType ArmnnType, typename T>
James Conroyd47a0642019-09-17 14:22:06 +0100122LayerTestResult<int32_t, 3> ArgMinChannelTest(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100123 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100124 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100125 const armnn::ITensorHandleFactory& tensorHandleFactory)
Nikhil Raj68c2c902019-09-19 11:21:11 +0100126{
127 const armnn::TensorShape inputShape{ 1, 3, 2, 4};
128 const armnn::TensorShape outputShape{ 1, 2, 4 };
129
130 armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType);
131
Francis Murtagh52ec3462019-11-19 12:24:19 +0000132 if (armnn::IsQuantizedType<T>())
Nikhil Raj68c2c902019-09-19 11:21:11 +0100133 {
134 inputTensorInfo.SetQuantizationScale(1.0f);
135 inputTensorInfo.SetQuantizationOffset(0);
136 }
137
138 armnn::TensorInfo outputTensorInfo(outputShape, armnn::DataType::Signed32);
139
James Conroyd47a0642019-09-17 14:22:06 +0100140 std::vector<float> inputValues({ 1.0f, 2.0f, 3.0f, 4.0f,
141 5.0f, 6.0f, 7.0f, 8.0f,
142
143 10.0f, 20.0f, 30.0f, 40.0f,
144 50.0f, 60.0f, 70.0f, 80.0f,
145
146 100.0f, 200.0f, 300.0f, 400.0f,
147 500.0f, 600.0f, 700.0f, 800.0f });
148 std::vector<int32_t> outputValues({ 0, 0, 0, 0,
149 0, 0, 0, 0 });
150
Sadik Armagan43528ac2020-08-27 09:06:40 +0100151 return ArgMinMaxTestCommon<ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory,
James Conroyd47a0642019-09-17 14:22:06 +0100152 armnn::ArgMinMaxFunction::Min,
153 inputTensorInfo, outputTensorInfo,
154 inputValues, outputValues, 1);
155}
156
157template<armnn::DataType ArmnnType, typename T>
158LayerTestResult<int32_t, 3> ArgMaxChannelTest(
159 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100160 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100161 const armnn::ITensorHandleFactory& tensorHandleFactory)
James Conroyd47a0642019-09-17 14:22:06 +0100162{
163 const armnn::TensorShape inputShape{ 1, 3, 2, 4};
164 const armnn::TensorShape outputShape{ 1, 2, 4 };
165
166 armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType);
167
Francis Murtagh52ec3462019-11-19 12:24:19 +0000168 if (armnn::IsQuantizedType<T>())
James Conroyd47a0642019-09-17 14:22:06 +0100169 {
170 inputTensorInfo.SetQuantizationScale(1.0f);
171 inputTensorInfo.SetQuantizationOffset(0);
172 }
173
174 armnn::TensorInfo outputTensorInfo(outputShape, armnn::DataType::Signed32);
175
176 std::vector<float> inputValues({ 1.0f, 2.0f, 3.0f, 4.0f,
177 5.0f, 6.0f, 7.0f, 8.0f,
Nikhil Raj68c2c902019-09-19 11:21:11 +0100178
179 10.0f, 20.0f, 30.0f, 40.0f,
180 50.0f, 60.0f, 70.0f, 80.0f,
181
James Conroyd47a0642019-09-17 14:22:06 +0100182 100.0f, 200.0f, 300.0f, 400.0f,
183 500.0f, 600.0f, 700.0f, 800.0f });
Nikhil Raj68c2c902019-09-19 11:21:11 +0100184 std::vector<int32_t> outputValues({ 2, 2, 2, 2,
185 2, 2, 2, 2 });
186
Sadik Armagan43528ac2020-08-27 09:06:40 +0100187 return ArgMinMaxTestCommon<ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory,
Nikhil Raj68c2c902019-09-19 11:21:11 +0100188 armnn::ArgMinMaxFunction::Max,
189 inputTensorInfo, outputTensorInfo,
190 inputValues, outputValues, 1);
191}
192
James Conroyd47a0642019-09-17 14:22:06 +0100193template<armnn::DataType ArmnnType, typename T>
194LayerTestResult<int32_t, 3> ArgMaxHeightTest(
195 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100196 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100197 const armnn::ITensorHandleFactory& tensorHandleFactory)
James Conroyd47a0642019-09-17 14:22:06 +0100198{
199 const armnn::TensorShape inputShape{ 1, 3, 2, 4};
James Conroyc8724c72019-10-08 15:41:34 +0100200 const armnn::TensorShape outputShape{ 1, 3, 4 };
James Conroyd47a0642019-09-17 14:22:06 +0100201
202 armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType);
203 armnn::TensorInfo outputTensorInfo(outputShape, armnn::DataType::Signed32);
204
Francis Murtagh52ec3462019-11-19 12:24:19 +0000205 if (armnn::IsQuantizedType<T>())
206 {
207 inputTensorInfo.SetQuantizationScale(1.0f);
208 inputTensorInfo.SetQuantizationOffset(0);
209 }
210
James Conroyd47a0642019-09-17 14:22:06 +0100211 std::vector<float> inputValues({ 1.0f, 2.0f, 3.0f, 4.0f,
212 5.0f, 6.0f, 7.0f, 8.0f,
213
214 10.0f, 20.0f, 30.0f, 40.0f,
215 50.0f, 60.0f, 70.0f, 80.0f,
216
217 100.0f, 200.0f, 300.0f, 400.0f,
218 500.0f, 600.0f, 700.0f, 800.0f });
219 std::vector<int32_t> outputValues({ 1, 1, 1, 1,
220 1, 1, 1, 1,
221 1, 1, 1, 1 });
222
Sadik Armagan43528ac2020-08-27 09:06:40 +0100223 return ArgMinMaxTestCommon<ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory,
James Conroyd47a0642019-09-17 14:22:06 +0100224 armnn::ArgMinMaxFunction::Max,
225 inputTensorInfo, outputTensorInfo,
226 inputValues, outputValues, 2);
227}
228
229template<armnn::DataType ArmnnType, typename T>
230LayerTestResult<int32_t, 3> ArgMinWidthTest(
231 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100232 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100233 const armnn::ITensorHandleFactory& tensorHandleFactory)
James Conroyd47a0642019-09-17 14:22:06 +0100234{
235 const armnn::TensorShape inputShape{ 1, 3, 2, 4};
James Conroyc8724c72019-10-08 15:41:34 +0100236 const armnn::TensorShape outputShape{ 1, 3, 2 };
James Conroyd47a0642019-09-17 14:22:06 +0100237
238 armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType);
239 armnn::TensorInfo outputTensorInfo(outputShape, armnn::DataType::Signed32);
240
Francis Murtagh52ec3462019-11-19 12:24:19 +0000241 if (armnn::IsQuantizedType<T>())
242 {
243 inputTensorInfo.SetQuantizationScale(1.0f);
244 inputTensorInfo.SetQuantizationOffset(0);
245 }
246
James Conroyd47a0642019-09-17 14:22:06 +0100247 std::vector<float> inputValues({ 1.0f, 2.0f, 3.0f, 4.0f,
248 5.0f, 6.0f, 7.0f, 8.0f,
249
250 10.0f, 20.0f, 30.0f, 40.0f,
251 50.0f, 60.0f, 70.0f, 80.0f,
252
253 100.0f, 200.0f, 300.0f, 400.0f,
254 500.0f, 600.0f, 700.0f, 800.0f });
255 std::vector<int32_t> outputValues({ 0, 0,
256 0, 0,
257 0, 0 });
258
Sadik Armagan43528ac2020-08-27 09:06:40 +0100259 return ArgMinMaxTestCommon<ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory,
James Conroyd47a0642019-09-17 14:22:06 +0100260 armnn::ArgMinMaxFunction::Min,
261 inputTensorInfo, outputTensorInfo,
262 inputValues, outputValues, 3);
263}
264
Nikhil Raj68c2c902019-09-19 11:21:11 +0100265
266// Explicit template specializations
267
268template LayerTestResult<int32_t, 3>
269ArgMaxSimpleTest<armnn::DataType::Float32>(
270 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100271 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100272 const armnn::ITensorHandleFactory& tensorHandleFactory);
Nikhil Raj68c2c902019-09-19 11:21:11 +0100273
274template LayerTestResult<int32_t, 3>
Teresa Charline300b362020-05-25 10:01:03 +0100275ArgMaxSimpleTest<armnn::DataType::Float16>(
276 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100277 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100278 const armnn::ITensorHandleFactory& tensorHandleFactory);
Teresa Charline300b362020-05-25 10:01:03 +0100279
280template LayerTestResult<int32_t, 3>
Sadik Armagan303980c2020-04-17 12:45:14 +0100281ArgMaxSimpleTest<armnn::DataType::QAsymmS8>(
282 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100283 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100284 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armagan303980c2020-04-17 12:45:14 +0100285
286template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000287ArgMaxSimpleTest<armnn::DataType::QAsymmU8>(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100288 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100289 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100290 const armnn::ITensorHandleFactory& tensorHandleFactory);
Nikhil Raj68c2c902019-09-19 11:21:11 +0100291
292template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000293ArgMaxSimpleTest<armnn::DataType::QSymmS16>(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100294 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100295 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100296 const armnn::ITensorHandleFactory& tensorHandleFactory);
Nikhil Raj68c2c902019-09-19 11:21:11 +0100297
298template LayerTestResult<int32_t, 3>
Francis Murtagh1939df52019-11-13 15:21:09 +0000299ArgMaxSimpleTest<armnn::DataType::Signed32>(
300 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100301 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100302 const armnn::ITensorHandleFactory& tensorHandleFactory);
Francis Murtagh1939df52019-11-13 15:21:09 +0000303
304template LayerTestResult<int32_t, 3>
James Conroyd47a0642019-09-17 14:22:06 +0100305ArgMinSimpleTest<armnn::DataType::Float32>(
306 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100307 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100308 const armnn::ITensorHandleFactory& tensorHandleFactory);
James Conroyd47a0642019-09-17 14:22:06 +0100309
310template LayerTestResult<int32_t, 3>
Teresa Charline300b362020-05-25 10:01:03 +0100311ArgMinSimpleTest<armnn::DataType::Float16>(
312 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100313 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100314 const armnn::ITensorHandleFactory& tensorHandleFactory);
Teresa Charline300b362020-05-25 10:01:03 +0100315
316template LayerTestResult<int32_t, 3>
Sadik Armagan303980c2020-04-17 12:45:14 +0100317ArgMinSimpleTest<armnn::DataType::QAsymmS8>(
318 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100319 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100320 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armagan303980c2020-04-17 12:45:14 +0100321
322template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000323ArgMinSimpleTest<armnn::DataType::QAsymmU8>(
James Conroyd47a0642019-09-17 14:22:06 +0100324 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100325 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100326 const armnn::ITensorHandleFactory& tensorHandleFactory);
James Conroyd47a0642019-09-17 14:22:06 +0100327
328template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000329ArgMinSimpleTest<armnn::DataType::QSymmS16>(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100330 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100331 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100332 const armnn::ITensorHandleFactory& tensorHandleFactory);
Nikhil Raj68c2c902019-09-19 11:21:11 +0100333
334template LayerTestResult<int32_t, 3>
Francis Murtagh1939df52019-11-13 15:21:09 +0000335ArgMinSimpleTest<armnn::DataType::Signed32>(
336 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100337 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100338 const armnn::ITensorHandleFactory& tensorHandleFactory);
Francis Murtagh1939df52019-11-13 15:21:09 +0000339
340template LayerTestResult<int32_t, 3>
James Conroyd47a0642019-09-17 14:22:06 +0100341ArgMinChannelTest<armnn::DataType::Float32>(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100342 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100343 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100344 const armnn::ITensorHandleFactory& tensorHandleFactory);
Nikhil Raj68c2c902019-09-19 11:21:11 +0100345
346template LayerTestResult<int32_t, 3>
Teresa Charline300b362020-05-25 10:01:03 +0100347ArgMinChannelTest<armnn::DataType::Float16>(
348 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100349 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100350 const armnn::ITensorHandleFactory& tensorHandleFactory);
Teresa Charline300b362020-05-25 10:01:03 +0100351
352template LayerTestResult<int32_t, 3>
Sadik Armagan303980c2020-04-17 12:45:14 +0100353ArgMinChannelTest<armnn::DataType::QAsymmS8>(
354 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100355 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100356 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armagan303980c2020-04-17 12:45:14 +0100357
358template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000359ArgMinChannelTest<armnn::DataType::QAsymmU8>(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100360 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100361 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100362 const armnn::ITensorHandleFactory& tensorHandleFactory);
Nikhil Raj68c2c902019-09-19 11:21:11 +0100363
364template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000365ArgMinChannelTest<armnn::DataType::QSymmS16>(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100366 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100367 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100368 const armnn::ITensorHandleFactory& tensorHandleFactory);
Nikhil Raj68c2c902019-09-19 11:21:11 +0100369
370template LayerTestResult<int32_t, 3>
Francis Murtagh1939df52019-11-13 15:21:09 +0000371ArgMinChannelTest<armnn::DataType::Signed32>(
372 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100373 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100374 const armnn::ITensorHandleFactory& tensorHandleFactory);
Francis Murtagh1939df52019-11-13 15:21:09 +0000375
376template LayerTestResult<int32_t, 3>
James Conroyd47a0642019-09-17 14:22:06 +0100377ArgMaxChannelTest<armnn::DataType::Float32>(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100378 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100379 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100380 const armnn::ITensorHandleFactory& tensorHandleFactory);
Nikhil Raj68c2c902019-09-19 11:21:11 +0100381
382template LayerTestResult<int32_t, 3>
Teresa Charline300b362020-05-25 10:01:03 +0100383ArgMaxChannelTest<armnn::DataType::Float16>(
384 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100385 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100386 const armnn::ITensorHandleFactory& tensorHandleFactory);
Teresa Charline300b362020-05-25 10:01:03 +0100387
388template LayerTestResult<int32_t, 3>
Sadik Armagan303980c2020-04-17 12:45:14 +0100389ArgMaxChannelTest<armnn::DataType::QAsymmS8>(
390 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100391 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100392 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armagan303980c2020-04-17 12:45:14 +0100393
394template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000395ArgMaxChannelTest<armnn::DataType::QAsymmU8>(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100396 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100397 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100398 const armnn::ITensorHandleFactory& tensorHandleFactory);
Nikhil Raj68c2c902019-09-19 11:21:11 +0100399
400template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000401ArgMaxChannelTest<armnn::DataType::QSymmS16>(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100402 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100403 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100404 const armnn::ITensorHandleFactory& tensorHandleFactory);
James Conroyd47a0642019-09-17 14:22:06 +0100405
406template LayerTestResult<int32_t, 3>
Francis Murtagh1939df52019-11-13 15:21:09 +0000407ArgMaxChannelTest<armnn::DataType::Signed32>(
408 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100409 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100410 const armnn::ITensorHandleFactory& tensorHandleFactory);
Francis Murtagh1939df52019-11-13 15:21:09 +0000411
412template LayerTestResult<int32_t, 3>
James Conroyd47a0642019-09-17 14:22:06 +0100413ArgMaxHeightTest<armnn::DataType::Float32>(
414 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100415 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100416 const armnn::ITensorHandleFactory& tensorHandleFactory);
James Conroyd47a0642019-09-17 14:22:06 +0100417
418template LayerTestResult<int32_t, 3>
Teresa Charline300b362020-05-25 10:01:03 +0100419ArgMaxHeightTest<armnn::DataType::Float16>(
420 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100421 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100422 const armnn::ITensorHandleFactory& tensorHandleFactory);
Teresa Charline300b362020-05-25 10:01:03 +0100423
424template LayerTestResult<int32_t, 3>
Francis Murtagh1939df52019-11-13 15:21:09 +0000425ArgMaxHeightTest<armnn::DataType::Signed32>(
426 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100427 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100428 const armnn::ITensorHandleFactory& tensorHandleFactory);
Francis Murtagh1939df52019-11-13 15:21:09 +0000429
430template LayerTestResult<int32_t, 3>
Sadik Armagan303980c2020-04-17 12:45:14 +0100431ArgMaxHeightTest<armnn::DataType::QAsymmS8>(
432 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100433 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100434 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armagan303980c2020-04-17 12:45:14 +0100435
436template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000437ArgMaxHeightTest<armnn::DataType::QAsymmU8>(
Francis Murtagh52ec3462019-11-19 12:24:19 +0000438 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100439 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100440 const armnn::ITensorHandleFactory& tensorHandleFactory);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000441
442template LayerTestResult<int32_t, 3>
James Conroyd47a0642019-09-17 14:22:06 +0100443ArgMinWidthTest<armnn::DataType::Float32>(
444 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100445 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100446 const armnn::ITensorHandleFactory& tensorHandleFactory);
Francis Murtagh1939df52019-11-13 15:21:09 +0000447
448template LayerTestResult<int32_t, 3>
Teresa Charline300b362020-05-25 10:01:03 +0100449ArgMinWidthTest<armnn::DataType::Float16>(
450 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100451 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100452 const armnn::ITensorHandleFactory& tensorHandleFactory);
Teresa Charline300b362020-05-25 10:01:03 +0100453
454template LayerTestResult<int32_t, 3>
Francis Murtagh1939df52019-11-13 15:21:09 +0000455ArgMinWidthTest<armnn::DataType::Signed32>(
456 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100457 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100458 const armnn::ITensorHandleFactory& tensorHandleFactory);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000459
460template LayerTestResult<int32_t, 3>
Sadik Armagan303980c2020-04-17 12:45:14 +0100461ArgMinWidthTest<armnn::DataType::QAsymmS8>(
462 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100463 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100464 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armagan303980c2020-04-17 12:45:14 +0100465
466template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000467ArgMinWidthTest<armnn::DataType::QAsymmU8>(
Francis Murtagh52ec3462019-11-19 12:24:19 +0000468 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100469 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100470 const armnn::ITensorHandleFactory& tensorHandleFactory);