1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2021, 2023 Arm Ltd and Contributors. All rights reserved.
3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT
4*89c4ff92SAndroid Build Coastguard Worker //
5*89c4ff92SAndroid Build Coastguard Worker
6*89c4ff92SAndroid Build Coastguard Worker #include "PadTestHelper.hpp"
7*89c4ff92SAndroid Build Coastguard Worker
8*89c4ff92SAndroid Build Coastguard Worker #include <armnn_delegate.hpp>
9*89c4ff92SAndroid Build Coastguard Worker
10*89c4ff92SAndroid Build Coastguard Worker #include <flatbuffers/flatbuffers.h>
11*89c4ff92SAndroid Build Coastguard Worker #include <schema_generated.h>
12*89c4ff92SAndroid Build Coastguard Worker
13*89c4ff92SAndroid Build Coastguard Worker #include <doctest/doctest.h>
14*89c4ff92SAndroid Build Coastguard Worker
15*89c4ff92SAndroid Build Coastguard Worker namespace armnnDelegate
16*89c4ff92SAndroid Build Coastguard Worker {
17*89c4ff92SAndroid Build Coastguard Worker
MirrorPadSymmetric2dTest(std::vector<armnn::BackendId> & backends)18*89c4ff92SAndroid Build Coastguard Worker void MirrorPadSymmetric2dTest(std::vector<armnn::BackendId>& backends)
19*89c4ff92SAndroid Build Coastguard Worker {
20*89c4ff92SAndroid Build Coastguard Worker // Set input data
21*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape { 3, 3 };
22*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> outputShape { 7, 7 };
23*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> paddingShape { 2, 2 };
24*89c4ff92SAndroid Build Coastguard Worker
25*89c4ff92SAndroid Build Coastguard Worker std::vector<float> inputValues =
26*89c4ff92SAndroid Build Coastguard Worker {
27*89c4ff92SAndroid Build Coastguard Worker 1.0f, 2.0f, 3.0f,
28*89c4ff92SAndroid Build Coastguard Worker 4.0f, 5.0f, 6.0f,
29*89c4ff92SAndroid Build Coastguard Worker 7.0f, 8.0f, 9.0f
30*89c4ff92SAndroid Build Coastguard Worker };
31*89c4ff92SAndroid Build Coastguard Worker
32*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues =
33*89c4ff92SAndroid Build Coastguard Worker {
34*89c4ff92SAndroid Build Coastguard Worker 5.0f, 4.0f, 4.0f, 5.0f, 6.0f, 6.0f, 5.0f,
35*89c4ff92SAndroid Build Coastguard Worker 2.0f, 1.0f, 1.0f, 2.0f, 3.0f, 3.0f, 2.0f,
36*89c4ff92SAndroid Build Coastguard Worker 2.0f, 1.0f, 1.0f, 2.0f, 3.0f, 3.0f, 2.0f,
37*89c4ff92SAndroid Build Coastguard Worker 5.0f, 4.0f, 4.0f, 5.0f, 6.0f, 6.0f, 5.0f,
38*89c4ff92SAndroid Build Coastguard Worker 8.0f, 7.0f, 7.0f, 8.0f, 9.0f, 9.0f, 8.0f,
39*89c4ff92SAndroid Build Coastguard Worker 8.0f, 7.0f, 7.0f, 8.0f, 9.0f, 9.0f, 8.0f,
40*89c4ff92SAndroid Build Coastguard Worker 5.0f, 4.0f, 4.0f, 5.0f, 6.0f, 6.0f, 5.0f
41*89c4ff92SAndroid Build Coastguard Worker };
42*89c4ff92SAndroid Build Coastguard Worker
43*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> paddingDim = { 2, 2, 2, 2 };
44*89c4ff92SAndroid Build Coastguard Worker
45*89c4ff92SAndroid Build Coastguard Worker PadTest<float>(tflite::BuiltinOperator_MIRROR_PAD,
46*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
47*89c4ff92SAndroid Build Coastguard Worker backends,
48*89c4ff92SAndroid Build Coastguard Worker inputShape,
49*89c4ff92SAndroid Build Coastguard Worker paddingShape,
50*89c4ff92SAndroid Build Coastguard Worker outputShape,
51*89c4ff92SAndroid Build Coastguard Worker inputValues,
52*89c4ff92SAndroid Build Coastguard Worker paddingDim,
53*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues,
54*89c4ff92SAndroid Build Coastguard Worker 0, // Padding value - Not used in these tests.
55*89c4ff92SAndroid Build Coastguard Worker 1.0f, // Scale
56*89c4ff92SAndroid Build Coastguard Worker 0, // Offset
57*89c4ff92SAndroid Build Coastguard Worker tflite::MirrorPadMode_SYMMETRIC);
58*89c4ff92SAndroid Build Coastguard Worker }
59*89c4ff92SAndroid Build Coastguard Worker
MirrorPadReflect2dTest(std::vector<armnn::BackendId> & backends)60*89c4ff92SAndroid Build Coastguard Worker void MirrorPadReflect2dTest(std::vector<armnn::BackendId>& backends)
61*89c4ff92SAndroid Build Coastguard Worker {
62*89c4ff92SAndroid Build Coastguard Worker // Set input data
63*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape { 3, 3 };
64*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> outputShape { 7, 7 };
65*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> paddingShape { 2, 2 };
66*89c4ff92SAndroid Build Coastguard Worker
67*89c4ff92SAndroid Build Coastguard Worker std::vector<float> inputValues =
68*89c4ff92SAndroid Build Coastguard Worker {
69*89c4ff92SAndroid Build Coastguard Worker 1.0f, 2.0f, 3.0f,
70*89c4ff92SAndroid Build Coastguard Worker 4.0f, 5.0f, 6.0f,
71*89c4ff92SAndroid Build Coastguard Worker 7.0f, 8.0f, 9.0f
72*89c4ff92SAndroid Build Coastguard Worker };
73*89c4ff92SAndroid Build Coastguard Worker
74*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues =
75*89c4ff92SAndroid Build Coastguard Worker {
76*89c4ff92SAndroid Build Coastguard Worker 9.0f, 8.0f, 7.0f, 8.0f, 9.0f, 8.0f, 7.0f,
77*89c4ff92SAndroid Build Coastguard Worker 6.0f, 5.0f, 4.0f, 5.0f, 6.0f, 5.0f, 4.0f,
78*89c4ff92SAndroid Build Coastguard Worker 3.0f, 2.0f, 1.0f, 2.0f, 3.0f, 2.0f, 1.0f,
79*89c4ff92SAndroid Build Coastguard Worker 6.0f, 5.0f, 4.0f, 5.0f, 6.0f, 5.0f, 4.0f,
80*89c4ff92SAndroid Build Coastguard Worker 9.0f, 8.0f, 7.0f, 8.0f, 9.0f, 8.0f, 7.0f,
81*89c4ff92SAndroid Build Coastguard Worker 6.0f, 5.0f, 4.0f, 5.0f, 6.0f, 5.0f, 4.0f,
82*89c4ff92SAndroid Build Coastguard Worker 3.0f, 2.0f, 1.0f, 2.0f, 3.0f, 2.0f, 1.0f
83*89c4ff92SAndroid Build Coastguard Worker };
84*89c4ff92SAndroid Build Coastguard Worker
85*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> paddingDim = { 2, 2, 2, 2 };
86*89c4ff92SAndroid Build Coastguard Worker
87*89c4ff92SAndroid Build Coastguard Worker PadTest<float>(tflite::BuiltinOperator_MIRROR_PAD,
88*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
89*89c4ff92SAndroid Build Coastguard Worker backends,
90*89c4ff92SAndroid Build Coastguard Worker inputShape,
91*89c4ff92SAndroid Build Coastguard Worker paddingShape,
92*89c4ff92SAndroid Build Coastguard Worker outputShape,
93*89c4ff92SAndroid Build Coastguard Worker inputValues,
94*89c4ff92SAndroid Build Coastguard Worker paddingDim,
95*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues,
96*89c4ff92SAndroid Build Coastguard Worker 0, // Padding value - Not used in these tests.
97*89c4ff92SAndroid Build Coastguard Worker 1.0f, // Scale
98*89c4ff92SAndroid Build Coastguard Worker 0, // Offset
99*89c4ff92SAndroid Build Coastguard Worker tflite::MirrorPadMode_REFLECT);
100*89c4ff92SAndroid Build Coastguard Worker }
101*89c4ff92SAndroid Build Coastguard Worker
MirrorPadSymmetric3dTest(std::vector<armnn::BackendId> & backends)102*89c4ff92SAndroid Build Coastguard Worker void MirrorPadSymmetric3dTest(std::vector<armnn::BackendId>& backends)
103*89c4ff92SAndroid Build Coastguard Worker {
104*89c4ff92SAndroid Build Coastguard Worker // Set input data
105*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape { 2, 2, 2 };
106*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> outputShape { 4, 4, 4 };
107*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> paddingShape { 3, 2 };
108*89c4ff92SAndroid Build Coastguard Worker
109*89c4ff92SAndroid Build Coastguard Worker std::vector<float> inputValues =
110*89c4ff92SAndroid Build Coastguard Worker {
111*89c4ff92SAndroid Build Coastguard Worker // Channel 0, Height (2) x Width (2)
112*89c4ff92SAndroid Build Coastguard Worker 1.0f, 2.0f,
113*89c4ff92SAndroid Build Coastguard Worker 3.0f, 4.0f,
114*89c4ff92SAndroid Build Coastguard Worker
115*89c4ff92SAndroid Build Coastguard Worker // Channel 1, Height (2) x Width (2)
116*89c4ff92SAndroid Build Coastguard Worker 5.0f, 6.0f,
117*89c4ff92SAndroid Build Coastguard Worker 7.0f, 8.0f
118*89c4ff92SAndroid Build Coastguard Worker };
119*89c4ff92SAndroid Build Coastguard Worker
120*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues =
121*89c4ff92SAndroid Build Coastguard Worker {
122*89c4ff92SAndroid Build Coastguard Worker 1.0f, 1.0f, 2.0f, 2.0f,
123*89c4ff92SAndroid Build Coastguard Worker 1.0f, 1.0f, 2.0f, 2.0f,
124*89c4ff92SAndroid Build Coastguard Worker 3.0f, 3.0f, 4.0f, 4.0f,
125*89c4ff92SAndroid Build Coastguard Worker 3.0f, 3.0f, 4.0f, 4.0f,
126*89c4ff92SAndroid Build Coastguard Worker
127*89c4ff92SAndroid Build Coastguard Worker 1.0f, 1.0f, 2.0f, 2.0f,
128*89c4ff92SAndroid Build Coastguard Worker 1.0f, 1.0f, 2.0f, 2.0f,
129*89c4ff92SAndroid Build Coastguard Worker 3.0f, 3.0f, 4.0f, 4.0f,
130*89c4ff92SAndroid Build Coastguard Worker 3.0f, 3.0f, 4.0f, 4.0f,
131*89c4ff92SAndroid Build Coastguard Worker
132*89c4ff92SAndroid Build Coastguard Worker 5.0f, 5.0f, 6.0f, 6.0f,
133*89c4ff92SAndroid Build Coastguard Worker 5.0f, 5.0f, 6.0f, 6.0f,
134*89c4ff92SAndroid Build Coastguard Worker 7.0f, 7.0f, 8.0f, 8.0f,
135*89c4ff92SAndroid Build Coastguard Worker 7.0f, 7.0f, 8.0f, 8.0f,
136*89c4ff92SAndroid Build Coastguard Worker
137*89c4ff92SAndroid Build Coastguard Worker 5.0f, 5.0f, 6.0f, 6.0f,
138*89c4ff92SAndroid Build Coastguard Worker 5.0f, 5.0f, 6.0f, 6.0f,
139*89c4ff92SAndroid Build Coastguard Worker 7.0f, 7.0f, 8.0f, 8.0f,
140*89c4ff92SAndroid Build Coastguard Worker 7.0f, 7.0f, 8.0f, 8.0f
141*89c4ff92SAndroid Build Coastguard Worker };
142*89c4ff92SAndroid Build Coastguard Worker
143*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> paddingDim = { 1, 1, 1, 1, 1, 1 };
144*89c4ff92SAndroid Build Coastguard Worker
145*89c4ff92SAndroid Build Coastguard Worker PadTest<float>(tflite::BuiltinOperator_MIRROR_PAD,
146*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
147*89c4ff92SAndroid Build Coastguard Worker backends,
148*89c4ff92SAndroid Build Coastguard Worker inputShape,
149*89c4ff92SAndroid Build Coastguard Worker paddingShape,
150*89c4ff92SAndroid Build Coastguard Worker outputShape,
151*89c4ff92SAndroid Build Coastguard Worker inputValues,
152*89c4ff92SAndroid Build Coastguard Worker paddingDim,
153*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues,
154*89c4ff92SAndroid Build Coastguard Worker 0, // Padding value - Not used in these tests.
155*89c4ff92SAndroid Build Coastguard Worker 1.0f, // Scale
156*89c4ff92SAndroid Build Coastguard Worker 0, // Offset
157*89c4ff92SAndroid Build Coastguard Worker tflite::MirrorPadMode_SYMMETRIC);
158*89c4ff92SAndroid Build Coastguard Worker }
159*89c4ff92SAndroid Build Coastguard Worker
MirrorPadReflect3dTest(std::vector<armnn::BackendId> & backends)160*89c4ff92SAndroid Build Coastguard Worker void MirrorPadReflect3dTest(std::vector<armnn::BackendId>& backends)
161*89c4ff92SAndroid Build Coastguard Worker {
162*89c4ff92SAndroid Build Coastguard Worker // Set input data
163*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape { 2, 2, 2 };
164*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> outputShape { 4, 4, 4 };
165*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> paddingShape { 3, 2 };
166*89c4ff92SAndroid Build Coastguard Worker
167*89c4ff92SAndroid Build Coastguard Worker std::vector<float> inputValues =
168*89c4ff92SAndroid Build Coastguard Worker {
169*89c4ff92SAndroid Build Coastguard Worker // Channel 0, Height (2) x Width (2)
170*89c4ff92SAndroid Build Coastguard Worker 1.0f, 2.0f,
171*89c4ff92SAndroid Build Coastguard Worker 3.0f, 4.0f,
172*89c4ff92SAndroid Build Coastguard Worker
173*89c4ff92SAndroid Build Coastguard Worker // Channel 1, Height (2) x Width (2)
174*89c4ff92SAndroid Build Coastguard Worker 5.0f, 6.0f,
175*89c4ff92SAndroid Build Coastguard Worker 7.0f, 8.0f
176*89c4ff92SAndroid Build Coastguard Worker };
177*89c4ff92SAndroid Build Coastguard Worker
178*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues =
179*89c4ff92SAndroid Build Coastguard Worker {
180*89c4ff92SAndroid Build Coastguard Worker 8.0f, 7.0f, 8.0f, 7.0f,
181*89c4ff92SAndroid Build Coastguard Worker 6.0f, 5.0f, 6.0f, 5.0f,
182*89c4ff92SAndroid Build Coastguard Worker 8.0f, 7.0f, 8.0f, 7.0f,
183*89c4ff92SAndroid Build Coastguard Worker 6.0f, 5.0f, 6.0f, 5.0f,
184*89c4ff92SAndroid Build Coastguard Worker
185*89c4ff92SAndroid Build Coastguard Worker 4.0f, 3.0f, 4.0f, 3.0f,
186*89c4ff92SAndroid Build Coastguard Worker 2.0f, 1.0f, 2.0f, 1.0f,
187*89c4ff92SAndroid Build Coastguard Worker 4.0f, 3.0f, 4.0f, 3.0f,
188*89c4ff92SAndroid Build Coastguard Worker 2.0f, 1.0f, 2.0f, 1.0f,
189*89c4ff92SAndroid Build Coastguard Worker
190*89c4ff92SAndroid Build Coastguard Worker 8.0f, 7.0f, 8.0f, 7.0f,
191*89c4ff92SAndroid Build Coastguard Worker 6.0f, 5.0f, 6.0f, 5.0f,
192*89c4ff92SAndroid Build Coastguard Worker 8.0f, 7.0f, 8.0f, 7.0f,
193*89c4ff92SAndroid Build Coastguard Worker 6.0f, 5.0f, 6.0f, 5.0f,
194*89c4ff92SAndroid Build Coastguard Worker
195*89c4ff92SAndroid Build Coastguard Worker 4.0f, 3.0f, 4.0f, 3.0f,
196*89c4ff92SAndroid Build Coastguard Worker 2.0f, 1.0f, 2.0f, 1.0f,
197*89c4ff92SAndroid Build Coastguard Worker 4.0f, 3.0f, 4.0f, 3.0f,
198*89c4ff92SAndroid Build Coastguard Worker 2.0f, 1.0f, 2.0f, 1.0f
199*89c4ff92SAndroid Build Coastguard Worker };
200*89c4ff92SAndroid Build Coastguard Worker
201*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> paddingDim = { 1, 1, 1, 1, 1, 1 };
202*89c4ff92SAndroid Build Coastguard Worker
203*89c4ff92SAndroid Build Coastguard Worker PadTest<float>(tflite::BuiltinOperator_MIRROR_PAD,
204*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
205*89c4ff92SAndroid Build Coastguard Worker backends,
206*89c4ff92SAndroid Build Coastguard Worker inputShape,
207*89c4ff92SAndroid Build Coastguard Worker paddingShape,
208*89c4ff92SAndroid Build Coastguard Worker outputShape,
209*89c4ff92SAndroid Build Coastguard Worker inputValues,
210*89c4ff92SAndroid Build Coastguard Worker paddingDim,
211*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues,
212*89c4ff92SAndroid Build Coastguard Worker 0, // Padding value - Not used in these tests.
213*89c4ff92SAndroid Build Coastguard Worker 1.0f, // Scale
214*89c4ff92SAndroid Build Coastguard Worker 0, // Offset
215*89c4ff92SAndroid Build Coastguard Worker tflite::MirrorPadMode_REFLECT);
216*89c4ff92SAndroid Build Coastguard Worker }
217*89c4ff92SAndroid Build Coastguard Worker
MirrorPadSymmetricUint8Test(std::vector<armnn::BackendId> & backends)218*89c4ff92SAndroid Build Coastguard Worker void MirrorPadSymmetricUint8Test(std::vector<armnn::BackendId>& backends)
219*89c4ff92SAndroid Build Coastguard Worker {
220*89c4ff92SAndroid Build Coastguard Worker // Set input data
221*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape { 3, 3 };
222*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> outputShape { 5, 7 };
223*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> paddingShape { 2, 2 };
224*89c4ff92SAndroid Build Coastguard Worker
225*89c4ff92SAndroid Build Coastguard Worker std::vector<uint8_t> inputValues =
226*89c4ff92SAndroid Build Coastguard Worker {
227*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3,
228*89c4ff92SAndroid Build Coastguard Worker 4, 5, 6,
229*89c4ff92SAndroid Build Coastguard Worker 7, 8, 9
230*89c4ff92SAndroid Build Coastguard Worker };
231*89c4ff92SAndroid Build Coastguard Worker
232*89c4ff92SAndroid Build Coastguard Worker std::vector<uint8_t> expectedOutputValues =
233*89c4ff92SAndroid Build Coastguard Worker {
234*89c4ff92SAndroid Build Coastguard Worker 2, 1, 1, 2, 3, 3, 2,
235*89c4ff92SAndroid Build Coastguard Worker 2, 1, 1, 2, 3, 3, 2,
236*89c4ff92SAndroid Build Coastguard Worker 5, 4, 4, 5, 6, 6, 5,
237*89c4ff92SAndroid Build Coastguard Worker 8, 7, 7, 8, 9, 9, 8,
238*89c4ff92SAndroid Build Coastguard Worker 8, 7, 7, 8, 9, 9, 8,
239*89c4ff92SAndroid Build Coastguard Worker };
240*89c4ff92SAndroid Build Coastguard Worker
241*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> paddingDim = { 1, 1, 2, 2 };
242*89c4ff92SAndroid Build Coastguard Worker
243*89c4ff92SAndroid Build Coastguard Worker PadTest<uint8_t>(tflite::BuiltinOperator_MIRROR_PAD,
244*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_UINT8,
245*89c4ff92SAndroid Build Coastguard Worker backends,
246*89c4ff92SAndroid Build Coastguard Worker inputShape,
247*89c4ff92SAndroid Build Coastguard Worker paddingShape,
248*89c4ff92SAndroid Build Coastguard Worker outputShape,
249*89c4ff92SAndroid Build Coastguard Worker inputValues,
250*89c4ff92SAndroid Build Coastguard Worker paddingDim,
251*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues,
252*89c4ff92SAndroid Build Coastguard Worker 0, // Padding value - Not used in these tests.
253*89c4ff92SAndroid Build Coastguard Worker 1.0f, // Scale
254*89c4ff92SAndroid Build Coastguard Worker 1, // Offset
255*89c4ff92SAndroid Build Coastguard Worker tflite::MirrorPadMode_SYMMETRIC);
256*89c4ff92SAndroid Build Coastguard Worker }
257*89c4ff92SAndroid Build Coastguard Worker
MirrorPadReflectInt8Test(std::vector<armnn::BackendId> & backends)258*89c4ff92SAndroid Build Coastguard Worker void MirrorPadReflectInt8Test(std::vector<armnn::BackendId>& backends)
259*89c4ff92SAndroid Build Coastguard Worker {
260*89c4ff92SAndroid Build Coastguard Worker // Set input data
261*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape { 3, 3 };
262*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> outputShape { 7, 5 };
263*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> paddingShape { 2, 2 };
264*89c4ff92SAndroid Build Coastguard Worker
265*89c4ff92SAndroid Build Coastguard Worker std::vector<int8_t> inputValues =
266*89c4ff92SAndroid Build Coastguard Worker {
267*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3,
268*89c4ff92SAndroid Build Coastguard Worker 4, 5, 6,
269*89c4ff92SAndroid Build Coastguard Worker 7, 8, 9
270*89c4ff92SAndroid Build Coastguard Worker };
271*89c4ff92SAndroid Build Coastguard Worker
272*89c4ff92SAndroid Build Coastguard Worker std::vector<int8_t> expectedOutputValues =
273*89c4ff92SAndroid Build Coastguard Worker {
274*89c4ff92SAndroid Build Coastguard Worker 8, 7, 8, 9, 8,
275*89c4ff92SAndroid Build Coastguard Worker 5, 4, 5, 6, 5,
276*89c4ff92SAndroid Build Coastguard Worker 2, 1, 2, 3, 2,
277*89c4ff92SAndroid Build Coastguard Worker 5, 4, 5, 6, 5,
278*89c4ff92SAndroid Build Coastguard Worker 8, 7, 8, 9, 8,
279*89c4ff92SAndroid Build Coastguard Worker 5, 4, 5, 6, 5,
280*89c4ff92SAndroid Build Coastguard Worker 2, 1, 2, 3, 2
281*89c4ff92SAndroid Build Coastguard Worker };
282*89c4ff92SAndroid Build Coastguard Worker
283*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> paddingDim = { 2, 2, 1, 1 };
284*89c4ff92SAndroid Build Coastguard Worker
285*89c4ff92SAndroid Build Coastguard Worker PadTest<int8_t>(tflite::BuiltinOperator_MIRROR_PAD,
286*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_INT8,
287*89c4ff92SAndroid Build Coastguard Worker backends,
288*89c4ff92SAndroid Build Coastguard Worker inputShape,
289*89c4ff92SAndroid Build Coastguard Worker paddingShape,
290*89c4ff92SAndroid Build Coastguard Worker outputShape,
291*89c4ff92SAndroid Build Coastguard Worker inputValues,
292*89c4ff92SAndroid Build Coastguard Worker paddingDim,
293*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues,
294*89c4ff92SAndroid Build Coastguard Worker 0, // Padding value - Not used in these tests.
295*89c4ff92SAndroid Build Coastguard Worker 1.0f, // Scale
296*89c4ff92SAndroid Build Coastguard Worker 1, // Offset
297*89c4ff92SAndroid Build Coastguard Worker tflite::MirrorPadMode_REFLECT);
298*89c4ff92SAndroid Build Coastguard Worker }
299*89c4ff92SAndroid Build Coastguard Worker
300*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("MirrorPad_CpuRefTests")
301*89c4ff92SAndroid Build Coastguard Worker {
302*89c4ff92SAndroid Build Coastguard Worker
303*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MirrorPadSymmetric2d_CpuRef_Test")
304*89c4ff92SAndroid Build Coastguard Worker {
305*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
306*89c4ff92SAndroid Build Coastguard Worker MirrorPadSymmetric2dTest(backends);
307*89c4ff92SAndroid Build Coastguard Worker }
308*89c4ff92SAndroid Build Coastguard Worker
309*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MirrorPadReflect2d_CpuRef_Test")
310*89c4ff92SAndroid Build Coastguard Worker {
311*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
312*89c4ff92SAndroid Build Coastguard Worker MirrorPadReflect2dTest(backends);
313*89c4ff92SAndroid Build Coastguard Worker }
314*89c4ff92SAndroid Build Coastguard Worker
315*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MirrorPadSymmetric3d_CpuRef_Test")
316*89c4ff92SAndroid Build Coastguard Worker {
317*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
318*89c4ff92SAndroid Build Coastguard Worker MirrorPadSymmetric3dTest(backends);
319*89c4ff92SAndroid Build Coastguard Worker }
320*89c4ff92SAndroid Build Coastguard Worker
321*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MirrorPadReflect3d_CpuRef_Test")
322*89c4ff92SAndroid Build Coastguard Worker {
323*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
324*89c4ff92SAndroid Build Coastguard Worker MirrorPadReflect3dTest(backends);
325*89c4ff92SAndroid Build Coastguard Worker }
326*89c4ff92SAndroid Build Coastguard Worker
327*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MirrorPadSymmetricUint8_CpuRef_Test")
328*89c4ff92SAndroid Build Coastguard Worker {
329*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
330*89c4ff92SAndroid Build Coastguard Worker MirrorPadSymmetricUint8Test(backends);
331*89c4ff92SAndroid Build Coastguard Worker }
332*89c4ff92SAndroid Build Coastguard Worker
333*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MirrorPadSymmetricInt8_CpuRef_Test")
334*89c4ff92SAndroid Build Coastguard Worker {
335*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
336*89c4ff92SAndroid Build Coastguard Worker MirrorPadReflectInt8Test(backends);
337*89c4ff92SAndroid Build Coastguard Worker }
338*89c4ff92SAndroid Build Coastguard Worker
339*89c4ff92SAndroid Build Coastguard Worker } // TEST_SUITE("MirrorPad_CpuRefTests")
340*89c4ff92SAndroid Build Coastguard Worker
341*89c4ff92SAndroid Build Coastguard Worker } // namespace armnnDelegate