blob: f3c72709e0ef65eea773dc35128fd4341b319a70 [file] [log] [blame]
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001//
Teresa Charlin686f45c2020-07-23 17:59:00 +01002// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00003// SPDX-License-Identifier: MIT
4//
5
6#include "ResizeTestImpl.hpp"
7
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00008#include <QuantizeHelper.hpp>
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00009
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +000010
Matteo Martincighe011d202019-11-28 11:35:47 +000011#include <armnnUtils/TensorUtils.hpp>
12#include <armnnUtils/DataLayoutIndexed.hpp>
13#include <armnnUtils/Permute.hpp>
14
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +000015#include <backendsCommon/test/DataLayoutUtils.hpp>
16#include <backendsCommon/test/TensorCopyUtils.hpp>
17#include <backendsCommon/test/WorkloadTestUtils.hpp>
18
19#include <test/TensorHelpers.hpp>
20
21namespace
22{
23
24struct ResizeTestParams
25{
26 ResizeTestParams()
27 : m_ResizeMethod(armnn::ResizeMethod::Bilinear)
28 , m_DataLayout(armnn::DataLayout::NCHW)
29 , m_InQuantScale(1.0f)
30 , m_InQuantOffset(0)
31 , m_OutQuantScale(1.0f)
David Monahanab219752020-06-19 16:43:48 +010032 , m_OutQuantOffset(0)
33 , m_AlignCorners(false)
34 , m_HalfPixelCenters(false) {}
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +000035
36 armnn::ResizeMethod m_ResizeMethod;
37 armnn::DataLayout m_DataLayout;
38
39 armnn::TensorShape m_InputShape;
40 armnn::TensorShape m_OutputShape;
41
42 std::vector<float> m_InputData;
43 std::vector<float> m_ExpectedOutputData;
44
45 float m_InQuantScale;
46 int32_t m_InQuantOffset;
47
48 float m_OutQuantScale;
49 int32_t m_OutQuantOffset;
50
David Monahanab219752020-06-19 16:43:48 +010051 bool m_AlignCorners;
52 bool m_HalfPixelCenters;
53
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +000054 void SetInQuantParams(float quantScale, int32_t quantOffset)
55 {
56 m_InQuantScale = quantScale;
57 m_InQuantOffset = quantOffset;
58 }
59
60 void SetOutQuantParams(float quantScale, int32_t quantOffset)
61 {
62 m_OutQuantScale = quantScale;
63 m_OutQuantOffset = quantOffset;
64 }
65
66 void SetInOutQuantParams(float quantScale, int32_t quantOffset)
67 {
68 SetInQuantParams(quantScale, quantOffset);
69 SetOutQuantParams(quantScale, quantOffset);
70 }
71};
72
73template<size_t NumDims,
74 armnn::DataType ArmnnType,
75 typename T = armnn::ResolveType<ArmnnType>>
76LayerTestResult<T, NumDims> ResizeTestImpl(
77 armnn::IWorkloadFactory& workloadFactory,
78 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
79 const ResizeTestParams& params)
80{
Jan Eilers8eb25602020-03-09 12:13:48 +000081 IgnoreUnused(memoryManager);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +000082 armnn::TensorInfo inputInfo(params.m_InputShape, ArmnnType);
83 armnn::TensorInfo outputInfo(params.m_OutputShape, ArmnnType);
84
85 if (armnn::IsQuantizedType<T>())
86 {
87 inputInfo.SetQuantizationScale(params.m_InQuantScale);
88 inputInfo.SetQuantizationOffset(params.m_InQuantOffset);
89
90 outputInfo.SetQuantizationScale(params.m_OutQuantScale);
91 outputInfo.SetQuantizationOffset(params.m_OutQuantOffset);
92 }
93
94 std::vector<T> inputData =
95 armnnUtils::QuantizedVector<T>(params.m_InputData, params.m_InQuantScale, params.m_InQuantOffset);
96
97 std::vector<T> expectedOutputData =
98 armnnUtils::QuantizedVector<T>(params.m_ExpectedOutputData,
99 params.m_OutQuantScale,
100 params.m_OutQuantOffset);
101
102 if (params.m_DataLayout == armnn::DataLayout::NHWC)
103 {
104 PermuteTensorNchwToNhwc(inputInfo, inputData);
105 PermuteTensorNchwToNhwc(outputInfo, expectedOutputData);
106 }
107
108 auto input = MakeTensor<T, NumDims>(inputInfo, inputData);
109
110 LayerTestResult<T, NumDims> result(outputInfo);
111 result.outputExpected = MakeTensor<T, NumDims>(outputInfo, expectedOutputData);
Teresa Charlinfbf0e5b2020-08-17 01:01:06 +0100112 ARMNN_NO_DEPRECATE_WARN_BEGIN
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000113 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputInfo);
114 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputInfo);
Teresa Charlinfbf0e5b2020-08-17 01:01:06 +0100115 ARMNN_NO_DEPRECATE_WARN_END
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000116
117 armnn::ResizeQueueDescriptor descriptor;
118 descriptor.m_Parameters.m_Method = params.m_ResizeMethod;
119 descriptor.m_Parameters.m_DataLayout = params.m_DataLayout;
David Monahanab219752020-06-19 16:43:48 +0100120 descriptor.m_Parameters.m_AlignCorners = params.m_AlignCorners;
121 descriptor.m_Parameters.m_HalfPixelCenters = params.m_HalfPixelCenters;
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000122
123 armnnUtils::DataLayoutIndexed dataLayoutIndexed(params.m_DataLayout);
124 descriptor.m_Parameters.m_TargetWidth = params.m_OutputShape[dataLayoutIndexed.GetWidthIndex()];
125 descriptor.m_Parameters.m_TargetHeight = params.m_OutputShape[dataLayoutIndexed.GetHeightIndex()];
126
127 armnn::WorkloadInfo info;
128 AddInputToWorkload(descriptor, info, inputInfo, inputHandle.get());
129 AddOutputToWorkload(descriptor, info, outputInfo, outputHandle.get());
130
131 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateResize(descriptor, info);
132
133 inputHandle->Allocate();
134 outputHandle->Allocate();
135 CopyDataToITensorHandle(inputHandle.get(), input.origin());
136
137 workload->PostAllocationConfigure();
138 workload->Execute();
139
140 CopyDataFromITensorHandle(result.output.origin(), outputHandle.get());
141 return result;
142}
143
144} // anonymous namespace
145
146//
147// Bilinear
148//
149
150template<armnn::DataType ArmnnType, typename T>
151LayerTestResult<T, 4> ResizeBilinearNopTest(
152 armnn::IWorkloadFactory& workloadFactory,
153 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
154 const armnn::DataLayout dataLayout)
155{
156 ResizeTestParams testParams;
157 testParams.m_ResizeMethod = armnn::ResizeMethod::Bilinear;
158 testParams.m_DataLayout = dataLayout;
159
160 testParams.m_InputShape = { 1, 2, 4, 4 };
161 testParams.m_OutputShape = testParams.m_InputShape;
162
163 testParams.m_InputData =
164 {
165 1.0f, 2.0f, 3.0f, 4.0f,
166 2.0f, 3.0f, 4.0f, 5.0f,
167 3.0f, 4.0f, 5.0f, 6.0f,
168 4.0f, 5.0f, 6.0f, 7.0f,
169
170 1.0f, 2.0f, 3.0f, 4.0f,
171 2.0f, 3.0f, 4.0f, 5.0f,
172 3.0f, 4.0f, 5.0f, 6.0f,
173 4.0f, 5.0f, 6.0f, 7.0f
174 };
175
176 testParams.m_ExpectedOutputData = testParams.m_InputData;
177
178 testParams.SetInOutQuantParams(1.5f, 3);
179
180 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, testParams);
181}
182
183template<armnn::DataType ArmnnType, typename T>
184LayerTestResult<T, 4> SimpleResizeBilinearTest(
185 armnn::IWorkloadFactory& workloadFactory,
186 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
187 const armnn::DataLayout dataLayout)
188{
189 ResizeTestParams testParams;
190 testParams.m_ResizeMethod = armnn::ResizeMethod::Bilinear;
191 testParams.m_DataLayout = dataLayout;
192
193 testParams.m_InputShape = { 1, 2, 2, 2 };
194 testParams.m_OutputShape = { 1, 2, 1, 1 };
195
196 testParams.m_InputData =
197 {
198 1.0f, 255.0f,
199 200.0f, 250.0f,
200
201 250.0f, 200.0f,
202 250.0f, 1.0f
203 };
204
205 // The 'resize' operation projects the top-left corner of output texels into the input image,
206 // then figures out the interpolants and weights. Note this is different to projecting the centre of the
207 // output texel. Thus, for a input matrix of 2x2, we'll expect the output 1x1 matrix to contain, as
208 // its single element, the value that was at position (0,0) of the input matrix (rather than an average,
209 // which we would expect if projecting the centre).
210 testParams.m_ExpectedOutputData =
211 {
212 1.0f,
213
214 250.0f
215 };
216
217 testParams.SetInOutQuantParams(0.1567f, 1);
218
219 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, testParams);
220}
221
222template<armnn::DataType ArmnnType, typename T>
223LayerTestResult<T, 4> ResizeBilinearSqMinTest(
224 armnn::IWorkloadFactory& workloadFactory,
225 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
226 const armnn::DataLayout dataLayout)
227{
228 ResizeTestParams testParams;
229 testParams.m_ResizeMethod = armnn::ResizeMethod::Bilinear;
230 testParams.m_DataLayout = dataLayout;
231
232 testParams.m_InputShape = { 1, 2, 4, 4 };
233 testParams.m_OutputShape = { 1, 2, 2, 2 };
234
235 testParams.m_InputData =
236 {
237 1.0f, 2.0f, 3.0f, 4.0f,
238 2.0f, 3.0f, 4.0f, 5.0f,
239 3.0f, 4.0f, 5.0f, 6.0f,
240 4.0f, 5.0f, 6.0f, 7.0f,
241
242 7.0f, 6.0f, 5.0f, 4.0f,
243 6.0f, 5.0f, 4.0f, 3.0f,
244 5.0f, 4.0f, 3.0f, 2.0f,
245 4.0f, 3.0f, 2.0f, 1.0f
246 };
247
248 testParams.m_ExpectedOutputData =
249 {
250 1.0f, 3.0f,
251 3.0f, 5.0f,
252
253 7.0f, 5.0f,
254 5.0f, 3.0f
255 };
256
257 testParams.SetInOutQuantParams(3.141592f, 3);
258
259 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, testParams);
260}
261
262template<armnn::DataType ArmnnType, typename T>
263LayerTestResult<T, 4> ResizeBilinearMinTest(
264 armnn::IWorkloadFactory& workloadFactory,
265 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
266 const armnn::DataLayout dataLayout)
267{
268 ResizeTestParams testParams;
269 testParams.m_ResizeMethod = armnn::ResizeMethod::Bilinear;
270 testParams.m_DataLayout = dataLayout;
271
272 testParams.m_InputShape = { 1, 2, 3, 5 };
273 testParams.m_OutputShape = { 1, 2, 2, 3 };
274
275 testParams.m_InputData =
276 {
277 1.5f, 3.0f, 4.5f, 6.0f, 7.5f,
278 9.0f, 10.5f, 12.0f, 13.5f, 15.0f,
279 16.5f, 18.0f, 19.5f, 21.0f, 22.5f,
280
281 16.5f, 18.0f, 19.5f, 21.0f, 22.5f,
282 9.0f, 10.5f, 12.0f, 13.5f, 15.0f,
283 1.5f, 3.0f, 4.5f, 6.0f, 7.5f
284 };
285
286 testParams.m_ExpectedOutputData =
287 {
288 1.50f, 4.00f, 6.50f,
289 12.75f, 15.25f, 17.75f,
290
291 16.50f, 19.00f, 21.50f,
292 5.25f, 7.75f, 10.25f
293 };
294
295 testParams.SetInOutQuantParams(1.5f, -1);
296
297 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, testParams);
298}
299
300template<armnn::DataType ArmnnType, typename T>
301LayerTestResult<T, 4> ResizeBilinearMagTest(
302 armnn::IWorkloadFactory& workloadFactory,
303 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
304 const armnn::DataLayout dataLayout)
305{
306 ResizeTestParams testParams;
307 testParams.m_ResizeMethod = armnn::ResizeMethod::Bilinear;
308 testParams.m_DataLayout = dataLayout;
309
310 testParams.m_InputShape = { 1, 2, 3, 2 };
311 testParams.m_OutputShape = { 1, 2, 3, 5 };
312
313 testParams.m_InputData =
314 {
315 1.0f, 2.0f,
316 13.0f, 21.0f,
317 144.0f, 233.0f,
318
319 233.0f, 144.0f,
320 21.0f, 13.0f,
321 2.0f, 1.0f
322 };
323
324 testParams.m_ExpectedOutputData =
325 {
326 1.0f, 1.4f, 1.8f, 2.0f, 2.0f,
327 13.0f, 16.2f, 19.4f, 21.0f, 21.0f,
328 144.0f, 179.6f, 215.2f, 233.0f, 233.0f,
329
330 233.0f, 197.4f, 161.8f, 144.0f, 144.0f,
331 21.0f, 17.8f, 14.6f, 13.0f, 13.0f,
332 2.0f, 1.6f, 1.2f, 1.0f, 1.0f
333 };
334
335 testParams.SetInQuantParams(1.0f, 0);
336
337 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, testParams);
338}
339
340//
341// NearestNeighbor
342//
343
344template<armnn::DataType ArmnnType, typename T>
345LayerTestResult<T, 4> ResizeNearestNeighborNopTest(
346 armnn::IWorkloadFactory& workloadFactory,
347 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
348 const armnn::DataLayout dataLayout)
349{
350 ResizeTestParams testParams;
351 testParams.m_ResizeMethod = armnn::ResizeMethod::NearestNeighbor;
352 testParams.m_DataLayout = dataLayout;
353
354 testParams.m_InputShape = { 1, 2, 4, 4 };
355 testParams.m_OutputShape = testParams.m_InputShape;
356
357 testParams.m_InputData =
358 {
359 1.0f, 2.0f, 3.0f, 4.0f,
360 2.0f, 3.0f, 4.0f, 5.0f,
361 3.0f, 4.0f, 5.0f, 6.0f,
362 4.0f, 5.0f, 6.0f, 7.0f,
363
364 1.0f, 2.0f, 3.0f, 4.0f,
365 2.0f, 3.0f, 4.0f, 5.0f,
366 3.0f, 4.0f, 5.0f, 6.0f,
367 4.0f, 5.0f, 6.0f, 7.0f
368 };
369
370 testParams.m_ExpectedOutputData = testParams.m_InputData;
371
372 testParams.SetInOutQuantParams(1.5f, 3);
373
374 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, testParams);
375}
376
377template<armnn::DataType ArmnnType, typename T>
378LayerTestResult<T, 4> SimpleResizeNearestNeighborTest(
379 armnn::IWorkloadFactory& workloadFactory,
380 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
381 const armnn::DataLayout dataLayout)
382{
383 ResizeTestParams testParams;
384 testParams.m_ResizeMethod = armnn::ResizeMethod::NearestNeighbor;
385 testParams.m_DataLayout = dataLayout;
386
387 testParams.m_InputShape = { 1, 2, 2, 2 };
388 testParams.m_OutputShape = { 1, 2, 1, 1 };
389
390 testParams.m_InputData =
391 {
392 1.0f, 255.0f,
393 200.0f, 250.0f,
394
395 250.0f, 200.0f,
396 250.0f, 1.0f
397 };
398
399 // The 'resize' operation projects the top-left corner of output texels into the input image,
400 // then figures out the interpolants and weights. Note this is different to projecting the centre of the
401 // output texel. Thus, for a input matrix of 2x2, we'll expect the output 1x1 matrix to contain, as
402 // its single element, the value that was at position (0,0) of the input matrix (rather than an average,
403 // which we would expect if projecting the centre).
404 testParams.m_ExpectedOutputData =
405 {
406 1.0f,
407
408 250.0f
409 };
410
411 testParams.SetInOutQuantParams(0.1567f, 1);
412
413 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, testParams);
414}
415
416template<armnn::DataType ArmnnType, typename T>
417LayerTestResult<T, 4> ResizeNearestNeighborSqMinTest(
418 armnn::IWorkloadFactory& workloadFactory,
419 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
420 const armnn::DataLayout dataLayout)
421{
422 ResizeTestParams testParams;
423 testParams.m_ResizeMethod = armnn::ResizeMethod::NearestNeighbor;
424 testParams.m_DataLayout = dataLayout;
425
426 testParams.m_InputShape = { 1, 2, 4, 4 };
427 testParams.m_OutputShape = { 1, 2, 2, 2 };
428
429 testParams.m_InputData =
430 {
431 1.0f, 2.0f, 3.0f, 4.0f,
432 2.0f, 3.0f, 4.0f, 5.0f,
433 3.0f, 4.0f, 5.0f, 6.0f,
434 4.0f, 5.0f, 6.0f, 7.0f,
435
436 7.0f, 6.0f, 5.0f, 4.0f,
437 6.0f, 5.0f, 4.0f, 3.0f,
438 5.0f, 4.0f, 3.0f, 2.0f,
439 4.0f, 3.0f, 2.0f, 1.0f
440 };
441
442 testParams.m_ExpectedOutputData =
443 {
444 1.0f, 3.0f,
445 3.0f, 5.0f,
446
447 7.0f, 5.0f,
448 5.0f, 3.0f
449 };
450
451 testParams.SetInOutQuantParams(3.141592f, 3);
452
453 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, testParams);
454}
455
456template<armnn::DataType ArmnnType, typename T>
457LayerTestResult<T, 4> ResizeNearestNeighborMinTest(
458 armnn::IWorkloadFactory& workloadFactory,
459 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
460 const armnn::DataLayout dataLayout)
461{
462 ResizeTestParams testParams;
463 testParams.m_ResizeMethod = armnn::ResizeMethod::NearestNeighbor;
464 testParams.m_DataLayout = dataLayout;
465
466 testParams.m_InputShape = { 1, 2, 3, 5 };
467 testParams.m_OutputShape = { 1, 2, 2, 3 };
468
469 testParams.m_InputData =
470 {
471 1.5f, 3.0f, 4.5f, 6.0f, 7.5f,
472 9.0f, 10.5f, 12.0f, 13.5f, 15.0f,
473 16.5f, 18.0f, 19.5f, 21.0f, 22.5f,
474
475 16.5f, 18.0f, 19.5f, 21.0f, 22.5f,
476 9.0f, 10.5f, 12.0f, 13.5f, 15.0f,
477 1.5f, 3.0f, 4.5f, 6.0f, 7.5f
478 };
479
480 testParams.m_ExpectedOutputData =
481 {
482 1.5f, 3.0f, 6.0f,
483 9.0f, 10.5f, 13.5f,
484
485 16.5f, 18.0f, 21.0f,
486 9.0f, 10.5f, 13.5f
487 };
488
489 testParams.SetInOutQuantParams(1.5f, -1);
490
491 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, testParams);
492}
493
494template<armnn::DataType ArmnnType, typename T>
495LayerTestResult<T, 4> ResizeNearestNeighborMagTest(
496 armnn::IWorkloadFactory& workloadFactory,
497 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
498 const armnn::DataLayout dataLayout,
499 float inQuantScale,
500 int32_t inQuantOffset,
501 float outQuantScale,
502 int32_t outQuantOffset)
503{
504 ResizeTestParams testParams;
505 testParams.m_ResizeMethod = armnn::ResizeMethod::NearestNeighbor;
506 testParams.m_DataLayout = dataLayout;
507
508 testParams.m_InputShape = { 1, 2, 3, 2 };
509 testParams.m_OutputShape = { 1, 2, 3, 5 };
510
511 testParams.m_InputData =
512 {
513 0.183005f, 2.379065f,
514 1.054970f, 1.302565f,
515 2.400595f, 0.688960f,
516
517 2.400595f, 0.688960f,
518 1.054970f, 1.302565f,
519 0.183005f, 2.379065f,
520 };
521
522 testParams.m_ExpectedOutputData =
523 {
524 0.183005f, 0.183005f, 0.183005f, 2.379065f, 2.379065f,
525 1.054970f, 1.054970f, 1.054970f, 1.302565f, 1.302565f,
526 2.400595f, 2.400595f, 2.400595f, 0.688960f, 0.688960f,
527
528 2.400595f, 2.400595f, 2.400595f, 0.688960f, 0.688960f,
529 1.054970f, 1.054970f, 1.054970f, 1.302565f, 1.302565f,
530 0.183005f, 0.183005f, 0.183005f, 2.379065f, 2.379065f
531 };
532
533 testParams.SetInQuantParams(inQuantScale, inQuantOffset);
534 testParams.SetOutQuantParams(outQuantScale, outQuantOffset);
535
536 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, testParams);
537}
538
David Monahanab219752020-06-19 16:43:48 +0100539template<armnn::DataType ArmnnType, typename T>
540LayerTestResult<T, 4> HalfPixelCentersResizeBilinearTest(
541 armnn::IWorkloadFactory& workloadFactory,
542 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
543 const armnn::DataLayout dataLayout)
544{
545 ResizeTestParams testParams;
546 testParams.m_ResizeMethod = armnn::ResizeMethod::Bilinear;
547 testParams.m_DataLayout = dataLayout;
548 testParams.m_HalfPixelCenters = true;
549
550 testParams.m_InputShape = { 2, 1, 2, 2 };
551 testParams.m_OutputShape = { 2, 1, 3, 3 };
552
553 testParams.m_InputData =
554 {
555 1.0f, 2.0f,
556 3.0f, 4.0f,
557
558 1.0f, 2.0f,
559 3.0f, 4.0f
560 };
561
562 testParams.m_ExpectedOutputData =
563 {
564 1.0f, 1.5f, 2.0f,
565 2.0f, 2.5f, 3.0f,
566 3.0f, 3.5f, 4.0f,
567
568 1.0f, 1.5f, 2.0f,
569 2.0f, 2.5f, 3.0f,
570 3.0f, 3.5f, 4.0f,
571 };
572
573 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, testParams);
574}
575
576template<armnn::DataType ArmnnType, typename T>
577LayerTestResult<T, 4> AlignCornersResizeBilinearTest(
578 armnn::IWorkloadFactory& workloadFactory,
579 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
580 const armnn::DataLayout dataLayout)
581{
582 ResizeTestParams testParams;
583 testParams.m_ResizeMethod = armnn::ResizeMethod::Bilinear;
584 testParams.m_DataLayout = dataLayout;
585 testParams.m_AlignCorners = true;
586
587 testParams.m_InputShape = { 1, 1, 2, 2 };
588 testParams.m_OutputShape = { 1, 1, 1, 1 };
589
590 testParams.m_InputData =
591 {
592 1.0f, 2.0f,
593 3.0f, 4.0f,
594 };
595
596 testParams.m_ExpectedOutputData =
597 {
598 1.0f
599 };
600
601 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, testParams);
602}
603
604template<armnn::DataType ArmnnType, typename T>
605LayerTestResult<T, 4> HalfPixelCentersResizeNearestNeighbourTest(
606 armnn::IWorkloadFactory& workloadFactory,
607 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
608 const armnn::DataLayout dataLayout)
609{
610 ResizeTestParams testParams;
611 testParams.m_ResizeMethod = armnn::ResizeMethod::NearestNeighbor;
612 testParams.m_DataLayout = dataLayout;
613 testParams.m_HalfPixelCenters = true;
614
615 testParams.m_InputShape = { 1, 1, 2, 5 };
616 testParams.m_OutputShape = { 1, 1, 2, 2 };
617
618 testParams.m_InputData =
619 {
620 1.0f, 2.0f, 3.0f, 4.0f, 5.0f,
621
622 1.0f, 2.0f, 3.0f, 4.0f, 5.0f
623 };
624
625 testParams.m_ExpectedOutputData =
626 {
627 2.0f, 4.0f,
628 2.0f, 4.0f
629 };
630
631 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, testParams);
632}
633
634template<armnn::DataType ArmnnType, typename T>
635LayerTestResult<T, 4> AlignCornersResizeNearestNeighbourTest(
636 armnn::IWorkloadFactory& workloadFactory,
637 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
638 const armnn::DataLayout dataLayout)
639{
640 ResizeTestParams testParams;
641 testParams.m_ResizeMethod = armnn::ResizeMethod::NearestNeighbor;
642 testParams.m_DataLayout = dataLayout;
643 testParams.m_AlignCorners = true;
644
645 testParams.m_InputShape = { 1, 1, 2, 2 };
646 testParams.m_OutputShape = { 1, 1, 1, 1 };
647
648 testParams.m_InputData =
649 {
650 1.0f, 2.0f,
651 3.0f, 4.0f,
652 };
653
654 testParams.m_ExpectedOutputData =
655 {
656 1.0f
657 };
658
659 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, testParams);
660}
661
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000662//
663// Explicit template instantiations
664//
665
666// Float32
667template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
668ResizeBilinearNopTest<armnn::DataType::Float32>(
669 armnn::IWorkloadFactory& workloadFactory,
670 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
671 const armnn::DataLayout dataLayout);
672
673template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
674SimpleResizeBilinearTest<armnn::DataType::Float32>(
675 armnn::IWorkloadFactory& workloadFactory,
676 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
677 const armnn::DataLayout dataLayout);
678
679template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
680ResizeBilinearSqMinTest<armnn::DataType::Float32>(
681 armnn::IWorkloadFactory& workloadFactory,
682 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
683 const armnn::DataLayout dataLayout);
684
685template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
686ResizeBilinearMinTest<armnn::DataType::Float32>(
687 armnn::IWorkloadFactory& workloadFactory,
688 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
689 const armnn::DataLayout dataLayout);
690
691template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
692ResizeBilinearMagTest<armnn::DataType::Float32>(
693 armnn::IWorkloadFactory& workloadFactory,
694 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
695 const armnn::DataLayout dataLayout);
696
697template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
698ResizeNearestNeighborNopTest<armnn::DataType::Float32>(
699 armnn::IWorkloadFactory& workloadFactory,
700 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
701 const armnn::DataLayout dataLayout);
702
703template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
704SimpleResizeNearestNeighborTest<armnn::DataType::Float32>(
705 armnn::IWorkloadFactory& workloadFactory,
706 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
707 const armnn::DataLayout dataLayout);
708
709template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
710ResizeNearestNeighborSqMinTest<armnn::DataType::Float32>(
711 armnn::IWorkloadFactory& workloadFactory,
712 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
713 const armnn::DataLayout dataLayout);
714
715template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
716ResizeNearestNeighborMinTest<armnn::DataType::Float32>(
717 armnn::IWorkloadFactory& workloadFactory,
718 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
719 const armnn::DataLayout dataLayout);
720
721template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
722ResizeNearestNeighborMagTest<armnn::DataType::Float32>(
723 armnn::IWorkloadFactory& workloadFactory,
724 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
725 const armnn::DataLayout dataLayout,
726 float inQuantScale,
727 int32_t inQuantOffset,
728 float outQuantScale,
729 int32_t outQuantOffset);
730
David Monahanab219752020-06-19 16:43:48 +0100731template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
732HalfPixelCentersResizeBilinearTest<armnn::DataType::Float32>(
733 armnn::IWorkloadFactory& workloadFactory,
734 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
735 const armnn::DataLayout dataLayout);
736
737template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
738AlignCornersResizeBilinearTest<armnn::DataType::Float32>(
739 armnn::IWorkloadFactory& workloadFactory,
740 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
741 const armnn::DataLayout dataLayout);
742
743template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
744HalfPixelCentersResizeNearestNeighbourTest<armnn::DataType::Float32>(
745 armnn::IWorkloadFactory& workloadFactory,
746 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
747 const armnn::DataLayout dataLayout);
748
749template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
750AlignCornersResizeNearestNeighbourTest<armnn::DataType::Float32>(
751 armnn::IWorkloadFactory& workloadFactory,
752 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
753 const armnn::DataLayout dataLayout);
754
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000755// Float16
756template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
757ResizeBilinearNopTest<armnn::DataType::Float16>(
758 armnn::IWorkloadFactory& workloadFactory,
759 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
760 const armnn::DataLayout dataLayout);
761
762template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
763SimpleResizeBilinearTest<armnn::DataType::Float16>(
764 armnn::IWorkloadFactory& workloadFactory,
765 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
766 const armnn::DataLayout dataLayout);
767
768template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
769ResizeBilinearSqMinTest<armnn::DataType::Float16>(
770 armnn::IWorkloadFactory& workloadFactory,
771 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
772 const armnn::DataLayout dataLayout);
773
774template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
775ResizeBilinearMinTest<armnn::DataType::Float16>(
776 armnn::IWorkloadFactory& workloadFactory,
777 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
778 const armnn::DataLayout dataLayout);
779
780template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
781ResizeBilinearMagTest<armnn::DataType::Float16>(
782 armnn::IWorkloadFactory& workloadFactory,
783 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
784 const armnn::DataLayout dataLayout);
785
786template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
787ResizeNearestNeighborNopTest<armnn::DataType::Float16>(
788 armnn::IWorkloadFactory& workloadFactory,
789 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
790 const armnn::DataLayout dataLayout);
791
792template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
793SimpleResizeNearestNeighborTest<armnn::DataType::Float16>(
794 armnn::IWorkloadFactory& workloadFactory,
795 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
796 const armnn::DataLayout dataLayout);
797
798template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
799ResizeNearestNeighborSqMinTest<armnn::DataType::Float16>(
800 armnn::IWorkloadFactory& workloadFactory,
801 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
802 const armnn::DataLayout dataLayout);
803
804template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
805ResizeNearestNeighborMinTest<armnn::DataType::Float16>(
806 armnn::IWorkloadFactory& workloadFactory,
807 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
808 const armnn::DataLayout dataLayout);
809
810template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
811ResizeNearestNeighborMagTest<armnn::DataType::Float16>(
812 armnn::IWorkloadFactory& workloadFactory,
813 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
814 const armnn::DataLayout dataLayout,
815 float inQuantScale,
816 int32_t inQuantOffset,
817 float outQuantScale,
818 int32_t outQuantOffset);
819
Teresa Charlin686f45c2020-07-23 17:59:00 +0100820template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
821HalfPixelCentersResizeBilinearTest<armnn::DataType::Float16>(
822 armnn::IWorkloadFactory& workloadFactory,
823 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
824 const armnn::DataLayout dataLayout);
825
826template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
827AlignCornersResizeBilinearTest<armnn::DataType::Float16>(
828 armnn::IWorkloadFactory& workloadFactory,
829 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
830 const armnn::DataLayout dataLayout);
831
832template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
833HalfPixelCentersResizeNearestNeighbourTest<armnn::DataType::Float16>(
834 armnn::IWorkloadFactory& workloadFactory,
835 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
836 const armnn::DataLayout dataLayout);
837
838template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
839AlignCornersResizeNearestNeighbourTest<armnn::DataType::Float16>(
840 armnn::IWorkloadFactory& workloadFactory,
841 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
842 const armnn::DataLayout dataLayout);
843
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000844// QAsymm8
Derek Lambertif90c56d2020-01-10 17:14:08 +0000845template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
846ResizeBilinearNopTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000847 armnn::IWorkloadFactory& workloadFactory,
848 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
849 const armnn::DataLayout dataLayout);
850
Derek Lambertif90c56d2020-01-10 17:14:08 +0000851template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
852SimpleResizeBilinearTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000853 armnn::IWorkloadFactory& workloadFactory,
854 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
855 const armnn::DataLayout dataLayout);
856
Derek Lambertif90c56d2020-01-10 17:14:08 +0000857template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
858ResizeBilinearSqMinTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000859 armnn::IWorkloadFactory& workloadFactory,
860 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
861 const armnn::DataLayout dataLayout);
862
Derek Lambertif90c56d2020-01-10 17:14:08 +0000863template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
864ResizeBilinearMinTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000865 armnn::IWorkloadFactory& workloadFactory,
866 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
867 const armnn::DataLayout dataLayout);
868
Derek Lambertif90c56d2020-01-10 17:14:08 +0000869template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
870ResizeBilinearMagTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000871 armnn::IWorkloadFactory& workloadFactory,
872 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
873 const armnn::DataLayout dataLayout);
874
Derek Lambertif90c56d2020-01-10 17:14:08 +0000875template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
876ResizeNearestNeighborNopTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000877 armnn::IWorkloadFactory& workloadFactory,
878 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
879 const armnn::DataLayout dataLayout);
880
Derek Lambertif90c56d2020-01-10 17:14:08 +0000881template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
882SimpleResizeNearestNeighborTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000883 armnn::IWorkloadFactory& workloadFactory,
884 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
885 const armnn::DataLayout dataLayout);
886
Derek Lambertif90c56d2020-01-10 17:14:08 +0000887template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
888ResizeNearestNeighborSqMinTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000889 armnn::IWorkloadFactory& workloadFactory,
890 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
891 const armnn::DataLayout dataLayout);
892
Derek Lambertif90c56d2020-01-10 17:14:08 +0000893template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
894ResizeNearestNeighborMinTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000895 armnn::IWorkloadFactory& workloadFactory,
896 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
897 const armnn::DataLayout dataLayout);
898
Derek Lambertif90c56d2020-01-10 17:14:08 +0000899template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
900ResizeNearestNeighborMagTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000901 armnn::IWorkloadFactory& workloadFactory,
902 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
903 const armnn::DataLayout dataLayout,
904 float inQuantScale,
905 int32_t inQuantOffset,
906 float outQuantScale,
907 int32_t outQuantOffset);
908
Teresa Charlin686f45c2020-07-23 17:59:00 +0100909template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
910HalfPixelCentersResizeBilinearTest<armnn::DataType::QAsymmS8>(
911 armnn::IWorkloadFactory& workloadFactory,
912 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
913 const armnn::DataLayout dataLayout);
914
915template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
916AlignCornersResizeBilinearTest<armnn::DataType::QAsymmS8>(
917 armnn::IWorkloadFactory& workloadFactory,
918 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
919 const armnn::DataLayout dataLayout);
920
921template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
922HalfPixelCentersResizeNearestNeighbourTest<armnn::DataType::QAsymmS8>(
923 armnn::IWorkloadFactory& workloadFactory,
924 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
925 const armnn::DataLayout dataLayout);
926
927template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
928AlignCornersResizeNearestNeighbourTest<armnn::DataType::QAsymmS8>(
929 armnn::IWorkloadFactory& workloadFactory,
930 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
931 const armnn::DataLayout dataLayout);
932
Sadik Armagan303980c2020-04-17 12:45:14 +0100933// QAsymmS8
934template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
935ResizeBilinearNopTest<armnn::DataType::QAsymmS8>(
936 armnn::IWorkloadFactory& workloadFactory,
937 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
938 const armnn::DataLayout dataLayout);
939
940template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
941SimpleResizeBilinearTest<armnn::DataType::QAsymmS8>(
942 armnn::IWorkloadFactory& workloadFactory,
943 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
944 const armnn::DataLayout dataLayout);
945
946template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
947ResizeBilinearSqMinTest<armnn::DataType::QAsymmS8>(
948 armnn::IWorkloadFactory& workloadFactory,
949 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
950 const armnn::DataLayout dataLayout);
951
952template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
953ResizeBilinearMinTest<armnn::DataType::QAsymmS8>(
954 armnn::IWorkloadFactory& workloadFactory,
955 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
956 const armnn::DataLayout dataLayout);
957
958template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
959ResizeBilinearMagTest<armnn::DataType::QAsymmS8>(
960 armnn::IWorkloadFactory& workloadFactory,
961 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
962 const armnn::DataLayout dataLayout);
963
964template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
965ResizeNearestNeighborNopTest<armnn::DataType::QAsymmS8>(
966 armnn::IWorkloadFactory& workloadFactory,
967 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
968 const armnn::DataLayout dataLayout);
969
970template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
971SimpleResizeNearestNeighborTest<armnn::DataType::QAsymmS8>(
972 armnn::IWorkloadFactory& workloadFactory,
973 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
974 const armnn::DataLayout dataLayout);
975
976template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
977ResizeNearestNeighborSqMinTest<armnn::DataType::QAsymmS8>(
978 armnn::IWorkloadFactory& workloadFactory,
979 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
980 const armnn::DataLayout dataLayout);
981
982template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
983ResizeNearestNeighborMinTest<armnn::DataType::QAsymmS8>(
984 armnn::IWorkloadFactory& workloadFactory,
985 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
986 const armnn::DataLayout dataLayout);
987
988template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
989ResizeNearestNeighborMagTest<armnn::DataType::QAsymmS8>(
990 armnn::IWorkloadFactory& workloadFactory,
991 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
992 const armnn::DataLayout dataLayout,
993 float inQuantScale,
994 int32_t inQuantOffset,
995 float outQuantScale,
996 int32_t outQuantOffset);
997
Teresa Charlin686f45c2020-07-23 17:59:00 +0100998template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
999HalfPixelCentersResizeBilinearTest<armnn::DataType::QAsymmU8>(
1000 armnn::IWorkloadFactory& workloadFactory,
1001 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1002 const armnn::DataLayout dataLayout);
1003
1004template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
1005AlignCornersResizeBilinearTest<armnn::DataType::QAsymmU8>(
1006 armnn::IWorkloadFactory& workloadFactory,
1007 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1008 const armnn::DataLayout dataLayout);
1009
1010template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
1011HalfPixelCentersResizeNearestNeighbourTest<armnn::DataType::QAsymmU8>(
1012 armnn::IWorkloadFactory& workloadFactory,
1013 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1014 const armnn::DataLayout dataLayout);
1015
1016template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
1017AlignCornersResizeNearestNeighbourTest<armnn::DataType::QAsymmU8>(
1018 armnn::IWorkloadFactory& workloadFactory,
1019 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1020 const armnn::DataLayout dataLayout);
1021
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001022// QSymm16
Derek Lambertif90c56d2020-01-10 17:14:08 +00001023template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1024ResizeBilinearNopTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001025 armnn::IWorkloadFactory& workloadFactory,
1026 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1027 const armnn::DataLayout dataLayout);
1028
Derek Lambertif90c56d2020-01-10 17:14:08 +00001029template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1030SimpleResizeBilinearTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001031 armnn::IWorkloadFactory& workloadFactory,
1032 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1033 const armnn::DataLayout dataLayout);
1034
Derek Lambertif90c56d2020-01-10 17:14:08 +00001035template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1036ResizeBilinearSqMinTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001037 armnn::IWorkloadFactory& workloadFactory,
1038 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1039 const armnn::DataLayout dataLayout);
1040
Derek Lambertif90c56d2020-01-10 17:14:08 +00001041template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1042ResizeBilinearMinTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001043 armnn::IWorkloadFactory& workloadFactory,
1044 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1045 const armnn::DataLayout dataLayout);
1046
Derek Lambertif90c56d2020-01-10 17:14:08 +00001047template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1048ResizeBilinearMagTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001049 armnn::IWorkloadFactory& workloadFactory,
1050 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1051 const armnn::DataLayout dataLayout);
1052
Derek Lambertif90c56d2020-01-10 17:14:08 +00001053template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1054ResizeNearestNeighborNopTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001055 armnn::IWorkloadFactory& workloadFactory,
1056 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1057 const armnn::DataLayout dataLayout);
1058
Derek Lambertif90c56d2020-01-10 17:14:08 +00001059template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1060SimpleResizeNearestNeighborTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001061 armnn::IWorkloadFactory& workloadFactory,
1062 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1063 const armnn::DataLayout dataLayout);
1064
Derek Lambertif90c56d2020-01-10 17:14:08 +00001065template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1066ResizeNearestNeighborSqMinTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001067 armnn::IWorkloadFactory& workloadFactory,
1068 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1069 const armnn::DataLayout dataLayout);
1070
Derek Lambertif90c56d2020-01-10 17:14:08 +00001071template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1072ResizeNearestNeighborMinTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001073 armnn::IWorkloadFactory& workloadFactory,
1074 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1075 const armnn::DataLayout dataLayout);
1076
Derek Lambertif90c56d2020-01-10 17:14:08 +00001077template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1078ResizeNearestNeighborMagTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001079 armnn::IWorkloadFactory& workloadFactory,
1080 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1081 const armnn::DataLayout dataLayout,
1082 float inQuantScale,
1083 int32_t inQuantOffset,
1084 float outQuantScale,
1085 int32_t outQuantOffset);
Teresa Charlin686f45c2020-07-23 17:59:00 +01001086
1087template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1088HalfPixelCentersResizeBilinearTest<armnn::DataType::QSymmS16>(
1089 armnn::IWorkloadFactory& workloadFactory,
1090 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1091 const armnn::DataLayout dataLayout);
1092
1093template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1094AlignCornersResizeBilinearTest<armnn::DataType::QSymmS16>(
1095 armnn::IWorkloadFactory& workloadFactory,
1096 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1097 const armnn::DataLayout dataLayout);
1098
1099template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1100HalfPixelCentersResizeNearestNeighbourTest<armnn::DataType::QSymmS16>(
1101 armnn::IWorkloadFactory& workloadFactory,
1102 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1103 const armnn::DataLayout dataLayout);
1104
1105template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1106AlignCornersResizeNearestNeighbourTest<armnn::DataType::QSymmS16>(
1107 armnn::IWorkloadFactory& workloadFactory,
1108 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1109 const armnn::DataLayout dataLayout);