blob: 56f49736bbc250473923247560474803d7f6fc43 [file] [log] [blame]
Matthew Jacksone69c3992019-09-09 14:31:21 +01001//
Teresa Charlinfbf0e5b2020-08-17 01:01:06 +01002// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
Matthew Jacksone69c3992019-09-09 14:31:21 +01003// SPDX-License-Identifier: MIT
4//
5
6#include "StackTestImpl.hpp"
Sadik Armagana097d2a2021-11-24 15:47:28 +00007#include <armnnTestUtils/LayerTestResult.hpp>
Matthew Jacksone69c3992019-09-09 14:31:21 +01008
9#include <ResolveType.hpp>
10
Matthew Jacksone69c3992019-09-09 14:31:21 +010011
Matteo Martincighe5b8eb92019-11-28 15:45:42 +000012#include <armnn/backends/IBackendInternal.hpp>
Colm Donelan0c479742021-12-10 12:43:54 +000013#include <armnn/backends/WorkloadFactory.hpp>
Matthew Jacksone69c3992019-09-09 14:31:21 +010014
Sadik Armagana097d2a2021-11-24 15:47:28 +000015#include <armnnTestUtils/TensorCopyUtils.hpp>
Colm Donelan0c479742021-12-10 12:43:54 +000016#include <armnnTestUtils/WorkloadTestUtils.hpp>
Matthew Jacksone69c3992019-09-09 14:31:21 +010017
Colm Donelanc42a9872022-02-02 16:35:09 +000018#include <armnnTestUtils/TensorHelpers.hpp>
Matthew Jacksone69c3992019-09-09 14:31:21 +010019
20namespace
21{
22
23template<armnn::DataType ArmnnType, typename T, std::size_t outputDimLength>
24LayerTestResult<T, outputDimLength> StackTestHelper(
25 armnn::IWorkloadFactory& workloadFactory,
26 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan5e719842020-08-28 12:17:33 +010027 const armnn::ITensorHandleFactory& tensorHandleFactory,
Matthew Jacksone69c3992019-09-09 14:31:21 +010028 const armnn::TensorInfo& inputTensorInfo,
29 const armnn::TensorInfo& outputTensorInfo,
30 unsigned int axis,
31 const std::vector<std::vector<T>>& inputData,
32 const std::vector<T>& outputExpectedData)
33{
Jan Eilers8eb25602020-03-09 12:13:48 +000034 IgnoreUnused(memoryManager);
Matthew Jacksone69c3992019-09-09 14:31:21 +010035 unsigned int numInputs = static_cast<unsigned int>(inputData.size());
Sadik Armagan483c8112021-06-01 09:24:52 +010036 std::vector<std::vector<T>> inputs;
Matthew Jacksone69c3992019-09-09 14:31:21 +010037 for (unsigned int i = 0; i < numInputs; ++i)
38 {
Sadik Armagan483c8112021-06-01 09:24:52 +010039 inputs.emplace_back(inputData[i]);
Matthew Jacksone69c3992019-09-09 14:31:21 +010040 }
41
Sadik Armagan483c8112021-06-01 09:24:52 +010042 std::vector<T> actualOutput(outputTensorInfo.GetNumElements());
Matthew Jacksone69c3992019-09-09 14:31:21 +010043
44 std::vector<std::unique_ptr<armnn::ITensorHandle>> inputHandles;
45 for (unsigned int i = 0; i < numInputs; ++i)
46 {
Sadik Armagan5e719842020-08-28 12:17:33 +010047 inputHandles.push_back(tensorHandleFactory.CreateTensorHandle(inputTensorInfo));
Matthew Jacksone69c3992019-09-09 14:31:21 +010048 }
Sadik Armagan5e719842020-08-28 12:17:33 +010049 std::unique_ptr<armnn::ITensorHandle> outputHandle = tensorHandleFactory.CreateTensorHandle(outputTensorInfo);
Matthew Jacksone69c3992019-09-09 14:31:21 +010050
51 armnn::StackQueueDescriptor descriptor;
52 descriptor.m_Parameters.m_Axis = axis;
53 descriptor.m_Parameters.m_InputShape = inputTensorInfo.GetShape();
54 descriptor.m_Parameters.m_NumInputs = numInputs;
55
56 armnn::WorkloadInfo info;
57 for (unsigned int i = 0; i < numInputs; ++i)
58 {
59 std::unique_ptr<armnn::ITensorHandle>& inputHandle = inputHandles[i];
60 AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
61 inputHandle->Allocate();
Sadik Armagan483c8112021-06-01 09:24:52 +010062 CopyDataToITensorHandle(inputHandle.get(), inputs[i].data());
Matthew Jacksone69c3992019-09-09 14:31:21 +010063 }
64
65 AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
66 outputHandle->Allocate();
67
Teresa Charlin611c7fb2022-01-07 09:47:29 +000068 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateWorkload(armnn::LayerType::Stack,
69 descriptor,
70 info);
Matthew Jacksone69c3992019-09-09 14:31:21 +010071
72 workload->Execute();
73
Sadik Armagan483c8112021-06-01 09:24:52 +010074 CopyDataFromITensorHandle(actualOutput.data(), outputHandle.get());
Matthew Jacksone69c3992019-09-09 14:31:21 +010075
Sadik Armagan483c8112021-06-01 09:24:52 +010076 return LayerTestResult<T, outputDimLength>(actualOutput,
77 outputExpectedData,
78 outputHandle->GetShape(),
79 outputTensorInfo.GetShape());
Matthew Jacksone69c3992019-09-09 14:31:21 +010080}
81
82} // anonymous namespace
83
84//
85// Implementation templates
86//
87
88template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
89LayerTestResult<T, 4> StackAxis0TestImpl(
90 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +010091 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
92 const armnn::ITensorHandleFactory& tensorHandleFactory)
Matthew Jacksone69c3992019-09-09 14:31:21 +010093{
94 armnn::TensorInfo inputTensorInfo ({ 3, 2, 3 }, ArmnnType);
95 armnn::TensorInfo outputTensorInfo({ 2, 3, 2, 3 }, ArmnnType);
96
97 std::vector<std::vector<T>> inputData;
98
99 inputData.push_back(
100 {
101 1, 2, 3,
102 4, 5, 6,
103
104 7, 8, 9,
105 10, 11, 12,
106
107 13, 14, 15,
108 16, 17, 18
109 });
110
111 inputData.push_back(
112 {
113 19, 20, 21,
114 22, 23, 24,
115
116 25, 26, 27,
117 28, 29, 30,
118
119 31, 32, 33,
120 34, 35, 36
121 });
122
123 std::vector<T> outputExpectedData =
124 {
125 1, 2, 3,
126 4, 5, 6,
127
128 7, 8, 9,
129 10, 11, 12,
130
131 13, 14, 15,
132 16, 17, 18,
133
134
135 19, 20, 21,
136 22, 23, 24,
137
138 25, 26, 27,
139 28, 29, 30,
140
141 31, 32, 33,
142 34, 35, 36
143 };
144
145 return StackTestHelper<ArmnnType, T, 4>(
146 workloadFactory,
147 memoryManager,
Sadik Armagan5e719842020-08-28 12:17:33 +0100148 tensorHandleFactory,
Matthew Jacksone69c3992019-09-09 14:31:21 +0100149 inputTensorInfo,
150 outputTensorInfo,
151 0U,
152 inputData,
153 outputExpectedData
154 );
155}
156
157template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
158LayerTestResult<T, 4> StackOutput4DAxis1TestImpl(
159 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100160 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
161 const armnn::ITensorHandleFactory& tensorHandleFactory)
Matthew Jacksone69c3992019-09-09 14:31:21 +0100162{
163 armnn::TensorInfo inputTensorInfo ({ 3, 2, 3 }, ArmnnType);
164 armnn::TensorInfo outputTensorInfo({ 3, 2, 2, 3 }, ArmnnType);
165
166 std::vector<std::vector<T>> inputData;
167
168 inputData.push_back(
169 {
170 1, 2, 3,
171 4, 5, 6,
172
173 7, 8, 9,
174 10, 11, 12,
175
176 13, 14, 15,
177 16, 17, 18
178 });
179
180 inputData.push_back(
181 {
182 19, 20, 21,
183 22, 23, 24,
184
185 25, 26, 27,
186 28, 29, 30,
187
188 31, 32, 33,
189 34, 35, 36
190 });
191
192 std::vector<T> outputExpectedData =
193 {
194 1, 2, 3,
195 4, 5, 6,
196
197 19, 20, 21,
198 22, 23, 24,
199
200
201 7, 8, 9,
202 10, 11, 12,
203
204 25, 26, 27,
205 28, 29, 30,
206
207
208 13, 14, 15,
209 16, 17, 18,
210
211 31, 32, 33,
212 34, 35, 36
213 };
214
215 return StackTestHelper<ArmnnType, T, 4>(
216 workloadFactory,
217 memoryManager,
Sadik Armagan5e719842020-08-28 12:17:33 +0100218 tensorHandleFactory,
Matthew Jacksone69c3992019-09-09 14:31:21 +0100219 inputTensorInfo,
220 outputTensorInfo,
221 1U,
222 inputData,
223 outputExpectedData
224 );
225}
226
227template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
228LayerTestResult<T, 4> StackOutput4DAxis2TestImpl(
229 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100230 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
231 const armnn::ITensorHandleFactory& tensorHandleFactory)
Matthew Jacksone69c3992019-09-09 14:31:21 +0100232{
233 armnn::TensorInfo inputTensorInfo ({ 3, 2, 3 }, ArmnnType);
234 armnn::TensorInfo outputTensorInfo({ 3, 2, 2, 3 }, ArmnnType);
235
236 std::vector<std::vector<T>> inputData;
237
238 inputData.push_back(
239 {
240 1, 2, 3,
241 4, 5, 6,
242
243 7, 8, 9,
244 10, 11, 12,
245
246 13, 14, 15,
247 16, 17, 18
248 });
249
250 inputData.push_back(
251 {
252 19, 20, 21,
253 22, 23, 24,
254
255 25, 26, 27,
256 28, 29, 30,
257
258 31, 32, 33,
259 34, 35, 36
260 });
261
262 std::vector<T> outputExpectedData =
263 {
264 1, 2, 3,
265 19, 20, 21,
266
267 4, 5, 6,
268 22, 23, 24,
269
270 7, 8, 9,
271 25, 26, 27,
272
273 10, 11, 12,
274 28, 29, 30,
275
276 13, 14, 15,
277 31, 32, 33,
278
279 16, 17, 18,
280 34, 35, 36
281 };
282
283 return StackTestHelper<ArmnnType, T, 4>(
284 workloadFactory,
285 memoryManager,
Sadik Armagan5e719842020-08-28 12:17:33 +0100286 tensorHandleFactory,
Matthew Jacksone69c3992019-09-09 14:31:21 +0100287 inputTensorInfo,
288 outputTensorInfo,
289 2U,
290 inputData,
291 outputExpectedData
292 );
293}
294
295template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
296LayerTestResult<T, 4> StackOutput4DAxis3TestImpl(
297 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100298 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
299 const armnn::ITensorHandleFactory& tensorHandleFactory)
Matthew Jacksone69c3992019-09-09 14:31:21 +0100300{
301 armnn::TensorInfo inputTensorInfo ({ 3, 2, 3 }, ArmnnType);
302 armnn::TensorInfo outputTensorInfo({ 3, 2, 3, 2 }, ArmnnType);
303
304 std::vector<std::vector<T>> inputData;
305
306 inputData.push_back(
307 {
308 1, 2, 3,
309 4, 5, 6,
310
311 7, 8, 9,
312 10, 11, 12,
313
314 13, 14, 15,
315 16, 17, 18
316 });
317
318 inputData.push_back(
319 {
320 19, 20, 21,
321 22, 23, 24,
322
323 25, 26, 27,
324 28, 29, 30,
325
326 31, 32, 33,
327 34, 35, 36
328 });
329
330 std::vector<T> outputExpectedData =
331 {
332 1, 19,
333 2, 20,
334 3, 21,
335
336 4, 22,
337 5, 23,
338 6, 24,
339
340
341 7, 25,
342 8, 26,
343 9, 27,
344
345 10, 28,
346 11, 29,
347 12, 30,
348
349
350 13, 31,
351 14, 32,
352 15, 33,
353
354 16, 34,
355 17, 35,
356 18, 36
357 };
358
359 return StackTestHelper<ArmnnType, T, 4>(
360 workloadFactory,
361 memoryManager,
Sadik Armagan5e719842020-08-28 12:17:33 +0100362 tensorHandleFactory,
Matthew Jacksone69c3992019-09-09 14:31:21 +0100363 inputTensorInfo,
364 outputTensorInfo,
365 3U,
366 inputData,
367 outputExpectedData
368 );
369}
370
371template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
372LayerTestResult<T, 3> StackOutput3DInputs3TestImpl(
373 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100374 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
375 const armnn::ITensorHandleFactory& tensorHandleFactory)
Matthew Jacksone69c3992019-09-09 14:31:21 +0100376{
377 armnn::TensorInfo inputTensorInfo ({ 3, 3 }, ArmnnType);
378 armnn::TensorInfo outputTensorInfo({ 3, 3, 3 }, ArmnnType);
379
380 std::vector<std::vector<T>> inputData;
381
382 inputData.push_back(
383 {
384 1, 2, 3,
385 4, 5, 6,
386 7, 8, 9
387 });
388
389 inputData.push_back(
390 {
391 10, 11, 12,
392 13, 14, 15,
393 16, 17, 18
394 });
395
396 inputData.push_back(
397 {
398 19, 20, 21,
399 22, 23, 24,
400 25, 26, 27
401 });
402
403 std::vector<T> outputExpectedData =
404 {
405 1, 2, 3,
406 10, 11, 12,
407 19, 20, 21,
408
409 4, 5, 6,
410 13, 14, 15,
411 22, 23, 24,
412
413 7, 8, 9,
414 16, 17, 18,
415 25, 26, 27
416 };
417
418 return StackTestHelper<ArmnnType, T, 3>(
419 workloadFactory,
420 memoryManager,
Sadik Armagan5e719842020-08-28 12:17:33 +0100421 tensorHandleFactory,
Matthew Jacksone69c3992019-09-09 14:31:21 +0100422 inputTensorInfo,
423 outputTensorInfo,
424 1U,
425 inputData,
426 outputExpectedData
427 );
428}
429
430template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
431LayerTestResult<T, 5> StackOutput5DTestImpl(
432 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100433 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
434 const armnn::ITensorHandleFactory& tensorHandleFactory)
Matthew Jacksone69c3992019-09-09 14:31:21 +0100435{
436 armnn::TensorInfo inputTensorInfo ({ 2, 2, 2, 3 }, ArmnnType);
437 armnn::TensorInfo outputTensorInfo({ 2, 2, 2, 2, 3 }, ArmnnType);
438
439 std::vector<std::vector<T>> inputData;
440
441 inputData.push_back(
442 {
443 1, 2, 3,
444 4, 5, 6,
445
446 7, 8, 9,
447 10, 11, 12,
448
449
450 13, 14, 15,
451 16, 17, 18,
452
453 19, 20, 21,
454 22, 23, 24
455 });
456
457 inputData.push_back(
458 {
459 25, 26, 27,
460 28, 29, 30,
461
462 31, 32, 33,
463 34, 35, 36,
464
465
466 37, 38, 39,
467 40, 41, 42,
468
469 43, 44, 45,
470 46, 47, 48
471 });
472
473 std::vector<T> outputExpectedData =
474 {
475 1, 2, 3,
476 4, 5, 6,
477
478 7, 8, 9,
479 10, 11, 12,
480
481
482 25, 26, 27,
483 28, 29, 30,
484
485 31, 32, 33,
486 34, 35, 36,
487
488
489
490 13, 14, 15,
491 16, 17, 18,
492
493 19, 20, 21,
494 22, 23, 24,
495
496
497 37, 38, 39,
498 40, 41, 42,
499
500 43, 44, 45,
501 46, 47, 48
502
503 };
504
505 return StackTestHelper<ArmnnType, T, 5>(
506 workloadFactory,
507 memoryManager,
Sadik Armagan5e719842020-08-28 12:17:33 +0100508 tensorHandleFactory,
Matthew Jacksone69c3992019-09-09 14:31:21 +0100509 inputTensorInfo,
510 outputTensorInfo,
511 1U,
512 inputData,
513 outputExpectedData
514 );
515}
516
517//
518// Implementation functions
519//
520
521LayerTestResult<float, 4> StackAxis0Float32Test(
522 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100523 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
524 const armnn::ITensorHandleFactory& tensorHandleFactory)
Matthew Jacksone69c3992019-09-09 14:31:21 +0100525{
Sadik Armagan5e719842020-08-28 12:17:33 +0100526 return StackAxis0TestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager, tensorHandleFactory);
Matthew Jacksone69c3992019-09-09 14:31:21 +0100527}
528
529LayerTestResult<float, 4> StackOutput4DAxis1Float32Test(
530 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100531 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
532 const armnn::ITensorHandleFactory& tensorHandleFactory)
Matthew Jacksone69c3992019-09-09 14:31:21 +0100533{
Sadik Armagan5e719842020-08-28 12:17:33 +0100534 return StackOutput4DAxis1TestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager, tensorHandleFactory);
Matthew Jacksone69c3992019-09-09 14:31:21 +0100535}
536
537LayerTestResult<float, 4> StackOutput4DAxis2Float32Test(
538 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100539 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
540 const armnn::ITensorHandleFactory& tensorHandleFactory)
Matthew Jacksone69c3992019-09-09 14:31:21 +0100541{
Sadik Armagan5e719842020-08-28 12:17:33 +0100542 return StackOutput4DAxis2TestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager, tensorHandleFactory);
Matthew Jacksone69c3992019-09-09 14:31:21 +0100543}
544
545LayerTestResult<float, 4> StackOutput4DAxis3Float32Test(
546 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100547 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
548 const armnn::ITensorHandleFactory& tensorHandleFactory)
Matthew Jacksone69c3992019-09-09 14:31:21 +0100549{
Sadik Armagan5e719842020-08-28 12:17:33 +0100550 return StackOutput4DAxis3TestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager, tensorHandleFactory);
Matthew Jacksone69c3992019-09-09 14:31:21 +0100551}
552
553LayerTestResult<float, 3> StackOutput3DInputs3Float32Test(
554 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100555 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
556 const armnn::ITensorHandleFactory& tensorHandleFactory)
Matthew Jacksone69c3992019-09-09 14:31:21 +0100557{
Sadik Armagan5e719842020-08-28 12:17:33 +0100558 return StackOutput3DInputs3TestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager, tensorHandleFactory);
Matthew Jacksone69c3992019-09-09 14:31:21 +0100559}
560
561LayerTestResult<float, 5> StackOutput5DFloat32Test(
562 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100563 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
564 const armnn::ITensorHandleFactory& tensorHandleFactory)
Matthew Jacksone69c3992019-09-09 14:31:21 +0100565{
Sadik Armagan5e719842020-08-28 12:17:33 +0100566 return StackOutput5DTestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager, tensorHandleFactory);
Matthew Jacksone69c3992019-09-09 14:31:21 +0100567}
568
569LayerTestResult<armnn::Half, 4> StackFloat16Test(
570 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100571 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
572 const armnn::ITensorHandleFactory& tensorHandleFactory)
Matthew Jacksone69c3992019-09-09 14:31:21 +0100573{
574 using namespace half_float::literal;
575
576 armnn::TensorInfo inputTensorInfo ({ 3, 2, 3 }, armnn::DataType::Float16);
577 armnn::TensorInfo outputTensorInfo({ 3, 2, 2, 3 }, armnn::DataType::Float16);
578
579 std::vector<std::vector<armnn::Half>> inputData;
580
581 inputData.push_back(
582 {
583 1.0_h, 2.0_h, 3.0_h,
584 4.0_h, 5.0_h, 6.0_h,
585
586 7.0_h, 8.0_h, 9.0_h,
587 10.0_h, 11.0_h, 12.0_h,
588
589 13.0_h, 14.0_h, 15.0_h,
590 16.0_h, 17.0_h, 18.0_h
591 });
592
593 inputData.push_back(
594 {
595 19.0_h, 20.0_h, 21.0_h,
596 22.0_h, 23.0_h, 24.0_h,
597
598 25.0_h, 26.0_h, 27.0_h,
599 28.0_h, 29.0_h, 30.0_h,
600
601 31.0_h, 32.0_h, 33.0_h,
602 34.0_h, 35.0_h, 36.0_h
603 });
604
605 std::vector<armnn::Half> outputExpectedData =
606 {
607 1.0_h, 2.0_h, 3.0_h,
608 19.0_h, 20.0_h, 21.0_h,
609
610 4.0_h, 5.0_h, 6.0_h,
611 22.0_h, 23.0_h, 24.0_h,
612
613 7.0_h, 8.0_h, 9.0_h,
614 25.0_h, 26.0_h, 27.0_h,
615
616 10.0_h, 11.0_h, 12.0_h,
617 28.0_h, 29.0_h, 30.0_h,
618
619 13.0_h, 14.0_h, 15.0_h,
620 31.0_h, 32.0_h, 33.0_h,
621
622 16.0_h, 17.0_h, 18.0_h,
623 34.0_h, 35.0_h, 36.0_h
624 };
625
626 return StackTestHelper<armnn::DataType::Float16, armnn::Half, 4>(
627 workloadFactory,
628 memoryManager,
Sadik Armagan5e719842020-08-28 12:17:33 +0100629 tensorHandleFactory,
Matthew Jacksone69c3992019-09-09 14:31:21 +0100630 inputTensorInfo,
631 outputTensorInfo,
632 2U,
633 inputData,
634 outputExpectedData
635 );
Sadik Armagan529195f2022-01-14 12:56:35 +0000636}
637
638LayerTestResult<int32_t, 4> StackInt32Test(
639 armnn::IWorkloadFactory& workloadFactory,
640 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
641 const armnn::ITensorHandleFactory& tensorHandleFactory)
642{
643 return StackAxis0TestImpl<armnn::DataType::Signed32>(workloadFactory, memoryManager, tensorHandleFactory);
Matthew Jacksone69c3992019-09-09 14:31:21 +0100644}