xref: /aosp_15_r20/external/armnn/delegate/test/Pooling2dTest.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2020, 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 "Pooling2dTestHelper.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 
MaxPool2dFP32PaddingValidTest(std::vector<armnn::BackendId> & backends)22*89c4ff92SAndroid Build Coastguard Worker void MaxPool2dFP32PaddingValidTest(std::vector<armnn::BackendId>& backends)
23*89c4ff92SAndroid Build Coastguard Worker {
24*89c4ff92SAndroid Build Coastguard Worker     // Set input data
25*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputShape { 1, 3, 4, 1 };
26*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape { 1, 1, 2, 1 };
27*89c4ff92SAndroid Build Coastguard Worker 
28*89c4ff92SAndroid Build Coastguard Worker     std::vector<float> inputValues = { -5.0f, 8.0f, -10.0f, 7.0f,
29*89c4ff92SAndroid Build Coastguard Worker                                        8.0f, 12.0f, -15.0f, 2.0f,
30*89c4ff92SAndroid Build Coastguard Worker                                        3.0f, -4.0f, -1.0f, -11.0f };
31*89c4ff92SAndroid Build Coastguard Worker 
32*89c4ff92SAndroid Build Coastguard Worker     std::vector<float> expectedOutputValues = { 12.0f, 7.0f };
33*89c4ff92SAndroid Build Coastguard Worker 
34*89c4ff92SAndroid Build Coastguard Worker     Pooling2dTest<float>(tflite::BuiltinOperator_MAX_POOL_2D,
35*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::TensorType_FLOAT32,
36*89c4ff92SAndroid Build Coastguard Worker                          backends,
37*89c4ff92SAndroid Build Coastguard Worker                          inputShape,
38*89c4ff92SAndroid Build Coastguard Worker                          outputShape,
39*89c4ff92SAndroid Build Coastguard Worker                          inputValues,
40*89c4ff92SAndroid Build Coastguard Worker                          expectedOutputValues,
41*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::Padding_VALID,
42*89c4ff92SAndroid Build Coastguard Worker                          2,
43*89c4ff92SAndroid Build Coastguard Worker                          2,
44*89c4ff92SAndroid Build Coastguard Worker                          2,
45*89c4ff92SAndroid Build Coastguard Worker                          2);
46*89c4ff92SAndroid Build Coastguard Worker }
47*89c4ff92SAndroid Build Coastguard Worker 
MaxPool2dInt8PaddingValidTest(std::vector<armnn::BackendId> & backends)48*89c4ff92SAndroid Build Coastguard Worker void MaxPool2dInt8PaddingValidTest(std::vector<armnn::BackendId>& backends)
49*89c4ff92SAndroid Build Coastguard Worker {
50*89c4ff92SAndroid Build Coastguard Worker     // Set input data
51*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputShape { 1, 3, 4, 1 };
52*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape { 1, 1, 2, 1 };
53*89c4ff92SAndroid Build Coastguard Worker 
54*89c4ff92SAndroid Build Coastguard Worker     std::vector<int8_t > inputValues = { -5, 8, -10, 7,
55*89c4ff92SAndroid Build Coastguard Worker                                          8, 12, -15, 2,
56*89c4ff92SAndroid Build Coastguard Worker                                          3, -4, -1, -11 };
57*89c4ff92SAndroid Build Coastguard Worker 
58*89c4ff92SAndroid Build Coastguard Worker     std::vector<int8_t> expectedOutputValues = { 12, 7 };
59*89c4ff92SAndroid Build Coastguard Worker 
60*89c4ff92SAndroid Build Coastguard Worker     Pooling2dTest<int8_t>(tflite::BuiltinOperator_MAX_POOL_2D,
61*89c4ff92SAndroid Build Coastguard Worker                           ::tflite::TensorType_INT8,
62*89c4ff92SAndroid Build Coastguard Worker                           backends,
63*89c4ff92SAndroid Build Coastguard Worker                           inputShape,
64*89c4ff92SAndroid Build Coastguard Worker                           outputShape,
65*89c4ff92SAndroid Build Coastguard Worker                           inputValues,
66*89c4ff92SAndroid Build Coastguard Worker                           expectedOutputValues,
67*89c4ff92SAndroid Build Coastguard Worker                           ::tflite::Padding_VALID,
68*89c4ff92SAndroid Build Coastguard Worker                           2,
69*89c4ff92SAndroid Build Coastguard Worker                           2,
70*89c4ff92SAndroid Build Coastguard Worker                           2,
71*89c4ff92SAndroid Build Coastguard Worker                           2,
72*89c4ff92SAndroid Build Coastguard Worker                           tflite::ActivationFunctionType_NONE,
73*89c4ff92SAndroid Build Coastguard Worker                           2.5f,
74*89c4ff92SAndroid Build Coastguard Worker                           1);
75*89c4ff92SAndroid Build Coastguard Worker }
76*89c4ff92SAndroid Build Coastguard Worker 
MaxPool2dFP32PaddingSameTest(std::vector<armnn::BackendId> & backends)77*89c4ff92SAndroid Build Coastguard Worker void MaxPool2dFP32PaddingSameTest(std::vector<armnn::BackendId>& backends)
78*89c4ff92SAndroid Build Coastguard Worker {
79*89c4ff92SAndroid Build Coastguard Worker     // Set input data
80*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputShape { 1, 3, 4, 1 };
81*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape { 1, 2, 2, 1 };
82*89c4ff92SAndroid Build Coastguard Worker 
83*89c4ff92SAndroid Build Coastguard Worker     std::vector<float> inputValues = { -5.0f, 8.0f, -10.0f, 7.0f,
84*89c4ff92SAndroid Build Coastguard Worker                                        8.0f, 12.0f, -15.0f, 2.0f,
85*89c4ff92SAndroid Build Coastguard Worker                                        3.0f, -4.0f, -1.0f, -11.0f };
86*89c4ff92SAndroid Build Coastguard Worker 
87*89c4ff92SAndroid Build Coastguard Worker     std::vector<float> expectedOutputValues = { 12.0f, 7.0f, 3.0f, -1.0f };
88*89c4ff92SAndroid Build Coastguard Worker 
89*89c4ff92SAndroid Build Coastguard Worker     Pooling2dTest<float>(tflite::BuiltinOperator_MAX_POOL_2D,
90*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::TensorType_FLOAT32,
91*89c4ff92SAndroid Build Coastguard Worker                          backends,
92*89c4ff92SAndroid Build Coastguard Worker                          inputShape,
93*89c4ff92SAndroid Build Coastguard Worker                          outputShape,
94*89c4ff92SAndroid Build Coastguard Worker                          inputValues,
95*89c4ff92SAndroid Build Coastguard Worker                          expectedOutputValues,
96*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::Padding_SAME,
97*89c4ff92SAndroid Build Coastguard Worker                          2,
98*89c4ff92SAndroid Build Coastguard Worker                          2,
99*89c4ff92SAndroid Build Coastguard Worker                          2,
100*89c4ff92SAndroid Build Coastguard Worker                          2);
101*89c4ff92SAndroid Build Coastguard Worker }
102*89c4ff92SAndroid Build Coastguard Worker 
MaxPool2dInt8PaddingSameTest(std::vector<armnn::BackendId> & backends)103*89c4ff92SAndroid Build Coastguard Worker void MaxPool2dInt8PaddingSameTest(std::vector<armnn::BackendId>& backends)
104*89c4ff92SAndroid Build Coastguard Worker {
105*89c4ff92SAndroid Build Coastguard Worker     // Set input data
106*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputShape { 1, 3, 4, 1 };
107*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape { 1, 2, 2, 1 };
108*89c4ff92SAndroid Build Coastguard Worker 
109*89c4ff92SAndroid Build Coastguard Worker     std::vector<int8_t> inputValues = { -5, 8, -10, 7,
110*89c4ff92SAndroid Build Coastguard Worker                                         8, 12, -15, 2,
111*89c4ff92SAndroid Build Coastguard Worker                                         3, -4, -1, -11 };
112*89c4ff92SAndroid Build Coastguard Worker 
113*89c4ff92SAndroid Build Coastguard Worker     std::vector<int8_t> expectedOutputValues = { 12, 7, 3, -1 };
114*89c4ff92SAndroid Build Coastguard Worker 
115*89c4ff92SAndroid Build Coastguard Worker     Pooling2dTest<int8_t>(tflite::BuiltinOperator_MAX_POOL_2D,
116*89c4ff92SAndroid Build Coastguard Worker                           ::tflite::TensorType_INT8,
117*89c4ff92SAndroid Build Coastguard Worker                           backends,
118*89c4ff92SAndroid Build Coastguard Worker                           inputShape,
119*89c4ff92SAndroid Build Coastguard Worker                           outputShape,
120*89c4ff92SAndroid Build Coastguard Worker                           inputValues,
121*89c4ff92SAndroid Build Coastguard Worker                           expectedOutputValues,
122*89c4ff92SAndroid Build Coastguard Worker                           ::tflite::Padding_SAME,
123*89c4ff92SAndroid Build Coastguard Worker                           2,
124*89c4ff92SAndroid Build Coastguard Worker                           2,
125*89c4ff92SAndroid Build Coastguard Worker                           2,
126*89c4ff92SAndroid Build Coastguard Worker                           2,
127*89c4ff92SAndroid Build Coastguard Worker                           tflite::ActivationFunctionType_NONE,
128*89c4ff92SAndroid Build Coastguard Worker                           2.5f,
129*89c4ff92SAndroid Build Coastguard Worker                           1);
130*89c4ff92SAndroid Build Coastguard Worker }
131*89c4ff92SAndroid Build Coastguard Worker 
MaxPool2dFP32ReluTest(std::vector<armnn::BackendId> & backends)132*89c4ff92SAndroid Build Coastguard Worker void MaxPool2dFP32ReluTest(std::vector<armnn::BackendId>& backends)
133*89c4ff92SAndroid Build Coastguard Worker {
134*89c4ff92SAndroid Build Coastguard Worker     // Set input data
135*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputShape { 1, 3, 4, 1 };
136*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape { 1, 2, 3, 1 };
137*89c4ff92SAndroid Build Coastguard Worker 
138*89c4ff92SAndroid Build Coastguard Worker     std::vector<float> inputValues = { -5.0f, -8.0f, -10.0f, 7.0f,
139*89c4ff92SAndroid Build Coastguard Worker                                        -8.0f, -12.0f, -15.0f, 2.0f,
140*89c4ff92SAndroid Build Coastguard Worker                                        3.0f, -4.0f, -1.0f, -11.0f };
141*89c4ff92SAndroid Build Coastguard Worker 
142*89c4ff92SAndroid Build Coastguard Worker     std::vector<float> expectedOutputValues = { 0.0f, 0.0f, 7.0f, 3.0f, 0.0f, 2.0f };
143*89c4ff92SAndroid Build Coastguard Worker 
144*89c4ff92SAndroid Build Coastguard Worker     Pooling2dTest<float>(tflite::BuiltinOperator_MAX_POOL_2D,
145*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::TensorType_FLOAT32,
146*89c4ff92SAndroid Build Coastguard Worker                          backends,
147*89c4ff92SAndroid Build Coastguard Worker                          inputShape,
148*89c4ff92SAndroid Build Coastguard Worker                          outputShape,
149*89c4ff92SAndroid Build Coastguard Worker                          inputValues,
150*89c4ff92SAndroid Build Coastguard Worker                          expectedOutputValues,
151*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::Padding_VALID,
152*89c4ff92SAndroid Build Coastguard Worker                          1,
153*89c4ff92SAndroid Build Coastguard Worker                          1,
154*89c4ff92SAndroid Build Coastguard Worker                          2,
155*89c4ff92SAndroid Build Coastguard Worker                          2,
156*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::ActivationFunctionType_RELU);
157*89c4ff92SAndroid Build Coastguard Worker }
158*89c4ff92SAndroid Build Coastguard Worker 
MaxPool2dInt8ReluTest(std::vector<armnn::BackendId> & backends)159*89c4ff92SAndroid Build Coastguard Worker void MaxPool2dInt8ReluTest(std::vector<armnn::BackendId>& backends)
160*89c4ff92SAndroid Build Coastguard Worker {
161*89c4ff92SAndroid Build Coastguard Worker     // Set input data
162*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputShape { 1, 3, 4, 1 };
163*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape { 1, 2, 3, 1 };
164*89c4ff92SAndroid Build Coastguard Worker 
165*89c4ff92SAndroid Build Coastguard Worker     std::vector<int8_t> inputValues = { -5, -8, -10, 7,
166*89c4ff92SAndroid Build Coastguard Worker                                         -8, -12, -15, 2,
167*89c4ff92SAndroid Build Coastguard Worker                                         3, -4, -1, -11 };
168*89c4ff92SAndroid Build Coastguard Worker 
169*89c4ff92SAndroid Build Coastguard Worker     std::vector<int8_t> expectedOutputValues = { 1, 1, 7, 3, 1, 2 };
170*89c4ff92SAndroid Build Coastguard Worker 
171*89c4ff92SAndroid Build Coastguard Worker     Pooling2dTest<int8_t>(tflite::BuiltinOperator_MAX_POOL_2D,
172*89c4ff92SAndroid Build Coastguard Worker                           ::tflite::TensorType_INT8,
173*89c4ff92SAndroid Build Coastguard Worker                           backends,
174*89c4ff92SAndroid Build Coastguard Worker                           inputShape,
175*89c4ff92SAndroid Build Coastguard Worker                           outputShape,
176*89c4ff92SAndroid Build Coastguard Worker                           inputValues,
177*89c4ff92SAndroid Build Coastguard Worker                           expectedOutputValues,
178*89c4ff92SAndroid Build Coastguard Worker                           ::tflite::Padding_VALID,
179*89c4ff92SAndroid Build Coastguard Worker                           1,
180*89c4ff92SAndroid Build Coastguard Worker                           1,
181*89c4ff92SAndroid Build Coastguard Worker                           2,
182*89c4ff92SAndroid Build Coastguard Worker                           2,
183*89c4ff92SAndroid Build Coastguard Worker                           ::tflite::ActivationFunctionType_RELU,
184*89c4ff92SAndroid Build Coastguard Worker                           2.0f,
185*89c4ff92SAndroid Build Coastguard Worker                           1);
186*89c4ff92SAndroid Build Coastguard Worker }
187*89c4ff92SAndroid Build Coastguard Worker 
MaxPool2dFP32Relu6Test(std::vector<armnn::BackendId> & backends)188*89c4ff92SAndroid Build Coastguard Worker void MaxPool2dFP32Relu6Test(std::vector<armnn::BackendId>& backends)
189*89c4ff92SAndroid Build Coastguard Worker {
190*89c4ff92SAndroid Build Coastguard Worker     // Set input data
191*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputShape { 1, 3, 4, 1 };
192*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape { 1, 2, 2, 1 };
193*89c4ff92SAndroid Build Coastguard Worker 
194*89c4ff92SAndroid Build Coastguard Worker     std::vector<float> inputValues = { -5.0f, -8.0f, -10.0f, 7.0f,
195*89c4ff92SAndroid Build Coastguard Worker                                        -8.0f, -12.0f, -15.0f, 2.0f,
196*89c4ff92SAndroid Build Coastguard Worker                                        3.0f, -4.0f, -1.0f, -11.0f };
197*89c4ff92SAndroid Build Coastguard Worker 
198*89c4ff92SAndroid Build Coastguard Worker     std::vector<float> expectedOutputValues = { 0.0f, 0.0f, 3.0f, 0.0f };
199*89c4ff92SAndroid Build Coastguard Worker 
200*89c4ff92SAndroid Build Coastguard Worker     Pooling2dTest<float>(tflite::BuiltinOperator_MAX_POOL_2D,
201*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::TensorType_FLOAT32,
202*89c4ff92SAndroid Build Coastguard Worker                          backends,
203*89c4ff92SAndroid Build Coastguard Worker                          inputShape,
204*89c4ff92SAndroid Build Coastguard Worker                          outputShape,
205*89c4ff92SAndroid Build Coastguard Worker                          inputValues,
206*89c4ff92SAndroid Build Coastguard Worker                          expectedOutputValues,
207*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::Padding_SAME,
208*89c4ff92SAndroid Build Coastguard Worker                          2,
209*89c4ff92SAndroid Build Coastguard Worker                          2,
210*89c4ff92SAndroid Build Coastguard Worker                          1,
211*89c4ff92SAndroid Build Coastguard Worker                          1,
212*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::ActivationFunctionType_RELU6);
213*89c4ff92SAndroid Build Coastguard Worker }
214*89c4ff92SAndroid Build Coastguard Worker 
MaxPool2dInt8Relu6Test(std::vector<armnn::BackendId> & backends)215*89c4ff92SAndroid Build Coastguard Worker void MaxPool2dInt8Relu6Test(std::vector<armnn::BackendId>& backends)
216*89c4ff92SAndroid Build Coastguard Worker {
217*89c4ff92SAndroid Build Coastguard Worker     // Set input data
218*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputShape { 1, 3, 4, 1 };
219*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape { 1, 2, 2, 1 };
220*89c4ff92SAndroid Build Coastguard Worker 
221*89c4ff92SAndroid Build Coastguard Worker     std::vector<int8_t> inputValues = { -5, -8, -10, 7,
222*89c4ff92SAndroid Build Coastguard Worker                                         -8, -12, -15, 2,
223*89c4ff92SAndroid Build Coastguard Worker                                         3, -4, -1, -11 };
224*89c4ff92SAndroid Build Coastguard Worker 
225*89c4ff92SAndroid Build Coastguard Worker     std::vector<int8_t> expectedOutputValues = { 1, 1, 3, 1 };
226*89c4ff92SAndroid Build Coastguard Worker 
227*89c4ff92SAndroid Build Coastguard Worker     Pooling2dTest<int8_t>(tflite::BuiltinOperator_MAX_POOL_2D,
228*89c4ff92SAndroid Build Coastguard Worker                           ::tflite::TensorType_INT8,
229*89c4ff92SAndroid Build Coastguard Worker                           backends,
230*89c4ff92SAndroid Build Coastguard Worker                           inputShape,
231*89c4ff92SAndroid Build Coastguard Worker                           outputShape,
232*89c4ff92SAndroid Build Coastguard Worker                           inputValues,
233*89c4ff92SAndroid Build Coastguard Worker                           expectedOutputValues,
234*89c4ff92SAndroid Build Coastguard Worker                           ::tflite::Padding_SAME,
235*89c4ff92SAndroid Build Coastguard Worker                           2,
236*89c4ff92SAndroid Build Coastguard Worker                           2,
237*89c4ff92SAndroid Build Coastguard Worker                           1,
238*89c4ff92SAndroid Build Coastguard Worker                           1,
239*89c4ff92SAndroid Build Coastguard Worker                           ::tflite::ActivationFunctionType_RELU6,
240*89c4ff92SAndroid Build Coastguard Worker                           2.0f,
241*89c4ff92SAndroid Build Coastguard Worker                           1);
242*89c4ff92SAndroid Build Coastguard Worker }
243*89c4ff92SAndroid Build Coastguard Worker 
MaxPool2dUint8PaddingSameTest(std::vector<armnn::BackendId> & backends)244*89c4ff92SAndroid Build Coastguard Worker void MaxPool2dUint8PaddingSameTest(std::vector<armnn::BackendId>& backends)
245*89c4ff92SAndroid Build Coastguard Worker {
246*89c4ff92SAndroid Build Coastguard Worker     // Set input data
247*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputShape { 1, 3, 4, 1 };
248*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape { 1, 2, 2, 1 };
249*89c4ff92SAndroid Build Coastguard Worker 
250*89c4ff92SAndroid Build Coastguard Worker     std::vector<uint8_t> inputValues = { 5, 8, 10, 7,
251*89c4ff92SAndroid Build Coastguard Worker                                          8, 12, 15, 2,
252*89c4ff92SAndroid Build Coastguard Worker                                          3, 4, 1, 11 };
253*89c4ff92SAndroid Build Coastguard Worker 
254*89c4ff92SAndroid Build Coastguard Worker     std::vector<uint8_t> expectedOutputValues = { 12, 15, 4, 11 };
255*89c4ff92SAndroid Build Coastguard Worker 
256*89c4ff92SAndroid Build Coastguard Worker     Pooling2dTest<uint8_t>(tflite::BuiltinOperator_MAX_POOL_2D,
257*89c4ff92SAndroid Build Coastguard Worker                            ::tflite::TensorType_UINT8,
258*89c4ff92SAndroid Build Coastguard Worker                            backends,
259*89c4ff92SAndroid Build Coastguard Worker                            inputShape,
260*89c4ff92SAndroid Build Coastguard Worker                            outputShape,
261*89c4ff92SAndroid Build Coastguard Worker                            inputValues,
262*89c4ff92SAndroid Build Coastguard Worker                            expectedOutputValues,
263*89c4ff92SAndroid Build Coastguard Worker                            ::tflite::Padding_SAME,
264*89c4ff92SAndroid Build Coastguard Worker                            2,
265*89c4ff92SAndroid Build Coastguard Worker                            2,
266*89c4ff92SAndroid Build Coastguard Worker                            2,
267*89c4ff92SAndroid Build Coastguard Worker                            2,
268*89c4ff92SAndroid Build Coastguard Worker                            tflite::ActivationFunctionType_NONE,
269*89c4ff92SAndroid Build Coastguard Worker                            2.5f,
270*89c4ff92SAndroid Build Coastguard Worker                            1);
271*89c4ff92SAndroid Build Coastguard Worker }
272*89c4ff92SAndroid Build Coastguard Worker 
MaxPool2dUint8ReluTest(std::vector<armnn::BackendId> & backends)273*89c4ff92SAndroid Build Coastguard Worker void MaxPool2dUint8ReluTest(std::vector<armnn::BackendId>& backends)
274*89c4ff92SAndroid Build Coastguard Worker {
275*89c4ff92SAndroid Build Coastguard Worker     // Set input data
276*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputShape { 1, 3, 4, 1 };
277*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape { 1, 2, 3, 1 };
278*89c4ff92SAndroid Build Coastguard Worker 
279*89c4ff92SAndroid Build Coastguard Worker     std::vector<uint8_t> inputValues = { 12, 8, 10, 15,
280*89c4ff92SAndroid Build Coastguard Worker                                          8, 5, 7, 2,
281*89c4ff92SAndroid Build Coastguard Worker                                          3, 4, 1, 11 };
282*89c4ff92SAndroid Build Coastguard Worker 
283*89c4ff92SAndroid Build Coastguard Worker     std::vector<uint8_t> expectedOutputValues = { 12, 10, 15, 8, 7, 11 };
284*89c4ff92SAndroid Build Coastguard Worker 
285*89c4ff92SAndroid Build Coastguard Worker     Pooling2dTest<uint8_t>(tflite::BuiltinOperator_MAX_POOL_2D,
286*89c4ff92SAndroid Build Coastguard Worker                            ::tflite::TensorType_UINT8,
287*89c4ff92SAndroid Build Coastguard Worker                            backends,
288*89c4ff92SAndroid Build Coastguard Worker                            inputShape,
289*89c4ff92SAndroid Build Coastguard Worker                            outputShape,
290*89c4ff92SAndroid Build Coastguard Worker                            inputValues,
291*89c4ff92SAndroid Build Coastguard Worker                            expectedOutputValues,
292*89c4ff92SAndroid Build Coastguard Worker                            ::tflite::Padding_VALID,
293*89c4ff92SAndroid Build Coastguard Worker                            1,
294*89c4ff92SAndroid Build Coastguard Worker                            1,
295*89c4ff92SAndroid Build Coastguard Worker                            2,
296*89c4ff92SAndroid Build Coastguard Worker                            2,
297*89c4ff92SAndroid Build Coastguard Worker                            ::tflite::ActivationFunctionType_RELU,
298*89c4ff92SAndroid Build Coastguard Worker                            2.0f,
299*89c4ff92SAndroid Build Coastguard Worker                            1);
300*89c4ff92SAndroid Build Coastguard Worker }
301*89c4ff92SAndroid Build Coastguard Worker 
MaxPool2dInt16PaddingSameTest(std::vector<armnn::BackendId> & backends)302*89c4ff92SAndroid Build Coastguard Worker void MaxPool2dInt16PaddingSameTest(std::vector<armnn::BackendId>& backends)
303*89c4ff92SAndroid Build Coastguard Worker {
304*89c4ff92SAndroid Build Coastguard Worker     // Set input data
305*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputShape { 1, 3, 4, 1 };
306*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape { 1, 2, 2, 1 };
307*89c4ff92SAndroid Build Coastguard Worker 
308*89c4ff92SAndroid Build Coastguard Worker     std::vector<int16_t> inputValues = { -5, 8, -10, 7,
309*89c4ff92SAndroid Build Coastguard Worker                                          8, 12, -15, 2,
310*89c4ff92SAndroid Build Coastguard Worker                                          3, -4, -1, -11 };
311*89c4ff92SAndroid Build Coastguard Worker 
312*89c4ff92SAndroid Build Coastguard Worker     std::vector<int16_t> expectedOutputValues = { 12, 7, 3, -1 };
313*89c4ff92SAndroid Build Coastguard Worker 
314*89c4ff92SAndroid Build Coastguard Worker     Pooling2dTest<int16_t>(tflite::BuiltinOperator_MAX_POOL_2D,
315*89c4ff92SAndroid Build Coastguard Worker                            ::tflite::TensorType_INT16,
316*89c4ff92SAndroid Build Coastguard Worker                            backends,
317*89c4ff92SAndroid Build Coastguard Worker                            inputShape,
318*89c4ff92SAndroid Build Coastguard Worker                            outputShape,
319*89c4ff92SAndroid Build Coastguard Worker                            inputValues,
320*89c4ff92SAndroid Build Coastguard Worker                            expectedOutputValues,
321*89c4ff92SAndroid Build Coastguard Worker                            ::tflite::Padding_SAME,
322*89c4ff92SAndroid Build Coastguard Worker                            2,
323*89c4ff92SAndroid Build Coastguard Worker                            2,
324*89c4ff92SAndroid Build Coastguard Worker                            2,
325*89c4ff92SAndroid Build Coastguard Worker                            2,
326*89c4ff92SAndroid Build Coastguard Worker                            tflite::ActivationFunctionType_NONE,
327*89c4ff92SAndroid Build Coastguard Worker                            2.5f,
328*89c4ff92SAndroid Build Coastguard Worker                            0);
329*89c4ff92SAndroid Build Coastguard Worker }
330*89c4ff92SAndroid Build Coastguard Worker 
MaxPool2dInt16ReluTest(std::vector<armnn::BackendId> & backends)331*89c4ff92SAndroid Build Coastguard Worker void MaxPool2dInt16ReluTest(std::vector<armnn::BackendId>& backends)
332*89c4ff92SAndroid Build Coastguard Worker {
333*89c4ff92SAndroid Build Coastguard Worker     // Set input data
334*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputShape { 1, 3, 4, 1 };
335*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape { 1, 2, 3, 1 };
336*89c4ff92SAndroid Build Coastguard Worker 
337*89c4ff92SAndroid Build Coastguard Worker     std::vector<int16_t> inputValues = { -5, -8, -10, 7,
338*89c4ff92SAndroid Build Coastguard Worker                                          -8, -12, -15, 2,
339*89c4ff92SAndroid Build Coastguard Worker                                          3, -4, -1, -11 };
340*89c4ff92SAndroid Build Coastguard Worker 
341*89c4ff92SAndroid Build Coastguard Worker     std::vector<int16_t> expectedOutputValues = { 0, 0, 7, 3, 0, 2 };
342*89c4ff92SAndroid Build Coastguard Worker 
343*89c4ff92SAndroid Build Coastguard Worker     Pooling2dTest<int16_t>(tflite::BuiltinOperator_MAX_POOL_2D,
344*89c4ff92SAndroid Build Coastguard Worker                            ::tflite::TensorType_INT16,
345*89c4ff92SAndroid Build Coastguard Worker                            backends,
346*89c4ff92SAndroid Build Coastguard Worker                            inputShape,
347*89c4ff92SAndroid Build Coastguard Worker                            outputShape,
348*89c4ff92SAndroid Build Coastguard Worker                            inputValues,
349*89c4ff92SAndroid Build Coastguard Worker                            expectedOutputValues,
350*89c4ff92SAndroid Build Coastguard Worker                            ::tflite::Padding_VALID,
351*89c4ff92SAndroid Build Coastguard Worker                            1,
352*89c4ff92SAndroid Build Coastguard Worker                            1,
353*89c4ff92SAndroid Build Coastguard Worker                            2,
354*89c4ff92SAndroid Build Coastguard Worker                            2,
355*89c4ff92SAndroid Build Coastguard Worker                            ::tflite::ActivationFunctionType_RELU,
356*89c4ff92SAndroid Build Coastguard Worker                            2.0f,
357*89c4ff92SAndroid Build Coastguard Worker                            0);
358*89c4ff92SAndroid Build Coastguard Worker }
359*89c4ff92SAndroid Build Coastguard Worker 
AveragePool2dFP32PaddingValidTest(std::vector<armnn::BackendId> & backends)360*89c4ff92SAndroid Build Coastguard Worker void AveragePool2dFP32PaddingValidTest(std::vector<armnn::BackendId>& backends)
361*89c4ff92SAndroid Build Coastguard Worker {
362*89c4ff92SAndroid Build Coastguard Worker     // Set input data
363*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputShape { 1, 3, 4, 1 };
364*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape { 1, 1, 2, 1 };
365*89c4ff92SAndroid Build Coastguard Worker 
366*89c4ff92SAndroid Build Coastguard Worker     std::vector<float> inputValues = { -5.0f, 8.0f, -10.0f, 7.0f,
367*89c4ff92SAndroid Build Coastguard Worker                                        8.0f, 12.0f, -15.0f, 2.0f,
368*89c4ff92SAndroid Build Coastguard Worker                                        3.0f, -4.0f, -1.0f, -11.0f };
369*89c4ff92SAndroid Build Coastguard Worker 
370*89c4ff92SAndroid Build Coastguard Worker     std::vector<float> expectedOutputValues = { 5.75f, -4.0f };
371*89c4ff92SAndroid Build Coastguard Worker 
372*89c4ff92SAndroid Build Coastguard Worker     Pooling2dTest<float>(tflite::BuiltinOperator_AVERAGE_POOL_2D,
373*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::TensorType_FLOAT32,
374*89c4ff92SAndroid Build Coastguard Worker                          backends,
375*89c4ff92SAndroid Build Coastguard Worker                          inputShape,
376*89c4ff92SAndroid Build Coastguard Worker                          outputShape,
377*89c4ff92SAndroid Build Coastguard Worker                          inputValues,
378*89c4ff92SAndroid Build Coastguard Worker                          expectedOutputValues,
379*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::Padding_VALID,
380*89c4ff92SAndroid Build Coastguard Worker                          2,
381*89c4ff92SAndroid Build Coastguard Worker                          2,
382*89c4ff92SAndroid Build Coastguard Worker                          2,
383*89c4ff92SAndroid Build Coastguard Worker                          2);
384*89c4ff92SAndroid Build Coastguard Worker }
385*89c4ff92SAndroid Build Coastguard Worker 
AveragePool2dInt8PaddingValidTest(std::vector<armnn::BackendId> & backends)386*89c4ff92SAndroid Build Coastguard Worker void AveragePool2dInt8PaddingValidTest(std::vector<armnn::BackendId>& backends)
387*89c4ff92SAndroid Build Coastguard Worker {
388*89c4ff92SAndroid Build Coastguard Worker     // Set input data
389*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputShape { 1, 3, 4, 1 };
390*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape { 1, 1, 2, 1 };
391*89c4ff92SAndroid Build Coastguard Worker 
392*89c4ff92SAndroid Build Coastguard Worker     std::vector<int8_t > inputValues = { -5, 8, -10, 7,
393*89c4ff92SAndroid Build Coastguard Worker                                          8, 12, -15, 2,
394*89c4ff92SAndroid Build Coastguard Worker                                          3, -4, -1, -11 };
395*89c4ff92SAndroid Build Coastguard Worker 
396*89c4ff92SAndroid Build Coastguard Worker     std::vector<int8_t> expectedOutputValues = { 6, -4 };
397*89c4ff92SAndroid Build Coastguard Worker 
398*89c4ff92SAndroid Build Coastguard Worker     Pooling2dTest<int8_t>(tflite::BuiltinOperator_AVERAGE_POOL_2D,
399*89c4ff92SAndroid Build Coastguard Worker                           ::tflite::TensorType_INT8,
400*89c4ff92SAndroid Build Coastguard Worker                           backends,
401*89c4ff92SAndroid Build Coastguard Worker                           inputShape,
402*89c4ff92SAndroid Build Coastguard Worker                           outputShape,
403*89c4ff92SAndroid Build Coastguard Worker                           inputValues,
404*89c4ff92SAndroid Build Coastguard Worker                           expectedOutputValues,
405*89c4ff92SAndroid Build Coastguard Worker                           ::tflite::Padding_VALID,
406*89c4ff92SAndroid Build Coastguard Worker                           2,
407*89c4ff92SAndroid Build Coastguard Worker                           2,
408*89c4ff92SAndroid Build Coastguard Worker                           2,
409*89c4ff92SAndroid Build Coastguard Worker                           2,
410*89c4ff92SAndroid Build Coastguard Worker                           tflite::ActivationFunctionType_NONE,
411*89c4ff92SAndroid Build Coastguard Worker                           2.5f,
412*89c4ff92SAndroid Build Coastguard Worker                           1);
413*89c4ff92SAndroid Build Coastguard Worker }
414*89c4ff92SAndroid Build Coastguard Worker 
AveragePool2dFP32PaddingSameTest(std::vector<armnn::BackendId> & backends)415*89c4ff92SAndroid Build Coastguard Worker void AveragePool2dFP32PaddingSameTest(std::vector<armnn::BackendId>& backends)
416*89c4ff92SAndroid Build Coastguard Worker {
417*89c4ff92SAndroid Build Coastguard Worker     // Set input data
418*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputShape { 1, 3, 4, 1 };
419*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape { 1, 2, 2, 1 };
420*89c4ff92SAndroid Build Coastguard Worker 
421*89c4ff92SAndroid Build Coastguard Worker     std::vector<float> inputValues = { -5.0f, 8.0f, -10.0f, 7.0f,
422*89c4ff92SAndroid Build Coastguard Worker                                        8.0f, 12.0f, -15.0f, 2.0f,
423*89c4ff92SAndroid Build Coastguard Worker                                        3.0f, -4.0f, -1.0f, -11.0f };
424*89c4ff92SAndroid Build Coastguard Worker 
425*89c4ff92SAndroid Build Coastguard Worker     std::vector<float> expectedOutputValues = { 5.75f, -4.0f, -0.5f, -6.0f };
426*89c4ff92SAndroid Build Coastguard Worker 
427*89c4ff92SAndroid Build Coastguard Worker     Pooling2dTest<float>(tflite::BuiltinOperator_AVERAGE_POOL_2D,
428*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::TensorType_FLOAT32,
429*89c4ff92SAndroid Build Coastguard Worker                          backends,
430*89c4ff92SAndroid Build Coastguard Worker                          inputShape,
431*89c4ff92SAndroid Build Coastguard Worker                          outputShape,
432*89c4ff92SAndroid Build Coastguard Worker                          inputValues,
433*89c4ff92SAndroid Build Coastguard Worker                          expectedOutputValues,
434*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::Padding_SAME,
435*89c4ff92SAndroid Build Coastguard Worker                          2,
436*89c4ff92SAndroid Build Coastguard Worker                          2,
437*89c4ff92SAndroid Build Coastguard Worker                          2,
438*89c4ff92SAndroid Build Coastguard Worker                          2);
439*89c4ff92SAndroid Build Coastguard Worker }
440*89c4ff92SAndroid Build Coastguard Worker 
AveragePool2dInt8PaddingSameTest(std::vector<armnn::BackendId> & backends)441*89c4ff92SAndroid Build Coastguard Worker void AveragePool2dInt8PaddingSameTest(std::vector<armnn::BackendId>& backends)
442*89c4ff92SAndroid Build Coastguard Worker {
443*89c4ff92SAndroid Build Coastguard Worker     // Set input data
444*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputShape { 1, 3, 4, 1 };
445*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape { 1, 2, 2, 1 };
446*89c4ff92SAndroid Build Coastguard Worker 
447*89c4ff92SAndroid Build Coastguard Worker     std::vector<int8_t > inputValues = { -5, 8, -10, 7,
448*89c4ff92SAndroid Build Coastguard Worker                                          8, 12, -15, 2,
449*89c4ff92SAndroid Build Coastguard Worker                                          3, -4, -1, -11 };
450*89c4ff92SAndroid Build Coastguard Worker 
451*89c4ff92SAndroid Build Coastguard Worker     std::vector<int8_t> expectedOutputValues = { 6, -4, -1, -6 };
452*89c4ff92SAndroid Build Coastguard Worker 
453*89c4ff92SAndroid Build Coastguard Worker     Pooling2dTest<int8_t>(tflite::BuiltinOperator_AVERAGE_POOL_2D,
454*89c4ff92SAndroid Build Coastguard Worker                           ::tflite::TensorType_INT8,
455*89c4ff92SAndroid Build Coastguard Worker                           backends,
456*89c4ff92SAndroid Build Coastguard Worker                           inputShape,
457*89c4ff92SAndroid Build Coastguard Worker                           outputShape,
458*89c4ff92SAndroid Build Coastguard Worker                           inputValues,
459*89c4ff92SAndroid Build Coastguard Worker                           expectedOutputValues,
460*89c4ff92SAndroid Build Coastguard Worker                           ::tflite::Padding_SAME,
461*89c4ff92SAndroid Build Coastguard Worker                           2,
462*89c4ff92SAndroid Build Coastguard Worker                           2,
463*89c4ff92SAndroid Build Coastguard Worker                           2,
464*89c4ff92SAndroid Build Coastguard Worker                           2,
465*89c4ff92SAndroid Build Coastguard Worker                           tflite::ActivationFunctionType_NONE,
466*89c4ff92SAndroid Build Coastguard Worker                           2.5f,
467*89c4ff92SAndroid Build Coastguard Worker                           1);
468*89c4ff92SAndroid Build Coastguard Worker }
469*89c4ff92SAndroid Build Coastguard Worker 
AveragePool2dFP32ReluTest(std::vector<armnn::BackendId> & backends)470*89c4ff92SAndroid Build Coastguard Worker void AveragePool2dFP32ReluTest(std::vector<armnn::BackendId>& backends)
471*89c4ff92SAndroid Build Coastguard Worker {
472*89c4ff92SAndroid Build Coastguard Worker     // Set input data
473*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputShape { 1, 3, 4, 1 };
474*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape { 1, 2, 3, 1 };
475*89c4ff92SAndroid Build Coastguard Worker 
476*89c4ff92SAndroid Build Coastguard Worker     std::vector<float> inputValues = { -5.0f, 8.0f, -10.0f, 7.0f,
477*89c4ff92SAndroid Build Coastguard Worker                                        -8.0f, 12.0f, -15.0f, 2.0f,
478*89c4ff92SAndroid Build Coastguard Worker                                        3.0f, -4.0f, -1.0f, 11.0f };
479*89c4ff92SAndroid Build Coastguard Worker 
480*89c4ff92SAndroid Build Coastguard Worker     std::vector<float> expectedOutputValues = { 1.75f, 0.0f, 0.0f, 0.75f, 0.0f, 0.0f };
481*89c4ff92SAndroid Build Coastguard Worker 
482*89c4ff92SAndroid Build Coastguard Worker     Pooling2dTest<float>(tflite::BuiltinOperator_AVERAGE_POOL_2D,
483*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::TensorType_FLOAT32,
484*89c4ff92SAndroid Build Coastguard Worker                          backends,
485*89c4ff92SAndroid Build Coastguard Worker                          inputShape,
486*89c4ff92SAndroid Build Coastguard Worker                          outputShape,
487*89c4ff92SAndroid Build Coastguard Worker                          inputValues,
488*89c4ff92SAndroid Build Coastguard Worker                          expectedOutputValues,
489*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::Padding_VALID,
490*89c4ff92SAndroid Build Coastguard Worker                          1,
491*89c4ff92SAndroid Build Coastguard Worker                          1,
492*89c4ff92SAndroid Build Coastguard Worker                          2,
493*89c4ff92SAndroid Build Coastguard Worker                          2,
494*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::ActivationFunctionType_RELU);
495*89c4ff92SAndroid Build Coastguard Worker }
496*89c4ff92SAndroid Build Coastguard Worker 
AveragePool2dInt8ReluTest(std::vector<armnn::BackendId> & backends)497*89c4ff92SAndroid Build Coastguard Worker void AveragePool2dInt8ReluTest(std::vector<armnn::BackendId>& backends)
498*89c4ff92SAndroid Build Coastguard Worker {
499*89c4ff92SAndroid Build Coastguard Worker     // Set input data
500*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputShape { 1, 3, 4, 1 };
501*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape { 1, 2, 3, 1 };
502*89c4ff92SAndroid Build Coastguard Worker 
503*89c4ff92SAndroid Build Coastguard Worker     std::vector<int8_t> inputValues = { -5, 8, -10, 7,
504*89c4ff92SAndroid Build Coastguard Worker                                         -8, 12, -15, 2,
505*89c4ff92SAndroid Build Coastguard Worker                                         3, -4, -1, 11 };
506*89c4ff92SAndroid Build Coastguard Worker 
507*89c4ff92SAndroid Build Coastguard Worker     std::vector<int8_t> expectedOutputValues = { 2, 1, 1, 1, 1, 1 };
508*89c4ff92SAndroid Build Coastguard Worker 
509*89c4ff92SAndroid Build Coastguard Worker     Pooling2dTest<int8_t>(tflite::BuiltinOperator_AVERAGE_POOL_2D,
510*89c4ff92SAndroid Build Coastguard Worker                           ::tflite::TensorType_INT8,
511*89c4ff92SAndroid Build Coastguard Worker                           backends,
512*89c4ff92SAndroid Build Coastguard Worker                           inputShape,
513*89c4ff92SAndroid Build Coastguard Worker                           outputShape,
514*89c4ff92SAndroid Build Coastguard Worker                           inputValues,
515*89c4ff92SAndroid Build Coastguard Worker                           expectedOutputValues,
516*89c4ff92SAndroid Build Coastguard Worker                           ::tflite::Padding_VALID,
517*89c4ff92SAndroid Build Coastguard Worker                           1,
518*89c4ff92SAndroid Build Coastguard Worker                           1,
519*89c4ff92SAndroid Build Coastguard Worker                           2,
520*89c4ff92SAndroid Build Coastguard Worker                           2,
521*89c4ff92SAndroid Build Coastguard Worker                           ::tflite::ActivationFunctionType_RELU,
522*89c4ff92SAndroid Build Coastguard Worker                           2.5f,
523*89c4ff92SAndroid Build Coastguard Worker                           1);
524*89c4ff92SAndroid Build Coastguard Worker }
525*89c4ff92SAndroid Build Coastguard Worker 
AveragePool2dFP32Relu6Test(std::vector<armnn::BackendId> & backends)526*89c4ff92SAndroid Build Coastguard Worker void AveragePool2dFP32Relu6Test(std::vector<armnn::BackendId>& backends)
527*89c4ff92SAndroid Build Coastguard Worker {
528*89c4ff92SAndroid Build Coastguard Worker     // Set input data
529*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputShape { 1, 3, 4, 1 };
530*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape { 1, 2, 2, 1 };
531*89c4ff92SAndroid Build Coastguard Worker 
532*89c4ff92SAndroid Build Coastguard Worker     std::vector<float> inputValues = { -5.0f, 8.0f, -10.0f, 7.0f,
533*89c4ff92SAndroid Build Coastguard Worker                                        -8.0f, 12.0f, -15.0f, 2.0f,
534*89c4ff92SAndroid Build Coastguard Worker                                        3.0f, -4.0f, -1.0f, 11.0f };
535*89c4ff92SAndroid Build Coastguard Worker 
536*89c4ff92SAndroid Build Coastguard Worker     std::vector<float> expectedOutputValues = { 0.0f, 0.0f, 3.0f, 0.0f };
537*89c4ff92SAndroid Build Coastguard Worker 
538*89c4ff92SAndroid Build Coastguard Worker     Pooling2dTest<float>(tflite::BuiltinOperator_AVERAGE_POOL_2D,
539*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::TensorType_FLOAT32,
540*89c4ff92SAndroid Build Coastguard Worker                          backends,
541*89c4ff92SAndroid Build Coastguard Worker                          inputShape,
542*89c4ff92SAndroid Build Coastguard Worker                          outputShape,
543*89c4ff92SAndroid Build Coastguard Worker                          inputValues,
544*89c4ff92SAndroid Build Coastguard Worker                          expectedOutputValues,
545*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::Padding_SAME,
546*89c4ff92SAndroid Build Coastguard Worker                          2,
547*89c4ff92SAndroid Build Coastguard Worker                          2,
548*89c4ff92SAndroid Build Coastguard Worker                          1,
549*89c4ff92SAndroid Build Coastguard Worker                          1,
550*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::ActivationFunctionType_RELU6);
551*89c4ff92SAndroid Build Coastguard Worker }
552*89c4ff92SAndroid Build Coastguard Worker 
AveragePool2dInt8Relu6Test(std::vector<armnn::BackendId> & backends)553*89c4ff92SAndroid Build Coastguard Worker void AveragePool2dInt8Relu6Test(std::vector<armnn::BackendId>& backends)
554*89c4ff92SAndroid Build Coastguard Worker {
555*89c4ff92SAndroid Build Coastguard Worker     // Set input data
556*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputShape { 1, 3, 4, 1 };
557*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape { 1, 2, 2, 1 };
558*89c4ff92SAndroid Build Coastguard Worker 
559*89c4ff92SAndroid Build Coastguard Worker     std::vector<int8_t> inputValues = { -5, 8, -10, 7,
560*89c4ff92SAndroid Build Coastguard Worker                                         -8, 12, -15, 2,
561*89c4ff92SAndroid Build Coastguard Worker                                         3, -4, -1, 11 };
562*89c4ff92SAndroid Build Coastguard Worker 
563*89c4ff92SAndroid Build Coastguard Worker     std::vector<int8_t> expectedOutputValues = { 1, 1, 3, 1 };
564*89c4ff92SAndroid Build Coastguard Worker 
565*89c4ff92SAndroid Build Coastguard Worker     Pooling2dTest<int8_t>(tflite::BuiltinOperator_AVERAGE_POOL_2D,
566*89c4ff92SAndroid Build Coastguard Worker                           ::tflite::TensorType_INT8,
567*89c4ff92SAndroid Build Coastguard Worker                           backends,
568*89c4ff92SAndroid Build Coastguard Worker                           inputShape,
569*89c4ff92SAndroid Build Coastguard Worker                           outputShape,
570*89c4ff92SAndroid Build Coastguard Worker                           inputValues,
571*89c4ff92SAndroid Build Coastguard Worker                           expectedOutputValues,
572*89c4ff92SAndroid Build Coastguard Worker                           ::tflite::Padding_SAME,
573*89c4ff92SAndroid Build Coastguard Worker                           2,
574*89c4ff92SAndroid Build Coastguard Worker                           2,
575*89c4ff92SAndroid Build Coastguard Worker                           1,
576*89c4ff92SAndroid Build Coastguard Worker                           1,
577*89c4ff92SAndroid Build Coastguard Worker                           ::tflite::ActivationFunctionType_RELU6,
578*89c4ff92SAndroid Build Coastguard Worker                           2.5f,
579*89c4ff92SAndroid Build Coastguard Worker                           1);
580*89c4ff92SAndroid Build Coastguard Worker }
581*89c4ff92SAndroid Build Coastguard Worker 
AveragePool2dUint8PaddingSameTest(std::vector<armnn::BackendId> & backends)582*89c4ff92SAndroid Build Coastguard Worker void AveragePool2dUint8PaddingSameTest(std::vector<armnn::BackendId>& backends)
583*89c4ff92SAndroid Build Coastguard Worker {
584*89c4ff92SAndroid Build Coastguard Worker     // Set input data
585*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputShape { 1, 3, 4, 1 };
586*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape { 1, 2, 2, 1 };
587*89c4ff92SAndroid Build Coastguard Worker 
588*89c4ff92SAndroid Build Coastguard Worker     std::vector<uint8_t> inputValues = { 5, 8, 10, 7,
589*89c4ff92SAndroid Build Coastguard Worker                                          8, 12, 15, 2,
590*89c4ff92SAndroid Build Coastguard Worker                                          3, 4, 1, 11 };
591*89c4ff92SAndroid Build Coastguard Worker 
592*89c4ff92SAndroid Build Coastguard Worker     std::vector<uint8_t> expectedOutputValues = { 8, 9, 4, 6 };
593*89c4ff92SAndroid Build Coastguard Worker 
594*89c4ff92SAndroid Build Coastguard Worker     Pooling2dTest<uint8_t>(tflite::BuiltinOperator_AVERAGE_POOL_2D,
595*89c4ff92SAndroid Build Coastguard Worker                            ::tflite::TensorType_UINT8,
596*89c4ff92SAndroid Build Coastguard Worker                            backends,
597*89c4ff92SAndroid Build Coastguard Worker                            inputShape,
598*89c4ff92SAndroid Build Coastguard Worker                            outputShape,
599*89c4ff92SAndroid Build Coastguard Worker                            inputValues,
600*89c4ff92SAndroid Build Coastguard Worker                            expectedOutputValues,
601*89c4ff92SAndroid Build Coastguard Worker                            ::tflite::Padding_SAME,
602*89c4ff92SAndroid Build Coastguard Worker                            2,
603*89c4ff92SAndroid Build Coastguard Worker                            2,
604*89c4ff92SAndroid Build Coastguard Worker                            2,
605*89c4ff92SAndroid Build Coastguard Worker                            2,
606*89c4ff92SAndroid Build Coastguard Worker                            tflite::ActivationFunctionType_NONE,
607*89c4ff92SAndroid Build Coastguard Worker                            2.5f,
608*89c4ff92SAndroid Build Coastguard Worker                            1);
609*89c4ff92SAndroid Build Coastguard Worker }
610*89c4ff92SAndroid Build Coastguard Worker 
AveragePool2dUint8ReluTest(std::vector<armnn::BackendId> & backends)611*89c4ff92SAndroid Build Coastguard Worker void AveragePool2dUint8ReluTest(std::vector<armnn::BackendId>& backends)
612*89c4ff92SAndroid Build Coastguard Worker {
613*89c4ff92SAndroid Build Coastguard Worker     // Set input data
614*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputShape { 1, 3, 4, 1 };
615*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape { 1, 2, 3, 1 };
616*89c4ff92SAndroid Build Coastguard Worker 
617*89c4ff92SAndroid Build Coastguard Worker     std::vector<uint8_t> inputValues = { 12, 8, 10, 15,
618*89c4ff92SAndroid Build Coastguard Worker                                          8, 5, 7, 2,
619*89c4ff92SAndroid Build Coastguard Worker                                          3, 4, 1, 11 };
620*89c4ff92SAndroid Build Coastguard Worker 
621*89c4ff92SAndroid Build Coastguard Worker     std::vector<uint8_t> expectedOutputValues = { 8, 8, 9, 5, 4, 5 };
622*89c4ff92SAndroid Build Coastguard Worker 
623*89c4ff92SAndroid Build Coastguard Worker     Pooling2dTest<uint8_t>(tflite::BuiltinOperator_AVERAGE_POOL_2D,
624*89c4ff92SAndroid Build Coastguard Worker                            ::tflite::TensorType_UINT8,
625*89c4ff92SAndroid Build Coastguard Worker                            backends,
626*89c4ff92SAndroid Build Coastguard Worker                            inputShape,
627*89c4ff92SAndroid Build Coastguard Worker                            outputShape,
628*89c4ff92SAndroid Build Coastguard Worker                            inputValues,
629*89c4ff92SAndroid Build Coastguard Worker                            expectedOutputValues,
630*89c4ff92SAndroid Build Coastguard Worker                            ::tflite::Padding_VALID,
631*89c4ff92SAndroid Build Coastguard Worker                            1,
632*89c4ff92SAndroid Build Coastguard Worker                            1,
633*89c4ff92SAndroid Build Coastguard Worker                            2,
634*89c4ff92SAndroid Build Coastguard Worker                            2,
635*89c4ff92SAndroid Build Coastguard Worker                            ::tflite::ActivationFunctionType_RELU,
636*89c4ff92SAndroid Build Coastguard Worker                            2.0f,
637*89c4ff92SAndroid Build Coastguard Worker                            1);
638*89c4ff92SAndroid Build Coastguard Worker }
639*89c4ff92SAndroid Build Coastguard Worker 
AveragePool2dInt16PaddingSameTest(std::vector<armnn::BackendId> & backends)640*89c4ff92SAndroid Build Coastguard Worker void AveragePool2dInt16PaddingSameTest(std::vector<armnn::BackendId>& backends)
641*89c4ff92SAndroid Build Coastguard Worker {
642*89c4ff92SAndroid Build Coastguard Worker     // Set input data
643*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputShape { 1, 3, 4, 1 };
644*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape { 1, 2, 2, 1 };
645*89c4ff92SAndroid Build Coastguard Worker 
646*89c4ff92SAndroid Build Coastguard Worker     std::vector<int16_t > inputValues = { -5, 8, -10, 7,
647*89c4ff92SAndroid Build Coastguard Worker                                          8, 12, -15, 2,
648*89c4ff92SAndroid Build Coastguard Worker                                          3, -4, -1, -11 };
649*89c4ff92SAndroid Build Coastguard Worker 
650*89c4ff92SAndroid Build Coastguard Worker     std::vector<int16_t> expectedOutputValues = { 6, -4, -1, -6 };
651*89c4ff92SAndroid Build Coastguard Worker 
652*89c4ff92SAndroid Build Coastguard Worker     Pooling2dTest<int16_t>(tflite::BuiltinOperator_AVERAGE_POOL_2D,
653*89c4ff92SAndroid Build Coastguard Worker                            ::tflite::TensorType_INT16,
654*89c4ff92SAndroid Build Coastguard Worker                            backends,
655*89c4ff92SAndroid Build Coastguard Worker                            inputShape,
656*89c4ff92SAndroid Build Coastguard Worker                            outputShape,
657*89c4ff92SAndroid Build Coastguard Worker                            inputValues,
658*89c4ff92SAndroid Build Coastguard Worker                            expectedOutputValues,
659*89c4ff92SAndroid Build Coastguard Worker                            ::tflite::Padding_SAME,
660*89c4ff92SAndroid Build Coastguard Worker                            2,
661*89c4ff92SAndroid Build Coastguard Worker                            2,
662*89c4ff92SAndroid Build Coastguard Worker                            2,
663*89c4ff92SAndroid Build Coastguard Worker                            2,
664*89c4ff92SAndroid Build Coastguard Worker                            tflite::ActivationFunctionType_NONE,
665*89c4ff92SAndroid Build Coastguard Worker                            2.5f,
666*89c4ff92SAndroid Build Coastguard Worker                            0);
667*89c4ff92SAndroid Build Coastguard Worker }
668*89c4ff92SAndroid Build Coastguard Worker 
AveragePool2dInt16ReluTest(std::vector<armnn::BackendId> & backends)669*89c4ff92SAndroid Build Coastguard Worker void AveragePool2dInt16ReluTest(std::vector<armnn::BackendId>& backends)
670*89c4ff92SAndroid Build Coastguard Worker {
671*89c4ff92SAndroid Build Coastguard Worker     // Set input data
672*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputShape { 1, 3, 4, 1 };
673*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape { 1, 2, 3, 1 };
674*89c4ff92SAndroid Build Coastguard Worker 
675*89c4ff92SAndroid Build Coastguard Worker     std::vector<int16_t> inputValues = { -5, 8, -10, 7,
676*89c4ff92SAndroid Build Coastguard Worker                                          -8, 12, -15, 2,
677*89c4ff92SAndroid Build Coastguard Worker                                          3, -4, -1, 11 };
678*89c4ff92SAndroid Build Coastguard Worker 
679*89c4ff92SAndroid Build Coastguard Worker     std::vector<int16_t> expectedOutputValues = { 2, 0, 0, 1, 0, 0 };
680*89c4ff92SAndroid Build Coastguard Worker 
681*89c4ff92SAndroid Build Coastguard Worker     Pooling2dTest<int16_t>(tflite::BuiltinOperator_AVERAGE_POOL_2D,
682*89c4ff92SAndroid Build Coastguard Worker                            ::tflite::TensorType_INT16,
683*89c4ff92SAndroid Build Coastguard Worker                            backends,
684*89c4ff92SAndroid Build Coastguard Worker                            inputShape,
685*89c4ff92SAndroid Build Coastguard Worker                            outputShape,
686*89c4ff92SAndroid Build Coastguard Worker                            inputValues,
687*89c4ff92SAndroid Build Coastguard Worker                            expectedOutputValues,
688*89c4ff92SAndroid Build Coastguard Worker                            ::tflite::Padding_VALID,
689*89c4ff92SAndroid Build Coastguard Worker                            1,
690*89c4ff92SAndroid Build Coastguard Worker                            1,
691*89c4ff92SAndroid Build Coastguard Worker                            2,
692*89c4ff92SAndroid Build Coastguard Worker                            2,
693*89c4ff92SAndroid Build Coastguard Worker                            ::tflite::ActivationFunctionType_RELU,
694*89c4ff92SAndroid Build Coastguard Worker                            2.5f,
695*89c4ff92SAndroid Build Coastguard Worker                            0);
696*89c4ff92SAndroid Build Coastguard Worker }
697*89c4ff92SAndroid Build Coastguard Worker 
L2Pool2dFP32PaddingValidTest(std::vector<armnn::BackendId> & backends)698*89c4ff92SAndroid Build Coastguard Worker void L2Pool2dFP32PaddingValidTest(std::vector<armnn::BackendId>& backends)
699*89c4ff92SAndroid Build Coastguard Worker {
700*89c4ff92SAndroid Build Coastguard Worker     // Set input data
701*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputShape { 1, 3, 4, 1 };
702*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape { 1, 1, 2, 1 };
703*89c4ff92SAndroid Build Coastguard Worker 
704*89c4ff92SAndroid Build Coastguard Worker     std::vector<float> inputValues = { -5.0f, 8.0f, -10.0f, 7.0f,
705*89c4ff92SAndroid Build Coastguard Worker                                        8.0f, 12.0f, -15.0f, 2.0f,
706*89c4ff92SAndroid Build Coastguard Worker                                        3.0f, -4.0f, -1.0f, -11.0f };
707*89c4ff92SAndroid Build Coastguard Worker 
708*89c4ff92SAndroid Build Coastguard Worker     std::vector<float> expectedOutputValues = { 8.616844f, 9.721111f };
709*89c4ff92SAndroid Build Coastguard Worker 
710*89c4ff92SAndroid Build Coastguard Worker     Pooling2dTest<float>(tflite::BuiltinOperator_L2_POOL_2D,
711*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::TensorType_FLOAT32,
712*89c4ff92SAndroid Build Coastguard Worker                          backends,
713*89c4ff92SAndroid Build Coastguard Worker                          inputShape,
714*89c4ff92SAndroid Build Coastguard Worker                          outputShape,
715*89c4ff92SAndroid Build Coastguard Worker                          inputValues,
716*89c4ff92SAndroid Build Coastguard Worker                          expectedOutputValues,
717*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::Padding_VALID,
718*89c4ff92SAndroid Build Coastguard Worker                          2,
719*89c4ff92SAndroid Build Coastguard Worker                          2,
720*89c4ff92SAndroid Build Coastguard Worker                          2,
721*89c4ff92SAndroid Build Coastguard Worker                          2);
722*89c4ff92SAndroid Build Coastguard Worker }
723*89c4ff92SAndroid Build Coastguard Worker 
L2Pool2dFP32PaddingSameTest(std::vector<armnn::BackendId> & backends)724*89c4ff92SAndroid Build Coastguard Worker void L2Pool2dFP32PaddingSameTest(std::vector<armnn::BackendId>& backends)
725*89c4ff92SAndroid Build Coastguard Worker {
726*89c4ff92SAndroid Build Coastguard Worker     // Set input data
727*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputShape { 1, 3, 4, 1 };
728*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape { 1, 2, 2, 1 };
729*89c4ff92SAndroid Build Coastguard Worker 
730*89c4ff92SAndroid Build Coastguard Worker     std::vector<float> inputValues = { -5.0f, 8.0f, -10.0f, 7.0f,
731*89c4ff92SAndroid Build Coastguard Worker                                        8.0f, 12.0f, -15.0f, 2.0f,
732*89c4ff92SAndroid Build Coastguard Worker                                        3.0f, -4.0f, -1.0f, -11.0f };
733*89c4ff92SAndroid Build Coastguard Worker 
734*89c4ff92SAndroid Build Coastguard Worker     std::vector<float> expectedOutputValues = { 8.616844f, 9.721111f, 3.535534f, 7.81025f };
735*89c4ff92SAndroid Build Coastguard Worker 
736*89c4ff92SAndroid Build Coastguard Worker     Pooling2dTest<float>(tflite::BuiltinOperator_L2_POOL_2D,
737*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::TensorType_FLOAT32,
738*89c4ff92SAndroid Build Coastguard Worker                          backends,
739*89c4ff92SAndroid Build Coastguard Worker                          inputShape,
740*89c4ff92SAndroid Build Coastguard Worker                          outputShape,
741*89c4ff92SAndroid Build Coastguard Worker                          inputValues,
742*89c4ff92SAndroid Build Coastguard Worker                          expectedOutputValues,
743*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::Padding_SAME,
744*89c4ff92SAndroid Build Coastguard Worker                          2,
745*89c4ff92SAndroid Build Coastguard Worker                          2,
746*89c4ff92SAndroid Build Coastguard Worker                          2,
747*89c4ff92SAndroid Build Coastguard Worker                          2);
748*89c4ff92SAndroid Build Coastguard Worker }
749*89c4ff92SAndroid Build Coastguard Worker 
L2Pool2dFP32ReluTest(std::vector<armnn::BackendId> & backends)750*89c4ff92SAndroid Build Coastguard Worker void L2Pool2dFP32ReluTest(std::vector<armnn::BackendId>& backends)
751*89c4ff92SAndroid Build Coastguard Worker {
752*89c4ff92SAndroid Build Coastguard Worker     // Set input data
753*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputShape { 1, 3, 4, 1 };
754*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape { 1, 2, 3, 1 };
755*89c4ff92SAndroid Build Coastguard Worker 
756*89c4ff92SAndroid Build Coastguard Worker     std::vector<float> inputValues = { -5.0f, 8.0f, -10.0f, 7.0f,
757*89c4ff92SAndroid Build Coastguard Worker                                        -8.0f, 12.0f, -15.0f, 2.0f,
758*89c4ff92SAndroid Build Coastguard Worker                                        3.0f, -4.0f, -1.0f, 11.0f };
759*89c4ff92SAndroid Build Coastguard Worker 
760*89c4ff92SAndroid Build Coastguard Worker     std::vector<float> expectedOutputValues = { 8.616844f, 11.543396f, 9.721111f, 7.632169f, 9.8234415f, 9.367497f };
761*89c4ff92SAndroid Build Coastguard Worker 
762*89c4ff92SAndroid Build Coastguard Worker     Pooling2dTest<float>(tflite::BuiltinOperator_L2_POOL_2D,
763*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::TensorType_FLOAT32,
764*89c4ff92SAndroid Build Coastguard Worker                          backends,
765*89c4ff92SAndroid Build Coastguard Worker                          inputShape,
766*89c4ff92SAndroid Build Coastguard Worker                          outputShape,
767*89c4ff92SAndroid Build Coastguard Worker                          inputValues,
768*89c4ff92SAndroid Build Coastguard Worker                          expectedOutputValues,
769*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::Padding_VALID,
770*89c4ff92SAndroid Build Coastguard Worker                          1,
771*89c4ff92SAndroid Build Coastguard Worker                          1,
772*89c4ff92SAndroid Build Coastguard Worker                          2,
773*89c4ff92SAndroid Build Coastguard Worker                          2,
774*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::ActivationFunctionType_RELU);
775*89c4ff92SAndroid Build Coastguard Worker }
776*89c4ff92SAndroid Build Coastguard Worker 
L2Pool2dFP32Relu6Test(std::vector<armnn::BackendId> & backends)777*89c4ff92SAndroid Build Coastguard Worker void L2Pool2dFP32Relu6Test(std::vector<armnn::BackendId>& backends)
778*89c4ff92SAndroid Build Coastguard Worker {
779*89c4ff92SAndroid Build Coastguard Worker     // Set input data
780*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputShape { 1, 3, 4, 1 };
781*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape { 1, 2, 2, 1 };
782*89c4ff92SAndroid Build Coastguard Worker 
783*89c4ff92SAndroid Build Coastguard Worker     std::vector<float> inputValues = { -5.0f, 8.0f, -10.0f, 7.0f,
784*89c4ff92SAndroid Build Coastguard Worker                                        -8.0f, 12.0f, -15.0f, 2.0f,
785*89c4ff92SAndroid Build Coastguard Worker                                        3.0f, -4.0f, -1.0f, 11.0f };
786*89c4ff92SAndroid Build Coastguard Worker 
787*89c4ff92SAndroid Build Coastguard Worker     std::vector<float> expectedOutputValues = { 5.0f, 6.0f, 3.0f, 1.0f };
788*89c4ff92SAndroid Build Coastguard Worker 
789*89c4ff92SAndroid Build Coastguard Worker     Pooling2dTest<float>(tflite::BuiltinOperator_L2_POOL_2D,
790*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::TensorType_FLOAT32,
791*89c4ff92SAndroid Build Coastguard Worker                          backends,
792*89c4ff92SAndroid Build Coastguard Worker                          inputShape,
793*89c4ff92SAndroid Build Coastguard Worker                          outputShape,
794*89c4ff92SAndroid Build Coastguard Worker                          inputValues,
795*89c4ff92SAndroid Build Coastguard Worker                          expectedOutputValues,
796*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::Padding_SAME,
797*89c4ff92SAndroid Build Coastguard Worker                          2,
798*89c4ff92SAndroid Build Coastguard Worker                          2,
799*89c4ff92SAndroid Build Coastguard Worker                          1,
800*89c4ff92SAndroid Build Coastguard Worker                          1,
801*89c4ff92SAndroid Build Coastguard Worker                          ::tflite::ActivationFunctionType_RELU6);
802*89c4ff92SAndroid Build Coastguard Worker }
803*89c4ff92SAndroid Build Coastguard Worker 
804*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("Pooling2d_GpuAccTests")
805*89c4ff92SAndroid Build Coastguard Worker {
806*89c4ff92SAndroid Build Coastguard Worker 
807*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_FP32_PaddingValid_GpuAcc_Test")
808*89c4ff92SAndroid Build Coastguard Worker {
809*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
810*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dFP32PaddingValidTest(backends);
811*89c4ff92SAndroid Build Coastguard Worker }
812*89c4ff92SAndroid Build Coastguard Worker 
813*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_Int8_PaddingValid_GpuAcc_Test")
814*89c4ff92SAndroid Build Coastguard Worker {
815*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
816*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dInt8PaddingValidTest(backends);
817*89c4ff92SAndroid Build Coastguard Worker }
818*89c4ff92SAndroid Build Coastguard Worker 
819*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_FP32_PaddingSame_GpuAcc_Test")
820*89c4ff92SAndroid Build Coastguard Worker {
821*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
822*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dFP32PaddingSameTest(backends);
823*89c4ff92SAndroid Build Coastguard Worker }
824*89c4ff92SAndroid Build Coastguard Worker 
825*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_Int8_PaddingSame_GpuAcc_Test")
826*89c4ff92SAndroid Build Coastguard Worker {
827*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
828*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dInt8PaddingSameTest(backends);
829*89c4ff92SAndroid Build Coastguard Worker }
830*89c4ff92SAndroid Build Coastguard Worker 
831*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_FP32_Relu_GpuAcc_Test")
832*89c4ff92SAndroid Build Coastguard Worker {
833*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
834*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dFP32ReluTest(backends);
835*89c4ff92SAndroid Build Coastguard Worker }
836*89c4ff92SAndroid Build Coastguard Worker 
837*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_Int8_Relu_GpuAcc_Test")
838*89c4ff92SAndroid Build Coastguard Worker {
839*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
840*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dInt8ReluTest(backends);
841*89c4ff92SAndroid Build Coastguard Worker }
842*89c4ff92SAndroid Build Coastguard Worker 
843*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_FP32_Relu6_GpuAcc_Test")
844*89c4ff92SAndroid Build Coastguard Worker {
845*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
846*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dFP32Relu6Test(backends);
847*89c4ff92SAndroid Build Coastguard Worker }
848*89c4ff92SAndroid Build Coastguard Worker 
849*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_Int8_Relu6_GpuAcc_Test")
850*89c4ff92SAndroid Build Coastguard Worker {
851*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
852*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dInt8Relu6Test(backends);
853*89c4ff92SAndroid Build Coastguard Worker }
854*89c4ff92SAndroid Build Coastguard Worker 
855*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_Uint8_PaddingSame_GpuAcc_Test")
856*89c4ff92SAndroid Build Coastguard Worker {
857*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
858*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dUint8PaddingSameTest(backends);
859*89c4ff92SAndroid Build Coastguard Worker }
860*89c4ff92SAndroid Build Coastguard Worker 
861*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_Uint8_Relu_GpuAcc_Test")
862*89c4ff92SAndroid Build Coastguard Worker {
863*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
864*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dUint8ReluTest(backends);
865*89c4ff92SAndroid Build Coastguard Worker }
866*89c4ff92SAndroid Build Coastguard Worker 
867*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_FP32_PaddingValid_GpuAcc_Test")
868*89c4ff92SAndroid Build Coastguard Worker {
869*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
870*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dFP32PaddingValidTest(backends);
871*89c4ff92SAndroid Build Coastguard Worker }
872*89c4ff92SAndroid Build Coastguard Worker 
873*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_Int8_PaddingValid_GpuAcc_Test")
874*89c4ff92SAndroid Build Coastguard Worker {
875*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
876*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dInt8PaddingValidTest(backends);
877*89c4ff92SAndroid Build Coastguard Worker }
878*89c4ff92SAndroid Build Coastguard Worker 
879*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_FP32_PaddingSame_GpuAcc_Test")
880*89c4ff92SAndroid Build Coastguard Worker {
881*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
882*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dFP32PaddingSameTest(backends);
883*89c4ff92SAndroid Build Coastguard Worker }
884*89c4ff92SAndroid Build Coastguard Worker 
885*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_Int8_PaddingSame_GpuAcc_Test")
886*89c4ff92SAndroid Build Coastguard Worker {
887*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
888*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dInt8PaddingSameTest(backends);
889*89c4ff92SAndroid Build Coastguard Worker }
890*89c4ff92SAndroid Build Coastguard Worker 
891*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_FP32_Relu_GpuAcc_Test")
892*89c4ff92SAndroid Build Coastguard Worker {
893*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
894*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dFP32ReluTest(backends);
895*89c4ff92SAndroid Build Coastguard Worker }
896*89c4ff92SAndroid Build Coastguard Worker 
897*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_FP32_Relu6_GpuAcc_Test")
898*89c4ff92SAndroid Build Coastguard Worker {
899*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
900*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dFP32Relu6Test(backends);
901*89c4ff92SAndroid Build Coastguard Worker }
902*89c4ff92SAndroid Build Coastguard Worker 
903*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_Int8_Relu_GpuAcc_Test")
904*89c4ff92SAndroid Build Coastguard Worker {
905*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
906*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dInt8ReluTest(backends);
907*89c4ff92SAndroid Build Coastguard Worker }
908*89c4ff92SAndroid Build Coastguard Worker 
909*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_Int8_Relu6_GpuAcc_Test")
910*89c4ff92SAndroid Build Coastguard Worker {
911*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
912*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dInt8Relu6Test(backends);
913*89c4ff92SAndroid Build Coastguard Worker }
914*89c4ff92SAndroid Build Coastguard Worker 
915*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_Uint8_PaddingSame_GpuAcc_Test")
916*89c4ff92SAndroid Build Coastguard Worker {
917*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
918*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dUint8PaddingSameTest(backends);
919*89c4ff92SAndroid Build Coastguard Worker }
920*89c4ff92SAndroid Build Coastguard Worker 
921*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_Uint8_Relu_GpuAcc_Test")
922*89c4ff92SAndroid Build Coastguard Worker {
923*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
924*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dUint8ReluTest(backends);
925*89c4ff92SAndroid Build Coastguard Worker }
926*89c4ff92SAndroid Build Coastguard Worker 
927*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("L2Pooling2d_FP32_PaddingValid_GpuAcc_Test")
928*89c4ff92SAndroid Build Coastguard Worker {
929*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
930*89c4ff92SAndroid Build Coastguard Worker     L2Pool2dFP32PaddingValidTest(backends);
931*89c4ff92SAndroid Build Coastguard Worker }
932*89c4ff92SAndroid Build Coastguard Worker 
933*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("L2Pooling2d_FP32_PaddingSame_GpuAcc_Test")
934*89c4ff92SAndroid Build Coastguard Worker {
935*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
936*89c4ff92SAndroid Build Coastguard Worker     L2Pool2dFP32PaddingSameTest(backends);
937*89c4ff92SAndroid Build Coastguard Worker }
938*89c4ff92SAndroid Build Coastguard Worker 
939*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("L2Pooling2d_FP32_Relu_GpuAcc_Test")
940*89c4ff92SAndroid Build Coastguard Worker {
941*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
942*89c4ff92SAndroid Build Coastguard Worker     L2Pool2dFP32ReluTest(backends);
943*89c4ff92SAndroid Build Coastguard Worker }
944*89c4ff92SAndroid Build Coastguard Worker 
945*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("L2Pooling2d_FP32_Relu6_GpuAcc_Test")
946*89c4ff92SAndroid Build Coastguard Worker {
947*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
948*89c4ff92SAndroid Build Coastguard Worker     L2Pool2dFP32Relu6Test(backends);
949*89c4ff92SAndroid Build Coastguard Worker }
950*89c4ff92SAndroid Build Coastguard Worker 
951*89c4ff92SAndroid Build Coastguard Worker } // TEST_SUITE("Pooling2d_GpuAccTests")
952*89c4ff92SAndroid Build Coastguard Worker 
953*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("Pooling2d_CpuAccTests")
954*89c4ff92SAndroid Build Coastguard Worker {
955*89c4ff92SAndroid Build Coastguard Worker 
956*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_FP32_PaddingValid_CpuAcc_Test")
957*89c4ff92SAndroid Build Coastguard Worker {
958*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
959*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dFP32PaddingValidTest(backends);
960*89c4ff92SAndroid Build Coastguard Worker }
961*89c4ff92SAndroid Build Coastguard Worker 
962*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_Int8_PaddingValid_CpuAcc_Test")
963*89c4ff92SAndroid Build Coastguard Worker {
964*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
965*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dInt8PaddingValidTest(backends);
966*89c4ff92SAndroid Build Coastguard Worker }
967*89c4ff92SAndroid Build Coastguard Worker 
968*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_FP32_PaddingSame_CpuAcc_Test")
969*89c4ff92SAndroid Build Coastguard Worker {
970*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
971*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dFP32PaddingSameTest(backends);
972*89c4ff92SAndroid Build Coastguard Worker }
973*89c4ff92SAndroid Build Coastguard Worker 
974*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_Int8_PaddingSame_CpuAcc_Test")
975*89c4ff92SAndroid Build Coastguard Worker {
976*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
977*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dInt8PaddingSameTest(backends);
978*89c4ff92SAndroid Build Coastguard Worker }
979*89c4ff92SAndroid Build Coastguard Worker 
980*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_FP32_Relu_CpuAcc_Test")
981*89c4ff92SAndroid Build Coastguard Worker {
982*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
983*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dFP32ReluTest(backends);
984*89c4ff92SAndroid Build Coastguard Worker }
985*89c4ff92SAndroid Build Coastguard Worker 
986*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_Int8_Relu_CpuAcc_Test")
987*89c4ff92SAndroid Build Coastguard Worker {
988*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
989*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dInt8ReluTest(backends);
990*89c4ff92SAndroid Build Coastguard Worker }
991*89c4ff92SAndroid Build Coastguard Worker 
992*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_FP32_Relu6_CpuAcc_Test")
993*89c4ff92SAndroid Build Coastguard Worker {
994*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
995*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dFP32Relu6Test(backends);
996*89c4ff92SAndroid Build Coastguard Worker }
997*89c4ff92SAndroid Build Coastguard Worker 
998*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_Int8_Relu6_CpuAcc_Test")
999*89c4ff92SAndroid Build Coastguard Worker {
1000*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
1001*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dInt8Relu6Test(backends);
1002*89c4ff92SAndroid Build Coastguard Worker }
1003*89c4ff92SAndroid Build Coastguard Worker 
1004*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_Uint8_PaddingSame_CpuAcc_Test")
1005*89c4ff92SAndroid Build Coastguard Worker {
1006*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
1007*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dUint8PaddingSameTest(backends);
1008*89c4ff92SAndroid Build Coastguard Worker }
1009*89c4ff92SAndroid Build Coastguard Worker 
1010*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_Uint8_Relu_CpuAcc_Test")
1011*89c4ff92SAndroid Build Coastguard Worker {
1012*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
1013*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dUint8ReluTest(backends);
1014*89c4ff92SAndroid Build Coastguard Worker }
1015*89c4ff92SAndroid Build Coastguard Worker 
1016*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_FP32_PaddingValid_CpuAcc_Test")
1017*89c4ff92SAndroid Build Coastguard Worker {
1018*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
1019*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dFP32PaddingValidTest(backends);
1020*89c4ff92SAndroid Build Coastguard Worker }
1021*89c4ff92SAndroid Build Coastguard Worker 
1022*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_Int8_PaddingValid_CpuAcc_Test")
1023*89c4ff92SAndroid Build Coastguard Worker {
1024*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
1025*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dInt8PaddingValidTest(backends);
1026*89c4ff92SAndroid Build Coastguard Worker }
1027*89c4ff92SAndroid Build Coastguard Worker 
1028*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_FP32_PaddingSame_CpuAcc_Test")
1029*89c4ff92SAndroid Build Coastguard Worker {
1030*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
1031*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dFP32PaddingSameTest(backends);
1032*89c4ff92SAndroid Build Coastguard Worker }
1033*89c4ff92SAndroid Build Coastguard Worker 
1034*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_Int8_PaddingSame_CpuAcc_Test")
1035*89c4ff92SAndroid Build Coastguard Worker {
1036*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
1037*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dInt8PaddingSameTest(backends);
1038*89c4ff92SAndroid Build Coastguard Worker }
1039*89c4ff92SAndroid Build Coastguard Worker 
1040*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_FP32_Relu_CpuAcc_Test")
1041*89c4ff92SAndroid Build Coastguard Worker {
1042*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
1043*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dFP32ReluTest(backends);
1044*89c4ff92SAndroid Build Coastguard Worker }
1045*89c4ff92SAndroid Build Coastguard Worker 
1046*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_FP32_Relu6_CpuAcc_Test")
1047*89c4ff92SAndroid Build Coastguard Worker {
1048*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
1049*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dFP32Relu6Test(backends);
1050*89c4ff92SAndroid Build Coastguard Worker }
1051*89c4ff92SAndroid Build Coastguard Worker 
1052*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_Int8_Relu_CpuAcc_Test")
1053*89c4ff92SAndroid Build Coastguard Worker {
1054*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
1055*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dInt8ReluTest(backends);
1056*89c4ff92SAndroid Build Coastguard Worker }
1057*89c4ff92SAndroid Build Coastguard Worker 
1058*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_Int8_Relu6_CpuAcc_Test")
1059*89c4ff92SAndroid Build Coastguard Worker {
1060*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
1061*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dInt8Relu6Test(backends);
1062*89c4ff92SAndroid Build Coastguard Worker }
1063*89c4ff92SAndroid Build Coastguard Worker 
1064*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_Uint8_PaddingSame_CpuAcc_Test")
1065*89c4ff92SAndroid Build Coastguard Worker {
1066*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
1067*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dUint8PaddingSameTest(backends);
1068*89c4ff92SAndroid Build Coastguard Worker }
1069*89c4ff92SAndroid Build Coastguard Worker 
1070*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_Uint8_Relu_CpuAcc_Test")
1071*89c4ff92SAndroid Build Coastguard Worker {
1072*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
1073*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dUint8ReluTest(backends);
1074*89c4ff92SAndroid Build Coastguard Worker }
1075*89c4ff92SAndroid Build Coastguard Worker 
1076*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("L2Pooling2d_FP32_PaddingValid_CpuAcc_Test")
1077*89c4ff92SAndroid Build Coastguard Worker {
1078*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
1079*89c4ff92SAndroid Build Coastguard Worker     L2Pool2dFP32PaddingValidTest(backends);
1080*89c4ff92SAndroid Build Coastguard Worker }
1081*89c4ff92SAndroid Build Coastguard Worker 
1082*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("L2Pooling2d_FP32_PaddingSame_CpuAcc_Test")
1083*89c4ff92SAndroid Build Coastguard Worker {
1084*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
1085*89c4ff92SAndroid Build Coastguard Worker     L2Pool2dFP32PaddingSameTest(backends);
1086*89c4ff92SAndroid Build Coastguard Worker }
1087*89c4ff92SAndroid Build Coastguard Worker 
1088*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("L2Pooling2d_FP32_Relu_CpuAcc_Test")
1089*89c4ff92SAndroid Build Coastguard Worker {
1090*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
1091*89c4ff92SAndroid Build Coastguard Worker     L2Pool2dFP32ReluTest(backends);
1092*89c4ff92SAndroid Build Coastguard Worker }
1093*89c4ff92SAndroid Build Coastguard Worker 
1094*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("L2Pooling2d_FP32_Relu6_CpuAcc_Test")
1095*89c4ff92SAndroid Build Coastguard Worker {
1096*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
1097*89c4ff92SAndroid Build Coastguard Worker     L2Pool2dFP32Relu6Test(backends);
1098*89c4ff92SAndroid Build Coastguard Worker }
1099*89c4ff92SAndroid Build Coastguard Worker 
1100*89c4ff92SAndroid Build Coastguard Worker } // TEST_SUITE("Pooling2d_CpuAccTests")
1101*89c4ff92SAndroid Build Coastguard Worker 
1102*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("Pooling2d_CpuRefTests")
1103*89c4ff92SAndroid Build Coastguard Worker {
1104*89c4ff92SAndroid Build Coastguard Worker 
1105*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_FP32_PaddingValid_CpuRef_Test")
1106*89c4ff92SAndroid Build Coastguard Worker {
1107*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1108*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dFP32PaddingValidTest(backends);
1109*89c4ff92SAndroid Build Coastguard Worker }
1110*89c4ff92SAndroid Build Coastguard Worker 
1111*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_Int8_PaddingValid_CpuRef_Test")
1112*89c4ff92SAndroid Build Coastguard Worker {
1113*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1114*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dInt8PaddingValidTest(backends);
1115*89c4ff92SAndroid Build Coastguard Worker }
1116*89c4ff92SAndroid Build Coastguard Worker 
1117*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_FP32_PaddingSame_CpuRef_Test")
1118*89c4ff92SAndroid Build Coastguard Worker {
1119*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1120*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dFP32PaddingSameTest(backends);
1121*89c4ff92SAndroid Build Coastguard Worker }
1122*89c4ff92SAndroid Build Coastguard Worker 
1123*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_Int8_PaddingSame_CpuRef_Test")
1124*89c4ff92SAndroid Build Coastguard Worker {
1125*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1126*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dInt8PaddingSameTest(backends);
1127*89c4ff92SAndroid Build Coastguard Worker }
1128*89c4ff92SAndroid Build Coastguard Worker 
1129*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_FP32_Relu_CpuRef_Test")
1130*89c4ff92SAndroid Build Coastguard Worker {
1131*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1132*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dFP32ReluTest(backends);
1133*89c4ff92SAndroid Build Coastguard Worker }
1134*89c4ff92SAndroid Build Coastguard Worker 
1135*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_Int8_Relu_CpuRef_Test")
1136*89c4ff92SAndroid Build Coastguard Worker {
1137*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1138*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dInt8ReluTest(backends);
1139*89c4ff92SAndroid Build Coastguard Worker }
1140*89c4ff92SAndroid Build Coastguard Worker 
1141*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_FP32_Relu6_CpuRef_Test")
1142*89c4ff92SAndroid Build Coastguard Worker {
1143*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1144*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dFP32Relu6Test(backends);
1145*89c4ff92SAndroid Build Coastguard Worker }
1146*89c4ff92SAndroid Build Coastguard Worker 
1147*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_Int8_Relu6_CpuRef_Test")
1148*89c4ff92SAndroid Build Coastguard Worker {
1149*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1150*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dInt8Relu6Test(backends);
1151*89c4ff92SAndroid Build Coastguard Worker }
1152*89c4ff92SAndroid Build Coastguard Worker 
1153*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_Uint8_PaddingSame_CpuRef_Test")
1154*89c4ff92SAndroid Build Coastguard Worker {
1155*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1156*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dUint8PaddingSameTest(backends);
1157*89c4ff92SAndroid Build Coastguard Worker }
1158*89c4ff92SAndroid Build Coastguard Worker 
1159*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_Uint8_Relu_CpuRef_Test")
1160*89c4ff92SAndroid Build Coastguard Worker {
1161*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1162*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dUint8ReluTest(backends);
1163*89c4ff92SAndroid Build Coastguard Worker }
1164*89c4ff92SAndroid Build Coastguard Worker 
1165*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_Int16_PaddingSame_CpuRef_Test")
1166*89c4ff92SAndroid Build Coastguard Worker {
1167*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1168*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dInt16PaddingSameTest(backends);
1169*89c4ff92SAndroid Build Coastguard Worker }
1170*89c4ff92SAndroid Build Coastguard Worker 
1171*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MaxPooling2d_Int16_Relu_CpuRef_Test")
1172*89c4ff92SAndroid Build Coastguard Worker {
1173*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1174*89c4ff92SAndroid Build Coastguard Worker     MaxPool2dInt16ReluTest(backends);
1175*89c4ff92SAndroid Build Coastguard Worker }
1176*89c4ff92SAndroid Build Coastguard Worker 
1177*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_FP32_PaddingValid_CpuRef_Test")
1178*89c4ff92SAndroid Build Coastguard Worker {
1179*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1180*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dFP32PaddingValidTest(backends);
1181*89c4ff92SAndroid Build Coastguard Worker }
1182*89c4ff92SAndroid Build Coastguard Worker 
1183*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_Int8_PaddingValid_CpuRef_Test")
1184*89c4ff92SAndroid Build Coastguard Worker {
1185*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1186*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dInt8PaddingValidTest(backends);
1187*89c4ff92SAndroid Build Coastguard Worker }
1188*89c4ff92SAndroid Build Coastguard Worker 
1189*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_FP32_PaddingSame_CpuRef_Test")
1190*89c4ff92SAndroid Build Coastguard Worker {
1191*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1192*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dFP32PaddingSameTest(backends);
1193*89c4ff92SAndroid Build Coastguard Worker }
1194*89c4ff92SAndroid Build Coastguard Worker 
1195*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_Int8_PaddingSame_CpuRef_Test")
1196*89c4ff92SAndroid Build Coastguard Worker {
1197*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1198*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dInt8PaddingSameTest(backends);
1199*89c4ff92SAndroid Build Coastguard Worker }
1200*89c4ff92SAndroid Build Coastguard Worker 
1201*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_FP32_Relu_CpuRef_Test")
1202*89c4ff92SAndroid Build Coastguard Worker {
1203*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1204*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dFP32ReluTest(backends);
1205*89c4ff92SAndroid Build Coastguard Worker }
1206*89c4ff92SAndroid Build Coastguard Worker 
1207*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_FP32_Relu6_CpuRef_Test")
1208*89c4ff92SAndroid Build Coastguard Worker {
1209*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1210*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dFP32Relu6Test(backends);
1211*89c4ff92SAndroid Build Coastguard Worker }
1212*89c4ff92SAndroid Build Coastguard Worker 
1213*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_Int8_Relu_CpuRef_Test")
1214*89c4ff92SAndroid Build Coastguard Worker {
1215*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1216*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dInt8ReluTest(backends);
1217*89c4ff92SAndroid Build Coastguard Worker }
1218*89c4ff92SAndroid Build Coastguard Worker 
1219*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_Int8_Relu6_CpuRef_Test")
1220*89c4ff92SAndroid Build Coastguard Worker {
1221*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1222*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dInt8Relu6Test(backends);
1223*89c4ff92SAndroid Build Coastguard Worker }
1224*89c4ff92SAndroid Build Coastguard Worker 
1225*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_Uint8_PaddingSame_CpuRef_Test")
1226*89c4ff92SAndroid Build Coastguard Worker {
1227*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1228*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dUint8PaddingSameTest(backends);
1229*89c4ff92SAndroid Build Coastguard Worker }
1230*89c4ff92SAndroid Build Coastguard Worker 
1231*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_Uint8_Relu_CpuRef_Test")
1232*89c4ff92SAndroid Build Coastguard Worker {
1233*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1234*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dUint8ReluTest(backends);
1235*89c4ff92SAndroid Build Coastguard Worker }
1236*89c4ff92SAndroid Build Coastguard Worker 
1237*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_Int16_PaddingSame_CpuRef_Test")
1238*89c4ff92SAndroid Build Coastguard Worker {
1239*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1240*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dInt16PaddingSameTest(backends);
1241*89c4ff92SAndroid Build Coastguard Worker }
1242*89c4ff92SAndroid Build Coastguard Worker 
1243*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("AveragePooling2d_Int16_Relu_CpuRef_Test")
1244*89c4ff92SAndroid Build Coastguard Worker {
1245*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1246*89c4ff92SAndroid Build Coastguard Worker     AveragePool2dInt16ReluTest(backends);
1247*89c4ff92SAndroid Build Coastguard Worker }
1248*89c4ff92SAndroid Build Coastguard Worker 
1249*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("L2Pooling2d_FP32_PaddingValid_CpuRef_Test")
1250*89c4ff92SAndroid Build Coastguard Worker {
1251*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1252*89c4ff92SAndroid Build Coastguard Worker     L2Pool2dFP32PaddingValidTest(backends);
1253*89c4ff92SAndroid Build Coastguard Worker }
1254*89c4ff92SAndroid Build Coastguard Worker 
1255*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("L2Pooling2d_FP32_PaddingSame_CpuRef_Test")
1256*89c4ff92SAndroid Build Coastguard Worker {
1257*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1258*89c4ff92SAndroid Build Coastguard Worker     L2Pool2dFP32PaddingSameTest(backends);
1259*89c4ff92SAndroid Build Coastguard Worker }
1260*89c4ff92SAndroid Build Coastguard Worker 
1261*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("L2Pooling2d_FP32_Relu_CpuRef_Test")
1262*89c4ff92SAndroid Build Coastguard Worker {
1263*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1264*89c4ff92SAndroid Build Coastguard Worker     L2Pool2dFP32ReluTest(backends);
1265*89c4ff92SAndroid Build Coastguard Worker }
1266*89c4ff92SAndroid Build Coastguard Worker 
1267*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("L2Pooling2d_FP32_Relu6_CpuRef_Test")
1268*89c4ff92SAndroid Build Coastguard Worker {
1269*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1270*89c4ff92SAndroid Build Coastguard Worker     L2Pool2dFP32Relu6Test(backends);
1271*89c4ff92SAndroid Build Coastguard Worker }
1272*89c4ff92SAndroid Build Coastguard Worker 
1273*89c4ff92SAndroid Build Coastguard Worker } // TEST_SUITE("Pooling2d_CpuRefTests")
1274*89c4ff92SAndroid Build Coastguard Worker 
1275*89c4ff92SAndroid Build Coastguard Worker } // namespace armnnDelegate