1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2022-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 "Pooling3dTestHelper.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 <tensorflow/lite/interpreter.h>
12*89c4ff92SAndroid Build Coastguard Worker #include <tensorflow/lite/kernels/register.h>
13*89c4ff92SAndroid Build Coastguard Worker #include <tensorflow/lite/model.h>
14*89c4ff92SAndroid Build Coastguard Worker #include <schema_generated.h>
15*89c4ff92SAndroid Build Coastguard Worker #include <tensorflow/lite/version.h>
16*89c4ff92SAndroid Build Coastguard Worker
17*89c4ff92SAndroid Build Coastguard Worker #include <doctest/doctest.h>
18*89c4ff92SAndroid Build Coastguard Worker
19*89c4ff92SAndroid Build Coastguard Worker namespace armnnDelegate
20*89c4ff92SAndroid Build Coastguard Worker {
21*89c4ff92SAndroid Build Coastguard Worker
22*89c4ff92SAndroid Build Coastguard Worker // Pool3D custom op was only added in tflite r2.6.
23*89c4ff92SAndroid Build Coastguard Worker #if defined(ARMNN_POST_TFLITE_2_5)
24*89c4ff92SAndroid Build Coastguard Worker
MaxPool3dFP32PaddingValidTest(std::vector<armnn::BackendId> & backends)25*89c4ff92SAndroid Build Coastguard Worker void MaxPool3dFP32PaddingValidTest(std::vector<armnn::BackendId>& backends)
26*89c4ff92SAndroid Build Coastguard Worker {
27*89c4ff92SAndroid Build Coastguard Worker // Set input and expected output data
28*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape = { 1, 2, 3, 4, 1 };
29*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> outputShape = { 1, 1, 2, 3, 1 };
30*89c4ff92SAndroid Build Coastguard Worker
31*89c4ff92SAndroid Build Coastguard Worker std::vector<float> inputValues = { 1, 2, 3, 4, 5, 6,
32*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3, 4, 5, 6,
33*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3, 4, 5, 6,
34*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3, 4, 5, 6 };
35*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues = { 6, 6, 4 };
36*89c4ff92SAndroid Build Coastguard Worker
37*89c4ff92SAndroid Build Coastguard Worker // poolType string required to create the correct pooling operator
38*89c4ff92SAndroid Build Coastguard Worker // Padding type required to create the padding in custom options
39*89c4ff92SAndroid Build Coastguard Worker std::string poolType = "kMax";
40*89c4ff92SAndroid Build Coastguard Worker TfLitePadding padding = kTfLitePaddingValid;
41*89c4ff92SAndroid Build Coastguard Worker
42*89c4ff92SAndroid Build Coastguard Worker Pooling3dTest<float>(poolType,
43*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
44*89c4ff92SAndroid Build Coastguard Worker backends,
45*89c4ff92SAndroid Build Coastguard Worker inputShape,
46*89c4ff92SAndroid Build Coastguard Worker outputShape,
47*89c4ff92SAndroid Build Coastguard Worker inputValues,
48*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues,
49*89c4ff92SAndroid Build Coastguard Worker padding,
50*89c4ff92SAndroid Build Coastguard Worker 1,
51*89c4ff92SAndroid Build Coastguard Worker 1,
52*89c4ff92SAndroid Build Coastguard Worker 1,
53*89c4ff92SAndroid Build Coastguard Worker 2,
54*89c4ff92SAndroid Build Coastguard Worker 2,
55*89c4ff92SAndroid Build Coastguard Worker 2);
56*89c4ff92SAndroid Build Coastguard Worker }
57*89c4ff92SAndroid Build Coastguard Worker
MaxPool3dFP32PaddingSameTest(std::vector<armnn::BackendId> & backends)58*89c4ff92SAndroid Build Coastguard Worker void MaxPool3dFP32PaddingSameTest(std::vector<armnn::BackendId>& backends)
59*89c4ff92SAndroid Build Coastguard Worker {
60*89c4ff92SAndroid Build Coastguard Worker // Set input data and expected output data
61*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape = { 1, 2, 3, 4, 1 };
62*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> outputShape = { 1, 2, 3, 4, 1 };
63*89c4ff92SAndroid Build Coastguard Worker
64*89c4ff92SAndroid Build Coastguard Worker std::vector<float> inputValues = { 1, 2, 3, 4, 5, 6,
65*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3, 4, 5, 6,
66*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3, 4, 5, 6,
67*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3, 4, 5, 6 };
68*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues = { 6, 6, 4, 4, 6, 6, 6, 6, 4, 5, 6, 6, 6, 6, 4, 4 };
69*89c4ff92SAndroid Build Coastguard Worker
70*89c4ff92SAndroid Build Coastguard Worker // poolType string required to create the correct pooling operator
71*89c4ff92SAndroid Build Coastguard Worker // Padding type required to create the padding in custom options
72*89c4ff92SAndroid Build Coastguard Worker std::string poolType = "kMax";
73*89c4ff92SAndroid Build Coastguard Worker TfLitePadding padding = kTfLitePaddingSame;
74*89c4ff92SAndroid Build Coastguard Worker
75*89c4ff92SAndroid Build Coastguard Worker Pooling3dTest<float>(poolType,
76*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
77*89c4ff92SAndroid Build Coastguard Worker backends,
78*89c4ff92SAndroid Build Coastguard Worker inputShape,
79*89c4ff92SAndroid Build Coastguard Worker outputShape,
80*89c4ff92SAndroid Build Coastguard Worker inputValues,
81*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues,
82*89c4ff92SAndroid Build Coastguard Worker padding,
83*89c4ff92SAndroid Build Coastguard Worker 1,
84*89c4ff92SAndroid Build Coastguard Worker 1,
85*89c4ff92SAndroid Build Coastguard Worker 1,
86*89c4ff92SAndroid Build Coastguard Worker 2,
87*89c4ff92SAndroid Build Coastguard Worker 2,
88*89c4ff92SAndroid Build Coastguard Worker 2);
89*89c4ff92SAndroid Build Coastguard Worker }
90*89c4ff92SAndroid Build Coastguard Worker
MaxPool3dFP32H1Test(std::vector<armnn::BackendId> & backends)91*89c4ff92SAndroid Build Coastguard Worker void MaxPool3dFP32H1Test(std::vector<armnn::BackendId>& backends)
92*89c4ff92SAndroid Build Coastguard Worker {
93*89c4ff92SAndroid Build Coastguard Worker // Set input data and expected output data
94*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape = { 1, 2, 3, 4, 1 };
95*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> outputShape = { 1, 1, 3, 3, 1 };
96*89c4ff92SAndroid Build Coastguard Worker
97*89c4ff92SAndroid Build Coastguard Worker std::vector<float> inputValues = { 1, 2, 3, 4, 5, 6,
98*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3, 4, 5, 6,
99*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3, 4, 5, 6,
100*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3, 4, 5, 6 };
101*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues = { 2, 3 };
102*89c4ff92SAndroid Build Coastguard Worker
103*89c4ff92SAndroid Build Coastguard Worker // poolType string required to create the correct pooling operator
104*89c4ff92SAndroid Build Coastguard Worker // Padding type required to create the padding in custom options
105*89c4ff92SAndroid Build Coastguard Worker std::string poolType = "kMax";
106*89c4ff92SAndroid Build Coastguard Worker TfLitePadding padding = kTfLitePaddingValid;
107*89c4ff92SAndroid Build Coastguard Worker
108*89c4ff92SAndroid Build Coastguard Worker Pooling3dTest<float>(poolType,
109*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
110*89c4ff92SAndroid Build Coastguard Worker backends,
111*89c4ff92SAndroid Build Coastguard Worker inputShape,
112*89c4ff92SAndroid Build Coastguard Worker outputShape,
113*89c4ff92SAndroid Build Coastguard Worker inputValues,
114*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues,
115*89c4ff92SAndroid Build Coastguard Worker padding,
116*89c4ff92SAndroid Build Coastguard Worker 1,
117*89c4ff92SAndroid Build Coastguard Worker 1,
118*89c4ff92SAndroid Build Coastguard Worker 1,
119*89c4ff92SAndroid Build Coastguard Worker 2,
120*89c4ff92SAndroid Build Coastguard Worker 1,
121*89c4ff92SAndroid Build Coastguard Worker 2);
122*89c4ff92SAndroid Build Coastguard Worker }
123*89c4ff92SAndroid Build Coastguard Worker
MaxPool3dFP32Test(std::vector<armnn::BackendId> & backends)124*89c4ff92SAndroid Build Coastguard Worker void MaxPool3dFP32Test(std::vector<armnn::BackendId>& backends)
125*89c4ff92SAndroid Build Coastguard Worker {
126*89c4ff92SAndroid Build Coastguard Worker // Set input data and expected output data
127*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape = { 1, 2, 3, 4, 1 };
128*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> outputShape = { 1, 2, 3, 4, 1 };
129*89c4ff92SAndroid Build Coastguard Worker
130*89c4ff92SAndroid Build Coastguard Worker std::vector<float> inputValues = { 1, 2, 3, 4, 5, 6,
131*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3, 4, 5, 6,
132*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3, 4, 5, 6,
133*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3, 4, 5, 6 };
134*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues = { 6, 6 };
135*89c4ff92SAndroid Build Coastguard Worker
136*89c4ff92SAndroid Build Coastguard Worker // poolType string required to create the correct pooling operator
137*89c4ff92SAndroid Build Coastguard Worker // Padding type required to create the padding in custom options
138*89c4ff92SAndroid Build Coastguard Worker std::string poolType = "kMax";
139*89c4ff92SAndroid Build Coastguard Worker TfLitePadding padding = kTfLitePaddingUnknown;
140*89c4ff92SAndroid Build Coastguard Worker
141*89c4ff92SAndroid Build Coastguard Worker Pooling3dTest<float>(poolType,
142*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
143*89c4ff92SAndroid Build Coastguard Worker backends,
144*89c4ff92SAndroid Build Coastguard Worker inputShape,
145*89c4ff92SAndroid Build Coastguard Worker outputShape,
146*89c4ff92SAndroid Build Coastguard Worker inputValues,
147*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues,
148*89c4ff92SAndroid Build Coastguard Worker padding,
149*89c4ff92SAndroid Build Coastguard Worker 1,
150*89c4ff92SAndroid Build Coastguard Worker 1,
151*89c4ff92SAndroid Build Coastguard Worker 1,
152*89c4ff92SAndroid Build Coastguard Worker 2,
153*89c4ff92SAndroid Build Coastguard Worker 2,
154*89c4ff92SAndroid Build Coastguard Worker 2);
155*89c4ff92SAndroid Build Coastguard Worker }
156*89c4ff92SAndroid Build Coastguard Worker
AveragePool3dFP32PaddingValidTest(std::vector<armnn::BackendId> & backends)157*89c4ff92SAndroid Build Coastguard Worker void AveragePool3dFP32PaddingValidTest(std::vector<armnn::BackendId>& backends)
158*89c4ff92SAndroid Build Coastguard Worker {
159*89c4ff92SAndroid Build Coastguard Worker // Set input data and expected output data.
160*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape = { 1, 2, 3, 4, 1 };
161*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> outputShape = { 1, 1, 2, 3, 1 };
162*89c4ff92SAndroid Build Coastguard Worker
163*89c4ff92SAndroid Build Coastguard Worker std::vector<float> inputValues = { 1, 2, 3, 4, 5, 6,
164*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3, 4, 5, 6,
165*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3, 4, 5, 6,
166*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3, 4, 5, 6 };
167*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues = { 3.5, 3, 2.5 };
168*89c4ff92SAndroid Build Coastguard Worker
169*89c4ff92SAndroid Build Coastguard Worker // poolType string required to create the correct pooling operator
170*89c4ff92SAndroid Build Coastguard Worker // Padding type required to create the padding in custom options
171*89c4ff92SAndroid Build Coastguard Worker std::string poolType = "kAverage";
172*89c4ff92SAndroid Build Coastguard Worker TfLitePadding padding = kTfLitePaddingValid;
173*89c4ff92SAndroid Build Coastguard Worker
174*89c4ff92SAndroid Build Coastguard Worker Pooling3dTest<float>(poolType,
175*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
176*89c4ff92SAndroid Build Coastguard Worker backends,
177*89c4ff92SAndroid Build Coastguard Worker inputShape,
178*89c4ff92SAndroid Build Coastguard Worker outputShape,
179*89c4ff92SAndroid Build Coastguard Worker inputValues,
180*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues,
181*89c4ff92SAndroid Build Coastguard Worker padding,
182*89c4ff92SAndroid Build Coastguard Worker 1,
183*89c4ff92SAndroid Build Coastguard Worker 1,
184*89c4ff92SAndroid Build Coastguard Worker 1,
185*89c4ff92SAndroid Build Coastguard Worker 2,
186*89c4ff92SAndroid Build Coastguard Worker 2,
187*89c4ff92SAndroid Build Coastguard Worker 2);
188*89c4ff92SAndroid Build Coastguard Worker }
189*89c4ff92SAndroid Build Coastguard Worker
AveragePool3dFP32PaddingSameTest(std::vector<armnn::BackendId> & backends)190*89c4ff92SAndroid Build Coastguard Worker void AveragePool3dFP32PaddingSameTest(std::vector<armnn::BackendId>& backends)
191*89c4ff92SAndroid Build Coastguard Worker {
192*89c4ff92SAndroid Build Coastguard Worker // Set input data and expected output data
193*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape = { 4, 2, 3, 1, 1 };
194*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> outputShape = { 4, 2, 3, 1, 1 };
195*89c4ff92SAndroid Build Coastguard Worker
196*89c4ff92SAndroid Build Coastguard Worker std::vector<float> inputValues = { 1, 2, 3, 4, 5, 6,
197*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3, 4, 5, 6,
198*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3, 4, 5, 6,
199*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3, 4, 5, 6 };
200*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues = { 3, 4, 4.5, 4.5, 5.5, 6, 3, 4, 4.5, 4.5, 5.5, 6, 3, 4, 4.5, 4.5 };
201*89c4ff92SAndroid Build Coastguard Worker
202*89c4ff92SAndroid Build Coastguard Worker // poolType string required to create the correct pooling operator
203*89c4ff92SAndroid Build Coastguard Worker // Padding type required to create the padding in custom options
204*89c4ff92SAndroid Build Coastguard Worker std::string poolType = "kAverage";
205*89c4ff92SAndroid Build Coastguard Worker TfLitePadding padding = kTfLitePaddingSame;
206*89c4ff92SAndroid Build Coastguard Worker
207*89c4ff92SAndroid Build Coastguard Worker Pooling3dTest<float>(poolType,
208*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
209*89c4ff92SAndroid Build Coastguard Worker backends,
210*89c4ff92SAndroid Build Coastguard Worker inputShape,
211*89c4ff92SAndroid Build Coastguard Worker outputShape,
212*89c4ff92SAndroid Build Coastguard Worker inputValues,
213*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues,
214*89c4ff92SAndroid Build Coastguard Worker padding,
215*89c4ff92SAndroid Build Coastguard Worker 1,
216*89c4ff92SAndroid Build Coastguard Worker 1,
217*89c4ff92SAndroid Build Coastguard Worker 1,
218*89c4ff92SAndroid Build Coastguard Worker 2,
219*89c4ff92SAndroid Build Coastguard Worker 2,
220*89c4ff92SAndroid Build Coastguard Worker 2);
221*89c4ff92SAndroid Build Coastguard Worker }
222*89c4ff92SAndroid Build Coastguard Worker
AveragePool3dFP32H1Test(std::vector<armnn::BackendId> & backends)223*89c4ff92SAndroid Build Coastguard Worker void AveragePool3dFP32H1Test(std::vector<armnn::BackendId>& backends)
224*89c4ff92SAndroid Build Coastguard Worker {
225*89c4ff92SAndroid Build Coastguard Worker // Set input data and expected output data
226*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape = { 1, 2, 3, 4, 1 };
227*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> outputShape = { 1, 1, 2, 2, 1 };
228*89c4ff92SAndroid Build Coastguard Worker
229*89c4ff92SAndroid Build Coastguard Worker std::vector<float> inputValues = { 1, 2, 3, 4, 5, 6,
230*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3, 4, 5, 6,
231*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3, 4, 5, 6,
232*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3, 4, 5, 6 };
233*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues = { 1.5, 3.5 };
234*89c4ff92SAndroid Build Coastguard Worker
235*89c4ff92SAndroid Build Coastguard Worker // poolType string required to create the correct pooling operator
236*89c4ff92SAndroid Build Coastguard Worker // Padding type required to create the padding in custom options
237*89c4ff92SAndroid Build Coastguard Worker std::string poolType = "kAverage";
238*89c4ff92SAndroid Build Coastguard Worker TfLitePadding padding = kTfLitePaddingUnknown;
239*89c4ff92SAndroid Build Coastguard Worker
240*89c4ff92SAndroid Build Coastguard Worker Pooling3dTest<float>(poolType,
241*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
242*89c4ff92SAndroid Build Coastguard Worker backends,
243*89c4ff92SAndroid Build Coastguard Worker inputShape,
244*89c4ff92SAndroid Build Coastguard Worker outputShape,
245*89c4ff92SAndroid Build Coastguard Worker inputValues,
246*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues,
247*89c4ff92SAndroid Build Coastguard Worker padding,
248*89c4ff92SAndroid Build Coastguard Worker 2,
249*89c4ff92SAndroid Build Coastguard Worker 2,
250*89c4ff92SAndroid Build Coastguard Worker 2,
251*89c4ff92SAndroid Build Coastguard Worker 2,
252*89c4ff92SAndroid Build Coastguard Worker 1,
253*89c4ff92SAndroid Build Coastguard Worker 2);
254*89c4ff92SAndroid Build Coastguard Worker }
255*89c4ff92SAndroid Build Coastguard Worker
AveragePool3dFP32Test(std::vector<armnn::BackendId> & backends)256*89c4ff92SAndroid Build Coastguard Worker void AveragePool3dFP32Test(std::vector<armnn::BackendId>& backends)
257*89c4ff92SAndroid Build Coastguard Worker {
258*89c4ff92SAndroid Build Coastguard Worker // Set input data and expected output data
259*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape = { 4, 3, 2, 1, 1 };
260*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> outputShape = { 1, 2, 2, 4, 1 };
261*89c4ff92SAndroid Build Coastguard Worker
262*89c4ff92SAndroid Build Coastguard Worker std::vector<float> inputValues = { 1, 2, 3, 4, 5, 6,
263*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3, 4, 5, 6,
264*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3, 4, 5, 6,
265*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3, 4, 5, 6 };
266*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues = { 3.125, 4.25 };
267*89c4ff92SAndroid Build Coastguard Worker
268*89c4ff92SAndroid Build Coastguard Worker // poolType string required to create the correct pooling operator
269*89c4ff92SAndroid Build Coastguard Worker // Padding type required to create the padding in custom options
270*89c4ff92SAndroid Build Coastguard Worker std::string poolType = "kMax";
271*89c4ff92SAndroid Build Coastguard Worker TfLitePadding padding = kTfLitePaddingUnknown;
272*89c4ff92SAndroid Build Coastguard Worker
273*89c4ff92SAndroid Build Coastguard Worker Pooling3dTest<float>(poolType,
274*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
275*89c4ff92SAndroid Build Coastguard Worker backends,
276*89c4ff92SAndroid Build Coastguard Worker inputShape,
277*89c4ff92SAndroid Build Coastguard Worker outputShape,
278*89c4ff92SAndroid Build Coastguard Worker inputValues,
279*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues,
280*89c4ff92SAndroid Build Coastguard Worker padding,
281*89c4ff92SAndroid Build Coastguard Worker 2,
282*89c4ff92SAndroid Build Coastguard Worker 2,
283*89c4ff92SAndroid Build Coastguard Worker 2,
284*89c4ff92SAndroid Build Coastguard Worker 2,
285*89c4ff92SAndroid Build Coastguard Worker 2,
286*89c4ff92SAndroid Build Coastguard Worker 2);
287*89c4ff92SAndroid Build Coastguard Worker }
288*89c4ff92SAndroid Build Coastguard Worker
289*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("Pooling3d_GpuAccTests")
290*89c4ff92SAndroid Build Coastguard Worker {
291*89c4ff92SAndroid Build Coastguard Worker
292*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling3d_FP32_GpuAcc_Test")
293*89c4ff92SAndroid Build Coastguard Worker {
294*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
295*89c4ff92SAndroid Build Coastguard Worker MaxPool3dFP32Test(backends);
296*89c4ff92SAndroid Build Coastguard Worker }
297*89c4ff92SAndroid Build Coastguard Worker
298*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling3d_FP32_PaddingValid_GpuAcc_Test")
299*89c4ff92SAndroid Build Coastguard Worker {
300*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
301*89c4ff92SAndroid Build Coastguard Worker MaxPool3dFP32PaddingValidTest(backends);
302*89c4ff92SAndroid Build Coastguard Worker }
303*89c4ff92SAndroid Build Coastguard Worker
304*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling3d_FP32_PaddingSame_GpuAcc_Test")
305*89c4ff92SAndroid Build Coastguard Worker {
306*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
307*89c4ff92SAndroid Build Coastguard Worker MaxPool3dFP32PaddingSameTest(backends);
308*89c4ff92SAndroid Build Coastguard Worker }
309*89c4ff92SAndroid Build Coastguard Worker
310*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling3d_FP32_H1_GpuAcc_Test")
311*89c4ff92SAndroid Build Coastguard Worker {
312*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
313*89c4ff92SAndroid Build Coastguard Worker MaxPool3dFP32H1Test(backends);
314*89c4ff92SAndroid Build Coastguard Worker }
315*89c4ff92SAndroid Build Coastguard Worker
316*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling3d_FP32_PaddingValid_GpuAcc_Test")
317*89c4ff92SAndroid Build Coastguard Worker {
318*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
319*89c4ff92SAndroid Build Coastguard Worker AveragePool3dFP32PaddingValidTest(backends);
320*89c4ff92SAndroid Build Coastguard Worker }
321*89c4ff92SAndroid Build Coastguard Worker
322*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling3d_FP32_PaddingSame_GpuAcc_Test")
323*89c4ff92SAndroid Build Coastguard Worker {
324*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
325*89c4ff92SAndroid Build Coastguard Worker AveragePool3dFP32PaddingSameTest(backends);
326*89c4ff92SAndroid Build Coastguard Worker }
327*89c4ff92SAndroid Build Coastguard Worker
328*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling3d_FP32_H1_GpuAcc_Test")
329*89c4ff92SAndroid Build Coastguard Worker {
330*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
331*89c4ff92SAndroid Build Coastguard Worker AveragePool3dFP32H1Test(backends);
332*89c4ff92SAndroid Build Coastguard Worker }
333*89c4ff92SAndroid Build Coastguard Worker
334*89c4ff92SAndroid Build Coastguard Worker } // TEST_SUITE("Pooling3d_GpuAccTests")
335*89c4ff92SAndroid Build Coastguard Worker
336*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("Pooling3d_CpuAccTests")
337*89c4ff92SAndroid Build Coastguard Worker {
338*89c4ff92SAndroid Build Coastguard Worker
339*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling3d_FP32_PaddingValid_CpuAcc_Test")
340*89c4ff92SAndroid Build Coastguard Worker {
341*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
342*89c4ff92SAndroid Build Coastguard Worker MaxPool3dFP32PaddingValidTest(backends);
343*89c4ff92SAndroid Build Coastguard Worker }
344*89c4ff92SAndroid Build Coastguard Worker
345*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling3d_FP32_PaddingSame_CpuAcc_Test")
346*89c4ff92SAndroid Build Coastguard Worker {
347*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
348*89c4ff92SAndroid Build Coastguard Worker MaxPool3dFP32PaddingSameTest(backends);
349*89c4ff92SAndroid Build Coastguard Worker }
350*89c4ff92SAndroid Build Coastguard Worker
351*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling3d_FP32_CpuAcc_Test")
352*89c4ff92SAndroid Build Coastguard Worker {
353*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
354*89c4ff92SAndroid Build Coastguard Worker MaxPool3dFP32Test(backends);
355*89c4ff92SAndroid Build Coastguard Worker }
356*89c4ff92SAndroid Build Coastguard Worker
357*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling3d_FP32_H1_CpuAcc_Test")
358*89c4ff92SAndroid Build Coastguard Worker {
359*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
360*89c4ff92SAndroid Build Coastguard Worker MaxPool3dFP32H1Test(backends);
361*89c4ff92SAndroid Build Coastguard Worker }
362*89c4ff92SAndroid Build Coastguard Worker
363*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling3d_FP32_PaddingValid_CpuAcc_Test")
364*89c4ff92SAndroid Build Coastguard Worker {
365*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
366*89c4ff92SAndroid Build Coastguard Worker AveragePool3dFP32PaddingValidTest(backends);
367*89c4ff92SAndroid Build Coastguard Worker }
368*89c4ff92SAndroid Build Coastguard Worker
369*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling3d_FP32_PaddingSame_CpuAcc_Test")
370*89c4ff92SAndroid Build Coastguard Worker {
371*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
372*89c4ff92SAndroid Build Coastguard Worker AveragePool3dFP32PaddingSameTest(backends);
373*89c4ff92SAndroid Build Coastguard Worker }
374*89c4ff92SAndroid Build Coastguard Worker
375*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling3d_FP32_H1_CpuAcc_Test")
376*89c4ff92SAndroid Build Coastguard Worker {
377*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
378*89c4ff92SAndroid Build Coastguard Worker AveragePool3dFP32H1Test(backends);
379*89c4ff92SAndroid Build Coastguard Worker }
380*89c4ff92SAndroid Build Coastguard Worker
381*89c4ff92SAndroid Build Coastguard Worker } // TEST_SUITE("Pooling3d_CpuAccTests")
382*89c4ff92SAndroid Build Coastguard Worker
383*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("Pooling3d_CpuRefTests")
384*89c4ff92SAndroid Build Coastguard Worker {
385*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling3d_FP32_CpuRef_Test")
386*89c4ff92SAndroid Build Coastguard Worker {
387*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
388*89c4ff92SAndroid Build Coastguard Worker MaxPool3dFP32Test(backends);
389*89c4ff92SAndroid Build Coastguard Worker }
390*89c4ff92SAndroid Build Coastguard Worker
391*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling3d_FP32_PaddingValid_CpuRef_Test")
392*89c4ff92SAndroid Build Coastguard Worker {
393*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
394*89c4ff92SAndroid Build Coastguard Worker MaxPool3dFP32PaddingValidTest(backends);
395*89c4ff92SAndroid Build Coastguard Worker }
396*89c4ff92SAndroid Build Coastguard Worker
397*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling3d_FP32_PaddingSame_CpuRef_Test")
398*89c4ff92SAndroid Build Coastguard Worker {
399*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
400*89c4ff92SAndroid Build Coastguard Worker MaxPool3dFP32PaddingSameTest(backends);
401*89c4ff92SAndroid Build Coastguard Worker }
402*89c4ff92SAndroid Build Coastguard Worker
403*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling3d_FP32_H1_CpuRef_Test")
404*89c4ff92SAndroid Build Coastguard Worker {
405*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
406*89c4ff92SAndroid Build Coastguard Worker MaxPool3dFP32H1Test(backends);
407*89c4ff92SAndroid Build Coastguard Worker }
408*89c4ff92SAndroid Build Coastguard Worker
409*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling3d_FP32_PaddingValid_CpuRef_Test")
410*89c4ff92SAndroid Build Coastguard Worker {
411*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
412*89c4ff92SAndroid Build Coastguard Worker AveragePool3dFP32PaddingValidTest(backends);
413*89c4ff92SAndroid Build Coastguard Worker }
414*89c4ff92SAndroid Build Coastguard Worker
415*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling3d_FP32_PaddingSame_CpuRef_Test")
416*89c4ff92SAndroid Build Coastguard Worker {
417*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
418*89c4ff92SAndroid Build Coastguard Worker AveragePool3dFP32PaddingSameTest(backends);
419*89c4ff92SAndroid Build Coastguard Worker }
420*89c4ff92SAndroid Build Coastguard Worker
421*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling3d_FP32_H1_CpuRef_Test")
422*89c4ff92SAndroid Build Coastguard Worker {
423*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
424*89c4ff92SAndroid Build Coastguard Worker AveragePool3dFP32H1Test(backends);
425*89c4ff92SAndroid Build Coastguard Worker }
426*89c4ff92SAndroid Build Coastguard Worker
427*89c4ff92SAndroid Build Coastguard Worker } // TEST_SUITE("Pooling3d_CpuRefTests")
428*89c4ff92SAndroid Build Coastguard Worker
429*89c4ff92SAndroid Build Coastguard Worker #endif
430*89c4ff92SAndroid Build Coastguard Worker
431*89c4ff92SAndroid Build Coastguard Worker }