blob: a2a804d54e7ee9dcf0f015c4aea37bee59c3277c [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,
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
98 std::vector<T> expectedOutputData =
99 armnnUtils::QuantizedVector<T>(params.m_ExpectedOutputData,
100 params.m_OutQuantScale,
101 params.m_OutQuantOffset);
102
103 if (params.m_DataLayout == armnn::DataLayout::NHWC)
104 {
105 PermuteTensorNchwToNhwc(inputInfo, inputData);
106 PermuteTensorNchwToNhwc(outputInfo, expectedOutputData);
107 }
108
109 auto input = MakeTensor<T, NumDims>(inputInfo, inputData);
110
111 LayerTestResult<T, NumDims> result(outputInfo);
112 result.outputExpected = MakeTensor<T, NumDims>(outputInfo, expectedOutputData);
Finn Williamsec36d3e2020-08-28 13:17:05 +0100113
114 std::unique_ptr<armnn::ITensorHandle> inputHandle = tensorHandleFactory.CreateTensorHandle(inputInfo);
115 std::unique_ptr<armnn::ITensorHandle> outputHandle = tensorHandleFactory.CreateTensorHandle(outputInfo);
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,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100154 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000155 const armnn::DataLayout dataLayout)
156{
157 ResizeTestParams testParams;
158 testParams.m_ResizeMethod = armnn::ResizeMethod::Bilinear;
159 testParams.m_DataLayout = dataLayout;
160
161 testParams.m_InputShape = { 1, 2, 4, 4 };
162 testParams.m_OutputShape = testParams.m_InputShape;
163
164 testParams.m_InputData =
165 {
166 1.0f, 2.0f, 3.0f, 4.0f,
167 2.0f, 3.0f, 4.0f, 5.0f,
168 3.0f, 4.0f, 5.0f, 6.0f,
169 4.0f, 5.0f, 6.0f, 7.0f,
170
171 1.0f, 2.0f, 3.0f, 4.0f,
172 2.0f, 3.0f, 4.0f, 5.0f,
173 3.0f, 4.0f, 5.0f, 6.0f,
174 4.0f, 5.0f, 6.0f, 7.0f
175 };
176
177 testParams.m_ExpectedOutputData = testParams.m_InputData;
178
179 testParams.SetInOutQuantParams(1.5f, 3);
180
Finn Williamsec36d3e2020-08-28 13:17:05 +0100181 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000182}
183
184template<armnn::DataType ArmnnType, typename T>
185LayerTestResult<T, 4> SimpleResizeBilinearTest(
186 armnn::IWorkloadFactory& workloadFactory,
187 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100188 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000189 const armnn::DataLayout dataLayout)
190{
191 ResizeTestParams testParams;
192 testParams.m_ResizeMethod = armnn::ResizeMethod::Bilinear;
193 testParams.m_DataLayout = dataLayout;
194
195 testParams.m_InputShape = { 1, 2, 2, 2 };
196 testParams.m_OutputShape = { 1, 2, 1, 1 };
197
198 testParams.m_InputData =
199 {
200 1.0f, 255.0f,
201 200.0f, 250.0f,
202
203 250.0f, 200.0f,
204 250.0f, 1.0f
205 };
206
207 // The 'resize' operation projects the top-left corner of output texels into the input image,
208 // then figures out the interpolants and weights. Note this is different to projecting the centre of the
209 // output texel. Thus, for a input matrix of 2x2, we'll expect the output 1x1 matrix to contain, as
210 // its single element, the value that was at position (0,0) of the input matrix (rather than an average,
211 // which we would expect if projecting the centre).
212 testParams.m_ExpectedOutputData =
213 {
214 1.0f,
215
216 250.0f
217 };
218
219 testParams.SetInOutQuantParams(0.1567f, 1);
220
Finn Williamsec36d3e2020-08-28 13:17:05 +0100221 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000222}
223
224template<armnn::DataType ArmnnType, typename T>
225LayerTestResult<T, 4> ResizeBilinearSqMinTest(
226 armnn::IWorkloadFactory& workloadFactory,
227 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100228 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000229 const armnn::DataLayout dataLayout)
230{
231 ResizeTestParams testParams;
232 testParams.m_ResizeMethod = armnn::ResizeMethod::Bilinear;
233 testParams.m_DataLayout = dataLayout;
234
235 testParams.m_InputShape = { 1, 2, 4, 4 };
236 testParams.m_OutputShape = { 1, 2, 2, 2 };
237
238 testParams.m_InputData =
239 {
240 1.0f, 2.0f, 3.0f, 4.0f,
241 2.0f, 3.0f, 4.0f, 5.0f,
242 3.0f, 4.0f, 5.0f, 6.0f,
243 4.0f, 5.0f, 6.0f, 7.0f,
244
245 7.0f, 6.0f, 5.0f, 4.0f,
246 6.0f, 5.0f, 4.0f, 3.0f,
247 5.0f, 4.0f, 3.0f, 2.0f,
248 4.0f, 3.0f, 2.0f, 1.0f
249 };
250
251 testParams.m_ExpectedOutputData =
252 {
253 1.0f, 3.0f,
254 3.0f, 5.0f,
255
256 7.0f, 5.0f,
257 5.0f, 3.0f
258 };
259
260 testParams.SetInOutQuantParams(3.141592f, 3);
261
Finn Williamsec36d3e2020-08-28 13:17:05 +0100262 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000263}
264
265template<armnn::DataType ArmnnType, typename T>
266LayerTestResult<T, 4> ResizeBilinearMinTest(
267 armnn::IWorkloadFactory& workloadFactory,
268 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100269 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000270 const armnn::DataLayout dataLayout)
271{
272 ResizeTestParams testParams;
273 testParams.m_ResizeMethod = armnn::ResizeMethod::Bilinear;
274 testParams.m_DataLayout = dataLayout;
275
276 testParams.m_InputShape = { 1, 2, 3, 5 };
277 testParams.m_OutputShape = { 1, 2, 2, 3 };
278
279 testParams.m_InputData =
280 {
281 1.5f, 3.0f, 4.5f, 6.0f, 7.5f,
282 9.0f, 10.5f, 12.0f, 13.5f, 15.0f,
283 16.5f, 18.0f, 19.5f, 21.0f, 22.5f,
284
285 16.5f, 18.0f, 19.5f, 21.0f, 22.5f,
286 9.0f, 10.5f, 12.0f, 13.5f, 15.0f,
287 1.5f, 3.0f, 4.5f, 6.0f, 7.5f
288 };
289
290 testParams.m_ExpectedOutputData =
291 {
292 1.50f, 4.00f, 6.50f,
293 12.75f, 15.25f, 17.75f,
294
295 16.50f, 19.00f, 21.50f,
296 5.25f, 7.75f, 10.25f
297 };
298
299 testParams.SetInOutQuantParams(1.5f, -1);
300
Finn Williamsec36d3e2020-08-28 13:17:05 +0100301 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000302}
303
304template<armnn::DataType ArmnnType, typename T>
305LayerTestResult<T, 4> ResizeBilinearMagTest(
306 armnn::IWorkloadFactory& workloadFactory,
307 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100308 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000309 const armnn::DataLayout dataLayout)
310{
311 ResizeTestParams testParams;
312 testParams.m_ResizeMethod = armnn::ResizeMethod::Bilinear;
313 testParams.m_DataLayout = dataLayout;
314
315 testParams.m_InputShape = { 1, 2, 3, 2 };
316 testParams.m_OutputShape = { 1, 2, 3, 5 };
317
318 testParams.m_InputData =
319 {
320 1.0f, 2.0f,
321 13.0f, 21.0f,
322 144.0f, 233.0f,
323
324 233.0f, 144.0f,
325 21.0f, 13.0f,
326 2.0f, 1.0f
327 };
328
329 testParams.m_ExpectedOutputData =
330 {
331 1.0f, 1.4f, 1.8f, 2.0f, 2.0f,
332 13.0f, 16.2f, 19.4f, 21.0f, 21.0f,
333 144.0f, 179.6f, 215.2f, 233.0f, 233.0f,
334
335 233.0f, 197.4f, 161.8f, 144.0f, 144.0f,
336 21.0f, 17.8f, 14.6f, 13.0f, 13.0f,
337 2.0f, 1.6f, 1.2f, 1.0f, 1.0f
338 };
339
340 testParams.SetInQuantParams(1.0f, 0);
341
Finn Williamsec36d3e2020-08-28 13:17:05 +0100342 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000343}
344
345//
346// NearestNeighbor
347//
348
349template<armnn::DataType ArmnnType, typename T>
350LayerTestResult<T, 4> ResizeNearestNeighborNopTest(
351 armnn::IWorkloadFactory& workloadFactory,
352 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100353 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000354 const armnn::DataLayout dataLayout)
355{
356 ResizeTestParams testParams;
357 testParams.m_ResizeMethod = armnn::ResizeMethod::NearestNeighbor;
358 testParams.m_DataLayout = dataLayout;
359
360 testParams.m_InputShape = { 1, 2, 4, 4 };
361 testParams.m_OutputShape = testParams.m_InputShape;
362
363 testParams.m_InputData =
364 {
365 1.0f, 2.0f, 3.0f, 4.0f,
366 2.0f, 3.0f, 4.0f, 5.0f,
367 3.0f, 4.0f, 5.0f, 6.0f,
368 4.0f, 5.0f, 6.0f, 7.0f,
369
370 1.0f, 2.0f, 3.0f, 4.0f,
371 2.0f, 3.0f, 4.0f, 5.0f,
372 3.0f, 4.0f, 5.0f, 6.0f,
373 4.0f, 5.0f, 6.0f, 7.0f
374 };
375
376 testParams.m_ExpectedOutputData = testParams.m_InputData;
377
378 testParams.SetInOutQuantParams(1.5f, 3);
379
Finn Williamsec36d3e2020-08-28 13:17:05 +0100380 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000381}
382
383template<armnn::DataType ArmnnType, typename T>
384LayerTestResult<T, 4> SimpleResizeNearestNeighborTest(
385 armnn::IWorkloadFactory& workloadFactory,
386 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100387 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000388 const armnn::DataLayout dataLayout)
389{
390 ResizeTestParams testParams;
391 testParams.m_ResizeMethod = armnn::ResizeMethod::NearestNeighbor;
392 testParams.m_DataLayout = dataLayout;
393
394 testParams.m_InputShape = { 1, 2, 2, 2 };
395 testParams.m_OutputShape = { 1, 2, 1, 1 };
396
397 testParams.m_InputData =
398 {
399 1.0f, 255.0f,
400 200.0f, 250.0f,
401
402 250.0f, 200.0f,
403 250.0f, 1.0f
404 };
405
406 // The 'resize' operation projects the top-left corner of output texels into the input image,
407 // then figures out the interpolants and weights. Note this is different to projecting the centre of the
408 // output texel. Thus, for a input matrix of 2x2, we'll expect the output 1x1 matrix to contain, as
409 // its single element, the value that was at position (0,0) of the input matrix (rather than an average,
410 // which we would expect if projecting the centre).
411 testParams.m_ExpectedOutputData =
412 {
413 1.0f,
414
415 250.0f
416 };
417
418 testParams.SetInOutQuantParams(0.1567f, 1);
419
Finn Williamsec36d3e2020-08-28 13:17:05 +0100420 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000421}
422
423template<armnn::DataType ArmnnType, typename T>
424LayerTestResult<T, 4> ResizeNearestNeighborSqMinTest(
425 armnn::IWorkloadFactory& workloadFactory,
426 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100427 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000428 const armnn::DataLayout dataLayout)
429{
430 ResizeTestParams testParams;
431 testParams.m_ResizeMethod = armnn::ResizeMethod::NearestNeighbor;
432 testParams.m_DataLayout = dataLayout;
433
434 testParams.m_InputShape = { 1, 2, 4, 4 };
435 testParams.m_OutputShape = { 1, 2, 2, 2 };
436
437 testParams.m_InputData =
438 {
439 1.0f, 2.0f, 3.0f, 4.0f,
440 2.0f, 3.0f, 4.0f, 5.0f,
441 3.0f, 4.0f, 5.0f, 6.0f,
442 4.0f, 5.0f, 6.0f, 7.0f,
443
444 7.0f, 6.0f, 5.0f, 4.0f,
445 6.0f, 5.0f, 4.0f, 3.0f,
446 5.0f, 4.0f, 3.0f, 2.0f,
447 4.0f, 3.0f, 2.0f, 1.0f
448 };
449
450 testParams.m_ExpectedOutputData =
451 {
452 1.0f, 3.0f,
453 3.0f, 5.0f,
454
455 7.0f, 5.0f,
456 5.0f, 3.0f
457 };
458
459 testParams.SetInOutQuantParams(3.141592f, 3);
460
Finn Williamsec36d3e2020-08-28 13:17:05 +0100461 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000462}
463
464template<armnn::DataType ArmnnType, typename T>
465LayerTestResult<T, 4> ResizeNearestNeighborMinTest(
466 armnn::IWorkloadFactory& workloadFactory,
467 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100468 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000469 const armnn::DataLayout dataLayout)
470{
471 ResizeTestParams testParams;
472 testParams.m_ResizeMethod = armnn::ResizeMethod::NearestNeighbor;
473 testParams.m_DataLayout = dataLayout;
474
475 testParams.m_InputShape = { 1, 2, 3, 5 };
476 testParams.m_OutputShape = { 1, 2, 2, 3 };
477
478 testParams.m_InputData =
479 {
480 1.5f, 3.0f, 4.5f, 6.0f, 7.5f,
481 9.0f, 10.5f, 12.0f, 13.5f, 15.0f,
482 16.5f, 18.0f, 19.5f, 21.0f, 22.5f,
483
484 16.5f, 18.0f, 19.5f, 21.0f, 22.5f,
485 9.0f, 10.5f, 12.0f, 13.5f, 15.0f,
486 1.5f, 3.0f, 4.5f, 6.0f, 7.5f
487 };
488
489 testParams.m_ExpectedOutputData =
490 {
491 1.5f, 3.0f, 6.0f,
492 9.0f, 10.5f, 13.5f,
493
494 16.5f, 18.0f, 21.0f,
495 9.0f, 10.5f, 13.5f
496 };
497
498 testParams.SetInOutQuantParams(1.5f, -1);
499
Finn Williamsec36d3e2020-08-28 13:17:05 +0100500 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000501}
502
503template<armnn::DataType ArmnnType, typename T>
504LayerTestResult<T, 4> ResizeNearestNeighborMagTest(
505 armnn::IWorkloadFactory& workloadFactory,
506 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100507 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000508 const armnn::DataLayout dataLayout,
509 float inQuantScale,
510 int32_t inQuantOffset,
511 float outQuantScale,
512 int32_t outQuantOffset)
513{
514 ResizeTestParams testParams;
515 testParams.m_ResizeMethod = armnn::ResizeMethod::NearestNeighbor;
516 testParams.m_DataLayout = dataLayout;
517
518 testParams.m_InputShape = { 1, 2, 3, 2 };
519 testParams.m_OutputShape = { 1, 2, 3, 5 };
520
521 testParams.m_InputData =
522 {
523 0.183005f, 2.379065f,
524 1.054970f, 1.302565f,
525 2.400595f, 0.688960f,
526
527 2.400595f, 0.688960f,
528 1.054970f, 1.302565f,
529 0.183005f, 2.379065f,
530 };
531
532 testParams.m_ExpectedOutputData =
533 {
534 0.183005f, 0.183005f, 0.183005f, 2.379065f, 2.379065f,
535 1.054970f, 1.054970f, 1.054970f, 1.302565f, 1.302565f,
536 2.400595f, 2.400595f, 2.400595f, 0.688960f, 0.688960f,
537
538 2.400595f, 2.400595f, 2.400595f, 0.688960f, 0.688960f,
539 1.054970f, 1.054970f, 1.054970f, 1.302565f, 1.302565f,
540 0.183005f, 0.183005f, 0.183005f, 2.379065f, 2.379065f
541 };
542
543 testParams.SetInQuantParams(inQuantScale, inQuantOffset);
544 testParams.SetOutQuantParams(outQuantScale, outQuantOffset);
545
Finn Williamsec36d3e2020-08-28 13:17:05 +0100546 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000547}
548
David Monahanab219752020-06-19 16:43:48 +0100549template<armnn::DataType ArmnnType, typename T>
550LayerTestResult<T, 4> HalfPixelCentersResizeBilinearTest(
551 armnn::IWorkloadFactory& workloadFactory,
552 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100553 const armnn::ITensorHandleFactory& tensorHandleFactory,
David Monahanab219752020-06-19 16:43:48 +0100554 const armnn::DataLayout dataLayout)
555{
556 ResizeTestParams testParams;
557 testParams.m_ResizeMethod = armnn::ResizeMethod::Bilinear;
558 testParams.m_DataLayout = dataLayout;
559 testParams.m_HalfPixelCenters = true;
560
561 testParams.m_InputShape = { 2, 1, 2, 2 };
562 testParams.m_OutputShape = { 2, 1, 3, 3 };
563
564 testParams.m_InputData =
565 {
566 1.0f, 2.0f,
567 3.0f, 4.0f,
568
569 1.0f, 2.0f,
570 3.0f, 4.0f
571 };
572
573 testParams.m_ExpectedOutputData =
574 {
575 1.0f, 1.5f, 2.0f,
576 2.0f, 2.5f, 3.0f,
577 3.0f, 3.5f, 4.0f,
578
579 1.0f, 1.5f, 2.0f,
580 2.0f, 2.5f, 3.0f,
581 3.0f, 3.5f, 4.0f,
582 };
583
Finn Williamsec36d3e2020-08-28 13:17:05 +0100584 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
David Monahanab219752020-06-19 16:43:48 +0100585}
586
587template<armnn::DataType ArmnnType, typename T>
588LayerTestResult<T, 4> AlignCornersResizeBilinearTest(
589 armnn::IWorkloadFactory& workloadFactory,
590 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100591 const armnn::ITensorHandleFactory& tensorHandleFactory,
David Monahanab219752020-06-19 16:43:48 +0100592 const armnn::DataLayout dataLayout)
593{
594 ResizeTestParams testParams;
595 testParams.m_ResizeMethod = armnn::ResizeMethod::Bilinear;
596 testParams.m_DataLayout = dataLayout;
597 testParams.m_AlignCorners = true;
598
599 testParams.m_InputShape = { 1, 1, 2, 2 };
600 testParams.m_OutputShape = { 1, 1, 1, 1 };
601
602 testParams.m_InputData =
603 {
604 1.0f, 2.0f,
605 3.0f, 4.0f,
606 };
607
608 testParams.m_ExpectedOutputData =
609 {
610 1.0f
611 };
612
Finn Williamsec36d3e2020-08-28 13:17:05 +0100613 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
David Monahanab219752020-06-19 16:43:48 +0100614}
615
616template<armnn::DataType ArmnnType, typename T>
617LayerTestResult<T, 4> HalfPixelCentersResizeNearestNeighbourTest(
618 armnn::IWorkloadFactory& workloadFactory,
619 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100620 const armnn::ITensorHandleFactory& tensorHandleFactory,
David Monahanab219752020-06-19 16:43:48 +0100621 const armnn::DataLayout dataLayout)
622{
623 ResizeTestParams testParams;
624 testParams.m_ResizeMethod = armnn::ResizeMethod::NearestNeighbor;
625 testParams.m_DataLayout = dataLayout;
626 testParams.m_HalfPixelCenters = true;
627
628 testParams.m_InputShape = { 1, 1, 2, 5 };
629 testParams.m_OutputShape = { 1, 1, 2, 2 };
630
631 testParams.m_InputData =
632 {
633 1.0f, 2.0f, 3.0f, 4.0f, 5.0f,
634
635 1.0f, 2.0f, 3.0f, 4.0f, 5.0f
636 };
637
638 testParams.m_ExpectedOutputData =
639 {
640 2.0f, 4.0f,
641 2.0f, 4.0f
642 };
643
Finn Williamsec36d3e2020-08-28 13:17:05 +0100644 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
David Monahanab219752020-06-19 16:43:48 +0100645}
646
647template<armnn::DataType ArmnnType, typename T>
648LayerTestResult<T, 4> AlignCornersResizeNearestNeighbourTest(
649 armnn::IWorkloadFactory& workloadFactory,
650 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100651 const armnn::ITensorHandleFactory& tensorHandleFactory,
David Monahanab219752020-06-19 16:43:48 +0100652 const armnn::DataLayout dataLayout)
653{
654 ResizeTestParams testParams;
655 testParams.m_ResizeMethod = armnn::ResizeMethod::NearestNeighbor;
656 testParams.m_DataLayout = dataLayout;
657 testParams.m_AlignCorners = true;
658
659 testParams.m_InputShape = { 1, 1, 2, 2 };
660 testParams.m_OutputShape = { 1, 1, 1, 1 };
661
662 testParams.m_InputData =
663 {
664 1.0f, 2.0f,
665 3.0f, 4.0f,
666 };
667
668 testParams.m_ExpectedOutputData =
669 {
670 1.0f
671 };
672
Finn Williamsec36d3e2020-08-28 13:17:05 +0100673 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
David Monahanab219752020-06-19 16:43:48 +0100674}
675
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000676//
677// Explicit template instantiations
678//
679
680// Float32
681template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
682ResizeBilinearNopTest<armnn::DataType::Float32>(
683 armnn::IWorkloadFactory& workloadFactory,
684 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100685 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000686 const armnn::DataLayout dataLayout);
687
688template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
689SimpleResizeBilinearTest<armnn::DataType::Float32>(
690 armnn::IWorkloadFactory& workloadFactory,
691 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100692 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000693 const armnn::DataLayout dataLayout);
694
695template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
696ResizeBilinearSqMinTest<armnn::DataType::Float32>(
697 armnn::IWorkloadFactory& workloadFactory,
698 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100699 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000700 const armnn::DataLayout dataLayout);
701
702template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
703ResizeBilinearMinTest<armnn::DataType::Float32>(
704 armnn::IWorkloadFactory& workloadFactory,
705 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100706 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000707 const armnn::DataLayout dataLayout);
708
709template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
710ResizeBilinearMagTest<armnn::DataType::Float32>(
711 armnn::IWorkloadFactory& workloadFactory,
712 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100713 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000714 const armnn::DataLayout dataLayout);
715
716template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
717ResizeNearestNeighborNopTest<armnn::DataType::Float32>(
718 armnn::IWorkloadFactory& workloadFactory,
719 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100720 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000721 const armnn::DataLayout dataLayout);
722
723template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
724SimpleResizeNearestNeighborTest<armnn::DataType::Float32>(
725 armnn::IWorkloadFactory& workloadFactory,
726 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100727 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000728 const armnn::DataLayout dataLayout);
729
730template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
731ResizeNearestNeighborSqMinTest<armnn::DataType::Float32>(
732 armnn::IWorkloadFactory& workloadFactory,
733 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100734 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000735 const armnn::DataLayout dataLayout);
736
737template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
738ResizeNearestNeighborMinTest<armnn::DataType::Float32>(
739 armnn::IWorkloadFactory& workloadFactory,
740 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100741 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000742 const armnn::DataLayout dataLayout);
743
744template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
745ResizeNearestNeighborMagTest<armnn::DataType::Float32>(
746 armnn::IWorkloadFactory& workloadFactory,
747 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100748 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000749 const armnn::DataLayout dataLayout,
750 float inQuantScale,
751 int32_t inQuantOffset,
752 float outQuantScale,
753 int32_t outQuantOffset);
754
David Monahanab219752020-06-19 16:43:48 +0100755template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
756HalfPixelCentersResizeBilinearTest<armnn::DataType::Float32>(
757 armnn::IWorkloadFactory& workloadFactory,
758 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100759 const armnn::ITensorHandleFactory& tensorHandleFactory,
David Monahanab219752020-06-19 16:43:48 +0100760 const armnn::DataLayout dataLayout);
761
762template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
763AlignCornersResizeBilinearTest<armnn::DataType::Float32>(
764 armnn::IWorkloadFactory& workloadFactory,
765 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100766 const armnn::ITensorHandleFactory& tensorHandleFactory,
David Monahanab219752020-06-19 16:43:48 +0100767 const armnn::DataLayout dataLayout);
768
769template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
770HalfPixelCentersResizeNearestNeighbourTest<armnn::DataType::Float32>(
771 armnn::IWorkloadFactory& workloadFactory,
772 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100773 const armnn::ITensorHandleFactory& tensorHandleFactory,
David Monahanab219752020-06-19 16:43:48 +0100774 const armnn::DataLayout dataLayout);
775
776template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
777AlignCornersResizeNearestNeighbourTest<armnn::DataType::Float32>(
778 armnn::IWorkloadFactory& workloadFactory,
779 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100780 const armnn::ITensorHandleFactory& tensorHandleFactory,
David Monahanab219752020-06-19 16:43:48 +0100781 const armnn::DataLayout dataLayout);
782
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000783// Float16
784template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
785ResizeBilinearNopTest<armnn::DataType::Float16>(
786 armnn::IWorkloadFactory& workloadFactory,
787 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100788 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000789 const armnn::DataLayout dataLayout);
790
791template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
792SimpleResizeBilinearTest<armnn::DataType::Float16>(
793 armnn::IWorkloadFactory& workloadFactory,
794 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100795 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000796 const armnn::DataLayout dataLayout);
797
798template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
799ResizeBilinearSqMinTest<armnn::DataType::Float16>(
800 armnn::IWorkloadFactory& workloadFactory,
801 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100802 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000803 const armnn::DataLayout dataLayout);
804
805template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
806ResizeBilinearMinTest<armnn::DataType::Float16>(
807 armnn::IWorkloadFactory& workloadFactory,
808 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100809 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000810 const armnn::DataLayout dataLayout);
811
812template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
813ResizeBilinearMagTest<armnn::DataType::Float16>(
814 armnn::IWorkloadFactory& workloadFactory,
815 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100816 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000817 const armnn::DataLayout dataLayout);
818
819template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
820ResizeNearestNeighborNopTest<armnn::DataType::Float16>(
821 armnn::IWorkloadFactory& workloadFactory,
822 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100823 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000824 const armnn::DataLayout dataLayout);
825
826template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
827SimpleResizeNearestNeighborTest<armnn::DataType::Float16>(
828 armnn::IWorkloadFactory& workloadFactory,
829 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100830 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000831 const armnn::DataLayout dataLayout);
832
833template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
834ResizeNearestNeighborSqMinTest<armnn::DataType::Float16>(
835 armnn::IWorkloadFactory& workloadFactory,
836 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100837 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000838 const armnn::DataLayout dataLayout);
839
840template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
841ResizeNearestNeighborMinTest<armnn::DataType::Float16>(
842 armnn::IWorkloadFactory& workloadFactory,
843 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100844 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000845 const armnn::DataLayout dataLayout);
846
847template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
848ResizeNearestNeighborMagTest<armnn::DataType::Float16>(
849 armnn::IWorkloadFactory& workloadFactory,
850 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100851 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000852 const armnn::DataLayout dataLayout,
853 float inQuantScale,
854 int32_t inQuantOffset,
855 float outQuantScale,
856 int32_t outQuantOffset);
857
Teresa Charlin686f45c2020-07-23 17:59:00 +0100858template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
859HalfPixelCentersResizeBilinearTest<armnn::DataType::Float16>(
860 armnn::IWorkloadFactory& workloadFactory,
861 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100862 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +0100863 const armnn::DataLayout dataLayout);
864
865template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
866AlignCornersResizeBilinearTest<armnn::DataType::Float16>(
867 armnn::IWorkloadFactory& workloadFactory,
868 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100869 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +0100870 const armnn::DataLayout dataLayout);
871
872template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
873HalfPixelCentersResizeNearestNeighbourTest<armnn::DataType::Float16>(
874 armnn::IWorkloadFactory& workloadFactory,
875 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100876 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +0100877 const armnn::DataLayout dataLayout);
878
879template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
880AlignCornersResizeNearestNeighbourTest<armnn::DataType::Float16>(
881 armnn::IWorkloadFactory& workloadFactory,
882 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100883 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +0100884 const armnn::DataLayout dataLayout);
885
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000886// QAsymm8
Derek Lambertif90c56d2020-01-10 17:14:08 +0000887template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
888ResizeBilinearNopTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000889 armnn::IWorkloadFactory& workloadFactory,
890 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100891 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000892 const armnn::DataLayout dataLayout);
893
Derek Lambertif90c56d2020-01-10 17:14:08 +0000894template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
895SimpleResizeBilinearTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000896 armnn::IWorkloadFactory& workloadFactory,
897 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100898 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000899 const armnn::DataLayout dataLayout);
900
Derek Lambertif90c56d2020-01-10 17:14:08 +0000901template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
902ResizeBilinearSqMinTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000903 armnn::IWorkloadFactory& workloadFactory,
904 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100905 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000906 const armnn::DataLayout dataLayout);
907
Derek Lambertif90c56d2020-01-10 17:14:08 +0000908template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
909ResizeBilinearMinTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000910 armnn::IWorkloadFactory& workloadFactory,
911 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100912 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000913 const armnn::DataLayout dataLayout);
914
Derek Lambertif90c56d2020-01-10 17:14:08 +0000915template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
916ResizeBilinearMagTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000917 armnn::IWorkloadFactory& workloadFactory,
918 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100919 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000920 const armnn::DataLayout dataLayout);
921
Derek Lambertif90c56d2020-01-10 17:14:08 +0000922template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
923ResizeNearestNeighborNopTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000924 armnn::IWorkloadFactory& workloadFactory,
925 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100926 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000927 const armnn::DataLayout dataLayout);
928
Derek Lambertif90c56d2020-01-10 17:14:08 +0000929template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
930SimpleResizeNearestNeighborTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000931 armnn::IWorkloadFactory& workloadFactory,
932 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100933 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000934 const armnn::DataLayout dataLayout);
935
Derek Lambertif90c56d2020-01-10 17:14:08 +0000936template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
937ResizeNearestNeighborSqMinTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000938 armnn::IWorkloadFactory& workloadFactory,
939 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100940 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000941 const armnn::DataLayout dataLayout);
942
Derek Lambertif90c56d2020-01-10 17:14:08 +0000943template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
944ResizeNearestNeighborMinTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000945 armnn::IWorkloadFactory& workloadFactory,
946 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100947 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000948 const armnn::DataLayout dataLayout);
949
Derek Lambertif90c56d2020-01-10 17:14:08 +0000950template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
951ResizeNearestNeighborMagTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000952 armnn::IWorkloadFactory& workloadFactory,
953 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100954 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000955 const armnn::DataLayout dataLayout,
956 float inQuantScale,
957 int32_t inQuantOffset,
958 float outQuantScale,
959 int32_t outQuantOffset);
960
Teresa Charlin686f45c2020-07-23 17:59:00 +0100961template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
962HalfPixelCentersResizeBilinearTest<armnn::DataType::QAsymmS8>(
963 armnn::IWorkloadFactory& workloadFactory,
964 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100965 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +0100966 const armnn::DataLayout dataLayout);
967
968template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
969AlignCornersResizeBilinearTest<armnn::DataType::QAsymmS8>(
970 armnn::IWorkloadFactory& workloadFactory,
971 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100972 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +0100973 const armnn::DataLayout dataLayout);
974
975template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
976HalfPixelCentersResizeNearestNeighbourTest<armnn::DataType::QAsymmS8>(
977 armnn::IWorkloadFactory& workloadFactory,
978 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100979 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +0100980 const armnn::DataLayout dataLayout);
981
982template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
983AlignCornersResizeNearestNeighbourTest<armnn::DataType::QAsymmS8>(
984 armnn::IWorkloadFactory& workloadFactory,
985 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100986 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +0100987 const armnn::DataLayout dataLayout);
988
Sadik Armagan303980c2020-04-17 12:45:14 +0100989// QAsymmS8
990template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
991ResizeBilinearNopTest<armnn::DataType::QAsymmS8>(
992 armnn::IWorkloadFactory& workloadFactory,
993 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100994 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +0100995 const armnn::DataLayout dataLayout);
996
997template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
998SimpleResizeBilinearTest<armnn::DataType::QAsymmS8>(
999 armnn::IWorkloadFactory& workloadFactory,
1000 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001001 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +01001002 const armnn::DataLayout dataLayout);
1003
1004template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
1005ResizeBilinearSqMinTest<armnn::DataType::QAsymmS8>(
1006 armnn::IWorkloadFactory& workloadFactory,
1007 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001008 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +01001009 const armnn::DataLayout dataLayout);
1010
1011template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
1012ResizeBilinearMinTest<armnn::DataType::QAsymmS8>(
1013 armnn::IWorkloadFactory& workloadFactory,
1014 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001015 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +01001016 const armnn::DataLayout dataLayout);
1017
1018template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
1019ResizeBilinearMagTest<armnn::DataType::QAsymmS8>(
1020 armnn::IWorkloadFactory& workloadFactory,
1021 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001022 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +01001023 const armnn::DataLayout dataLayout);
1024
1025template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
1026ResizeNearestNeighborNopTest<armnn::DataType::QAsymmS8>(
1027 armnn::IWorkloadFactory& workloadFactory,
1028 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001029 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +01001030 const armnn::DataLayout dataLayout);
1031
1032template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
1033SimpleResizeNearestNeighborTest<armnn::DataType::QAsymmS8>(
1034 armnn::IWorkloadFactory& workloadFactory,
1035 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001036 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +01001037 const armnn::DataLayout dataLayout);
1038
1039template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
1040ResizeNearestNeighborSqMinTest<armnn::DataType::QAsymmS8>(
1041 armnn::IWorkloadFactory& workloadFactory,
1042 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001043 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +01001044 const armnn::DataLayout dataLayout);
1045
1046template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
1047ResizeNearestNeighborMinTest<armnn::DataType::QAsymmS8>(
1048 armnn::IWorkloadFactory& workloadFactory,
1049 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001050 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +01001051 const armnn::DataLayout dataLayout);
1052
1053template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
1054ResizeNearestNeighborMagTest<armnn::DataType::QAsymmS8>(
1055 armnn::IWorkloadFactory& workloadFactory,
1056 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001057 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +01001058 const armnn::DataLayout dataLayout,
1059 float inQuantScale,
1060 int32_t inQuantOffset,
1061 float outQuantScale,
1062 int32_t outQuantOffset);
1063
Teresa Charlin686f45c2020-07-23 17:59:00 +01001064template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
1065HalfPixelCentersResizeBilinearTest<armnn::DataType::QAsymmU8>(
1066 armnn::IWorkloadFactory& workloadFactory,
1067 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001068 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +01001069 const armnn::DataLayout dataLayout);
1070
1071template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
1072AlignCornersResizeBilinearTest<armnn::DataType::QAsymmU8>(
1073 armnn::IWorkloadFactory& workloadFactory,
1074 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001075 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +01001076 const armnn::DataLayout dataLayout);
1077
1078template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
1079HalfPixelCentersResizeNearestNeighbourTest<armnn::DataType::QAsymmU8>(
1080 armnn::IWorkloadFactory& workloadFactory,
1081 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001082 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +01001083 const armnn::DataLayout dataLayout);
1084
1085template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
1086AlignCornersResizeNearestNeighbourTest<armnn::DataType::QAsymmU8>(
1087 armnn::IWorkloadFactory& workloadFactory,
1088 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001089 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +01001090 const armnn::DataLayout dataLayout);
1091
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001092// QSymm16
Derek Lambertif90c56d2020-01-10 17:14:08 +00001093template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1094ResizeBilinearNopTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001095 armnn::IWorkloadFactory& workloadFactory,
1096 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001097 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001098 const armnn::DataLayout dataLayout);
1099
Derek Lambertif90c56d2020-01-10 17:14:08 +00001100template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1101SimpleResizeBilinearTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001102 armnn::IWorkloadFactory& workloadFactory,
1103 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001104 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001105 const armnn::DataLayout dataLayout);
1106
Derek Lambertif90c56d2020-01-10 17:14:08 +00001107template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1108ResizeBilinearSqMinTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001109 armnn::IWorkloadFactory& workloadFactory,
1110 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001111 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001112 const armnn::DataLayout dataLayout);
1113
Derek Lambertif90c56d2020-01-10 17:14:08 +00001114template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1115ResizeBilinearMinTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001116 armnn::IWorkloadFactory& workloadFactory,
1117 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001118 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001119 const armnn::DataLayout dataLayout);
1120
Derek Lambertif90c56d2020-01-10 17:14:08 +00001121template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1122ResizeBilinearMagTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001123 armnn::IWorkloadFactory& workloadFactory,
1124 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001125 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001126 const armnn::DataLayout dataLayout);
1127
Derek Lambertif90c56d2020-01-10 17:14:08 +00001128template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1129ResizeNearestNeighborNopTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001130 armnn::IWorkloadFactory& workloadFactory,
1131 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001132 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001133 const armnn::DataLayout dataLayout);
1134
Derek Lambertif90c56d2020-01-10 17:14:08 +00001135template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1136SimpleResizeNearestNeighborTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001137 armnn::IWorkloadFactory& workloadFactory,
1138 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001139 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001140 const armnn::DataLayout dataLayout);
1141
Derek Lambertif90c56d2020-01-10 17:14:08 +00001142template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1143ResizeNearestNeighborSqMinTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001144 armnn::IWorkloadFactory& workloadFactory,
1145 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001146 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001147 const armnn::DataLayout dataLayout);
1148
Derek Lambertif90c56d2020-01-10 17:14:08 +00001149template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1150ResizeNearestNeighborMinTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001151 armnn::IWorkloadFactory& workloadFactory,
1152 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001153 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001154 const armnn::DataLayout dataLayout);
1155
Derek Lambertif90c56d2020-01-10 17:14:08 +00001156template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1157ResizeNearestNeighborMagTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001158 armnn::IWorkloadFactory& workloadFactory,
1159 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001160 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001161 const armnn::DataLayout dataLayout,
1162 float inQuantScale,
1163 int32_t inQuantOffset,
1164 float outQuantScale,
1165 int32_t outQuantOffset);
Teresa Charlin686f45c2020-07-23 17:59:00 +01001166
1167template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1168HalfPixelCentersResizeBilinearTest<armnn::DataType::QSymmS16>(
1169 armnn::IWorkloadFactory& workloadFactory,
1170 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001171 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +01001172 const armnn::DataLayout dataLayout);
1173
1174template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1175AlignCornersResizeBilinearTest<armnn::DataType::QSymmS16>(
1176 armnn::IWorkloadFactory& workloadFactory,
1177 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001178 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +01001179 const armnn::DataLayout dataLayout);
1180
1181template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1182HalfPixelCentersResizeNearestNeighbourTest<armnn::DataType::QSymmS16>(
1183 armnn::IWorkloadFactory& workloadFactory,
1184 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001185 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +01001186 const armnn::DataLayout dataLayout);
1187
1188template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1189AlignCornersResizeNearestNeighbourTest<armnn::DataType::QSymmS16>(
1190 armnn::IWorkloadFactory& workloadFactory,
1191 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001192 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +01001193 const armnn::DataLayout dataLayout);