1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2021, 2023 Arm Ltd and Contributors. All rights reserved.
3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT
4*89c4ff92SAndroid Build Coastguard Worker //
5*89c4ff92SAndroid Build Coastguard Worker
6*89c4ff92SAndroid Build Coastguard Worker #include "PackTestHelper.hpp"
7*89c4ff92SAndroid Build Coastguard Worker
8*89c4ff92SAndroid Build Coastguard Worker #include <armnn_delegate.hpp>
9*89c4ff92SAndroid Build Coastguard Worker
10*89c4ff92SAndroid Build Coastguard Worker #include <flatbuffers/flatbuffers.h>
11*89c4ff92SAndroid Build Coastguard Worker #include <schema_generated.h>
12*89c4ff92SAndroid Build Coastguard Worker
13*89c4ff92SAndroid Build Coastguard Worker #include <doctest/doctest.h>
14*89c4ff92SAndroid Build Coastguard Worker
15*89c4ff92SAndroid Build Coastguard Worker namespace armnnDelegate
16*89c4ff92SAndroid Build Coastguard Worker {
17*89c4ff92SAndroid Build Coastguard Worker
18*89c4ff92SAndroid Build Coastguard Worker template <typename T>
PackFp32Axis0Test(tflite::TensorType tensorType,std::vector<armnn::BackendId> & backends)19*89c4ff92SAndroid Build Coastguard Worker void PackFp32Axis0Test(tflite::TensorType tensorType, std::vector<armnn::BackendId>& backends)
20*89c4ff92SAndroid Build Coastguard Worker {
21*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape { 3, 2, 3 };
22*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> expectedOutputShape { 2, 3, 2, 3 };
23*89c4ff92SAndroid Build Coastguard Worker
24*89c4ff92SAndroid Build Coastguard Worker std::vector<std::vector<T>> inputValues;
25*89c4ff92SAndroid Build Coastguard Worker inputValues.push_back(
26*89c4ff92SAndroid Build Coastguard Worker {
27*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3,
28*89c4ff92SAndroid Build Coastguard Worker 4, 5, 6,
29*89c4ff92SAndroid Build Coastguard Worker
30*89c4ff92SAndroid Build Coastguard Worker 7, 8, 9,
31*89c4ff92SAndroid Build Coastguard Worker 10, 11, 12,
32*89c4ff92SAndroid Build Coastguard Worker
33*89c4ff92SAndroid Build Coastguard Worker 13, 14, 15,
34*89c4ff92SAndroid Build Coastguard Worker 16, 17, 18
35*89c4ff92SAndroid Build Coastguard Worker });
36*89c4ff92SAndroid Build Coastguard Worker
37*89c4ff92SAndroid Build Coastguard Worker inputValues.push_back(
38*89c4ff92SAndroid Build Coastguard Worker {
39*89c4ff92SAndroid Build Coastguard Worker 19, 20, 21,
40*89c4ff92SAndroid Build Coastguard Worker 22, 23, 24,
41*89c4ff92SAndroid Build Coastguard Worker
42*89c4ff92SAndroid Build Coastguard Worker 25, 26, 27,
43*89c4ff92SAndroid Build Coastguard Worker 28, 29, 30,
44*89c4ff92SAndroid Build Coastguard Worker
45*89c4ff92SAndroid Build Coastguard Worker 31, 32, 33,
46*89c4ff92SAndroid Build Coastguard Worker 34, 35, 36
47*89c4ff92SAndroid Build Coastguard Worker });
48*89c4ff92SAndroid Build Coastguard Worker
49*89c4ff92SAndroid Build Coastguard Worker std::vector<T> expectedOutputValues =
50*89c4ff92SAndroid Build Coastguard Worker {
51*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3,
52*89c4ff92SAndroid Build Coastguard Worker 4, 5, 6,
53*89c4ff92SAndroid Build Coastguard Worker
54*89c4ff92SAndroid Build Coastguard Worker 7, 8, 9,
55*89c4ff92SAndroid Build Coastguard Worker 10, 11, 12,
56*89c4ff92SAndroid Build Coastguard Worker
57*89c4ff92SAndroid Build Coastguard Worker 13, 14, 15,
58*89c4ff92SAndroid Build Coastguard Worker 16, 17, 18,
59*89c4ff92SAndroid Build Coastguard Worker
60*89c4ff92SAndroid Build Coastguard Worker
61*89c4ff92SAndroid Build Coastguard Worker 19, 20, 21,
62*89c4ff92SAndroid Build Coastguard Worker 22, 23, 24,
63*89c4ff92SAndroid Build Coastguard Worker
64*89c4ff92SAndroid Build Coastguard Worker 25, 26, 27,
65*89c4ff92SAndroid Build Coastguard Worker 28, 29, 30,
66*89c4ff92SAndroid Build Coastguard Worker
67*89c4ff92SAndroid Build Coastguard Worker 31, 32, 33,
68*89c4ff92SAndroid Build Coastguard Worker 34, 35, 36
69*89c4ff92SAndroid Build Coastguard Worker };
70*89c4ff92SAndroid Build Coastguard Worker
71*89c4ff92SAndroid Build Coastguard Worker PackTest<T>(tflite::BuiltinOperator_PACK,
72*89c4ff92SAndroid Build Coastguard Worker tensorType,
73*89c4ff92SAndroid Build Coastguard Worker backends,
74*89c4ff92SAndroid Build Coastguard Worker inputShape,
75*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape,
76*89c4ff92SAndroid Build Coastguard Worker inputValues,
77*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues,
78*89c4ff92SAndroid Build Coastguard Worker 0);
79*89c4ff92SAndroid Build Coastguard Worker }
80*89c4ff92SAndroid Build Coastguard Worker
81*89c4ff92SAndroid Build Coastguard Worker template <typename T>
PackFp32Axis1Test(tflite::TensorType tensorType,std::vector<armnn::BackendId> & backends)82*89c4ff92SAndroid Build Coastguard Worker void PackFp32Axis1Test(tflite::TensorType tensorType, std::vector<armnn::BackendId>& backends)
83*89c4ff92SAndroid Build Coastguard Worker {
84*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape { 3, 2, 3 };
85*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> expectedOutputShape { 3, 2, 2, 3 };
86*89c4ff92SAndroid Build Coastguard Worker
87*89c4ff92SAndroid Build Coastguard Worker std::vector<std::vector<T>> inputValues;
88*89c4ff92SAndroid Build Coastguard Worker inputValues.push_back(
89*89c4ff92SAndroid Build Coastguard Worker {
90*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3,
91*89c4ff92SAndroid Build Coastguard Worker 4, 5, 6,
92*89c4ff92SAndroid Build Coastguard Worker
93*89c4ff92SAndroid Build Coastguard Worker 7, 8, 9,
94*89c4ff92SAndroid Build Coastguard Worker 10, 11, 12,
95*89c4ff92SAndroid Build Coastguard Worker
96*89c4ff92SAndroid Build Coastguard Worker 13, 14, 15,
97*89c4ff92SAndroid Build Coastguard Worker 16, 17, 18
98*89c4ff92SAndroid Build Coastguard Worker });
99*89c4ff92SAndroid Build Coastguard Worker
100*89c4ff92SAndroid Build Coastguard Worker inputValues.push_back(
101*89c4ff92SAndroid Build Coastguard Worker {
102*89c4ff92SAndroid Build Coastguard Worker 19, 20, 21,
103*89c4ff92SAndroid Build Coastguard Worker 22, 23, 24,
104*89c4ff92SAndroid Build Coastguard Worker
105*89c4ff92SAndroid Build Coastguard Worker 25, 26, 27,
106*89c4ff92SAndroid Build Coastguard Worker 28, 29, 30,
107*89c4ff92SAndroid Build Coastguard Worker
108*89c4ff92SAndroid Build Coastguard Worker 31, 32, 33,
109*89c4ff92SAndroid Build Coastguard Worker 34, 35, 36
110*89c4ff92SAndroid Build Coastguard Worker });
111*89c4ff92SAndroid Build Coastguard Worker
112*89c4ff92SAndroid Build Coastguard Worker std::vector<T> expectedOutputValues =
113*89c4ff92SAndroid Build Coastguard Worker {
114*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3,
115*89c4ff92SAndroid Build Coastguard Worker 4, 5, 6,
116*89c4ff92SAndroid Build Coastguard Worker
117*89c4ff92SAndroid Build Coastguard Worker 19, 20, 21,
118*89c4ff92SAndroid Build Coastguard Worker 22, 23, 24,
119*89c4ff92SAndroid Build Coastguard Worker
120*89c4ff92SAndroid Build Coastguard Worker
121*89c4ff92SAndroid Build Coastguard Worker 7, 8, 9,
122*89c4ff92SAndroid Build Coastguard Worker 10, 11, 12,
123*89c4ff92SAndroid Build Coastguard Worker
124*89c4ff92SAndroid Build Coastguard Worker 25, 26, 27,
125*89c4ff92SAndroid Build Coastguard Worker 28, 29, 30,
126*89c4ff92SAndroid Build Coastguard Worker
127*89c4ff92SAndroid Build Coastguard Worker
128*89c4ff92SAndroid Build Coastguard Worker 13, 14, 15,
129*89c4ff92SAndroid Build Coastguard Worker 16, 17, 18,
130*89c4ff92SAndroid Build Coastguard Worker
131*89c4ff92SAndroid Build Coastguard Worker 31, 32, 33,
132*89c4ff92SAndroid Build Coastguard Worker 34, 35, 36
133*89c4ff92SAndroid Build Coastguard Worker };
134*89c4ff92SAndroid Build Coastguard Worker
135*89c4ff92SAndroid Build Coastguard Worker PackTest<T>(tflite::BuiltinOperator_PACK,
136*89c4ff92SAndroid Build Coastguard Worker tensorType,
137*89c4ff92SAndroid Build Coastguard Worker backends,
138*89c4ff92SAndroid Build Coastguard Worker inputShape,
139*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape,
140*89c4ff92SAndroid Build Coastguard Worker inputValues,
141*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues,
142*89c4ff92SAndroid Build Coastguard Worker 1);
143*89c4ff92SAndroid Build Coastguard Worker }
144*89c4ff92SAndroid Build Coastguard Worker
145*89c4ff92SAndroid Build Coastguard Worker template <typename T>
PackFp32Axis2Test(tflite::TensorType tensorType,std::vector<armnn::BackendId> & backends)146*89c4ff92SAndroid Build Coastguard Worker void PackFp32Axis2Test(tflite::TensorType tensorType, std::vector<armnn::BackendId>& backends)
147*89c4ff92SAndroid Build Coastguard Worker {
148*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape { 3, 2, 3 };
149*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> expectedOutputShape { 3, 2, 2, 3 };
150*89c4ff92SAndroid Build Coastguard Worker
151*89c4ff92SAndroid Build Coastguard Worker std::vector<std::vector<T>> inputValues;
152*89c4ff92SAndroid Build Coastguard Worker inputValues.push_back(
153*89c4ff92SAndroid Build Coastguard Worker {
154*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3,
155*89c4ff92SAndroid Build Coastguard Worker 4, 5, 6,
156*89c4ff92SAndroid Build Coastguard Worker
157*89c4ff92SAndroid Build Coastguard Worker 7, 8, 9,
158*89c4ff92SAndroid Build Coastguard Worker 10, 11, 12,
159*89c4ff92SAndroid Build Coastguard Worker
160*89c4ff92SAndroid Build Coastguard Worker 13, 14, 15,
161*89c4ff92SAndroid Build Coastguard Worker 16, 17, 18
162*89c4ff92SAndroid Build Coastguard Worker });
163*89c4ff92SAndroid Build Coastguard Worker
164*89c4ff92SAndroid Build Coastguard Worker inputValues.push_back(
165*89c4ff92SAndroid Build Coastguard Worker {
166*89c4ff92SAndroid Build Coastguard Worker 19, 20, 21,
167*89c4ff92SAndroid Build Coastguard Worker 22, 23, 24,
168*89c4ff92SAndroid Build Coastguard Worker
169*89c4ff92SAndroid Build Coastguard Worker 25, 26, 27,
170*89c4ff92SAndroid Build Coastguard Worker 28, 29, 30,
171*89c4ff92SAndroid Build Coastguard Worker
172*89c4ff92SAndroid Build Coastguard Worker 31, 32, 33,
173*89c4ff92SAndroid Build Coastguard Worker 34, 35, 36
174*89c4ff92SAndroid Build Coastguard Worker });
175*89c4ff92SAndroid Build Coastguard Worker
176*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues =
177*89c4ff92SAndroid Build Coastguard Worker {
178*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3,
179*89c4ff92SAndroid Build Coastguard Worker 19, 20, 21,
180*89c4ff92SAndroid Build Coastguard Worker
181*89c4ff92SAndroid Build Coastguard Worker 4, 5, 6,
182*89c4ff92SAndroid Build Coastguard Worker 22, 23, 24,
183*89c4ff92SAndroid Build Coastguard Worker
184*89c4ff92SAndroid Build Coastguard Worker 7, 8, 9,
185*89c4ff92SAndroid Build Coastguard Worker 25, 26, 27,
186*89c4ff92SAndroid Build Coastguard Worker
187*89c4ff92SAndroid Build Coastguard Worker 10, 11, 12,
188*89c4ff92SAndroid Build Coastguard Worker 28, 29, 30,
189*89c4ff92SAndroid Build Coastguard Worker
190*89c4ff92SAndroid Build Coastguard Worker 13, 14, 15,
191*89c4ff92SAndroid Build Coastguard Worker 31, 32, 33,
192*89c4ff92SAndroid Build Coastguard Worker
193*89c4ff92SAndroid Build Coastguard Worker 16, 17, 18,
194*89c4ff92SAndroid Build Coastguard Worker 34, 35, 36
195*89c4ff92SAndroid Build Coastguard Worker };
196*89c4ff92SAndroid Build Coastguard Worker
197*89c4ff92SAndroid Build Coastguard Worker PackTest<T>(tflite::BuiltinOperator_PACK,
198*89c4ff92SAndroid Build Coastguard Worker tensorType,
199*89c4ff92SAndroid Build Coastguard Worker backends,
200*89c4ff92SAndroid Build Coastguard Worker inputShape,
201*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape,
202*89c4ff92SAndroid Build Coastguard Worker inputValues,
203*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues,
204*89c4ff92SAndroid Build Coastguard Worker 2);
205*89c4ff92SAndroid Build Coastguard Worker }
206*89c4ff92SAndroid Build Coastguard Worker
207*89c4ff92SAndroid Build Coastguard Worker template <typename T>
PackFp32Axis3Test(tflite::TensorType tensorType,std::vector<armnn::BackendId> & backends)208*89c4ff92SAndroid Build Coastguard Worker void PackFp32Axis3Test(tflite::TensorType tensorType, std::vector<armnn::BackendId>& backends)
209*89c4ff92SAndroid Build Coastguard Worker {
210*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape { 3, 2, 3 };
211*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> expectedOutputShape { 3, 2, 3, 2 };
212*89c4ff92SAndroid Build Coastguard Worker
213*89c4ff92SAndroid Build Coastguard Worker std::vector<std::vector<T>> inputValues;
214*89c4ff92SAndroid Build Coastguard Worker inputValues.push_back(
215*89c4ff92SAndroid Build Coastguard Worker {
216*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3,
217*89c4ff92SAndroid Build Coastguard Worker 4, 5, 6,
218*89c4ff92SAndroid Build Coastguard Worker
219*89c4ff92SAndroid Build Coastguard Worker 7, 8, 9,
220*89c4ff92SAndroid Build Coastguard Worker 10, 11, 12,
221*89c4ff92SAndroid Build Coastguard Worker
222*89c4ff92SAndroid Build Coastguard Worker 13, 14, 15,
223*89c4ff92SAndroid Build Coastguard Worker 16, 17, 18
224*89c4ff92SAndroid Build Coastguard Worker });
225*89c4ff92SAndroid Build Coastguard Worker
226*89c4ff92SAndroid Build Coastguard Worker inputValues.push_back(
227*89c4ff92SAndroid Build Coastguard Worker {
228*89c4ff92SAndroid Build Coastguard Worker 19, 20, 21,
229*89c4ff92SAndroid Build Coastguard Worker 22, 23, 24,
230*89c4ff92SAndroid Build Coastguard Worker
231*89c4ff92SAndroid Build Coastguard Worker 25, 26, 27,
232*89c4ff92SAndroid Build Coastguard Worker 28, 29, 30,
233*89c4ff92SAndroid Build Coastguard Worker
234*89c4ff92SAndroid Build Coastguard Worker 31, 32, 33,
235*89c4ff92SAndroid Build Coastguard Worker 34, 35, 36
236*89c4ff92SAndroid Build Coastguard Worker });
237*89c4ff92SAndroid Build Coastguard Worker
238*89c4ff92SAndroid Build Coastguard Worker std::vector<T> expectedOutputValues =
239*89c4ff92SAndroid Build Coastguard Worker {
240*89c4ff92SAndroid Build Coastguard Worker 1, 19,
241*89c4ff92SAndroid Build Coastguard Worker 2, 20,
242*89c4ff92SAndroid Build Coastguard Worker 3, 21,
243*89c4ff92SAndroid Build Coastguard Worker
244*89c4ff92SAndroid Build Coastguard Worker 4, 22,
245*89c4ff92SAndroid Build Coastguard Worker 5, 23,
246*89c4ff92SAndroid Build Coastguard Worker 6, 24,
247*89c4ff92SAndroid Build Coastguard Worker
248*89c4ff92SAndroid Build Coastguard Worker
249*89c4ff92SAndroid Build Coastguard Worker 7, 25,
250*89c4ff92SAndroid Build Coastguard Worker 8, 26,
251*89c4ff92SAndroid Build Coastguard Worker 9, 27,
252*89c4ff92SAndroid Build Coastguard Worker
253*89c4ff92SAndroid Build Coastguard Worker 10, 28,
254*89c4ff92SAndroid Build Coastguard Worker 11, 29,
255*89c4ff92SAndroid Build Coastguard Worker 12, 30,
256*89c4ff92SAndroid Build Coastguard Worker
257*89c4ff92SAndroid Build Coastguard Worker
258*89c4ff92SAndroid Build Coastguard Worker 13, 31,
259*89c4ff92SAndroid Build Coastguard Worker 14, 32,
260*89c4ff92SAndroid Build Coastguard Worker 15, 33,
261*89c4ff92SAndroid Build Coastguard Worker
262*89c4ff92SAndroid Build Coastguard Worker 16, 34,
263*89c4ff92SAndroid Build Coastguard Worker 17, 35,
264*89c4ff92SAndroid Build Coastguard Worker 18, 36
265*89c4ff92SAndroid Build Coastguard Worker };
266*89c4ff92SAndroid Build Coastguard Worker
267*89c4ff92SAndroid Build Coastguard Worker PackTest<T>(tflite::BuiltinOperator_PACK,
268*89c4ff92SAndroid Build Coastguard Worker tflite::TensorType_FLOAT32,
269*89c4ff92SAndroid Build Coastguard Worker backends,
270*89c4ff92SAndroid Build Coastguard Worker inputShape,
271*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape,
272*89c4ff92SAndroid Build Coastguard Worker inputValues,
273*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues,
274*89c4ff92SAndroid Build Coastguard Worker 3);
275*89c4ff92SAndroid Build Coastguard Worker }
276*89c4ff92SAndroid Build Coastguard Worker
277*89c4ff92SAndroid Build Coastguard Worker template <typename T>
PackFp32Inputs3Test(tflite::TensorType tensorType,std::vector<armnn::BackendId> & backends)278*89c4ff92SAndroid Build Coastguard Worker void PackFp32Inputs3Test(tflite::TensorType tensorType, std::vector<armnn::BackendId>& backends)
279*89c4ff92SAndroid Build Coastguard Worker {
280*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape { 3, 3 };
281*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> expectedOutputShape { 3, 3, 3 };
282*89c4ff92SAndroid Build Coastguard Worker
283*89c4ff92SAndroid Build Coastguard Worker std::vector<std::vector<T>> inputValues;
284*89c4ff92SAndroid Build Coastguard Worker inputValues.push_back(
285*89c4ff92SAndroid Build Coastguard Worker {
286*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3,
287*89c4ff92SAndroid Build Coastguard Worker 4, 5, 6,
288*89c4ff92SAndroid Build Coastguard Worker 7, 8, 9
289*89c4ff92SAndroid Build Coastguard Worker });
290*89c4ff92SAndroid Build Coastguard Worker
291*89c4ff92SAndroid Build Coastguard Worker inputValues.push_back(
292*89c4ff92SAndroid Build Coastguard Worker {
293*89c4ff92SAndroid Build Coastguard Worker 10, 11, 12,
294*89c4ff92SAndroid Build Coastguard Worker 13, 14, 15,
295*89c4ff92SAndroid Build Coastguard Worker 16, 17, 18
296*89c4ff92SAndroid Build Coastguard Worker });
297*89c4ff92SAndroid Build Coastguard Worker
298*89c4ff92SAndroid Build Coastguard Worker inputValues.push_back(
299*89c4ff92SAndroid Build Coastguard Worker {
300*89c4ff92SAndroid Build Coastguard Worker 19, 20, 21,
301*89c4ff92SAndroid Build Coastguard Worker 22, 23, 24,
302*89c4ff92SAndroid Build Coastguard Worker 25, 26, 27
303*89c4ff92SAndroid Build Coastguard Worker });
304*89c4ff92SAndroid Build Coastguard Worker
305*89c4ff92SAndroid Build Coastguard Worker std::vector<T> expectedOutputValues =
306*89c4ff92SAndroid Build Coastguard Worker {
307*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3,
308*89c4ff92SAndroid Build Coastguard Worker 10, 11, 12,
309*89c4ff92SAndroid Build Coastguard Worker 19, 20, 21,
310*89c4ff92SAndroid Build Coastguard Worker
311*89c4ff92SAndroid Build Coastguard Worker 4, 5, 6,
312*89c4ff92SAndroid Build Coastguard Worker 13, 14, 15,
313*89c4ff92SAndroid Build Coastguard Worker 22, 23, 24,
314*89c4ff92SAndroid Build Coastguard Worker
315*89c4ff92SAndroid Build Coastguard Worker 7, 8, 9,
316*89c4ff92SAndroid Build Coastguard Worker 16, 17, 18,
317*89c4ff92SAndroid Build Coastguard Worker 25, 26, 27
318*89c4ff92SAndroid Build Coastguard Worker };
319*89c4ff92SAndroid Build Coastguard Worker
320*89c4ff92SAndroid Build Coastguard Worker PackTest<T>(tflite::BuiltinOperator_PACK,
321*89c4ff92SAndroid Build Coastguard Worker tensorType,
322*89c4ff92SAndroid Build Coastguard Worker backends,
323*89c4ff92SAndroid Build Coastguard Worker inputShape,
324*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape,
325*89c4ff92SAndroid Build Coastguard Worker inputValues,
326*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues,
327*89c4ff92SAndroid Build Coastguard Worker 1);
328*89c4ff92SAndroid Build Coastguard Worker }
329*89c4ff92SAndroid Build Coastguard Worker
330*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("Pack_CpuAccTests")
331*89c4ff92SAndroid Build Coastguard Worker {
332*89c4ff92SAndroid Build Coastguard Worker
333*89c4ff92SAndroid Build Coastguard Worker // Fp32
334*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Pack_Fp32_Axis0_CpuAcc_Test")
335*89c4ff92SAndroid Build Coastguard Worker {
336*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
337*89c4ff92SAndroid Build Coastguard Worker PackFp32Axis0Test<float>(tflite::TensorType_FLOAT32, backends);
338*89c4ff92SAndroid Build Coastguard Worker }
339*89c4ff92SAndroid Build Coastguard Worker
340*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Pack_Fp32_Axis1_CpuAcc_Test")
341*89c4ff92SAndroid Build Coastguard Worker {
342*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
343*89c4ff92SAndroid Build Coastguard Worker PackFp32Axis1Test<float>(tflite::TensorType_FLOAT32, backends);
344*89c4ff92SAndroid Build Coastguard Worker }
345*89c4ff92SAndroid Build Coastguard Worker
346*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Pack_Fp32_Axis2_CpuAcc_Test")
347*89c4ff92SAndroid Build Coastguard Worker {
348*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
349*89c4ff92SAndroid Build Coastguard Worker PackFp32Axis2Test<float>(tflite::TensorType_FLOAT32, backends);
350*89c4ff92SAndroid Build Coastguard Worker }
351*89c4ff92SAndroid Build Coastguard Worker
352*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Pack_Fp32_Axis3_CpuAcc_Test")
353*89c4ff92SAndroid Build Coastguard Worker {
354*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
355*89c4ff92SAndroid Build Coastguard Worker PackFp32Axis3Test<float>(tflite::TensorType_FLOAT32, backends);
356*89c4ff92SAndroid Build Coastguard Worker }
357*89c4ff92SAndroid Build Coastguard Worker
358*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Pack_Fp32_Inputs3_CpuAcc_Test")
359*89c4ff92SAndroid Build Coastguard Worker {
360*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
361*89c4ff92SAndroid Build Coastguard Worker PackFp32Inputs3Test<float>(tflite::TensorType_FLOAT32, backends);
362*89c4ff92SAndroid Build Coastguard Worker }
363*89c4ff92SAndroid Build Coastguard Worker
364*89c4ff92SAndroid Build Coastguard Worker // Uint8
365*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Pack_Uint8_Axis0_CpuAcc_Test")
366*89c4ff92SAndroid Build Coastguard Worker {
367*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
368*89c4ff92SAndroid Build Coastguard Worker PackFp32Axis0Test<uint8_t>(tflite::TensorType_UINT8, backends);
369*89c4ff92SAndroid Build Coastguard Worker }
370*89c4ff92SAndroid Build Coastguard Worker
371*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Pack_Uint8_Inputs3_CpuAcc_Test")
372*89c4ff92SAndroid Build Coastguard Worker {
373*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
374*89c4ff92SAndroid Build Coastguard Worker PackFp32Inputs3Test<uint8_t>(tflite::TensorType_UINT8, backends);
375*89c4ff92SAndroid Build Coastguard Worker }
376*89c4ff92SAndroid Build Coastguard Worker
377*89c4ff92SAndroid Build Coastguard Worker // Uint8
378*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Pack_Int8_Axis0_CpuAcc_Test")
379*89c4ff92SAndroid Build Coastguard Worker {
380*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
381*89c4ff92SAndroid Build Coastguard Worker PackFp32Axis0Test<int8_t>(tflite::TensorType_INT8, backends);
382*89c4ff92SAndroid Build Coastguard Worker }
383*89c4ff92SAndroid Build Coastguard Worker
384*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Pack_Int8_Inputs3_CpuAcc_Test")
385*89c4ff92SAndroid Build Coastguard Worker {
386*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
387*89c4ff92SAndroid Build Coastguard Worker PackFp32Inputs3Test<int8_t>(tflite::TensorType_INT8, backends);
388*89c4ff92SAndroid Build Coastguard Worker }
389*89c4ff92SAndroid Build Coastguard Worker
390*89c4ff92SAndroid Build Coastguard Worker }
391*89c4ff92SAndroid Build Coastguard Worker
392*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("Pack_GpuAccTests")
393*89c4ff92SAndroid Build Coastguard Worker {
394*89c4ff92SAndroid Build Coastguard Worker
395*89c4ff92SAndroid Build Coastguard Worker // Fp32
396*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Pack_Fp32_Axis0_GpuAcc_Test")
397*89c4ff92SAndroid Build Coastguard Worker {
398*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
399*89c4ff92SAndroid Build Coastguard Worker PackFp32Axis0Test<float>(tflite::TensorType_FLOAT32, backends);
400*89c4ff92SAndroid Build Coastguard Worker }
401*89c4ff92SAndroid Build Coastguard Worker
402*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Pack_Fp32_Axis1_GpuAcc_Test")
403*89c4ff92SAndroid Build Coastguard Worker {
404*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
405*89c4ff92SAndroid Build Coastguard Worker PackFp32Axis1Test<float>(tflite::TensorType_FLOAT32, backends);
406*89c4ff92SAndroid Build Coastguard Worker }
407*89c4ff92SAndroid Build Coastguard Worker
408*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Pack_Fp32_Axis2_GpuAcc_Test")
409*89c4ff92SAndroid Build Coastguard Worker {
410*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
411*89c4ff92SAndroid Build Coastguard Worker PackFp32Axis2Test<float>(tflite::TensorType_FLOAT32, backends);
412*89c4ff92SAndroid Build Coastguard Worker }
413*89c4ff92SAndroid Build Coastguard Worker
414*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Pack_Fp32_Axis3_GpuAcc_Test")
415*89c4ff92SAndroid Build Coastguard Worker {
416*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
417*89c4ff92SAndroid Build Coastguard Worker PackFp32Axis3Test<float>(tflite::TensorType_FLOAT32, backends);
418*89c4ff92SAndroid Build Coastguard Worker }
419*89c4ff92SAndroid Build Coastguard Worker
420*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Pack_Fp32_Inputs3_GpuAcc_Test")
421*89c4ff92SAndroid Build Coastguard Worker {
422*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
423*89c4ff92SAndroid Build Coastguard Worker PackFp32Inputs3Test<float>(tflite::TensorType_FLOAT32, backends);
424*89c4ff92SAndroid Build Coastguard Worker }
425*89c4ff92SAndroid Build Coastguard Worker
426*89c4ff92SAndroid Build Coastguard Worker // Uint8
427*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Pack_Uint8_Axis0_GpuAcc_Test")
428*89c4ff92SAndroid Build Coastguard Worker {
429*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
430*89c4ff92SAndroid Build Coastguard Worker PackFp32Axis0Test<uint8_t>(tflite::TensorType_UINT8, backends);
431*89c4ff92SAndroid Build Coastguard Worker }
432*89c4ff92SAndroid Build Coastguard Worker
433*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Pack_Uint8_Inputs3_GpuAcc_Test")
434*89c4ff92SAndroid Build Coastguard Worker {
435*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
436*89c4ff92SAndroid Build Coastguard Worker PackFp32Inputs3Test<uint8_t>(tflite::TensorType_UINT8, backends);
437*89c4ff92SAndroid Build Coastguard Worker }
438*89c4ff92SAndroid Build Coastguard Worker
439*89c4ff92SAndroid Build Coastguard Worker // Int8
440*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Pack_Int8_Axis0_GpuAcc_Test")
441*89c4ff92SAndroid Build Coastguard Worker {
442*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
443*89c4ff92SAndroid Build Coastguard Worker PackFp32Axis0Test<int8_t>(tflite::TensorType_INT8, backends);
444*89c4ff92SAndroid Build Coastguard Worker }
445*89c4ff92SAndroid Build Coastguard Worker
446*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Pack_Int8_Inputs3_GpuAcc_Test")
447*89c4ff92SAndroid Build Coastguard Worker {
448*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
449*89c4ff92SAndroid Build Coastguard Worker PackFp32Inputs3Test<int8_t>(tflite::TensorType_INT8, backends);
450*89c4ff92SAndroid Build Coastguard Worker }
451*89c4ff92SAndroid Build Coastguard Worker
452*89c4ff92SAndroid Build Coastguard Worker }
453*89c4ff92SAndroid Build Coastguard Worker
454*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("Pack_CpuRefTests")
455*89c4ff92SAndroid Build Coastguard Worker {
456*89c4ff92SAndroid Build Coastguard Worker
457*89c4ff92SAndroid Build Coastguard Worker // Fp32
458*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Pack_Fp32_Axis0_CpuRef_Test")
459*89c4ff92SAndroid Build Coastguard Worker {
460*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
461*89c4ff92SAndroid Build Coastguard Worker PackFp32Axis0Test<float>(tflite::TensorType_FLOAT32, backends);
462*89c4ff92SAndroid Build Coastguard Worker }
463*89c4ff92SAndroid Build Coastguard Worker
464*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Pack_Fp32_Axis1_CpuRef_Test")
465*89c4ff92SAndroid Build Coastguard Worker {
466*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
467*89c4ff92SAndroid Build Coastguard Worker PackFp32Axis1Test<float>(tflite::TensorType_FLOAT32, backends);
468*89c4ff92SAndroid Build Coastguard Worker }
469*89c4ff92SAndroid Build Coastguard Worker
470*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Pack_Fp32_Axis2_CpuRef_Test")
471*89c4ff92SAndroid Build Coastguard Worker {
472*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
473*89c4ff92SAndroid Build Coastguard Worker PackFp32Axis2Test<float>(tflite::TensorType_FLOAT32, backends);
474*89c4ff92SAndroid Build Coastguard Worker }
475*89c4ff92SAndroid Build Coastguard Worker
476*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Pack_Fp32_Axis3_CpuRef_Test")
477*89c4ff92SAndroid Build Coastguard Worker {
478*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
479*89c4ff92SAndroid Build Coastguard Worker PackFp32Axis3Test<float>(tflite::TensorType_FLOAT32, backends);
480*89c4ff92SAndroid Build Coastguard Worker }
481*89c4ff92SAndroid Build Coastguard Worker
482*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Pack_Fp32_Inputs3_CpuRef_Test")
483*89c4ff92SAndroid Build Coastguard Worker {
484*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
485*89c4ff92SAndroid Build Coastguard Worker PackFp32Inputs3Test<float>(tflite::TensorType_FLOAT32, backends);
486*89c4ff92SAndroid Build Coastguard Worker }
487*89c4ff92SAndroid Build Coastguard Worker
488*89c4ff92SAndroid Build Coastguard Worker // Uint8
489*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Pack_Uint8_Axis0_CpuRef_Test")
490*89c4ff92SAndroid Build Coastguard Worker {
491*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
492*89c4ff92SAndroid Build Coastguard Worker PackFp32Axis0Test<uint8_t>(tflite::TensorType_UINT8, backends);
493*89c4ff92SAndroid Build Coastguard Worker }
494*89c4ff92SAndroid Build Coastguard Worker
495*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Pack_Uint8_Inputs3_CpuRef_Test")
496*89c4ff92SAndroid Build Coastguard Worker {
497*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
498*89c4ff92SAndroid Build Coastguard Worker PackFp32Inputs3Test<uint8_t>(tflite::TensorType_UINT8, backends);
499*89c4ff92SAndroid Build Coastguard Worker }
500*89c4ff92SAndroid Build Coastguard Worker
501*89c4ff92SAndroid Build Coastguard Worker // Int8
502*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Pack_Int8_Axis0_CpuRef_Test")
503*89c4ff92SAndroid Build Coastguard Worker {
504*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
505*89c4ff92SAndroid Build Coastguard Worker PackFp32Axis0Test<int8_t>(tflite::TensorType_INT8, backends);
506*89c4ff92SAndroid Build Coastguard Worker }
507*89c4ff92SAndroid Build Coastguard Worker
508*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Pack_Int8_Inputs3_CpuRef_Test")
509*89c4ff92SAndroid Build Coastguard Worker {
510*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
511*89c4ff92SAndroid Build Coastguard Worker PackFp32Inputs3Test<int8_t>(tflite::TensorType_INT8, backends);
512*89c4ff92SAndroid Build Coastguard Worker }
513*89c4ff92SAndroid Build Coastguard Worker
514*89c4ff92SAndroid Build Coastguard Worker }
515*89c4ff92SAndroid Build Coastguard Worker
516*89c4ff92SAndroid Build Coastguard Worker } // namespace armnnDelegate