blob: 31251501d32d12432b39dc0fb2d9c1da8dcb8796 [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
Colm Donelanc42a9872022-02-02 16:35:09 +00008#include <armnnUtils/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>
Colm Donelan0c479742021-12-10 12:43:54 +000017#include <armnnTestUtils/WorkloadTestUtils.hpp>
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +000018
Colm Donelanc42a9872022-02-02 16:35:09 +000019#include <armnnTestUtils/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
Teresa Charlin611c7fb2022-01-07 09:47:29 +0000126 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateWorkload(armnn::LayerType::Resize,
127 descriptor,
128 info);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000129
130 inputHandle->Allocate();
131 outputHandle->Allocate();
Sadik Armagan483c8112021-06-01 09:24:52 +0100132 CopyDataToITensorHandle(inputHandle.get(), inputData.data());
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000133
134 workload->PostAllocationConfigure();
135 workload->Execute();
136
Sadik Armagan483c8112021-06-01 09:24:52 +0100137 CopyDataFromITensorHandle(actualOutput.data(), outputHandle.get());
138
139 return LayerTestResult<T, NumDims>(actualOutput,
140 expectedOutputData,
141 outputHandle->GetShape(),
142 outputInfo.GetShape());
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000143}
144
145} // anonymous namespace
146
147//
148// Bilinear
149//
150
151template<armnn::DataType ArmnnType, typename T>
152LayerTestResult<T, 4> ResizeBilinearNopTest(
153 armnn::IWorkloadFactory& workloadFactory,
154 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100155 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000156 const armnn::DataLayout dataLayout)
157{
158 ResizeTestParams testParams;
159 testParams.m_ResizeMethod = armnn::ResizeMethod::Bilinear;
160 testParams.m_DataLayout = dataLayout;
161
162 testParams.m_InputShape = { 1, 2, 4, 4 };
163 testParams.m_OutputShape = testParams.m_InputShape;
164
165 testParams.m_InputData =
166 {
167 1.0f, 2.0f, 3.0f, 4.0f,
168 2.0f, 3.0f, 4.0f, 5.0f,
169 3.0f, 4.0f, 5.0f, 6.0f,
170 4.0f, 5.0f, 6.0f, 7.0f,
171
172 1.0f, 2.0f, 3.0f, 4.0f,
173 2.0f, 3.0f, 4.0f, 5.0f,
174 3.0f, 4.0f, 5.0f, 6.0f,
175 4.0f, 5.0f, 6.0f, 7.0f
176 };
177
178 testParams.m_ExpectedOutputData = testParams.m_InputData;
179
180 testParams.SetInOutQuantParams(1.5f, 3);
181
Finn Williamsec36d3e2020-08-28 13:17:05 +0100182 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000183}
184
185template<armnn::DataType ArmnnType, typename T>
186LayerTestResult<T, 4> SimpleResizeBilinearTest(
187 armnn::IWorkloadFactory& workloadFactory,
188 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100189 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000190 const armnn::DataLayout dataLayout)
191{
192 ResizeTestParams testParams;
193 testParams.m_ResizeMethod = armnn::ResizeMethod::Bilinear;
194 testParams.m_DataLayout = dataLayout;
195
196 testParams.m_InputShape = { 1, 2, 2, 2 };
197 testParams.m_OutputShape = { 1, 2, 1, 1 };
198
199 testParams.m_InputData =
200 {
201 1.0f, 255.0f,
202 200.0f, 250.0f,
203
204 250.0f, 200.0f,
205 250.0f, 1.0f
206 };
207
208 // The 'resize' operation projects the top-left corner of output texels into the input image,
209 // then figures out the interpolants and weights. Note this is different to projecting the centre of the
210 // output texel. Thus, for a input matrix of 2x2, we'll expect the output 1x1 matrix to contain, as
211 // its single element, the value that was at position (0,0) of the input matrix (rather than an average,
212 // which we would expect if projecting the centre).
213 testParams.m_ExpectedOutputData =
214 {
215 1.0f,
216
217 250.0f
218 };
219
220 testParams.SetInOutQuantParams(0.1567f, 1);
221
Finn Williamsec36d3e2020-08-28 13:17:05 +0100222 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000223}
224
225template<armnn::DataType ArmnnType, typename T>
226LayerTestResult<T, 4> ResizeBilinearSqMinTest(
227 armnn::IWorkloadFactory& workloadFactory,
228 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100229 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000230 const armnn::DataLayout dataLayout)
231{
232 ResizeTestParams testParams;
233 testParams.m_ResizeMethod = armnn::ResizeMethod::Bilinear;
234 testParams.m_DataLayout = dataLayout;
235
236 testParams.m_InputShape = { 1, 2, 4, 4 };
237 testParams.m_OutputShape = { 1, 2, 2, 2 };
238
239 testParams.m_InputData =
240 {
241 1.0f, 2.0f, 3.0f, 4.0f,
242 2.0f, 3.0f, 4.0f, 5.0f,
243 3.0f, 4.0f, 5.0f, 6.0f,
244 4.0f, 5.0f, 6.0f, 7.0f,
245
246 7.0f, 6.0f, 5.0f, 4.0f,
247 6.0f, 5.0f, 4.0f, 3.0f,
248 5.0f, 4.0f, 3.0f, 2.0f,
249 4.0f, 3.0f, 2.0f, 1.0f
250 };
251
252 testParams.m_ExpectedOutputData =
253 {
254 1.0f, 3.0f,
255 3.0f, 5.0f,
256
257 7.0f, 5.0f,
258 5.0f, 3.0f
259 };
260
261 testParams.SetInOutQuantParams(3.141592f, 3);
262
Finn Williamsec36d3e2020-08-28 13:17:05 +0100263 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000264}
265
266template<armnn::DataType ArmnnType, typename T>
267LayerTestResult<T, 4> ResizeBilinearMinTest(
268 armnn::IWorkloadFactory& workloadFactory,
269 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100270 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000271 const armnn::DataLayout dataLayout)
272{
273 ResizeTestParams testParams;
274 testParams.m_ResizeMethod = armnn::ResizeMethod::Bilinear;
275 testParams.m_DataLayout = dataLayout;
276
277 testParams.m_InputShape = { 1, 2, 3, 5 };
278 testParams.m_OutputShape = { 1, 2, 2, 3 };
279
280 testParams.m_InputData =
281 {
282 1.5f, 3.0f, 4.5f, 6.0f, 7.5f,
283 9.0f, 10.5f, 12.0f, 13.5f, 15.0f,
284 16.5f, 18.0f, 19.5f, 21.0f, 22.5f,
285
286 16.5f, 18.0f, 19.5f, 21.0f, 22.5f,
287 9.0f, 10.5f, 12.0f, 13.5f, 15.0f,
288 1.5f, 3.0f, 4.5f, 6.0f, 7.5f
289 };
290
291 testParams.m_ExpectedOutputData =
292 {
293 1.50f, 4.00f, 6.50f,
294 12.75f, 15.25f, 17.75f,
295
296 16.50f, 19.00f, 21.50f,
297 5.25f, 7.75f, 10.25f
298 };
299
300 testParams.SetInOutQuantParams(1.5f, -1);
301
Finn Williamsec36d3e2020-08-28 13:17:05 +0100302 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000303}
304
305template<armnn::DataType ArmnnType, typename T>
306LayerTestResult<T, 4> ResizeBilinearMagTest(
307 armnn::IWorkloadFactory& workloadFactory,
308 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100309 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000310 const armnn::DataLayout dataLayout)
311{
312 ResizeTestParams testParams;
313 testParams.m_ResizeMethod = armnn::ResizeMethod::Bilinear;
314 testParams.m_DataLayout = dataLayout;
315
316 testParams.m_InputShape = { 1, 2, 3, 2 };
317 testParams.m_OutputShape = { 1, 2, 3, 5 };
318
319 testParams.m_InputData =
320 {
321 1.0f, 2.0f,
322 13.0f, 21.0f,
323 144.0f, 233.0f,
324
325 233.0f, 144.0f,
326 21.0f, 13.0f,
327 2.0f, 1.0f
328 };
329
330 testParams.m_ExpectedOutputData =
331 {
332 1.0f, 1.4f, 1.8f, 2.0f, 2.0f,
333 13.0f, 16.2f, 19.4f, 21.0f, 21.0f,
334 144.0f, 179.6f, 215.2f, 233.0f, 233.0f,
335
336 233.0f, 197.4f, 161.8f, 144.0f, 144.0f,
337 21.0f, 17.8f, 14.6f, 13.0f, 13.0f,
338 2.0f, 1.6f, 1.2f, 1.0f, 1.0f
339 };
340
341 testParams.SetInQuantParams(1.0f, 0);
342
Finn Williamsec36d3e2020-08-28 13:17:05 +0100343 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000344}
345
346//
347// NearestNeighbor
348//
349
350template<armnn::DataType ArmnnType, typename T>
351LayerTestResult<T, 4> ResizeNearestNeighborNopTest(
352 armnn::IWorkloadFactory& workloadFactory,
353 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100354 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000355 const armnn::DataLayout dataLayout)
356{
357 ResizeTestParams testParams;
358 testParams.m_ResizeMethod = armnn::ResizeMethod::NearestNeighbor;
359 testParams.m_DataLayout = dataLayout;
360
361 testParams.m_InputShape = { 1, 2, 4, 4 };
362 testParams.m_OutputShape = testParams.m_InputShape;
363
364 testParams.m_InputData =
365 {
366 1.0f, 2.0f, 3.0f, 4.0f,
367 2.0f, 3.0f, 4.0f, 5.0f,
368 3.0f, 4.0f, 5.0f, 6.0f,
369 4.0f, 5.0f, 6.0f, 7.0f,
370
371 1.0f, 2.0f, 3.0f, 4.0f,
372 2.0f, 3.0f, 4.0f, 5.0f,
373 3.0f, 4.0f, 5.0f, 6.0f,
374 4.0f, 5.0f, 6.0f, 7.0f
375 };
376
377 testParams.m_ExpectedOutputData = testParams.m_InputData;
378
379 testParams.SetInOutQuantParams(1.5f, 3);
380
Finn Williamsec36d3e2020-08-28 13:17:05 +0100381 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000382}
383
384template<armnn::DataType ArmnnType, typename T>
385LayerTestResult<T, 4> SimpleResizeNearestNeighborTest(
386 armnn::IWorkloadFactory& workloadFactory,
387 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100388 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000389 const armnn::DataLayout dataLayout)
390{
391 ResizeTestParams testParams;
392 testParams.m_ResizeMethod = armnn::ResizeMethod::NearestNeighbor;
393 testParams.m_DataLayout = dataLayout;
394
395 testParams.m_InputShape = { 1, 2, 2, 2 };
396 testParams.m_OutputShape = { 1, 2, 1, 1 };
397
398 testParams.m_InputData =
399 {
400 1.0f, 255.0f,
401 200.0f, 250.0f,
402
403 250.0f, 200.0f,
404 250.0f, 1.0f
405 };
406
407 // The 'resize' operation projects the top-left corner of output texels into the input image,
408 // then figures out the interpolants and weights. Note this is different to projecting the centre of the
409 // output texel. Thus, for a input matrix of 2x2, we'll expect the output 1x1 matrix to contain, as
410 // its single element, the value that was at position (0,0) of the input matrix (rather than an average,
411 // which we would expect if projecting the centre).
412 testParams.m_ExpectedOutputData =
413 {
414 1.0f,
415
416 250.0f
417 };
418
419 testParams.SetInOutQuantParams(0.1567f, 1);
420
Finn Williamsec36d3e2020-08-28 13:17:05 +0100421 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000422}
423
424template<armnn::DataType ArmnnType, typename T>
425LayerTestResult<T, 4> ResizeNearestNeighborSqMinTest(
426 armnn::IWorkloadFactory& workloadFactory,
427 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100428 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000429 const armnn::DataLayout dataLayout)
430{
431 ResizeTestParams testParams;
432 testParams.m_ResizeMethod = armnn::ResizeMethod::NearestNeighbor;
433 testParams.m_DataLayout = dataLayout;
434
435 testParams.m_InputShape = { 1, 2, 4, 4 };
436 testParams.m_OutputShape = { 1, 2, 2, 2 };
437
438 testParams.m_InputData =
439 {
440 1.0f, 2.0f, 3.0f, 4.0f,
441 2.0f, 3.0f, 4.0f, 5.0f,
442 3.0f, 4.0f, 5.0f, 6.0f,
443 4.0f, 5.0f, 6.0f, 7.0f,
444
445 7.0f, 6.0f, 5.0f, 4.0f,
446 6.0f, 5.0f, 4.0f, 3.0f,
447 5.0f, 4.0f, 3.0f, 2.0f,
448 4.0f, 3.0f, 2.0f, 1.0f
449 };
450
451 testParams.m_ExpectedOutputData =
452 {
453 1.0f, 3.0f,
454 3.0f, 5.0f,
455
456 7.0f, 5.0f,
457 5.0f, 3.0f
458 };
459
460 testParams.SetInOutQuantParams(3.141592f, 3);
461
Finn Williamsec36d3e2020-08-28 13:17:05 +0100462 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000463}
464
465template<armnn::DataType ArmnnType, typename T>
466LayerTestResult<T, 4> ResizeNearestNeighborMinTest(
467 armnn::IWorkloadFactory& workloadFactory,
468 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100469 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000470 const armnn::DataLayout dataLayout)
471{
472 ResizeTestParams testParams;
473 testParams.m_ResizeMethod = armnn::ResizeMethod::NearestNeighbor;
474 testParams.m_DataLayout = dataLayout;
475
476 testParams.m_InputShape = { 1, 2, 3, 5 };
477 testParams.m_OutputShape = { 1, 2, 2, 3 };
478
479 testParams.m_InputData =
480 {
481 1.5f, 3.0f, 4.5f, 6.0f, 7.5f,
482 9.0f, 10.5f, 12.0f, 13.5f, 15.0f,
483 16.5f, 18.0f, 19.5f, 21.0f, 22.5f,
484
485 16.5f, 18.0f, 19.5f, 21.0f, 22.5f,
486 9.0f, 10.5f, 12.0f, 13.5f, 15.0f,
487 1.5f, 3.0f, 4.5f, 6.0f, 7.5f
488 };
489
490 testParams.m_ExpectedOutputData =
491 {
492 1.5f, 3.0f, 6.0f,
493 9.0f, 10.5f, 13.5f,
494
495 16.5f, 18.0f, 21.0f,
496 9.0f, 10.5f, 13.5f
497 };
498
499 testParams.SetInOutQuantParams(1.5f, -1);
500
Finn Williamsec36d3e2020-08-28 13:17:05 +0100501 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000502}
503
504template<armnn::DataType ArmnnType, typename T>
505LayerTestResult<T, 4> ResizeNearestNeighborMagTest(
506 armnn::IWorkloadFactory& workloadFactory,
507 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100508 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000509 const armnn::DataLayout dataLayout,
510 float inQuantScale,
511 int32_t inQuantOffset,
512 float outQuantScale,
513 int32_t outQuantOffset)
514{
515 ResizeTestParams testParams;
516 testParams.m_ResizeMethod = armnn::ResizeMethod::NearestNeighbor;
517 testParams.m_DataLayout = dataLayout;
518
519 testParams.m_InputShape = { 1, 2, 3, 2 };
520 testParams.m_OutputShape = { 1, 2, 3, 5 };
521
522 testParams.m_InputData =
523 {
524 0.183005f, 2.379065f,
525 1.054970f, 1.302565f,
526 2.400595f, 0.688960f,
527
528 2.400595f, 0.688960f,
529 1.054970f, 1.302565f,
530 0.183005f, 2.379065f,
531 };
532
533 testParams.m_ExpectedOutputData =
534 {
535 0.183005f, 0.183005f, 0.183005f, 2.379065f, 2.379065f,
536 1.054970f, 1.054970f, 1.054970f, 1.302565f, 1.302565f,
537 2.400595f, 2.400595f, 2.400595f, 0.688960f, 0.688960f,
538
539 2.400595f, 2.400595f, 2.400595f, 0.688960f, 0.688960f,
540 1.054970f, 1.054970f, 1.054970f, 1.302565f, 1.302565f,
541 0.183005f, 0.183005f, 0.183005f, 2.379065f, 2.379065f
542 };
543
544 testParams.SetInQuantParams(inQuantScale, inQuantOffset);
545 testParams.SetOutQuantParams(outQuantScale, outQuantOffset);
546
Finn Williamsec36d3e2020-08-28 13:17:05 +0100547 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000548}
549
David Monahanab219752020-06-19 16:43:48 +0100550template<armnn::DataType ArmnnType, typename T>
551LayerTestResult<T, 4> HalfPixelCentersResizeBilinearTest(
552 armnn::IWorkloadFactory& workloadFactory,
553 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100554 const armnn::ITensorHandleFactory& tensorHandleFactory,
David Monahanab219752020-06-19 16:43:48 +0100555 const armnn::DataLayout dataLayout)
556{
557 ResizeTestParams testParams;
558 testParams.m_ResizeMethod = armnn::ResizeMethod::Bilinear;
559 testParams.m_DataLayout = dataLayout;
560 testParams.m_HalfPixelCenters = true;
561
562 testParams.m_InputShape = { 2, 1, 2, 2 };
563 testParams.m_OutputShape = { 2, 1, 3, 3 };
564
565 testParams.m_InputData =
566 {
567 1.0f, 2.0f,
568 3.0f, 4.0f,
569
570 1.0f, 2.0f,
571 3.0f, 4.0f
572 };
573
574 testParams.m_ExpectedOutputData =
575 {
576 1.0f, 1.5f, 2.0f,
577 2.0f, 2.5f, 3.0f,
578 3.0f, 3.5f, 4.0f,
579
580 1.0f, 1.5f, 2.0f,
581 2.0f, 2.5f, 3.0f,
582 3.0f, 3.5f, 4.0f,
583 };
584
Finn Williamsec36d3e2020-08-28 13:17:05 +0100585 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
David Monahanab219752020-06-19 16:43:48 +0100586}
587
588template<armnn::DataType ArmnnType, typename T>
589LayerTestResult<T, 4> AlignCornersResizeBilinearTest(
590 armnn::IWorkloadFactory& workloadFactory,
591 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100592 const armnn::ITensorHandleFactory& tensorHandleFactory,
David Monahanab219752020-06-19 16:43:48 +0100593 const armnn::DataLayout dataLayout)
594{
595 ResizeTestParams testParams;
596 testParams.m_ResizeMethod = armnn::ResizeMethod::Bilinear;
597 testParams.m_DataLayout = dataLayout;
598 testParams.m_AlignCorners = true;
599
600 testParams.m_InputShape = { 1, 1, 2, 2 };
601 testParams.m_OutputShape = { 1, 1, 1, 1 };
602
603 testParams.m_InputData =
604 {
605 1.0f, 2.0f,
606 3.0f, 4.0f,
607 };
608
609 testParams.m_ExpectedOutputData =
610 {
611 1.0f
612 };
613
Finn Williamsec36d3e2020-08-28 13:17:05 +0100614 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
David Monahanab219752020-06-19 16:43:48 +0100615}
616
617template<armnn::DataType ArmnnType, typename T>
618LayerTestResult<T, 4> HalfPixelCentersResizeNearestNeighbourTest(
619 armnn::IWorkloadFactory& workloadFactory,
620 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100621 const armnn::ITensorHandleFactory& tensorHandleFactory,
David Monahanab219752020-06-19 16:43:48 +0100622 const armnn::DataLayout dataLayout)
623{
624 ResizeTestParams testParams;
625 testParams.m_ResizeMethod = armnn::ResizeMethod::NearestNeighbor;
626 testParams.m_DataLayout = dataLayout;
627 testParams.m_HalfPixelCenters = true;
628
629 testParams.m_InputShape = { 1, 1, 2, 5 };
630 testParams.m_OutputShape = { 1, 1, 2, 2 };
631
632 testParams.m_InputData =
633 {
634 1.0f, 2.0f, 3.0f, 4.0f, 5.0f,
635
636 1.0f, 2.0f, 3.0f, 4.0f, 5.0f
637 };
638
639 testParams.m_ExpectedOutputData =
640 {
641 2.0f, 4.0f,
642 2.0f, 4.0f
643 };
644
Finn Williamsec36d3e2020-08-28 13:17:05 +0100645 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
David Monahanab219752020-06-19 16:43:48 +0100646}
647
648template<armnn::DataType ArmnnType, typename T>
649LayerTestResult<T, 4> AlignCornersResizeNearestNeighbourTest(
650 armnn::IWorkloadFactory& workloadFactory,
651 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100652 const armnn::ITensorHandleFactory& tensorHandleFactory,
David Monahanab219752020-06-19 16:43:48 +0100653 const armnn::DataLayout dataLayout)
654{
655 ResizeTestParams testParams;
656 testParams.m_ResizeMethod = armnn::ResizeMethod::NearestNeighbor;
657 testParams.m_DataLayout = dataLayout;
658 testParams.m_AlignCorners = true;
659
660 testParams.m_InputShape = { 1, 1, 2, 2 };
661 testParams.m_OutputShape = { 1, 1, 1, 1 };
662
663 testParams.m_InputData =
664 {
665 1.0f, 2.0f,
666 3.0f, 4.0f,
667 };
668
669 testParams.m_ExpectedOutputData =
670 {
671 1.0f
672 };
673
Finn Williamsec36d3e2020-08-28 13:17:05 +0100674 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory, testParams);
David Monahanab219752020-06-19 16:43:48 +0100675}
676
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000677//
678// Explicit template instantiations
679//
680
681// Float32
682template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
683ResizeBilinearNopTest<armnn::DataType::Float32>(
684 armnn::IWorkloadFactory& workloadFactory,
685 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100686 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000687 const armnn::DataLayout dataLayout);
688
689template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
690SimpleResizeBilinearTest<armnn::DataType::Float32>(
691 armnn::IWorkloadFactory& workloadFactory,
692 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100693 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000694 const armnn::DataLayout dataLayout);
695
696template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
697ResizeBilinearSqMinTest<armnn::DataType::Float32>(
698 armnn::IWorkloadFactory& workloadFactory,
699 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100700 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000701 const armnn::DataLayout dataLayout);
702
703template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
704ResizeBilinearMinTest<armnn::DataType::Float32>(
705 armnn::IWorkloadFactory& workloadFactory,
706 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100707 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000708 const armnn::DataLayout dataLayout);
709
710template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
711ResizeBilinearMagTest<armnn::DataType::Float32>(
712 armnn::IWorkloadFactory& workloadFactory,
713 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100714 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000715 const armnn::DataLayout dataLayout);
716
717template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
718ResizeNearestNeighborNopTest<armnn::DataType::Float32>(
719 armnn::IWorkloadFactory& workloadFactory,
720 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100721 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000722 const armnn::DataLayout dataLayout);
723
724template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
725SimpleResizeNearestNeighborTest<armnn::DataType::Float32>(
726 armnn::IWorkloadFactory& workloadFactory,
727 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100728 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000729 const armnn::DataLayout dataLayout);
730
731template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
732ResizeNearestNeighborSqMinTest<armnn::DataType::Float32>(
733 armnn::IWorkloadFactory& workloadFactory,
734 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100735 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000736 const armnn::DataLayout dataLayout);
737
738template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
739ResizeNearestNeighborMinTest<armnn::DataType::Float32>(
740 armnn::IWorkloadFactory& workloadFactory,
741 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100742 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000743 const armnn::DataLayout dataLayout);
744
745template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
746ResizeNearestNeighborMagTest<armnn::DataType::Float32>(
747 armnn::IWorkloadFactory& workloadFactory,
748 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100749 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000750 const armnn::DataLayout dataLayout,
751 float inQuantScale,
752 int32_t inQuantOffset,
753 float outQuantScale,
754 int32_t outQuantOffset);
755
David Monahanab219752020-06-19 16:43:48 +0100756template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
757HalfPixelCentersResizeBilinearTest<armnn::DataType::Float32>(
758 armnn::IWorkloadFactory& workloadFactory,
759 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100760 const armnn::ITensorHandleFactory& tensorHandleFactory,
David Monahanab219752020-06-19 16:43:48 +0100761 const armnn::DataLayout dataLayout);
762
763template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
764AlignCornersResizeBilinearTest<armnn::DataType::Float32>(
765 armnn::IWorkloadFactory& workloadFactory,
766 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100767 const armnn::ITensorHandleFactory& tensorHandleFactory,
David Monahanab219752020-06-19 16:43:48 +0100768 const armnn::DataLayout dataLayout);
769
770template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
771HalfPixelCentersResizeNearestNeighbourTest<armnn::DataType::Float32>(
772 armnn::IWorkloadFactory& workloadFactory,
773 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100774 const armnn::ITensorHandleFactory& tensorHandleFactory,
David Monahanab219752020-06-19 16:43:48 +0100775 const armnn::DataLayout dataLayout);
776
777template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
778AlignCornersResizeNearestNeighbourTest<armnn::DataType::Float32>(
779 armnn::IWorkloadFactory& workloadFactory,
780 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100781 const armnn::ITensorHandleFactory& tensorHandleFactory,
David Monahanab219752020-06-19 16:43:48 +0100782 const armnn::DataLayout dataLayout);
783
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000784// Float16
785template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
786ResizeBilinearNopTest<armnn::DataType::Float16>(
787 armnn::IWorkloadFactory& workloadFactory,
788 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100789 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000790 const armnn::DataLayout dataLayout);
791
792template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
793SimpleResizeBilinearTest<armnn::DataType::Float16>(
794 armnn::IWorkloadFactory& workloadFactory,
795 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100796 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000797 const armnn::DataLayout dataLayout);
798
799template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
800ResizeBilinearSqMinTest<armnn::DataType::Float16>(
801 armnn::IWorkloadFactory& workloadFactory,
802 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100803 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000804 const armnn::DataLayout dataLayout);
805
806template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
807ResizeBilinearMinTest<armnn::DataType::Float16>(
808 armnn::IWorkloadFactory& workloadFactory,
809 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100810 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000811 const armnn::DataLayout dataLayout);
812
813template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
814ResizeBilinearMagTest<armnn::DataType::Float16>(
815 armnn::IWorkloadFactory& workloadFactory,
816 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100817 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000818 const armnn::DataLayout dataLayout);
819
820template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
821ResizeNearestNeighborNopTest<armnn::DataType::Float16>(
822 armnn::IWorkloadFactory& workloadFactory,
823 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100824 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000825 const armnn::DataLayout dataLayout);
826
827template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
828SimpleResizeNearestNeighborTest<armnn::DataType::Float16>(
829 armnn::IWorkloadFactory& workloadFactory,
830 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100831 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000832 const armnn::DataLayout dataLayout);
833
834template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
835ResizeNearestNeighborSqMinTest<armnn::DataType::Float16>(
836 armnn::IWorkloadFactory& workloadFactory,
837 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100838 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000839 const armnn::DataLayout dataLayout);
840
841template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
842ResizeNearestNeighborMinTest<armnn::DataType::Float16>(
843 armnn::IWorkloadFactory& workloadFactory,
844 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100845 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000846 const armnn::DataLayout dataLayout);
847
848template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
849ResizeNearestNeighborMagTest<armnn::DataType::Float16>(
850 armnn::IWorkloadFactory& workloadFactory,
851 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100852 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000853 const armnn::DataLayout dataLayout,
854 float inQuantScale,
855 int32_t inQuantOffset,
856 float outQuantScale,
857 int32_t outQuantOffset);
858
Teresa Charlin686f45c2020-07-23 17:59:00 +0100859template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
860HalfPixelCentersResizeBilinearTest<armnn::DataType::Float16>(
861 armnn::IWorkloadFactory& workloadFactory,
862 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100863 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +0100864 const armnn::DataLayout dataLayout);
865
866template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
867AlignCornersResizeBilinearTest<armnn::DataType::Float16>(
868 armnn::IWorkloadFactory& workloadFactory,
869 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100870 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +0100871 const armnn::DataLayout dataLayout);
872
873template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
874HalfPixelCentersResizeNearestNeighbourTest<armnn::DataType::Float16>(
875 armnn::IWorkloadFactory& workloadFactory,
876 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100877 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +0100878 const armnn::DataLayout dataLayout);
879
880template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
881AlignCornersResizeNearestNeighbourTest<armnn::DataType::Float16>(
882 armnn::IWorkloadFactory& workloadFactory,
883 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100884 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +0100885 const armnn::DataLayout dataLayout);
886
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000887// QAsymm8
Derek Lambertif90c56d2020-01-10 17:14:08 +0000888template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
889ResizeBilinearNopTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000890 armnn::IWorkloadFactory& workloadFactory,
891 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100892 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000893 const armnn::DataLayout dataLayout);
894
Derek Lambertif90c56d2020-01-10 17:14:08 +0000895template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
896SimpleResizeBilinearTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000897 armnn::IWorkloadFactory& workloadFactory,
898 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100899 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000900 const armnn::DataLayout dataLayout);
901
Derek Lambertif90c56d2020-01-10 17:14:08 +0000902template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
903ResizeBilinearSqMinTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000904 armnn::IWorkloadFactory& workloadFactory,
905 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100906 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000907 const armnn::DataLayout dataLayout);
908
Derek Lambertif90c56d2020-01-10 17:14:08 +0000909template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
910ResizeBilinearMinTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000911 armnn::IWorkloadFactory& workloadFactory,
912 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100913 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000914 const armnn::DataLayout dataLayout);
915
Derek Lambertif90c56d2020-01-10 17:14:08 +0000916template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
917ResizeBilinearMagTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000918 armnn::IWorkloadFactory& workloadFactory,
919 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100920 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000921 const armnn::DataLayout dataLayout);
922
Derek Lambertif90c56d2020-01-10 17:14:08 +0000923template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
924ResizeNearestNeighborNopTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000925 armnn::IWorkloadFactory& workloadFactory,
926 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100927 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000928 const armnn::DataLayout dataLayout);
929
Derek Lambertif90c56d2020-01-10 17:14:08 +0000930template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
931SimpleResizeNearestNeighborTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000932 armnn::IWorkloadFactory& workloadFactory,
933 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100934 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000935 const armnn::DataLayout dataLayout);
936
Derek Lambertif90c56d2020-01-10 17:14:08 +0000937template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
938ResizeNearestNeighborSqMinTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000939 armnn::IWorkloadFactory& workloadFactory,
940 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100941 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000942 const armnn::DataLayout dataLayout);
943
Derek Lambertif90c56d2020-01-10 17:14:08 +0000944template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
945ResizeNearestNeighborMinTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000946 armnn::IWorkloadFactory& workloadFactory,
947 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100948 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000949 const armnn::DataLayout dataLayout);
950
Derek Lambertif90c56d2020-01-10 17:14:08 +0000951template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
952ResizeNearestNeighborMagTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000953 armnn::IWorkloadFactory& workloadFactory,
954 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100955 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +0000956 const armnn::DataLayout dataLayout,
957 float inQuantScale,
958 int32_t inQuantOffset,
959 float outQuantScale,
960 int32_t outQuantOffset);
961
Teresa Charlin686f45c2020-07-23 17:59:00 +0100962template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
963HalfPixelCentersResizeBilinearTest<armnn::DataType::QAsymmS8>(
964 armnn::IWorkloadFactory& workloadFactory,
965 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100966 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +0100967 const armnn::DataLayout dataLayout);
968
969template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
970AlignCornersResizeBilinearTest<armnn::DataType::QAsymmS8>(
971 armnn::IWorkloadFactory& workloadFactory,
972 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100973 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +0100974 const armnn::DataLayout dataLayout);
975
976template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
977HalfPixelCentersResizeNearestNeighbourTest<armnn::DataType::QAsymmS8>(
978 armnn::IWorkloadFactory& workloadFactory,
979 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100980 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +0100981 const armnn::DataLayout dataLayout);
982
983template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
984AlignCornersResizeNearestNeighbourTest<armnn::DataType::QAsymmS8>(
985 armnn::IWorkloadFactory& workloadFactory,
986 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100987 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +0100988 const armnn::DataLayout dataLayout);
989
Sadik Armagan303980c2020-04-17 12:45:14 +0100990// QAsymmS8
991template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
992ResizeBilinearNopTest<armnn::DataType::QAsymmS8>(
993 armnn::IWorkloadFactory& workloadFactory,
994 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +0100995 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +0100996 const armnn::DataLayout dataLayout);
997
998template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
999SimpleResizeBilinearTest<armnn::DataType::QAsymmS8>(
1000 armnn::IWorkloadFactory& workloadFactory,
1001 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001002 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +01001003 const armnn::DataLayout dataLayout);
1004
1005template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
1006ResizeBilinearSqMinTest<armnn::DataType::QAsymmS8>(
1007 armnn::IWorkloadFactory& workloadFactory,
1008 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001009 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +01001010 const armnn::DataLayout dataLayout);
1011
1012template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
1013ResizeBilinearMinTest<armnn::DataType::QAsymmS8>(
1014 armnn::IWorkloadFactory& workloadFactory,
1015 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001016 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +01001017 const armnn::DataLayout dataLayout);
1018
1019template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
1020ResizeBilinearMagTest<armnn::DataType::QAsymmS8>(
1021 armnn::IWorkloadFactory& workloadFactory,
1022 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001023 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +01001024 const armnn::DataLayout dataLayout);
1025
1026template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
1027ResizeNearestNeighborNopTest<armnn::DataType::QAsymmS8>(
1028 armnn::IWorkloadFactory& workloadFactory,
1029 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001030 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +01001031 const armnn::DataLayout dataLayout);
1032
1033template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
1034SimpleResizeNearestNeighborTest<armnn::DataType::QAsymmS8>(
1035 armnn::IWorkloadFactory& workloadFactory,
1036 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001037 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +01001038 const armnn::DataLayout dataLayout);
1039
1040template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
1041ResizeNearestNeighborSqMinTest<armnn::DataType::QAsymmS8>(
1042 armnn::IWorkloadFactory& workloadFactory,
1043 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001044 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +01001045 const armnn::DataLayout dataLayout);
1046
1047template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
1048ResizeNearestNeighborMinTest<armnn::DataType::QAsymmS8>(
1049 armnn::IWorkloadFactory& workloadFactory,
1050 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001051 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +01001052 const armnn::DataLayout dataLayout);
1053
1054template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
1055ResizeNearestNeighborMagTest<armnn::DataType::QAsymmS8>(
1056 armnn::IWorkloadFactory& workloadFactory,
1057 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001058 const armnn::ITensorHandleFactory& tensorHandleFactory,
Sadik Armagan303980c2020-04-17 12:45:14 +01001059 const armnn::DataLayout dataLayout,
1060 float inQuantScale,
1061 int32_t inQuantOffset,
1062 float outQuantScale,
1063 int32_t outQuantOffset);
1064
Teresa Charlin686f45c2020-07-23 17:59:00 +01001065template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
1066HalfPixelCentersResizeBilinearTest<armnn::DataType::QAsymmU8>(
1067 armnn::IWorkloadFactory& workloadFactory,
1068 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001069 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +01001070 const armnn::DataLayout dataLayout);
1071
1072template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
1073AlignCornersResizeBilinearTest<armnn::DataType::QAsymmU8>(
1074 armnn::IWorkloadFactory& workloadFactory,
1075 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001076 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +01001077 const armnn::DataLayout dataLayout);
1078
1079template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
1080HalfPixelCentersResizeNearestNeighbourTest<armnn::DataType::QAsymmU8>(
1081 armnn::IWorkloadFactory& workloadFactory,
1082 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001083 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +01001084 const armnn::DataLayout dataLayout);
1085
1086template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
1087AlignCornersResizeNearestNeighbourTest<armnn::DataType::QAsymmU8>(
1088 armnn::IWorkloadFactory& workloadFactory,
1089 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001090 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +01001091 const armnn::DataLayout dataLayout);
1092
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001093// QSymm16
Derek Lambertif90c56d2020-01-10 17:14:08 +00001094template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1095ResizeBilinearNopTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001096 armnn::IWorkloadFactory& workloadFactory,
1097 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001098 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001099 const armnn::DataLayout dataLayout);
1100
Derek Lambertif90c56d2020-01-10 17:14:08 +00001101template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1102SimpleResizeBilinearTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001103 armnn::IWorkloadFactory& workloadFactory,
1104 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001105 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001106 const armnn::DataLayout dataLayout);
1107
Derek Lambertif90c56d2020-01-10 17:14:08 +00001108template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1109ResizeBilinearSqMinTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001110 armnn::IWorkloadFactory& workloadFactory,
1111 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001112 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001113 const armnn::DataLayout dataLayout);
1114
Derek Lambertif90c56d2020-01-10 17:14:08 +00001115template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1116ResizeBilinearMinTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001117 armnn::IWorkloadFactory& workloadFactory,
1118 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001119 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001120 const armnn::DataLayout dataLayout);
1121
Derek Lambertif90c56d2020-01-10 17:14:08 +00001122template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1123ResizeBilinearMagTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001124 armnn::IWorkloadFactory& workloadFactory,
1125 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001126 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001127 const armnn::DataLayout dataLayout);
1128
Derek Lambertif90c56d2020-01-10 17:14:08 +00001129template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1130ResizeNearestNeighborNopTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001131 armnn::IWorkloadFactory& workloadFactory,
1132 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001133 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001134 const armnn::DataLayout dataLayout);
1135
Derek Lambertif90c56d2020-01-10 17:14:08 +00001136template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1137SimpleResizeNearestNeighborTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001138 armnn::IWorkloadFactory& workloadFactory,
1139 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001140 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001141 const armnn::DataLayout dataLayout);
1142
Derek Lambertif90c56d2020-01-10 17:14:08 +00001143template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1144ResizeNearestNeighborSqMinTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001145 armnn::IWorkloadFactory& workloadFactory,
1146 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001147 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001148 const armnn::DataLayout dataLayout);
1149
Derek Lambertif90c56d2020-01-10 17:14:08 +00001150template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1151ResizeNearestNeighborMinTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001152 armnn::IWorkloadFactory& workloadFactory,
1153 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001154 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001155 const armnn::DataLayout dataLayout);
1156
Derek Lambertif90c56d2020-01-10 17:14:08 +00001157template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1158ResizeNearestNeighborMagTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001159 armnn::IWorkloadFactory& workloadFactory,
1160 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001161 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tarb3670b12019-10-28 16:06:50 +00001162 const armnn::DataLayout dataLayout,
1163 float inQuantScale,
1164 int32_t inQuantOffset,
1165 float outQuantScale,
1166 int32_t outQuantOffset);
Teresa Charlin686f45c2020-07-23 17:59:00 +01001167
1168template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1169HalfPixelCentersResizeBilinearTest<armnn::DataType::QSymmS16>(
1170 armnn::IWorkloadFactory& workloadFactory,
1171 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001172 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +01001173 const armnn::DataLayout dataLayout);
1174
1175template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1176AlignCornersResizeBilinearTest<armnn::DataType::QSymmS16>(
1177 armnn::IWorkloadFactory& workloadFactory,
1178 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001179 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +01001180 const armnn::DataLayout dataLayout);
1181
1182template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1183HalfPixelCentersResizeNearestNeighbourTest<armnn::DataType::QSymmS16>(
1184 armnn::IWorkloadFactory& workloadFactory,
1185 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001186 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +01001187 const armnn::DataLayout dataLayout);
1188
1189template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
1190AlignCornersResizeNearestNeighbourTest<armnn::DataType::QSymmS16>(
1191 armnn::IWorkloadFactory& workloadFactory,
1192 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Finn Williamsec36d3e2020-08-28 13:17:05 +01001193 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlin686f45c2020-07-23 17:59:00 +01001194 const armnn::DataLayout dataLayout);