blob: 4d781c0490599df5513616d156b80e59557370b9 [file] [log] [blame]
Nikhil Raj68c2c902019-09-19 11:21:11 +01001//
2// Copyright © 2019 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include "ArgMinMaxTestImpl.hpp"
7
Nikhil Raj68c2c902019-09-19 11:21:11 +01008
9#include <backendsCommon/test/DataTypeUtils.hpp>
10#include <backendsCommon/test/TensorCopyUtils.hpp>
11#include <backendsCommon/test/WorkloadTestUtils.hpp>
12
13#include <test/TensorHelpers.hpp>
14
15namespace
16{
17
18template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
19LayerTestResult<int32_t, 3> ArgMinMaxTestCommon(
20 armnn::IWorkloadFactory& workloadFactory,
21 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
22 armnn::ArgMinMaxFunction argMinMaxFunction,
23 const armnn::TensorInfo inputTensorInfo,
24 const armnn::TensorInfo outputTensorInfo,
25 const std::vector<float>& inputData,
26 const std::vector<int32_t>& outputData,
27 int axis = 3)
28{
Jan Eilers8eb25602020-03-09 12:13:48 +000029 IgnoreUnused(memoryManager);
Nikhil Raj68c2c902019-09-19 11:21:11 +010030 auto inputTensor = MakeTensor<T, 4>(inputTensorInfo, ConvertToDataType<ArmnnType>(inputData, inputTensorInfo));
31
32 LayerTestResult<int32_t, 3> result(outputTensorInfo);
Nikhil Raj68c2c902019-09-19 11:21:11 +010033 result.outputExpected = MakeTensor<int32_t, 3>(outputTensorInfo, outputData);
34
35 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo);
36 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
37
38 armnn::ArgMinMaxQueueDescriptor descriptor;
39 descriptor.m_Parameters.m_Function = argMinMaxFunction;
40 descriptor.m_Parameters.m_Axis = axis;
41 armnn::WorkloadInfo info;
42
43 AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
44 AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
45
46 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateArgMinMax(descriptor, info);
47
48 inputHandle->Allocate();
49 outputHandle->Allocate();
50
51 CopyDataToITensorHandle(inputHandle.get(), &inputTensor[0][0][0][0]);
52
53 workload->PostAllocationConfigure();
54 workload->Execute();
55
56 CopyDataFromITensorHandle(&result.output[0][0][0], outputHandle.get());
57
58 return result;
Nikhil Raj68c2c902019-09-19 11:21:11 +010059}
60
61} // namespace
62
63template<armnn::DataType ArmnnType, typename T>
64LayerTestResult<int32_t, 3> ArgMaxSimpleTest(
65 armnn::IWorkloadFactory& workloadFactory,
66 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
67{
68 const armnn::TensorShape inputShape{ 1, 1, 1, 5 };
69 const armnn::TensorShape outputShape{ 1, 1, 1 };
70
71 armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType);
72
Francis Murtagh52ec3462019-11-19 12:24:19 +000073 if (armnn::IsQuantizedType<T>())
Nikhil Raj68c2c902019-09-19 11:21:11 +010074 {
75 inputTensorInfo.SetQuantizationScale(1.0f);
76 inputTensorInfo.SetQuantizationOffset(0);
77 }
78
79 armnn::TensorInfo outputTensorInfo(outputShape, armnn::DataType::Signed32);
80
81 std::vector<float> inputValues({ 5.0f, 2.0f, 8.0f, 10.0f, 9.0f });
82 std::vector<int32_t> outputValues({ 3 });
83
84 return ArgMinMaxTestCommon<ArmnnType>(workloadFactory, memoryManager,
85 armnn::ArgMinMaxFunction::Max,
86 inputTensorInfo, outputTensorInfo,
James Conroyd47a0642019-09-17 14:22:06 +010087 inputValues, outputValues, -1); // axis -1 === 3
Nikhil Raj68c2c902019-09-19 11:21:11 +010088}
89
90template<armnn::DataType ArmnnType, typename T>
91LayerTestResult<int32_t, 3> ArgMinSimpleTest(
92 armnn::IWorkloadFactory& workloadFactory,
93 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
94{
95 const armnn::TensorShape inputShape{ 1, 1, 1, 5 };
96 const armnn::TensorShape outputShape{ 1, 1, 1 };
97
98 armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType);
99
Francis Murtagh52ec3462019-11-19 12:24:19 +0000100 if (armnn::IsQuantizedType<T>())
Nikhil Raj68c2c902019-09-19 11:21:11 +0100101 {
102 inputTensorInfo.SetQuantizationScale(1.0f);
103 inputTensorInfo.SetQuantizationOffset(0);
104 }
105
106 armnn::TensorInfo outputTensorInfo(outputShape, armnn::DataType::Signed32);
107
108 std::vector<float> inputValues({ 5.0f, 2.0f, 8.0f, 10.0f, 9.0f });
109 std::vector<int32_t> outputValues({ 1 });
110
111 return ArgMinMaxTestCommon<ArmnnType>(workloadFactory, memoryManager,
112 armnn::ArgMinMaxFunction::Min,
113 inputTensorInfo, outputTensorInfo,
114 inputValues, outputValues, 3);
115}
116
117template<armnn::DataType ArmnnType, typename T>
James Conroyd47a0642019-09-17 14:22:06 +0100118LayerTestResult<int32_t, 3> ArgMinChannelTest(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100119 armnn::IWorkloadFactory& workloadFactory,
120 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
121{
122 const armnn::TensorShape inputShape{ 1, 3, 2, 4};
123 const armnn::TensorShape outputShape{ 1, 2, 4 };
124
125 armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType);
126
Francis Murtagh52ec3462019-11-19 12:24:19 +0000127 if (armnn::IsQuantizedType<T>())
Nikhil Raj68c2c902019-09-19 11:21:11 +0100128 {
129 inputTensorInfo.SetQuantizationScale(1.0f);
130 inputTensorInfo.SetQuantizationOffset(0);
131 }
132
133 armnn::TensorInfo outputTensorInfo(outputShape, armnn::DataType::Signed32);
134
James Conroyd47a0642019-09-17 14:22:06 +0100135 std::vector<float> inputValues({ 1.0f, 2.0f, 3.0f, 4.0f,
136 5.0f, 6.0f, 7.0f, 8.0f,
137
138 10.0f, 20.0f, 30.0f, 40.0f,
139 50.0f, 60.0f, 70.0f, 80.0f,
140
141 100.0f, 200.0f, 300.0f, 400.0f,
142 500.0f, 600.0f, 700.0f, 800.0f });
143 std::vector<int32_t> outputValues({ 0, 0, 0, 0,
144 0, 0, 0, 0 });
145
146 return ArgMinMaxTestCommon<ArmnnType>(workloadFactory, memoryManager,
147 armnn::ArgMinMaxFunction::Min,
148 inputTensorInfo, outputTensorInfo,
149 inputValues, outputValues, 1);
150}
151
152template<armnn::DataType ArmnnType, typename T>
153LayerTestResult<int32_t, 3> ArgMaxChannelTest(
154 armnn::IWorkloadFactory& workloadFactory,
155 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
156{
157 const armnn::TensorShape inputShape{ 1, 3, 2, 4};
158 const armnn::TensorShape outputShape{ 1, 2, 4 };
159
160 armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType);
161
Francis Murtagh52ec3462019-11-19 12:24:19 +0000162 if (armnn::IsQuantizedType<T>())
James Conroyd47a0642019-09-17 14:22:06 +0100163 {
164 inputTensorInfo.SetQuantizationScale(1.0f);
165 inputTensorInfo.SetQuantizationOffset(0);
166 }
167
168 armnn::TensorInfo outputTensorInfo(outputShape, armnn::DataType::Signed32);
169
170 std::vector<float> inputValues({ 1.0f, 2.0f, 3.0f, 4.0f,
171 5.0f, 6.0f, 7.0f, 8.0f,
Nikhil Raj68c2c902019-09-19 11:21:11 +0100172
173 10.0f, 20.0f, 30.0f, 40.0f,
174 50.0f, 60.0f, 70.0f, 80.0f,
175
James Conroyd47a0642019-09-17 14:22:06 +0100176 100.0f, 200.0f, 300.0f, 400.0f,
177 500.0f, 600.0f, 700.0f, 800.0f });
Nikhil Raj68c2c902019-09-19 11:21:11 +0100178 std::vector<int32_t> outputValues({ 2, 2, 2, 2,
179 2, 2, 2, 2 });
180
181 return ArgMinMaxTestCommon<ArmnnType>(workloadFactory, memoryManager,
182 armnn::ArgMinMaxFunction::Max,
183 inputTensorInfo, outputTensorInfo,
184 inputValues, outputValues, 1);
185}
186
James Conroyd47a0642019-09-17 14:22:06 +0100187template<armnn::DataType ArmnnType, typename T>
188LayerTestResult<int32_t, 3> ArgMaxHeightTest(
189 armnn::IWorkloadFactory& workloadFactory,
190 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
191{
192 const armnn::TensorShape inputShape{ 1, 3, 2, 4};
James Conroyc8724c72019-10-08 15:41:34 +0100193 const armnn::TensorShape outputShape{ 1, 3, 4 };
James Conroyd47a0642019-09-17 14:22:06 +0100194
195 armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType);
196 armnn::TensorInfo outputTensorInfo(outputShape, armnn::DataType::Signed32);
197
Francis Murtagh52ec3462019-11-19 12:24:19 +0000198 if (armnn::IsQuantizedType<T>())
199 {
200 inputTensorInfo.SetQuantizationScale(1.0f);
201 inputTensorInfo.SetQuantizationOffset(0);
202 }
203
James Conroyd47a0642019-09-17 14:22:06 +0100204 std::vector<float> inputValues({ 1.0f, 2.0f, 3.0f, 4.0f,
205 5.0f, 6.0f, 7.0f, 8.0f,
206
207 10.0f, 20.0f, 30.0f, 40.0f,
208 50.0f, 60.0f, 70.0f, 80.0f,
209
210 100.0f, 200.0f, 300.0f, 400.0f,
211 500.0f, 600.0f, 700.0f, 800.0f });
212 std::vector<int32_t> outputValues({ 1, 1, 1, 1,
213 1, 1, 1, 1,
214 1, 1, 1, 1 });
215
216 return ArgMinMaxTestCommon<ArmnnType>(workloadFactory, memoryManager,
217 armnn::ArgMinMaxFunction::Max,
218 inputTensorInfo, outputTensorInfo,
219 inputValues, outputValues, 2);
220}
221
222template<armnn::DataType ArmnnType, typename T>
223LayerTestResult<int32_t, 3> ArgMinWidthTest(
224 armnn::IWorkloadFactory& workloadFactory,
225 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
226{
227 const armnn::TensorShape inputShape{ 1, 3, 2, 4};
James Conroyc8724c72019-10-08 15:41:34 +0100228 const armnn::TensorShape outputShape{ 1, 3, 2 };
James Conroyd47a0642019-09-17 14:22:06 +0100229
230 armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType);
231 armnn::TensorInfo outputTensorInfo(outputShape, armnn::DataType::Signed32);
232
Francis Murtagh52ec3462019-11-19 12:24:19 +0000233 if (armnn::IsQuantizedType<T>())
234 {
235 inputTensorInfo.SetQuantizationScale(1.0f);
236 inputTensorInfo.SetQuantizationOffset(0);
237 }
238
James Conroyd47a0642019-09-17 14:22:06 +0100239 std::vector<float> inputValues({ 1.0f, 2.0f, 3.0f, 4.0f,
240 5.0f, 6.0f, 7.0f, 8.0f,
241
242 10.0f, 20.0f, 30.0f, 40.0f,
243 50.0f, 60.0f, 70.0f, 80.0f,
244
245 100.0f, 200.0f, 300.0f, 400.0f,
246 500.0f, 600.0f, 700.0f, 800.0f });
247 std::vector<int32_t> outputValues({ 0, 0,
248 0, 0,
249 0, 0 });
250
251 return ArgMinMaxTestCommon<ArmnnType>(workloadFactory, memoryManager,
252 armnn::ArgMinMaxFunction::Min,
253 inputTensorInfo, outputTensorInfo,
254 inputValues, outputValues, 3);
255}
256
Nikhil Raj68c2c902019-09-19 11:21:11 +0100257
258// Explicit template specializations
259
260template LayerTestResult<int32_t, 3>
261ArgMaxSimpleTest<armnn::DataType::Float32>(
262 armnn::IWorkloadFactory& workloadFactory,
263 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
264
265template LayerTestResult<int32_t, 3>
Teresa Charline300b362020-05-25 10:01:03 +0100266ArgMaxSimpleTest<armnn::DataType::Float16>(
267 armnn::IWorkloadFactory& workloadFactory,
268 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
269
270template LayerTestResult<int32_t, 3>
Sadik Armagan303980c2020-04-17 12:45:14 +0100271ArgMaxSimpleTest<armnn::DataType::QAsymmS8>(
272 armnn::IWorkloadFactory& workloadFactory,
273 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
274
275template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000276ArgMaxSimpleTest<armnn::DataType::QAsymmU8>(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100277 armnn::IWorkloadFactory& workloadFactory,
278 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
279
280template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000281ArgMaxSimpleTest<armnn::DataType::QSymmS16>(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100282 armnn::IWorkloadFactory& workloadFactory,
283 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
284
285template LayerTestResult<int32_t, 3>
Francis Murtagh1939df52019-11-13 15:21:09 +0000286ArgMaxSimpleTest<armnn::DataType::Signed32>(
287 armnn::IWorkloadFactory& workloadFactory,
288 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
289
290template LayerTestResult<int32_t, 3>
James Conroyd47a0642019-09-17 14:22:06 +0100291ArgMinSimpleTest<armnn::DataType::Float32>(
292 armnn::IWorkloadFactory& workloadFactory,
293 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
294
295template LayerTestResult<int32_t, 3>
Teresa Charline300b362020-05-25 10:01:03 +0100296ArgMinSimpleTest<armnn::DataType::Float16>(
297 armnn::IWorkloadFactory& workloadFactory,
298 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
299
300template LayerTestResult<int32_t, 3>
Sadik Armagan303980c2020-04-17 12:45:14 +0100301ArgMinSimpleTest<armnn::DataType::QAsymmS8>(
302 armnn::IWorkloadFactory& workloadFactory,
303 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
304
305template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000306ArgMinSimpleTest<armnn::DataType::QAsymmU8>(
James Conroyd47a0642019-09-17 14:22:06 +0100307 armnn::IWorkloadFactory& workloadFactory,
308 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
309
310template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000311ArgMinSimpleTest<armnn::DataType::QSymmS16>(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100312 armnn::IWorkloadFactory& workloadFactory,
313 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
314
315template LayerTestResult<int32_t, 3>
Francis Murtagh1939df52019-11-13 15:21:09 +0000316ArgMinSimpleTest<armnn::DataType::Signed32>(
317 armnn::IWorkloadFactory& workloadFactory,
318 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
319
320template LayerTestResult<int32_t, 3>
James Conroyd47a0642019-09-17 14:22:06 +0100321ArgMinChannelTest<armnn::DataType::Float32>(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100322 armnn::IWorkloadFactory& workloadFactory,
323 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
324
325template LayerTestResult<int32_t, 3>
Teresa Charline300b362020-05-25 10:01:03 +0100326ArgMinChannelTest<armnn::DataType::Float16>(
327 armnn::IWorkloadFactory& workloadFactory,
328 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
329
330template LayerTestResult<int32_t, 3>
Sadik Armagan303980c2020-04-17 12:45:14 +0100331ArgMinChannelTest<armnn::DataType::QAsymmS8>(
332 armnn::IWorkloadFactory& workloadFactory,
333 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
334
335template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000336ArgMinChannelTest<armnn::DataType::QAsymmU8>(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100337 armnn::IWorkloadFactory& workloadFactory,
338 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
339
340template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000341ArgMinChannelTest<armnn::DataType::QSymmS16>(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100342 armnn::IWorkloadFactory& workloadFactory,
343 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
344
345template LayerTestResult<int32_t, 3>
Francis Murtagh1939df52019-11-13 15:21:09 +0000346ArgMinChannelTest<armnn::DataType::Signed32>(
347 armnn::IWorkloadFactory& workloadFactory,
348 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
349
350template LayerTestResult<int32_t, 3>
James Conroyd47a0642019-09-17 14:22:06 +0100351ArgMaxChannelTest<armnn::DataType::Float32>(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100352 armnn::IWorkloadFactory& workloadFactory,
353 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
354
355template LayerTestResult<int32_t, 3>
Teresa Charline300b362020-05-25 10:01:03 +0100356ArgMaxChannelTest<armnn::DataType::Float16>(
357 armnn::IWorkloadFactory& workloadFactory,
358 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
359
360template LayerTestResult<int32_t, 3>
Sadik Armagan303980c2020-04-17 12:45:14 +0100361ArgMaxChannelTest<armnn::DataType::QAsymmS8>(
362 armnn::IWorkloadFactory& workloadFactory,
363 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
364
365template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000366ArgMaxChannelTest<armnn::DataType::QAsymmU8>(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100367 armnn::IWorkloadFactory& workloadFactory,
368 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
369
370template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000371ArgMaxChannelTest<armnn::DataType::QSymmS16>(
Nikhil Raj68c2c902019-09-19 11:21:11 +0100372 armnn::IWorkloadFactory& workloadFactory,
James Conroyd47a0642019-09-17 14:22:06 +0100373 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
374
375template LayerTestResult<int32_t, 3>
Francis Murtagh1939df52019-11-13 15:21:09 +0000376ArgMaxChannelTest<armnn::DataType::Signed32>(
377 armnn::IWorkloadFactory& workloadFactory,
378 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
379
380template LayerTestResult<int32_t, 3>
James Conroyd47a0642019-09-17 14:22:06 +0100381ArgMaxHeightTest<armnn::DataType::Float32>(
382 armnn::IWorkloadFactory& workloadFactory,
383 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
384
385template LayerTestResult<int32_t, 3>
Teresa Charline300b362020-05-25 10:01:03 +0100386ArgMaxHeightTest<armnn::DataType::Float16>(
387 armnn::IWorkloadFactory& workloadFactory,
388 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
389
390template LayerTestResult<int32_t, 3>
Francis Murtagh1939df52019-11-13 15:21:09 +0000391ArgMaxHeightTest<armnn::DataType::Signed32>(
392 armnn::IWorkloadFactory& workloadFactory,
393 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
394
395template LayerTestResult<int32_t, 3>
Sadik Armagan303980c2020-04-17 12:45:14 +0100396ArgMaxHeightTest<armnn::DataType::QAsymmS8>(
397 armnn::IWorkloadFactory& workloadFactory,
398 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
399
400template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000401ArgMaxHeightTest<armnn::DataType::QAsymmU8>(
Francis Murtagh52ec3462019-11-19 12:24:19 +0000402 armnn::IWorkloadFactory& workloadFactory,
403 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
404
405template LayerTestResult<int32_t, 3>
James Conroyd47a0642019-09-17 14:22:06 +0100406ArgMinWidthTest<armnn::DataType::Float32>(
407 armnn::IWorkloadFactory& workloadFactory,
408 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Francis Murtagh1939df52019-11-13 15:21:09 +0000409
410template LayerTestResult<int32_t, 3>
Teresa Charline300b362020-05-25 10:01:03 +0100411ArgMinWidthTest<armnn::DataType::Float16>(
412 armnn::IWorkloadFactory& workloadFactory,
413 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
414
415template LayerTestResult<int32_t, 3>
Francis Murtagh1939df52019-11-13 15:21:09 +0000416ArgMinWidthTest<armnn::DataType::Signed32>(
417 armnn::IWorkloadFactory& workloadFactory,
418 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000419
420template LayerTestResult<int32_t, 3>
Sadik Armagan303980c2020-04-17 12:45:14 +0100421ArgMinWidthTest<armnn::DataType::QAsymmS8>(
422 armnn::IWorkloadFactory& workloadFactory,
423 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
424
425template LayerTestResult<int32_t, 3>
Derek Lambertif90c56d2020-01-10 17:14:08 +0000426ArgMinWidthTest<armnn::DataType::QAsymmU8>(
Francis Murtagh52ec3462019-11-19 12:24:19 +0000427 armnn::IWorkloadFactory& workloadFactory,
428 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);