blob: 4f82b599f251c49e2dc47ccb71d1124df1507eac [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>
11#include <WorkloadTestUtils.hpp>
Nikhil Raj68c2c902019-09-19 11:21:11 +010012
Sadik Armagana097d2a2021-11-24 15:47:28 +000013#include <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
44 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateArgMinMax(descriptor, info);
45
46 inputHandle->Allocate();
47 outputHandle->Allocate();
48
Sadik Armagan483c8112021-06-01 09:24:52 +010049 CopyDataToITensorHandle(inputHandle.get(), inputTensor.data());
Nikhil Raj68c2c902019-09-19 11:21:11 +010050
51 workload->PostAllocationConfigure();
52 workload->Execute();
53
Sadik Armagan483c8112021-06-01 09:24:52 +010054 CopyDataFromITensorHandle(actualOutput.data(), outputHandle.get());
Nikhil Raj68c2c902019-09-19 11:21:11 +010055
Sadik Armagan483c8112021-06-01 09:24:52 +010056 return LayerTestResult<int32_t, 3>(actualOutput,
57 outputData,
58 outputHandle->GetShape(),
59 outputTensorInfo.GetShape());
Nikhil Raj68c2c902019-09-19 11:21:11 +010060}
61
62} // namespace
63
64template<armnn::DataType ArmnnType, typename T>
65LayerTestResult<int32_t, 3> ArgMaxSimpleTest(
66 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +010067 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +010068 const armnn::ITensorHandleFactory& tensorHandleFactory)
Nikhil Raj68c2c902019-09-19 11:21:11 +010069{
70 const armnn::TensorShape inputShape{ 1, 1, 1, 5 };
71 const armnn::TensorShape outputShape{ 1, 1, 1 };
72
73 armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType);
74
Francis Murtagh52ec3462019-11-19 12:24:19 +000075 if (armnn::IsQuantizedType<T>())
Nikhil Raj68c2c902019-09-19 11:21:11 +010076 {
77 inputTensorInfo.SetQuantizationScale(1.0f);
78 inputTensorInfo.SetQuantizationOffset(0);
79 }
80
81 armnn::TensorInfo outputTensorInfo(outputShape, armnn::DataType::Signed32);
82
83 std::vector<float> inputValues({ 5.0f, 2.0f, 8.0f, 10.0f, 9.0f });
84 std::vector<int32_t> outputValues({ 3 });
85
Sadik Armagan43528ac2020-08-27 09:06:40 +010086 return ArgMinMaxTestCommon<ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory,
Nikhil Raj68c2c902019-09-19 11:21:11 +010087 armnn::ArgMinMaxFunction::Max,
88 inputTensorInfo, outputTensorInfo,
James Conroyd47a0642019-09-17 14:22:06 +010089 inputValues, outputValues, -1); // axis -1 === 3
Nikhil Raj68c2c902019-09-19 11:21:11 +010090}
91
92template<armnn::DataType ArmnnType, typename T>
93LayerTestResult<int32_t, 3> ArgMinSimpleTest(
94 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +010095 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +010096 const armnn::ITensorHandleFactory& tensorHandleFactory)
Nikhil Raj68c2c902019-09-19 11:21:11 +010097{
98 const armnn::TensorShape inputShape{ 1, 1, 1, 5 };
99 const armnn::TensorShape outputShape{ 1, 1, 1 };
100
101 armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType);
102
Francis Murtagh52ec3462019-11-19 12:24:19 +0000103 if (armnn::IsQuantizedType<T>())
Nikhil Raj68c2c902019-09-19 11:21:11 +0100104 {
105 inputTensorInfo.SetQuantizationScale(1.0f);
106 inputTensorInfo.SetQuantizationOffset(0);
107 }
108
109 armnn::TensorInfo outputTensorInfo(outputShape, armnn::DataType::Signed32);
110
111 std::vector<float> inputValues({ 5.0f, 2.0f, 8.0f, 10.0f, 9.0f });
112 std::vector<int32_t> outputValues({ 1 });
113
Sadik Armagan43528ac2020-08-27 09:06:40 +0100114 return ArgMinMaxTestCommon<ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory,
Nikhil Raj68c2c902019-09-19 11:21:11 +0100115 armnn::ArgMinMaxFunction::Min,
116 inputTensorInfo, outputTensorInfo,
117 inputValues, outputValues, 3);
118}
119
120template<armnn::DataType ArmnnType, typename T>
James Conroyd47a0642019-09-17 14:22:06 +0100121LayerTestResult<int32_t, 3> ArgMinChannelTest(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100122 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100123 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100124 const armnn::ITensorHandleFactory& tensorHandleFactory)
Nikhil Raj68c2c902019-09-19 11:21:11 +0100125{
126 const armnn::TensorShape inputShape{ 1, 3, 2, 4};
127 const armnn::TensorShape outputShape{ 1, 2, 4 };
128
129 armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType);
130
Francis Murtagh52ec3462019-11-19 12:24:19 +0000131 if (armnn::IsQuantizedType<T>())
Nikhil Raj68c2c902019-09-19 11:21:11 +0100132 {
133 inputTensorInfo.SetQuantizationScale(1.0f);
134 inputTensorInfo.SetQuantizationOffset(0);
135 }
136
137 armnn::TensorInfo outputTensorInfo(outputShape, armnn::DataType::Signed32);
138
James Conroyd47a0642019-09-17 14:22:06 +0100139 std::vector<float> inputValues({ 1.0f, 2.0f, 3.0f, 4.0f,
140 5.0f, 6.0f, 7.0f, 8.0f,
141
142 10.0f, 20.0f, 30.0f, 40.0f,
143 50.0f, 60.0f, 70.0f, 80.0f,
144
145 100.0f, 200.0f, 300.0f, 400.0f,
146 500.0f, 600.0f, 700.0f, 800.0f });
147 std::vector<int32_t> outputValues({ 0, 0, 0, 0,
148 0, 0, 0, 0 });
149
Sadik Armagan43528ac2020-08-27 09:06:40 +0100150 return ArgMinMaxTestCommon<ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory,
James Conroyd47a0642019-09-17 14:22:06 +0100151 armnn::ArgMinMaxFunction::Min,
152 inputTensorInfo, outputTensorInfo,
153 inputValues, outputValues, 1);
154}
155
156template<armnn::DataType ArmnnType, typename T>
157LayerTestResult<int32_t, 3> ArgMaxChannelTest(
158 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100159 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100160 const armnn::ITensorHandleFactory& tensorHandleFactory)
James Conroyd47a0642019-09-17 14:22:06 +0100161{
162 const armnn::TensorShape inputShape{ 1, 3, 2, 4};
163 const armnn::TensorShape outputShape{ 1, 2, 4 };
164
165 armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType);
166
Francis Murtagh52ec3462019-11-19 12:24:19 +0000167 if (armnn::IsQuantizedType<T>())
James Conroyd47a0642019-09-17 14:22:06 +0100168 {
169 inputTensorInfo.SetQuantizationScale(1.0f);
170 inputTensorInfo.SetQuantizationOffset(0);
171 }
172
173 armnn::TensorInfo outputTensorInfo(outputShape, armnn::DataType::Signed32);
174
175 std::vector<float> inputValues({ 1.0f, 2.0f, 3.0f, 4.0f,
176 5.0f, 6.0f, 7.0f, 8.0f,
Nikhil Raj68c2c902019-09-19 11:21:11 +0100177
178 10.0f, 20.0f, 30.0f, 40.0f,
179 50.0f, 60.0f, 70.0f, 80.0f,
180
James Conroyd47a0642019-09-17 14:22:06 +0100181 100.0f, 200.0f, 300.0f, 400.0f,
182 500.0f, 600.0f, 700.0f, 800.0f });
Nikhil Raj68c2c902019-09-19 11:21:11 +0100183 std::vector<int32_t> outputValues({ 2, 2, 2, 2,
184 2, 2, 2, 2 });
185
Sadik Armagan43528ac2020-08-27 09:06:40 +0100186 return ArgMinMaxTestCommon<ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory,
Nikhil Raj68c2c902019-09-19 11:21:11 +0100187 armnn::ArgMinMaxFunction::Max,
188 inputTensorInfo, outputTensorInfo,
189 inputValues, outputValues, 1);
190}
191
James Conroyd47a0642019-09-17 14:22:06 +0100192template<armnn::DataType ArmnnType, typename T>
193LayerTestResult<int32_t, 3> ArgMaxHeightTest(
194 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100195 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100196 const armnn::ITensorHandleFactory& tensorHandleFactory)
James Conroyd47a0642019-09-17 14:22:06 +0100197{
198 const armnn::TensorShape inputShape{ 1, 3, 2, 4};
James Conroyc8724c72019-10-08 15:41:34 +0100199 const armnn::TensorShape outputShape{ 1, 3, 4 };
James Conroyd47a0642019-09-17 14:22:06 +0100200
201 armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType);
202 armnn::TensorInfo outputTensorInfo(outputShape, armnn::DataType::Signed32);
203
Francis Murtagh52ec3462019-11-19 12:24:19 +0000204 if (armnn::IsQuantizedType<T>())
205 {
206 inputTensorInfo.SetQuantizationScale(1.0f);
207 inputTensorInfo.SetQuantizationOffset(0);
208 }
209
James Conroyd47a0642019-09-17 14:22:06 +0100210 std::vector<float> inputValues({ 1.0f, 2.0f, 3.0f, 4.0f,
211 5.0f, 6.0f, 7.0f, 8.0f,
212
213 10.0f, 20.0f, 30.0f, 40.0f,
214 50.0f, 60.0f, 70.0f, 80.0f,
215
216 100.0f, 200.0f, 300.0f, 400.0f,
217 500.0f, 600.0f, 700.0f, 800.0f });
218 std::vector<int32_t> outputValues({ 1, 1, 1, 1,
219 1, 1, 1, 1,
220 1, 1, 1, 1 });
221
Sadik Armagan43528ac2020-08-27 09:06:40 +0100222 return ArgMinMaxTestCommon<ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory,
James Conroyd47a0642019-09-17 14:22:06 +0100223 armnn::ArgMinMaxFunction::Max,
224 inputTensorInfo, outputTensorInfo,
225 inputValues, outputValues, 2);
226}
227
228template<armnn::DataType ArmnnType, typename T>
229LayerTestResult<int32_t, 3> ArgMinWidthTest(
230 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100231 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100232 const armnn::ITensorHandleFactory& tensorHandleFactory)
James Conroyd47a0642019-09-17 14:22:06 +0100233{
234 const armnn::TensorShape inputShape{ 1, 3, 2, 4};
James Conroyc8724c72019-10-08 15:41:34 +0100235 const armnn::TensorShape outputShape{ 1, 3, 2 };
James Conroyd47a0642019-09-17 14:22:06 +0100236
237 armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType);
238 armnn::TensorInfo outputTensorInfo(outputShape, armnn::DataType::Signed32);
239
Francis Murtagh52ec3462019-11-19 12:24:19 +0000240 if (armnn::IsQuantizedType<T>())
241 {
242 inputTensorInfo.SetQuantizationScale(1.0f);
243 inputTensorInfo.SetQuantizationOffset(0);
244 }
245
James Conroyd47a0642019-09-17 14:22:06 +0100246 std::vector<float> inputValues({ 1.0f, 2.0f, 3.0f, 4.0f,
247 5.0f, 6.0f, 7.0f, 8.0f,
248
249 10.0f, 20.0f, 30.0f, 40.0f,
250 50.0f, 60.0f, 70.0f, 80.0f,
251
252 100.0f, 200.0f, 300.0f, 400.0f,
253 500.0f, 600.0f, 700.0f, 800.0f });
254 std::vector<int32_t> outputValues({ 0, 0,
255 0, 0,
256 0, 0 });
257
Sadik Armagan43528ac2020-08-27 09:06:40 +0100258 return ArgMinMaxTestCommon<ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory,
James Conroyd47a0642019-09-17 14:22:06 +0100259 armnn::ArgMinMaxFunction::Min,
260 inputTensorInfo, outputTensorInfo,
261 inputValues, outputValues, 3);
262}
263
Nikhil Raj68c2c902019-09-19 11:21:11 +0100264
265// Explicit template specializations
266
267template LayerTestResult<int32_t, 3>
268ArgMaxSimpleTest<armnn::DataType::Float32>(
269 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100270 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100271 const armnn::ITensorHandleFactory& tensorHandleFactory);
Nikhil Raj68c2c902019-09-19 11:21:11 +0100272
273template LayerTestResult<int32_t, 3>
Teresa Charline300b362020-05-25 10:01:03 +0100274ArgMaxSimpleTest<armnn::DataType::Float16>(
275 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100276 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100277 const armnn::ITensorHandleFactory& tensorHandleFactory);
Teresa Charline300b362020-05-25 10:01:03 +0100278
279template LayerTestResult<int32_t, 3>
Sadik Armagan303980c2020-04-17 12:45:14 +0100280ArgMaxSimpleTest<armnn::DataType::QAsymmS8>(
281 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100282 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100283 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armagan303980c2020-04-17 12:45:14 +0100284
285template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000286ArgMaxSimpleTest<armnn::DataType::QAsymmU8>(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100287 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100288 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100289 const armnn::ITensorHandleFactory& tensorHandleFactory);
Nikhil Raj68c2c902019-09-19 11:21:11 +0100290
291template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000292ArgMaxSimpleTest<armnn::DataType::QSymmS16>(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100293 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100294 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100295 const armnn::ITensorHandleFactory& tensorHandleFactory);
Nikhil Raj68c2c902019-09-19 11:21:11 +0100296
297template LayerTestResult<int32_t, 3>
Francis Murtagh1939df52019-11-13 15:21:09 +0000298ArgMaxSimpleTest<armnn::DataType::Signed32>(
299 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100300 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100301 const armnn::ITensorHandleFactory& tensorHandleFactory);
Francis Murtagh1939df52019-11-13 15:21:09 +0000302
303template LayerTestResult<int32_t, 3>
James Conroyd47a0642019-09-17 14:22:06 +0100304ArgMinSimpleTest<armnn::DataType::Float32>(
305 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100306 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100307 const armnn::ITensorHandleFactory& tensorHandleFactory);
James Conroyd47a0642019-09-17 14:22:06 +0100308
309template LayerTestResult<int32_t, 3>
Teresa Charline300b362020-05-25 10:01:03 +0100310ArgMinSimpleTest<armnn::DataType::Float16>(
311 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100312 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100313 const armnn::ITensorHandleFactory& tensorHandleFactory);
Teresa Charline300b362020-05-25 10:01:03 +0100314
315template LayerTestResult<int32_t, 3>
Sadik Armagan303980c2020-04-17 12:45:14 +0100316ArgMinSimpleTest<armnn::DataType::QAsymmS8>(
317 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100318 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100319 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armagan303980c2020-04-17 12:45:14 +0100320
321template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000322ArgMinSimpleTest<armnn::DataType::QAsymmU8>(
James Conroyd47a0642019-09-17 14:22:06 +0100323 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100324 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100325 const armnn::ITensorHandleFactory& tensorHandleFactory);
James Conroyd47a0642019-09-17 14:22:06 +0100326
327template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000328ArgMinSimpleTest<armnn::DataType::QSymmS16>(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100329 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100330 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100331 const armnn::ITensorHandleFactory& tensorHandleFactory);
Nikhil Raj68c2c902019-09-19 11:21:11 +0100332
333template LayerTestResult<int32_t, 3>
Francis Murtagh1939df52019-11-13 15:21:09 +0000334ArgMinSimpleTest<armnn::DataType::Signed32>(
335 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100336 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100337 const armnn::ITensorHandleFactory& tensorHandleFactory);
Francis Murtagh1939df52019-11-13 15:21:09 +0000338
339template LayerTestResult<int32_t, 3>
James Conroyd47a0642019-09-17 14:22:06 +0100340ArgMinChannelTest<armnn::DataType::Float32>(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100341 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100342 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100343 const armnn::ITensorHandleFactory& tensorHandleFactory);
Nikhil Raj68c2c902019-09-19 11:21:11 +0100344
345template LayerTestResult<int32_t, 3>
Teresa Charline300b362020-05-25 10:01:03 +0100346ArgMinChannelTest<armnn::DataType::Float16>(
347 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100348 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100349 const armnn::ITensorHandleFactory& tensorHandleFactory);
Teresa Charline300b362020-05-25 10:01:03 +0100350
351template LayerTestResult<int32_t, 3>
Sadik Armagan303980c2020-04-17 12:45:14 +0100352ArgMinChannelTest<armnn::DataType::QAsymmS8>(
353 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100354 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100355 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armagan303980c2020-04-17 12:45:14 +0100356
357template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000358ArgMinChannelTest<armnn::DataType::QAsymmU8>(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100359 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100360 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100361 const armnn::ITensorHandleFactory& tensorHandleFactory);
Nikhil Raj68c2c902019-09-19 11:21:11 +0100362
363template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000364ArgMinChannelTest<armnn::DataType::QSymmS16>(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100365 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100366 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100367 const armnn::ITensorHandleFactory& tensorHandleFactory);
Nikhil Raj68c2c902019-09-19 11:21:11 +0100368
369template LayerTestResult<int32_t, 3>
Francis Murtagh1939df52019-11-13 15:21:09 +0000370ArgMinChannelTest<armnn::DataType::Signed32>(
371 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100372 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100373 const armnn::ITensorHandleFactory& tensorHandleFactory);
Francis Murtagh1939df52019-11-13 15:21:09 +0000374
375template LayerTestResult<int32_t, 3>
James Conroyd47a0642019-09-17 14:22:06 +0100376ArgMaxChannelTest<armnn::DataType::Float32>(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100377 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100378 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100379 const armnn::ITensorHandleFactory& tensorHandleFactory);
Nikhil Raj68c2c902019-09-19 11:21:11 +0100380
381template LayerTestResult<int32_t, 3>
Teresa Charline300b362020-05-25 10:01:03 +0100382ArgMaxChannelTest<armnn::DataType::Float16>(
383 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100384 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100385 const armnn::ITensorHandleFactory& tensorHandleFactory);
Teresa Charline300b362020-05-25 10:01:03 +0100386
387template LayerTestResult<int32_t, 3>
Sadik Armagan303980c2020-04-17 12:45:14 +0100388ArgMaxChannelTest<armnn::DataType::QAsymmS8>(
389 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100390 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100391 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armagan303980c2020-04-17 12:45:14 +0100392
393template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000394ArgMaxChannelTest<armnn::DataType::QAsymmU8>(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100395 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100396 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100397 const armnn::ITensorHandleFactory& tensorHandleFactory);
Nikhil Raj68c2c902019-09-19 11:21:11 +0100398
399template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000400ArgMaxChannelTest<armnn::DataType::QSymmS16>(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100401 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100402 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100403 const armnn::ITensorHandleFactory& tensorHandleFactory);
James Conroyd47a0642019-09-17 14:22:06 +0100404
405template LayerTestResult<int32_t, 3>
Francis Murtagh1939df52019-11-13 15:21:09 +0000406ArgMaxChannelTest<armnn::DataType::Signed32>(
407 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100408 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100409 const armnn::ITensorHandleFactory& tensorHandleFactory);
Francis Murtagh1939df52019-11-13 15:21:09 +0000410
411template LayerTestResult<int32_t, 3>
James Conroyd47a0642019-09-17 14:22:06 +0100412ArgMaxHeightTest<armnn::DataType::Float32>(
413 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100414 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100415 const armnn::ITensorHandleFactory& tensorHandleFactory);
James Conroyd47a0642019-09-17 14:22:06 +0100416
417template LayerTestResult<int32_t, 3>
Teresa Charline300b362020-05-25 10:01:03 +0100418ArgMaxHeightTest<armnn::DataType::Float16>(
419 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100420 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100421 const armnn::ITensorHandleFactory& tensorHandleFactory);
Teresa Charline300b362020-05-25 10:01:03 +0100422
423template LayerTestResult<int32_t, 3>
Francis Murtagh1939df52019-11-13 15:21:09 +0000424ArgMaxHeightTest<armnn::DataType::Signed32>(
425 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100426 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100427 const armnn::ITensorHandleFactory& tensorHandleFactory);
Francis Murtagh1939df52019-11-13 15:21:09 +0000428
429template LayerTestResult<int32_t, 3>
Sadik Armagan303980c2020-04-17 12:45:14 +0100430ArgMaxHeightTest<armnn::DataType::QAsymmS8>(
431 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100432 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100433 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armagan303980c2020-04-17 12:45:14 +0100434
435template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000436ArgMaxHeightTest<armnn::DataType::QAsymmU8>(
Francis Murtagh52ec3462019-11-19 12:24:19 +0000437 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100438 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100439 const armnn::ITensorHandleFactory& tensorHandleFactory);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000440
441template LayerTestResult<int32_t, 3>
James Conroyd47a0642019-09-17 14:22:06 +0100442ArgMinWidthTest<armnn::DataType::Float32>(
443 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100444 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100445 const armnn::ITensorHandleFactory& tensorHandleFactory);
Francis Murtagh1939df52019-11-13 15:21:09 +0000446
447template LayerTestResult<int32_t, 3>
Teresa Charline300b362020-05-25 10:01:03 +0100448ArgMinWidthTest<armnn::DataType::Float16>(
449 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100450 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100451 const armnn::ITensorHandleFactory& tensorHandleFactory);
Teresa Charline300b362020-05-25 10:01:03 +0100452
453template LayerTestResult<int32_t, 3>
Francis Murtagh1939df52019-11-13 15:21:09 +0000454ArgMinWidthTest<armnn::DataType::Signed32>(
455 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100456 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100457 const armnn::ITensorHandleFactory& tensorHandleFactory);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000458
459template LayerTestResult<int32_t, 3>
Sadik Armagan303980c2020-04-17 12:45:14 +0100460ArgMinWidthTest<armnn::DataType::QAsymmS8>(
461 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100462 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100463 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armagan303980c2020-04-17 12:45:14 +0100464
465template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000466ArgMinWidthTest<armnn::DataType::QAsymmU8>(
Francis Murtagh52ec3462019-11-19 12:24:19 +0000467 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan43528ac2020-08-27 09:06:40 +0100468 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100469 const armnn::ITensorHandleFactory& tensorHandleFactory);