blob: aa5bbae8d7abd90cd677cbf1b7077fcfafafb5d3 [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
Sadik Armagana097d2a2021-11-24 15:47:28 +000015#include <armnnTestUtils/DataLayoutUtils.hpp>
16#include <armnnTestUtils/TensorCopyUtils.hpp>
17#include <WorkloadTestUtils.hpp>
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +000018
Sadik Armagana097d2a2021-11-24 15:47:28 +000019#include <TensorHelpers.hpp>
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +000020
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,
Finn Williamsec36d3e2020-08-28 13:17:05 +010079 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +000080 const ResizeTestParams& params)
81{
Jan Eilers8eb25602020-03-09 12:13:48 +000082 IgnoreUnused(memoryManager);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +000083 armnn::TensorInfo inputInfo(params.m_InputShape, ArmnnType);
84 armnn::TensorInfo outputInfo(params.m_OutputShape, ArmnnType);
85
86 if (armnn::IsQuantizedType<T>())
87 {
88 inputInfo.SetQuantizationScale(params.m_InQuantScale);
89 inputInfo.SetQuantizationOffset(params.m_InQuantOffset);
90
91 outputInfo.SetQuantizationScale(params.m_OutQuantScale);
92 outputInfo.SetQuantizationOffset(params.m_OutQuantOffset);
93 }
94
95 std::vector<T> inputData =
96 armnnUtils::QuantizedVector<T>(params.m_InputData, params.m_InQuantScale, params.m_InQuantOffset);
97
Sadik Armagan483c8112021-06-01 09:24:52 +010098 std::vector<T> actualOutput(outputInfo.GetNumElements());
99 std::vector<T> expectedOutputData = armnnUtils::QuantizedVector<T>(params.m_ExpectedOutputData,
100 params.m_OutQuantScale,
101 params.m_OutQuantOffset);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000102
103 if (params.m_DataLayout == armnn::DataLayout::NHWC)
104 {
105 PermuteTensorNchwToNhwc(inputInfo, inputData);
106 PermuteTensorNchwToNhwc(outputInfo, expectedOutputData);
107 }
108
Finn Williamsec36d3e2020-08-28 13:17:05 +0100109 std::unique_ptr<armnn::ITensorHandle> inputHandle = tensorHandleFactory.CreateTensorHandle(inputInfo);
110 std::unique_ptr<armnn::ITensorHandle> outputHandle = tensorHandleFactory.CreateTensorHandle(outputInfo);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000111
112 armnn::ResizeQueueDescriptor descriptor;
113 descriptor.m_Parameters.m_Method = params.m_ResizeMethod;
114 descriptor.m_Parameters.m_DataLayout = params.m_DataLayout;
David Monahanab219752020-06-19 16:43:48 +0100115 descriptor.m_Parameters.m_AlignCorners = params.m_AlignCorners;
116 descriptor.m_Parameters.m_HalfPixelCenters = params.m_HalfPixelCenters;
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000117
118 armnnUtils::DataLayoutIndexed dataLayoutIndexed(params.m_DataLayout);
119 descriptor.m_Parameters.m_TargetWidth = params.m_OutputShape[dataLayoutIndexed.GetWidthIndex()];
120 descriptor.m_Parameters.m_TargetHeight = params.m_OutputShape[dataLayoutIndexed.GetHeightIndex()];
121
122 armnn::WorkloadInfo info;
123 AddInputToWorkload(descriptor, info, inputInfo, inputHandle.get());
124 AddOutputToWorkload(descriptor, info, outputInfo, outputHandle.get());
125
126 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateResize(descriptor, info);
127
128 inputHandle->Allocate();
129 outputHandle->Allocate();
Sadik Armagan483c8112021-06-01 09:24:52 +0100130 CopyDataToITensorHandle(inputHandle.get(), inputData.data());
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000131
132 workload->PostAllocationConfigure();
133 workload->Execute();
134
Sadik Armagan483c8112021-06-01 09:24:52 +0100135 CopyDataFromITensorHandle(actualOutput.data(), outputHandle.get());
136
137 return LayerTestResult<T, NumDims>(actualOutput,
138 expectedOutputData,
139 outputHandle->GetShape(),
140 outputInfo.GetShape());
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000141}
142
143} // anonymous namespace
144
145//
146// Bilinear
147//
148
149template<armnn::DataType ArmnnType, typename T>
150LayerTestResult<T, 4> ResizeBilinearNopTest(
151 armnn::IWorkloadFactory& workloadFactory,
152 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100153 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000154 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
Finn Williamsec36d3e2020-08-28 13:17:05 +0100180 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000181}
182
183template<armnn::DataType ArmnnType, typename T>
184LayerTestResult<T, 4> SimpleResizeBilinearTest(
185 armnn::IWorkloadFactory& workloadFactory,
186 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100187 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000188 const armnn::DataLayout dataLayout)
189{
190 ResizeTestParams testParams;
191 testParams.m_ResizeMethod = armnn::ResizeMethod::Bilinear;
192 testParams.m_DataLayout = dataLayout;
193
194 testParams.m_InputShape = { 1, 2, 2, 2 };
195 testParams.m_OutputShape = { 1, 2, 1, 1 };
196
197 testParams.m_InputData =
198 {
199 1.0f, 255.0f,
200 200.0f, 250.0f,
201
202 250.0f, 200.0f,
203 250.0f, 1.0f
204 };
205
206 // The 'resize' operation projects the top-left corner of output texels into the input image,
207 // then figures out the interpolants and weights. Note this is different to projecting the centre of the
208 // output texel. Thus, for a input matrix of 2x2, we'll expect the output 1x1 matrix to contain, as
209 // its single element, the value that was at position (0,0) of the input matrix (rather than an average,
210 // which we would expect if projecting the centre).
211 testParams.m_ExpectedOutputData =
212 {
213 1.0f,
214
215 250.0f
216 };
217
218 testParams.SetInOutQuantParams(0.1567f, 1);
219
Finn Williamsec36d3e2020-08-28 13:17:05 +0100220 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000221}
222
223template<armnn::DataType ArmnnType, typename T>
224LayerTestResult<T, 4> ResizeBilinearSqMinTest(
225 armnn::IWorkloadFactory& workloadFactory,
226 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100227 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000228 const armnn::DataLayout dataLayout)
229{
230 ResizeTestParams testParams;
231 testParams.m_ResizeMethod = armnn::ResizeMethod::Bilinear;
232 testParams.m_DataLayout = dataLayout;
233
234 testParams.m_InputShape = { 1, 2, 4, 4 };
235 testParams.m_OutputShape = { 1, 2, 2, 2 };
236
237 testParams.m_InputData =
238 {
239 1.0f, 2.0f, 3.0f, 4.0f,
240 2.0f, 3.0f, 4.0f, 5.0f,
241 3.0f, 4.0f, 5.0f, 6.0f,
242 4.0f, 5.0f, 6.0f, 7.0f,
243
244 7.0f, 6.0f, 5.0f, 4.0f,
245 6.0f, 5.0f, 4.0f, 3.0f,
246 5.0f, 4.0f, 3.0f, 2.0f,
247 4.0f, 3.0f, 2.0f, 1.0f
248 };
249
250 testParams.m_ExpectedOutputData =
251 {
252 1.0f, 3.0f,
253 3.0f, 5.0f,
254
255 7.0f, 5.0f,
256 5.0f, 3.0f
257 };
258
259 testParams.SetInOutQuantParams(3.141592f, 3);
260
Finn Williamsec36d3e2020-08-28 13:17:05 +0100261 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000262}
263
264template<armnn::DataType ArmnnType, typename T>
265LayerTestResult<T, 4> ResizeBilinearMinTest(
266 armnn::IWorkloadFactory& workloadFactory,
267 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100268 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000269 const armnn::DataLayout dataLayout)
270{
271 ResizeTestParams testParams;
272 testParams.m_ResizeMethod = armnn::ResizeMethod::Bilinear;
273 testParams.m_DataLayout = dataLayout;
274
275 testParams.m_InputShape = { 1, 2, 3, 5 };
276 testParams.m_OutputShape = { 1, 2, 2, 3 };
277
278 testParams.m_InputData =
279 {
280 1.5f, 3.0f, 4.5f, 6.0f, 7.5f,
281 9.0f, 10.5f, 12.0f, 13.5f, 15.0f,
282 16.5f, 18.0f, 19.5f, 21.0f, 22.5f,
283
284 16.5f, 18.0f, 19.5f, 21.0f, 22.5f,
285 9.0f, 10.5f, 12.0f, 13.5f, 15.0f,
286 1.5f, 3.0f, 4.5f, 6.0f, 7.5f
287 };
288
289 testParams.m_ExpectedOutputData =
290 {
291 1.50f, 4.00f, 6.50f,
292 12.75f, 15.25f, 17.75f,
293
294 16.50f, 19.00f, 21.50f,
295 5.25f, 7.75f, 10.25f
296 };
297
298 testParams.SetInOutQuantParams(1.5f, -1);
299
Finn Williamsec36d3e2020-08-28 13:17:05 +0100300 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000301}
302
303template<armnn::DataType ArmnnType, typename T>
304LayerTestResult<T, 4> ResizeBilinearMagTest(
305 armnn::IWorkloadFactory& workloadFactory,
306 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100307 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000308 const armnn::DataLayout dataLayout)
309{
310 ResizeTestParams testParams;
311 testParams.m_ResizeMethod = armnn::ResizeMethod::Bilinear;
312 testParams.m_DataLayout = dataLayout;
313
314 testParams.m_InputShape = { 1, 2, 3, 2 };
315 testParams.m_OutputShape = { 1, 2, 3, 5 };
316
317 testParams.m_InputData =
318 {
319 1.0f, 2.0f,
320 13.0f, 21.0f,
321 144.0f, 233.0f,
322
323 233.0f, 144.0f,
324 21.0f, 13.0f,
325 2.0f, 1.0f
326 };
327
328 testParams.m_ExpectedOutputData =
329 {
330 1.0f, 1.4f, 1.8f, 2.0f, 2.0f,
331 13.0f, 16.2f, 19.4f, 21.0f, 21.0f,
332 144.0f, 179.6f, 215.2f, 233.0f, 233.0f,
333
334 233.0f, 197.4f, 161.8f, 144.0f, 144.0f,
335 21.0f, 17.8f, 14.6f, 13.0f, 13.0f,
336 2.0f, 1.6f, 1.2f, 1.0f, 1.0f
337 };
338
339 testParams.SetInQuantParams(1.0f, 0);
340
Finn Williamsec36d3e2020-08-28 13:17:05 +0100341 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000342}
343
344//
345// NearestNeighbor
346//
347
348template<armnn::DataType ArmnnType, typename T>
349LayerTestResult<T, 4> ResizeNearestNeighborNopTest(
350 armnn::IWorkloadFactory& workloadFactory,
351 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100352 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000353 const armnn::DataLayout dataLayout)
354{
355 ResizeTestParams testParams;
356 testParams.m_ResizeMethod = armnn::ResizeMethod::NearestNeighbor;
357 testParams.m_DataLayout = dataLayout;
358
359 testParams.m_InputShape = { 1, 2, 4, 4 };
360 testParams.m_OutputShape = testParams.m_InputShape;
361
362 testParams.m_InputData =
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 1.0f, 2.0f, 3.0f, 4.0f,
370 2.0f, 3.0f, 4.0f, 5.0f,
371 3.0f, 4.0f, 5.0f, 6.0f,
372 4.0f, 5.0f, 6.0f, 7.0f
373 };
374
375 testParams.m_ExpectedOutputData = testParams.m_InputData;
376
377 testParams.SetInOutQuantParams(1.5f, 3);
378
Finn Williamsec36d3e2020-08-28 13:17:05 +0100379 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000380}
381
382template<armnn::DataType ArmnnType, typename T>
383LayerTestResult<T, 4> SimpleResizeNearestNeighborTest(
384 armnn::IWorkloadFactory& workloadFactory,
385 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100386 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000387 const armnn::DataLayout dataLayout)
388{
389 ResizeTestParams testParams;
390 testParams.m_ResizeMethod = armnn::ResizeMethod::NearestNeighbor;
391 testParams.m_DataLayout = dataLayout;
392
393 testParams.m_InputShape = { 1, 2, 2, 2 };
394 testParams.m_OutputShape = { 1, 2, 1, 1 };
395
396 testParams.m_InputData =
397 {
398 1.0f, 255.0f,
399 200.0f, 250.0f,
400
401 250.0f, 200.0f,
402 250.0f, 1.0f
403 };
404
405 // The 'resize' operation projects the top-left corner of output texels into the input image,
406 // then figures out the interpolants and weights. Note this is different to projecting the centre of the
407 // output texel. Thus, for a input matrix of 2x2, we'll expect the output 1x1 matrix to contain, as
408 // its single element, the value that was at position (0,0) of the input matrix (rather than an average,
409 // which we would expect if projecting the centre).
410 testParams.m_ExpectedOutputData =
411 {
412 1.0f,
413
414 250.0f
415 };
416
417 testParams.SetInOutQuantParams(0.1567f, 1);
418
Finn Williamsec36d3e2020-08-28 13:17:05 +0100419 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000420}
421
422template<armnn::DataType ArmnnType, typename T>
423LayerTestResult<T, 4> ResizeNearestNeighborSqMinTest(
424 armnn::IWorkloadFactory& workloadFactory,
425 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100426 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000427 const armnn::DataLayout dataLayout)
428{
429 ResizeTestParams testParams;
430 testParams.m_ResizeMethod = armnn::ResizeMethod::NearestNeighbor;
431 testParams.m_DataLayout = dataLayout;
432
433 testParams.m_InputShape = { 1, 2, 4, 4 };
434 testParams.m_OutputShape = { 1, 2, 2, 2 };
435
436 testParams.m_InputData =
437 {
438 1.0f, 2.0f, 3.0f, 4.0f,
439 2.0f, 3.0f, 4.0f, 5.0f,
440 3.0f, 4.0f, 5.0f, 6.0f,
441 4.0f, 5.0f, 6.0f, 7.0f,
442
443 7.0f, 6.0f, 5.0f, 4.0f,
444 6.0f, 5.0f, 4.0f, 3.0f,
445 5.0f, 4.0f, 3.0f, 2.0f,
446 4.0f, 3.0f, 2.0f, 1.0f
447 };
448
449 testParams.m_ExpectedOutputData =
450 {
451 1.0f, 3.0f,
452 3.0f, 5.0f,
453
454 7.0f, 5.0f,
455 5.0f, 3.0f
456 };
457
458 testParams.SetInOutQuantParams(3.141592f, 3);
459
Finn Williamsec36d3e2020-08-28 13:17:05 +0100460 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000461}
462
463template<armnn::DataType ArmnnType, typename T>
464LayerTestResult<T, 4> ResizeNearestNeighborMinTest(
465 armnn::IWorkloadFactory& workloadFactory,
466 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100467 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000468 const armnn::DataLayout dataLayout)
469{
470 ResizeTestParams testParams;
471 testParams.m_ResizeMethod = armnn::ResizeMethod::NearestNeighbor;
472 testParams.m_DataLayout = dataLayout;
473
474 testParams.m_InputShape = { 1, 2, 3, 5 };
475 testParams.m_OutputShape = { 1, 2, 2, 3 };
476
477 testParams.m_InputData =
478 {
479 1.5f, 3.0f, 4.5f, 6.0f, 7.5f,
480 9.0f, 10.5f, 12.0f, 13.5f, 15.0f,
481 16.5f, 18.0f, 19.5f, 21.0f, 22.5f,
482
483 16.5f, 18.0f, 19.5f, 21.0f, 22.5f,
484 9.0f, 10.5f, 12.0f, 13.5f, 15.0f,
485 1.5f, 3.0f, 4.5f, 6.0f, 7.5f
486 };
487
488 testParams.m_ExpectedOutputData =
489 {
490 1.5f, 3.0f, 6.0f,
491 9.0f, 10.5f, 13.5f,
492
493 16.5f, 18.0f, 21.0f,
494 9.0f, 10.5f, 13.5f
495 };
496
497 testParams.SetInOutQuantParams(1.5f, -1);
498
Finn Williamsec36d3e2020-08-28 13:17:05 +0100499 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000500}
501
502template<armnn::DataType ArmnnType, typename T>
503LayerTestResult<T, 4> ResizeNearestNeighborMagTest(
504 armnn::IWorkloadFactory& workloadFactory,
505 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100506 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000507 const armnn::DataLayout dataLayout,
508 float inQuantScale,
509 int32_t inQuantOffset,
510 float outQuantScale,
511 int32_t outQuantOffset)
512{
513 ResizeTestParams testParams;
514 testParams.m_ResizeMethod = armnn::ResizeMethod::NearestNeighbor;
515 testParams.m_DataLayout = dataLayout;
516
517 testParams.m_InputShape = { 1, 2, 3, 2 };
518 testParams.m_OutputShape = { 1, 2, 3, 5 };
519
520 testParams.m_InputData =
521 {
522 0.183005f, 2.379065f,
523 1.054970f, 1.302565f,
524 2.400595f, 0.688960f,
525
526 2.400595f, 0.688960f,
527 1.054970f, 1.302565f,
528 0.183005f, 2.379065f,
529 };
530
531 testParams.m_ExpectedOutputData =
532 {
533 0.183005f, 0.183005f, 0.183005f, 2.379065f, 2.379065f,
534 1.054970f, 1.054970f, 1.054970f, 1.302565f, 1.302565f,
535 2.400595f, 2.400595f, 2.400595f, 0.688960f, 0.688960f,
536
537 2.400595f, 2.400595f, 2.400595f, 0.688960f, 0.688960f,
538 1.054970f, 1.054970f, 1.054970f, 1.302565f, 1.302565f,
539 0.183005f, 0.183005f, 0.183005f, 2.379065f, 2.379065f
540 };
541
542 testParams.SetInQuantParams(inQuantScale, inQuantOffset);
543 testParams.SetOutQuantParams(outQuantScale, outQuantOffset);
544
Finn Williamsec36d3e2020-08-28 13:17:05 +0100545 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000546}
547
David Monahanab219752020-06-19 16:43:48 +0100548template<armnn::DataType ArmnnType, typename T>
549LayerTestResult<T, 4> HalfPixelCentersResizeBilinearTest(
550 armnn::IWorkloadFactory& workloadFactory,
551 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100552 const armnn::ITensorHandleFactory& tensorHandleFactory,
David Monahanab219752020-06-19 16:43:48 +0100553 const armnn::DataLayout dataLayout)
554{
555 ResizeTestParams testParams;
556 testParams.m_ResizeMethod = armnn::ResizeMethod::Bilinear;
557 testParams.m_DataLayout = dataLayout;
558 testParams.m_HalfPixelCenters = true;
559
560 testParams.m_InputShape = { 2, 1, 2, 2 };
561 testParams.m_OutputShape = { 2, 1, 3, 3 };
562
563 testParams.m_InputData =
564 {
565 1.0f, 2.0f,
566 3.0f, 4.0f,
567
568 1.0f, 2.0f,
569 3.0f, 4.0f
570 };
571
572 testParams.m_ExpectedOutputData =
573 {
574 1.0f, 1.5f, 2.0f,
575 2.0f, 2.5f, 3.0f,
576 3.0f, 3.5f, 4.0f,
577
578 1.0f, 1.5f, 2.0f,
579 2.0f, 2.5f, 3.0f,
580 3.0f, 3.5f, 4.0f,
581 };
582
Finn Williamsec36d3e2020-08-28 13:17:05 +0100583 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
David Monahanab219752020-06-19 16:43:48 +0100584}
585
586template<armnn::DataType ArmnnType, typename T>
587LayerTestResult<T, 4> AlignCornersResizeBilinearTest(
588 armnn::IWorkloadFactory& workloadFactory,
589 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100590 const armnn::ITensorHandleFactory& tensorHandleFactory,
David Monahanab219752020-06-19 16:43:48 +0100591 const armnn::DataLayout dataLayout)
592{
593 ResizeTestParams testParams;
594 testParams.m_ResizeMethod = armnn::ResizeMethod::Bilinear;
595 testParams.m_DataLayout = dataLayout;
596 testParams.m_AlignCorners = true;
597
598 testParams.m_InputShape = { 1, 1, 2, 2 };
599 testParams.m_OutputShape = { 1, 1, 1, 1 };
600
601 testParams.m_InputData =
602 {
603 1.0f, 2.0f,
604 3.0f, 4.0f,
605 };
606
607 testParams.m_ExpectedOutputData =
608 {
609 1.0f
610 };
611
Finn Williamsec36d3e2020-08-28 13:17:05 +0100612 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
David Monahanab219752020-06-19 16:43:48 +0100613}
614
615template<armnn::DataType ArmnnType, typename T>
616LayerTestResult<T, 4> HalfPixelCentersResizeNearestNeighbourTest(
617 armnn::IWorkloadFactory& workloadFactory,
618 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100619 const armnn::ITensorHandleFactory& tensorHandleFactory,
David Monahanab219752020-06-19 16:43:48 +0100620 const armnn::DataLayout dataLayout)
621{
622 ResizeTestParams testParams;
623 testParams.m_ResizeMethod = armnn::ResizeMethod::NearestNeighbor;
624 testParams.m_DataLayout = dataLayout;
625 testParams.m_HalfPixelCenters = true;
626
627 testParams.m_InputShape = { 1, 1, 2, 5 };
628 testParams.m_OutputShape = { 1, 1, 2, 2 };
629
630 testParams.m_InputData =
631 {
632 1.0f, 2.0f, 3.0f, 4.0f, 5.0f,
633
634 1.0f, 2.0f, 3.0f, 4.0f, 5.0f
635 };
636
637 testParams.m_ExpectedOutputData =
638 {
639 2.0f, 4.0f,
640 2.0f, 4.0f
641 };
642
Finn Williamsec36d3e2020-08-28 13:17:05 +0100643 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
David Monahanab219752020-06-19 16:43:48 +0100644}
645
646template<armnn::DataType ArmnnType, typename T>
647LayerTestResult<T, 4> AlignCornersResizeNearestNeighbourTest(
648 armnn::IWorkloadFactory& workloadFactory,
649 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100650 const armnn::ITensorHandleFactory& tensorHandleFactory,
David Monahanab219752020-06-19 16:43:48 +0100651 const armnn::DataLayout dataLayout)
652{
653 ResizeTestParams testParams;
654 testParams.m_ResizeMethod = armnn::ResizeMethod::NearestNeighbor;
655 testParams.m_DataLayout = dataLayout;
656 testParams.m_AlignCorners = true;
657
658 testParams.m_InputShape = { 1, 1, 2, 2 };
659 testParams.m_OutputShape = { 1, 1, 1, 1 };
660
661 testParams.m_InputData =
662 {
663 1.0f, 2.0f,
664 3.0f, 4.0f,
665 };
666
667 testParams.m_ExpectedOutputData =
668 {
669 1.0f
670 };
671
Finn Williamsec36d3e2020-08-28 13:17:05 +0100672 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
David Monahanab219752020-06-19 16:43:48 +0100673}
674
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000675//
676// Explicit template instantiations
677//
678
679// Float32
680template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
681ResizeBilinearNopTest<armnn::DataType::Float32>(
682 armnn::IWorkloadFactory& workloadFactory,
683 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100684 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000685 const armnn::DataLayout dataLayout);
686
687template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
688SimpleResizeBilinearTest<armnn::DataType::Float32>(
689 armnn::IWorkloadFactory& workloadFactory,
690 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100691 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000692 const armnn::DataLayout dataLayout);
693
694template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
695ResizeBilinearSqMinTest<armnn::DataType::Float32>(
696 armnn::IWorkloadFactory& workloadFactory,
697 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100698 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000699 const armnn::DataLayout dataLayout);
700
701template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
702ResizeBilinearMinTest<armnn::DataType::Float32>(
703 armnn::IWorkloadFactory& workloadFactory,
704 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100705 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000706 const armnn::DataLayout dataLayout);
707
708template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
709ResizeBilinearMagTest<armnn::DataType::Float32>(
710 armnn::IWorkloadFactory& workloadFactory,
711 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100712 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000713 const armnn::DataLayout dataLayout);
714
715template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
716ResizeNearestNeighborNopTest<armnn::DataType::Float32>(
717 armnn::IWorkloadFactory& workloadFactory,
718 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100719 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000720 const armnn::DataLayout dataLayout);
721
722template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
723SimpleResizeNearestNeighborTest<armnn::DataType::Float32>(
724 armnn::IWorkloadFactory& workloadFactory,
725 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100726 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000727 const armnn::DataLayout dataLayout);
728
729template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
730ResizeNearestNeighborSqMinTest<armnn::DataType::Float32>(
731 armnn::IWorkloadFactory& workloadFactory,
732 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100733 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000734 const armnn::DataLayout dataLayout);
735
736template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
737ResizeNearestNeighborMinTest<armnn::DataType::Float32>(
738 armnn::IWorkloadFactory& workloadFactory,
739 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100740 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000741 const armnn::DataLayout dataLayout);
742
743template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
744ResizeNearestNeighborMagTest<armnn::DataType::Float32>(
745 armnn::IWorkloadFactory& workloadFactory,
746 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100747 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000748 const armnn::DataLayout dataLayout,
749 float inQuantScale,
750 int32_t inQuantOffset,
751 float outQuantScale,
752 int32_t outQuantOffset);
753
David Monahanab219752020-06-19 16:43:48 +0100754template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
755HalfPixelCentersResizeBilinearTest<armnn::DataType::Float32>(
756 armnn::IWorkloadFactory& workloadFactory,
757 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100758 const armnn::ITensorHandleFactory& tensorHandleFactory,
David Monahanab219752020-06-19 16:43:48 +0100759 const armnn::DataLayout dataLayout);
760
761template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
762AlignCornersResizeBilinearTest<armnn::DataType::Float32>(
763 armnn::IWorkloadFactory& workloadFactory,
764 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100765 const armnn::ITensorHandleFactory& tensorHandleFactory,
David Monahanab219752020-06-19 16:43:48 +0100766 const armnn::DataLayout dataLayout);
767
768template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
769HalfPixelCentersResizeNearestNeighbourTest<armnn::DataType::Float32>(
770 armnn::IWorkloadFactory& workloadFactory,
771 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100772 const armnn::ITensorHandleFactory& tensorHandleFactory,
David Monahanab219752020-06-19 16:43:48 +0100773 const armnn::DataLayout dataLayout);
774
775template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
776AlignCornersResizeNearestNeighbourTest<armnn::DataType::Float32>(
777 armnn::IWorkloadFactory& workloadFactory,
778 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100779 const armnn::ITensorHandleFactory& tensorHandleFactory,
David Monahanab219752020-06-19 16:43:48 +0100780 const armnn::DataLayout dataLayout);
781
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000782// Float16
783template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
784ResizeBilinearNopTest<armnn::DataType::Float16>(
785 armnn::IWorkloadFactory& workloadFactory,
786 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100787 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000788 const armnn::DataLayout dataLayout);
789
790template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
791SimpleResizeBilinearTest<armnn::DataType::Float16>(
792 armnn::IWorkloadFactory& workloadFactory,
793 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100794 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000795 const armnn::DataLayout dataLayout);
796
797template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
798ResizeBilinearSqMinTest<armnn::DataType::Float16>(
799 armnn::IWorkloadFactory& workloadFactory,
800 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100801 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000802 const armnn::DataLayout dataLayout);
803
804template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
805ResizeBilinearMinTest<armnn::DataType::Float16>(
806 armnn::IWorkloadFactory& workloadFactory,
807 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100808 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000809 const armnn::DataLayout dataLayout);
810
811template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
812ResizeBilinearMagTest<armnn::DataType::Float16>(
813 armnn::IWorkloadFactory& workloadFactory,
814 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100815 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000816 const armnn::DataLayout dataLayout);
817
818template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
819ResizeNearestNeighborNopTest<armnn::DataType::Float16>(
820 armnn::IWorkloadFactory& workloadFactory,
821 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100822 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000823 const armnn::DataLayout dataLayout);
824
825template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
826SimpleResizeNearestNeighborTest<armnn::DataType::Float16>(
827 armnn::IWorkloadFactory& workloadFactory,
828 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100829 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000830 const armnn::DataLayout dataLayout);
831
832template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
833ResizeNearestNeighborSqMinTest<armnn::DataType::Float16>(
834 armnn::IWorkloadFactory& workloadFactory,
835 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100836 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000837 const armnn::DataLayout dataLayout);
838
839template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
840ResizeNearestNeighborMinTest<armnn::DataType::Float16>(
841 armnn::IWorkloadFactory& workloadFactory,
842 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100843 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000844 const armnn::DataLayout dataLayout);
845
846template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
847ResizeNearestNeighborMagTest<armnn::DataType::Float16>(
848 armnn::IWorkloadFactory& workloadFactory,
849 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100850 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000851 const armnn::DataLayout dataLayout,
852 float inQuantScale,
853 int32_t inQuantOffset,
854 float outQuantScale,
855 int32_t outQuantOffset);
856
Teresa Charlin686f45c2020-07-23 17:59:00 +0100857template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
858HalfPixelCentersResizeBilinearTest<armnn::DataType::Float16>(
859 armnn::IWorkloadFactory& workloadFactory,
860 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100861 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +0100862 const armnn::DataLayout dataLayout);
863
864template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
865AlignCornersResizeBilinearTest<armnn::DataType::Float16>(
866 armnn::IWorkloadFactory& workloadFactory,
867 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100868 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +0100869 const armnn::DataLayout dataLayout);
870
871template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
872HalfPixelCentersResizeNearestNeighbourTest<armnn::DataType::Float16>(
873 armnn::IWorkloadFactory& workloadFactory,
874 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100875 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +0100876 const armnn::DataLayout dataLayout);
877
878template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
879AlignCornersResizeNearestNeighbourTest<armnn::DataType::Float16>(
880 armnn::IWorkloadFactory& workloadFactory,
881 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100882 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +0100883 const armnn::DataLayout dataLayout);
884
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000885// QAsymm8
Derek Lambertif90c56d2020-01-10 17:14:08 +0000886template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
887ResizeBilinearNopTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000888 armnn::IWorkloadFactory& workloadFactory,
889 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100890 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000891 const armnn::DataLayout dataLayout);
892
Derek Lambertif90c56d2020-01-10 17:14:08 +0000893template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
894SimpleResizeBilinearTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000895 armnn::IWorkloadFactory& workloadFactory,
896 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100897 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000898 const armnn::DataLayout dataLayout);
899
Derek Lambertif90c56d2020-01-10 17:14:08 +0000900template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
901ResizeBilinearSqMinTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000902 armnn::IWorkloadFactory& workloadFactory,
903 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100904 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000905 const armnn::DataLayout dataLayout);
906
Derek Lambertif90c56d2020-01-10 17:14:08 +0000907template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
908ResizeBilinearMinTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000909 armnn::IWorkloadFactory& workloadFactory,
910 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100911 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000912 const armnn::DataLayout dataLayout);
913
Derek Lambertif90c56d2020-01-10 17:14:08 +0000914template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
915ResizeBilinearMagTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000916 armnn::IWorkloadFactory& workloadFactory,
917 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100918 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000919 const armnn::DataLayout dataLayout);
920
Derek Lambertif90c56d2020-01-10 17:14:08 +0000921template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
922ResizeNearestNeighborNopTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000923 armnn::IWorkloadFactory& workloadFactory,
924 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100925 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000926 const armnn::DataLayout dataLayout);
927
Derek Lambertif90c56d2020-01-10 17:14:08 +0000928template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
929SimpleResizeNearestNeighborTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000930 armnn::IWorkloadFactory& workloadFactory,
931 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100932 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000933 const armnn::DataLayout dataLayout);
934
Derek Lambertif90c56d2020-01-10 17:14:08 +0000935template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
936ResizeNearestNeighborSqMinTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000937 armnn::IWorkloadFactory& workloadFactory,
938 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100939 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000940 const armnn::DataLayout dataLayout);
941
Derek Lambertif90c56d2020-01-10 17:14:08 +0000942template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
943ResizeNearestNeighborMinTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000944 armnn::IWorkloadFactory& workloadFactory,
945 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100946 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000947 const armnn::DataLayout dataLayout);
948
Derek Lambertif90c56d2020-01-10 17:14:08 +0000949template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
950ResizeNearestNeighborMagTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000951 armnn::IWorkloadFactory& workloadFactory,
952 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100953 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000954 const armnn::DataLayout dataLayout,
955 float inQuantScale,
956 int32_t inQuantOffset,
957 float outQuantScale,
958 int32_t outQuantOffset);
959
Teresa Charlin686f45c2020-07-23 17:59:00 +0100960template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
961HalfPixelCentersResizeBilinearTest<armnn::DataType::QAsymmS8>(
962 armnn::IWorkloadFactory& workloadFactory,
963 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100964 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +0100965 const armnn::DataLayout dataLayout);
966
967template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
968AlignCornersResizeBilinearTest<armnn::DataType::QAsymmS8>(
969 armnn::IWorkloadFactory& workloadFactory,
970 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100971 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +0100972 const armnn::DataLayout dataLayout);
973
974template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
975HalfPixelCentersResizeNearestNeighbourTest<armnn::DataType::QAsymmS8>(
976 armnn::IWorkloadFactory& workloadFactory,
977 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100978 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +0100979 const armnn::DataLayout dataLayout);
980
981template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
982AlignCornersResizeNearestNeighbourTest<armnn::DataType::QAsymmS8>(
983 armnn::IWorkloadFactory& workloadFactory,
984 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100985 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +0100986 const armnn::DataLayout dataLayout);
987
Sadik Armagan303980c2020-04-17 12:45:14 +0100988// QAsymmS8
989template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
990ResizeBilinearNopTest<armnn::DataType::QAsymmS8>(
991 armnn::IWorkloadFactory& workloadFactory,
992 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100993 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +0100994 const armnn::DataLayout dataLayout);
995
996template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
997SimpleResizeBilinearTest<armnn::DataType::QAsymmS8>(
998 armnn::IWorkloadFactory& workloadFactory,
999 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001000 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +01001001 const armnn::DataLayout dataLayout);
1002
1003template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
1004ResizeBilinearSqMinTest<armnn::DataType::QAsymmS8>(
1005 armnn::IWorkloadFactory& workloadFactory,
1006 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001007 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +01001008 const armnn::DataLayout dataLayout);
1009
1010template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
1011ResizeBilinearMinTest<armnn::DataType::QAsymmS8>(
1012 armnn::IWorkloadFactory& workloadFactory,
1013 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001014 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +01001015 const armnn::DataLayout dataLayout);
1016
1017template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
1018ResizeBilinearMagTest<armnn::DataType::QAsymmS8>(
1019 armnn::IWorkloadFactory& workloadFactory,
1020 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001021 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +01001022 const armnn::DataLayout dataLayout);
1023
1024template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
1025ResizeNearestNeighborNopTest<armnn::DataType::QAsymmS8>(
1026 armnn::IWorkloadFactory& workloadFactory,
1027 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001028 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +01001029 const armnn::DataLayout dataLayout);
1030
1031template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
1032SimpleResizeNearestNeighborTest<armnn::DataType::QAsymmS8>(
1033 armnn::IWorkloadFactory& workloadFactory,
1034 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001035 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +01001036 const armnn::DataLayout dataLayout);
1037
1038template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
1039ResizeNearestNeighborSqMinTest<armnn::DataType::QAsymmS8>(
1040 armnn::IWorkloadFactory& workloadFactory,
1041 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001042 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +01001043 const armnn::DataLayout dataLayout);
1044
1045template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
1046ResizeNearestNeighborMinTest<armnn::DataType::QAsymmS8>(
1047 armnn::IWorkloadFactory& workloadFactory,
1048 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001049 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +01001050 const armnn::DataLayout dataLayout);
1051
1052template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
1053ResizeNearestNeighborMagTest<armnn::DataType::QAsymmS8>(
1054 armnn::IWorkloadFactory& workloadFactory,
1055 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001056 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +01001057 const armnn::DataLayout dataLayout,
1058 float inQuantScale,
1059 int32_t inQuantOffset,
1060 float outQuantScale,
1061 int32_t outQuantOffset);
1062
Teresa Charlin686f45c2020-07-23 17:59:00 +01001063template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
1064HalfPixelCentersResizeBilinearTest<armnn::DataType::QAsymmU8>(
1065 armnn::IWorkloadFactory& workloadFactory,
1066 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001067 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +01001068 const armnn::DataLayout dataLayout);
1069
1070template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
1071AlignCornersResizeBilinearTest<armnn::DataType::QAsymmU8>(
1072 armnn::IWorkloadFactory& workloadFactory,
1073 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001074 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +01001075 const armnn::DataLayout dataLayout);
1076
1077template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
1078HalfPixelCentersResizeNearestNeighbourTest<armnn::DataType::QAsymmU8>(
1079 armnn::IWorkloadFactory& workloadFactory,
1080 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001081 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +01001082 const armnn::DataLayout dataLayout);
1083
1084template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
1085AlignCornersResizeNearestNeighbourTest<armnn::DataType::QAsymmU8>(
1086 armnn::IWorkloadFactory& workloadFactory,
1087 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001088 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +01001089 const armnn::DataLayout dataLayout);
1090
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001091// QSymm16
Derek Lambertif90c56d2020-01-10 17:14:08 +00001092template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1093ResizeBilinearNopTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001094 armnn::IWorkloadFactory& workloadFactory,
1095 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001096 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001097 const armnn::DataLayout dataLayout);
1098
Derek Lambertif90c56d2020-01-10 17:14:08 +00001099template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1100SimpleResizeBilinearTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001101 armnn::IWorkloadFactory& workloadFactory,
1102 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001103 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001104 const armnn::DataLayout dataLayout);
1105
Derek Lambertif90c56d2020-01-10 17:14:08 +00001106template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1107ResizeBilinearSqMinTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001108 armnn::IWorkloadFactory& workloadFactory,
1109 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001110 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001111 const armnn::DataLayout dataLayout);
1112
Derek Lambertif90c56d2020-01-10 17:14:08 +00001113template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1114ResizeBilinearMinTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001115 armnn::IWorkloadFactory& workloadFactory,
1116 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001117 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001118 const armnn::DataLayout dataLayout);
1119
Derek Lambertif90c56d2020-01-10 17:14:08 +00001120template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1121ResizeBilinearMagTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001122 armnn::IWorkloadFactory& workloadFactory,
1123 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001124 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001125 const armnn::DataLayout dataLayout);
1126
Derek Lambertif90c56d2020-01-10 17:14:08 +00001127template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1128ResizeNearestNeighborNopTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001129 armnn::IWorkloadFactory& workloadFactory,
1130 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001131 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001132 const armnn::DataLayout dataLayout);
1133
Derek Lambertif90c56d2020-01-10 17:14:08 +00001134template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1135SimpleResizeNearestNeighborTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001136 armnn::IWorkloadFactory& workloadFactory,
1137 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001138 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001139 const armnn::DataLayout dataLayout);
1140
Derek Lambertif90c56d2020-01-10 17:14:08 +00001141template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1142ResizeNearestNeighborSqMinTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001143 armnn::IWorkloadFactory& workloadFactory,
1144 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001145 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001146 const armnn::DataLayout dataLayout);
1147
Derek Lambertif90c56d2020-01-10 17:14:08 +00001148template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1149ResizeNearestNeighborMinTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001150 armnn::IWorkloadFactory& workloadFactory,
1151 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001152 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001153 const armnn::DataLayout dataLayout);
1154
Derek Lambertif90c56d2020-01-10 17:14:08 +00001155template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1156ResizeNearestNeighborMagTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001157 armnn::IWorkloadFactory& workloadFactory,
1158 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001159 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001160 const armnn::DataLayout dataLayout,
1161 float inQuantScale,
1162 int32_t inQuantOffset,
1163 float outQuantScale,
1164 int32_t outQuantOffset);
Teresa Charlin686f45c2020-07-23 17:59:00 +01001165
1166template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1167HalfPixelCentersResizeBilinearTest<armnn::DataType::QSymmS16>(
1168 armnn::IWorkloadFactory& workloadFactory,
1169 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001170 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +01001171 const armnn::DataLayout dataLayout);
1172
1173template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1174AlignCornersResizeBilinearTest<armnn::DataType::QSymmS16>(
1175 armnn::IWorkloadFactory& workloadFactory,
1176 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001177 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +01001178 const armnn::DataLayout dataLayout);
1179
1180template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1181HalfPixelCentersResizeNearestNeighbourTest<armnn::DataType::QSymmS16>(
1182 armnn::IWorkloadFactory& workloadFactory,
1183 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001184 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +01001185 const armnn::DataLayout dataLayout);
1186
1187template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1188AlignCornersResizeNearestNeighbourTest<armnn::DataType::QSymmS16>(
1189 armnn::IWorkloadFactory& workloadFactory,
1190 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001191 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +01001192 const armnn::DataLayout dataLayout);