1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2020-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 "ElementwiseBinaryTestHelper.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
AddFP32Test(std::vector<armnn::BackendId> & backends)22*89c4ff92SAndroid Build Coastguard Worker void AddFP32Test(std::vector<armnn::BackendId>& backends)
23*89c4ff92SAndroid Build Coastguard Worker {
24*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input0Shape { 2, 2, 2, 3 };
25*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input1Shape { 2, 2, 2, 3 };
26*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> expectedOutputShape { 2, 2, 2, 3 };
27*89c4ff92SAndroid Build Coastguard Worker
28*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input0Values =
29*89c4ff92SAndroid Build Coastguard Worker {
30*89c4ff92SAndroid Build Coastguard Worker 0.0f, 2.0f, 1.0f,
31*89c4ff92SAndroid Build Coastguard Worker 0.2f, 1.0f, 2.0f,
32*89c4ff92SAndroid Build Coastguard Worker
33*89c4ff92SAndroid Build Coastguard Worker 1.0f, 2.0f, 1.0f,
34*89c4ff92SAndroid Build Coastguard Worker 0.2f, 1.0f, 2.0f,
35*89c4ff92SAndroid Build Coastguard Worker
36*89c4ff92SAndroid Build Coastguard Worker 0.0f, 2.0f, 1.0f,
37*89c4ff92SAndroid Build Coastguard Worker 4.2f, 1.0f, 2.0f,
38*89c4ff92SAndroid Build Coastguard Worker
39*89c4ff92SAndroid Build Coastguard Worker 0.0f, 0.0f, 1.0f,
40*89c4ff92SAndroid Build Coastguard Worker 0.2f, 1.0f, 2.0f,
41*89c4ff92SAndroid Build Coastguard Worker };
42*89c4ff92SAndroid Build Coastguard Worker
43*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input1Values =
44*89c4ff92SAndroid Build Coastguard Worker {
45*89c4ff92SAndroid Build Coastguard Worker 1.0f, 2.0f, 1.0f,
46*89c4ff92SAndroid Build Coastguard Worker 0.0f, 1.0f, 2.0f,
47*89c4ff92SAndroid Build Coastguard Worker
48*89c4ff92SAndroid Build Coastguard Worker 1.0f, 2.0f, -2.0f,
49*89c4ff92SAndroid Build Coastguard Worker 0.2f, 1.0f, 2.0f,
50*89c4ff92SAndroid Build Coastguard Worker
51*89c4ff92SAndroid Build Coastguard Worker 0.0f, 2.0f, 1.0f,
52*89c4ff92SAndroid Build Coastguard Worker 4.2f, 0.0f, -3.0f,
53*89c4ff92SAndroid Build Coastguard Worker
54*89c4ff92SAndroid Build Coastguard Worker 0.0f, 0.0f, 1.0f,
55*89c4ff92SAndroid Build Coastguard Worker 0.7f, 1.0f, 5.0f,
56*89c4ff92SAndroid Build Coastguard Worker };
57*89c4ff92SAndroid Build Coastguard Worker
58*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues =
59*89c4ff92SAndroid Build Coastguard Worker {
60*89c4ff92SAndroid Build Coastguard Worker 1.0f, 4.0f, 2.0f,
61*89c4ff92SAndroid Build Coastguard Worker 0.2f, 2.0f, 4.0f,
62*89c4ff92SAndroid Build Coastguard Worker
63*89c4ff92SAndroid Build Coastguard Worker 2.0f, 4.0f, -1.0f,
64*89c4ff92SAndroid Build Coastguard Worker 0.4f, 2.0f, 4.0f,
65*89c4ff92SAndroid Build Coastguard Worker
66*89c4ff92SAndroid Build Coastguard Worker 0.0f, 4.0f, 2.0f,
67*89c4ff92SAndroid Build Coastguard Worker 8.4f, 1.0f, -1.0f,
68*89c4ff92SAndroid Build Coastguard Worker
69*89c4ff92SAndroid Build Coastguard Worker 0.0f, 0.0f, 2.0f,
70*89c4ff92SAndroid Build Coastguard Worker 0.9f, 2.0f, 7.0f,
71*89c4ff92SAndroid Build Coastguard Worker };
72*89c4ff92SAndroid Build Coastguard Worker
73*89c4ff92SAndroid Build Coastguard Worker ElementwiseBinaryTest<float>(tflite::BuiltinOperator_ADD,
74*89c4ff92SAndroid Build Coastguard Worker tflite::ActivationFunctionType_NONE,
75*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
76*89c4ff92SAndroid Build Coastguard Worker backends,
77*89c4ff92SAndroid Build Coastguard Worker input0Shape,
78*89c4ff92SAndroid Build Coastguard Worker input1Shape,
79*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape,
80*89c4ff92SAndroid Build Coastguard Worker input0Values,
81*89c4ff92SAndroid Build Coastguard Worker input1Values,
82*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues);
83*89c4ff92SAndroid Build Coastguard Worker }
84*89c4ff92SAndroid Build Coastguard Worker
AddBroadcastTest(std::vector<armnn::BackendId> & backends)85*89c4ff92SAndroid Build Coastguard Worker void AddBroadcastTest(std::vector<armnn::BackendId>& backends)
86*89c4ff92SAndroid Build Coastguard Worker {
87*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input0Shape { 1, 3, 2, 1 };
88*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input1Shape { 1, 1, 2, 3 };
89*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> expectedOutputShape { 1, 3, 2, 3 };
90*89c4ff92SAndroid Build Coastguard Worker
91*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input0Values
92*89c4ff92SAndroid Build Coastguard Worker {
93*89c4ff92SAndroid Build Coastguard Worker 0.0f,
94*89c4ff92SAndroid Build Coastguard Worker 1.0f,
95*89c4ff92SAndroid Build Coastguard Worker
96*89c4ff92SAndroid Build Coastguard Worker 2.0f,
97*89c4ff92SAndroid Build Coastguard Worker 3.0f,
98*89c4ff92SAndroid Build Coastguard Worker
99*89c4ff92SAndroid Build Coastguard Worker 4.0f,
100*89c4ff92SAndroid Build Coastguard Worker 5.0f,
101*89c4ff92SAndroid Build Coastguard Worker };
102*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input1Values
103*89c4ff92SAndroid Build Coastguard Worker {
104*89c4ff92SAndroid Build Coastguard Worker 0.5f, 1.5f, 2.5f,
105*89c4ff92SAndroid Build Coastguard Worker 3.5f, 4.5f, 5.5f,
106*89c4ff92SAndroid Build Coastguard Worker };
107*89c4ff92SAndroid Build Coastguard Worker // Set output data
108*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues
109*89c4ff92SAndroid Build Coastguard Worker {
110*89c4ff92SAndroid Build Coastguard Worker 0.5f, 1.5f, 2.5f,
111*89c4ff92SAndroid Build Coastguard Worker 4.5f, 5.5f, 6.5f,
112*89c4ff92SAndroid Build Coastguard Worker
113*89c4ff92SAndroid Build Coastguard Worker 2.5f, 3.5f, 4.5f,
114*89c4ff92SAndroid Build Coastguard Worker 6.5f, 7.5f, 8.5f,
115*89c4ff92SAndroid Build Coastguard Worker
116*89c4ff92SAndroid Build Coastguard Worker 4.5f, 5.5f, 6.5f,
117*89c4ff92SAndroid Build Coastguard Worker 8.5f, 9.5f, 10.5f,
118*89c4ff92SAndroid Build Coastguard Worker };
119*89c4ff92SAndroid Build Coastguard Worker
120*89c4ff92SAndroid Build Coastguard Worker ElementwiseBinaryTest<float>(tflite::BuiltinOperator_ADD,
121*89c4ff92SAndroid Build Coastguard Worker tflite::ActivationFunctionType_NONE,
122*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
123*89c4ff92SAndroid Build Coastguard Worker backends,
124*89c4ff92SAndroid Build Coastguard Worker input0Shape,
125*89c4ff92SAndroid Build Coastguard Worker input1Shape,
126*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape,
127*89c4ff92SAndroid Build Coastguard Worker input0Values,
128*89c4ff92SAndroid Build Coastguard Worker input1Values,
129*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues);
130*89c4ff92SAndroid Build Coastguard Worker }
131*89c4ff92SAndroid Build Coastguard Worker
AddConstInputTest(std::vector<armnn::BackendId> & backends)132*89c4ff92SAndroid Build Coastguard Worker void AddConstInputTest(std::vector<armnn::BackendId>& backends)
133*89c4ff92SAndroid Build Coastguard Worker {
134*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input0Shape { 1, 3, 2, 1 };
135*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input1Shape { 1 };
136*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> expectedOutputShape { 1, 3, 2, 1 };
137*89c4ff92SAndroid Build Coastguard Worker
138*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input0Values
139*89c4ff92SAndroid Build Coastguard Worker {
140*89c4ff92SAndroid Build Coastguard Worker 0.0f,
141*89c4ff92SAndroid Build Coastguard Worker 1.0f,
142*89c4ff92SAndroid Build Coastguard Worker
143*89c4ff92SAndroid Build Coastguard Worker 2.0f,
144*89c4ff92SAndroid Build Coastguard Worker 3.0f,
145*89c4ff92SAndroid Build Coastguard Worker
146*89c4ff92SAndroid Build Coastguard Worker 4.0f,
147*89c4ff92SAndroid Build Coastguard Worker 5.0f,
148*89c4ff92SAndroid Build Coastguard Worker };
149*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input1Values
150*89c4ff92SAndroid Build Coastguard Worker {
151*89c4ff92SAndroid Build Coastguard Worker 0.5f
152*89c4ff92SAndroid Build Coastguard Worker };
153*89c4ff92SAndroid Build Coastguard Worker // Set output data
154*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues
155*89c4ff92SAndroid Build Coastguard Worker {
156*89c4ff92SAndroid Build Coastguard Worker 0.5f,
157*89c4ff92SAndroid Build Coastguard Worker 1.5f,
158*89c4ff92SAndroid Build Coastguard Worker
159*89c4ff92SAndroid Build Coastguard Worker 2.5f,
160*89c4ff92SAndroid Build Coastguard Worker 3.5f,
161*89c4ff92SAndroid Build Coastguard Worker
162*89c4ff92SAndroid Build Coastguard Worker 4.5f,
163*89c4ff92SAndroid Build Coastguard Worker 5.5f,
164*89c4ff92SAndroid Build Coastguard Worker };
165*89c4ff92SAndroid Build Coastguard Worker
166*89c4ff92SAndroid Build Coastguard Worker ElementwiseBinaryTest<float>(tflite::BuiltinOperator_ADD,
167*89c4ff92SAndroid Build Coastguard Worker tflite::ActivationFunctionType_NONE,
168*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
169*89c4ff92SAndroid Build Coastguard Worker backends,
170*89c4ff92SAndroid Build Coastguard Worker input0Shape,
171*89c4ff92SAndroid Build Coastguard Worker input1Shape,
172*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape,
173*89c4ff92SAndroid Build Coastguard Worker input0Values,
174*89c4ff92SAndroid Build Coastguard Worker input1Values,
175*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues,
176*89c4ff92SAndroid Build Coastguard Worker 1.0f,
177*89c4ff92SAndroid Build Coastguard Worker 0,
178*89c4ff92SAndroid Build Coastguard Worker true);
179*89c4ff92SAndroid Build Coastguard Worker }
180*89c4ff92SAndroid Build Coastguard Worker
AddActivationTest(std::vector<armnn::BackendId> & backends)181*89c4ff92SAndroid Build Coastguard Worker void AddActivationTest(std::vector<armnn::BackendId>& backends)
182*89c4ff92SAndroid Build Coastguard Worker {
183*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input0Shape { 1, 2, 2, 1 };
184*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input1Shape { 1, 2, 2, 1 };
185*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> expectedOutputShape { 1, 2, 2, 1 };
186*89c4ff92SAndroid Build Coastguard Worker
187*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input0Values { 4.0f, 0.8f, 0.7f, -0.8f };
188*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input1Values { 0.7f, -1.2f, 0.8f, 0.5f };
189*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues { 4.7f, 0.0f, 1.5f, 0.0f };
190*89c4ff92SAndroid Build Coastguard Worker
191*89c4ff92SAndroid Build Coastguard Worker ElementwiseBinaryTest<float>(tflite::BuiltinOperator_ADD,
192*89c4ff92SAndroid Build Coastguard Worker tflite::ActivationFunctionType_RELU,
193*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
194*89c4ff92SAndroid Build Coastguard Worker backends,
195*89c4ff92SAndroid Build Coastguard Worker input0Shape,
196*89c4ff92SAndroid Build Coastguard Worker input1Shape,
197*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape,
198*89c4ff92SAndroid Build Coastguard Worker input0Values,
199*89c4ff92SAndroid Build Coastguard Worker input1Values,
200*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues);
201*89c4ff92SAndroid Build Coastguard Worker }
202*89c4ff92SAndroid Build Coastguard Worker
AddUint8Test(std::vector<armnn::BackendId> & backends)203*89c4ff92SAndroid Build Coastguard Worker void AddUint8Test(std::vector<armnn::BackendId>& backends)
204*89c4ff92SAndroid Build Coastguard Worker {
205*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input0Shape { 1, 2, 2, 3 };
206*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input1Shape { 1, 2, 2, 3 };
207*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> expectedOutputShape { 1, 2, 2, 3 };
208*89c4ff92SAndroid Build Coastguard Worker
209*89c4ff92SAndroid Build Coastguard Worker std::vector<uint8_t> input0Values =
210*89c4ff92SAndroid Build Coastguard Worker {
211*89c4ff92SAndroid Build Coastguard Worker 63, 35, 77, 70, 56, 112,
212*89c4ff92SAndroid Build Coastguard Worker 203, 28, 252, 168, 245, 91
213*89c4ff92SAndroid Build Coastguard Worker };
214*89c4ff92SAndroid Build Coastguard Worker
215*89c4ff92SAndroid Build Coastguard Worker std::vector<uint8_t> input1Values =
216*89c4ff92SAndroid Build Coastguard Worker {
217*89c4ff92SAndroid Build Coastguard Worker 21, 7, 175, 231, 175, 210,
218*89c4ff92SAndroid Build Coastguard Worker 126, 161, 63, 21, 105, 126
219*89c4ff92SAndroid Build Coastguard Worker };
220*89c4ff92SAndroid Build Coastguard Worker
221*89c4ff92SAndroid Build Coastguard Worker std::vector<uint8_t> expectedOutputValues =
222*89c4ff92SAndroid Build Coastguard Worker {
223*89c4ff92SAndroid Build Coastguard Worker 81, 39, 249, 255, 228, 255,
224*89c4ff92SAndroid Build Coastguard Worker 255, 186, 255, 186, 255, 214,
225*89c4ff92SAndroid Build Coastguard Worker };
226*89c4ff92SAndroid Build Coastguard Worker
227*89c4ff92SAndroid Build Coastguard Worker ElementwiseBinaryTest<uint8_t>(tflite::BuiltinOperator_ADD,
228*89c4ff92SAndroid Build Coastguard Worker tflite::ActivationFunctionType_NONE,
229*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_UINT8,
230*89c4ff92SAndroid Build Coastguard Worker backends,
231*89c4ff92SAndroid Build Coastguard Worker input0Shape,
232*89c4ff92SAndroid Build Coastguard Worker input1Shape,
233*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape,
234*89c4ff92SAndroid Build Coastguard Worker input0Values,
235*89c4ff92SAndroid Build Coastguard Worker input1Values,
236*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues, 7.0f, 3);
237*89c4ff92SAndroid Build Coastguard Worker }
238*89c4ff92SAndroid Build Coastguard Worker
DivFP32Test(std::vector<armnn::BackendId> & backends)239*89c4ff92SAndroid Build Coastguard Worker void DivFP32Test(std::vector<armnn::BackendId>& backends)
240*89c4ff92SAndroid Build Coastguard Worker {
241*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input0Shape { 2, 2, 2, 2 };
242*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input1Shape { 2, 2, 2, 2 };
243*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> expectedOutputShape { 2, 2, 2, 2 };
244*89c4ff92SAndroid Build Coastguard Worker
245*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input0Values =
246*89c4ff92SAndroid Build Coastguard Worker {
247*89c4ff92SAndroid Build Coastguard Worker 2.f, 2.f, 2.f, 2.f, 3.f, 3.f, 3.f, 3.f,
248*89c4ff92SAndroid Build Coastguard Worker 4.f, 4.f, 4.f, 4.f, 5.f, 5.f, 5.f, 5.f
249*89c4ff92SAndroid Build Coastguard Worker
250*89c4ff92SAndroid Build Coastguard Worker };
251*89c4ff92SAndroid Build Coastguard Worker
252*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input1Values =
253*89c4ff92SAndroid Build Coastguard Worker {
254*89c4ff92SAndroid Build Coastguard Worker 1.f, 1.f, 1.f, 1.f, 2.f, 2.f, 2.f, 2.f,
255*89c4ff92SAndroid Build Coastguard Worker 4.f, 4.f, 4.f, 4.f, 4.f, 4.f, 4.f, 4.f
256*89c4ff92SAndroid Build Coastguard Worker };
257*89c4ff92SAndroid Build Coastguard Worker
258*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues =
259*89c4ff92SAndroid Build Coastguard Worker {
260*89c4ff92SAndroid Build Coastguard Worker 2.f, 2.f, 2.f, 2.f, 1.50f, 1.50f, 1.50f, 1.50f,
261*89c4ff92SAndroid Build Coastguard Worker 1.f, 1.f, 1.f, 1.f, 1.25f, 1.25f, 1.25f, 1.25f
262*89c4ff92SAndroid Build Coastguard Worker };
263*89c4ff92SAndroid Build Coastguard Worker
264*89c4ff92SAndroid Build Coastguard Worker ElementwiseBinaryTest<float>(tflite::BuiltinOperator_DIV,
265*89c4ff92SAndroid Build Coastguard Worker tflite::ActivationFunctionType_NONE,
266*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
267*89c4ff92SAndroid Build Coastguard Worker backends,
268*89c4ff92SAndroid Build Coastguard Worker input0Shape,
269*89c4ff92SAndroid Build Coastguard Worker input1Shape,
270*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape,
271*89c4ff92SAndroid Build Coastguard Worker input0Values,
272*89c4ff92SAndroid Build Coastguard Worker input1Values,
273*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues);
274*89c4ff92SAndroid Build Coastguard Worker }
275*89c4ff92SAndroid Build Coastguard Worker
DivBroadcastTest(std::vector<armnn::BackendId> & backends)276*89c4ff92SAndroid Build Coastguard Worker void DivBroadcastTest(std::vector<armnn::BackendId>& backends)
277*89c4ff92SAndroid Build Coastguard Worker {
278*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input0Shape { 1, 2, 2, 2 };
279*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input1Shape { 1, 1, 1, 1 };
280*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> expectedOutputShape { 1, 2, 2, 2 };
281*89c4ff92SAndroid Build Coastguard Worker
282*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input0Values = { 2, 4, 6, 8, 10, 12, 14, 16 };
283*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input1Values = { 2 };
284*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues = { 1, 2, 3, 4, 5, 6, 7, 8 };
285*89c4ff92SAndroid Build Coastguard Worker
286*89c4ff92SAndroid Build Coastguard Worker ElementwiseBinaryTest<float>(tflite::BuiltinOperator_DIV,
287*89c4ff92SAndroid Build Coastguard Worker tflite::ActivationFunctionType_NONE,
288*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
289*89c4ff92SAndroid Build Coastguard Worker backends,
290*89c4ff92SAndroid Build Coastguard Worker input0Shape,
291*89c4ff92SAndroid Build Coastguard Worker input1Shape,
292*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape,
293*89c4ff92SAndroid Build Coastguard Worker input0Values,
294*89c4ff92SAndroid Build Coastguard Worker input1Values,
295*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues);
296*89c4ff92SAndroid Build Coastguard Worker }
297*89c4ff92SAndroid Build Coastguard Worker
DivUint8Test(std::vector<armnn::BackendId> & backends)298*89c4ff92SAndroid Build Coastguard Worker void DivUint8Test(std::vector<armnn::BackendId>& backends)
299*89c4ff92SAndroid Build Coastguard Worker {
300*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input0Shape { 2, 2, 2, 2 };
301*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input1Shape { 2, 2, 2, 2 };
302*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> expectedOutputShape { 2, 2, 2, 2 };
303*89c4ff92SAndroid Build Coastguard Worker
304*89c4ff92SAndroid Build Coastguard Worker std::vector<uint8_t> input0Values =
305*89c4ff92SAndroid Build Coastguard Worker {
306*89c4ff92SAndroid Build Coastguard Worker 2, 2, 2, 2, 3, 3, 3, 3,
307*89c4ff92SAndroid Build Coastguard Worker 4, 4, 4, 4, 5, 5, 5, 5
308*89c4ff92SAndroid Build Coastguard Worker
309*89c4ff92SAndroid Build Coastguard Worker };
310*89c4ff92SAndroid Build Coastguard Worker
311*89c4ff92SAndroid Build Coastguard Worker std::vector<uint8_t> input1Values =
312*89c4ff92SAndroid Build Coastguard Worker {
313*89c4ff92SAndroid Build Coastguard Worker 1, 1, 1, 1, 2, 2, 2, 2,
314*89c4ff92SAndroid Build Coastguard Worker 4, 4, 4, 4, 4, 4, 4, 4
315*89c4ff92SAndroid Build Coastguard Worker };
316*89c4ff92SAndroid Build Coastguard Worker
317*89c4ff92SAndroid Build Coastguard Worker std::vector<uint8_t> expectedOutputValues =
318*89c4ff92SAndroid Build Coastguard Worker {
319*89c4ff92SAndroid Build Coastguard Worker 8, 8, 8, 8, 6, 6, 6, 6,
320*89c4ff92SAndroid Build Coastguard Worker 4, 4, 4, 4, 5, 5, 5, 5
321*89c4ff92SAndroid Build Coastguard Worker };
322*89c4ff92SAndroid Build Coastguard Worker
323*89c4ff92SAndroid Build Coastguard Worker ElementwiseBinaryTest<uint8_t>(tflite::BuiltinOperator_DIV,
324*89c4ff92SAndroid Build Coastguard Worker tflite::ActivationFunctionType_NONE,
325*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_UINT8,
326*89c4ff92SAndroid Build Coastguard Worker backends,
327*89c4ff92SAndroid Build Coastguard Worker input0Shape,
328*89c4ff92SAndroid Build Coastguard Worker input1Shape,
329*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape,
330*89c4ff92SAndroid Build Coastguard Worker input0Values,
331*89c4ff92SAndroid Build Coastguard Worker input1Values,
332*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues, 0.25f, 0);
333*89c4ff92SAndroid Build Coastguard Worker }
334*89c4ff92SAndroid Build Coastguard Worker
FloorDivFP32Test(std::vector<armnn::BackendId> & backends)335*89c4ff92SAndroid Build Coastguard Worker void FloorDivFP32Test(std::vector<armnn::BackendId>& backends)
336*89c4ff92SAndroid Build Coastguard Worker {
337*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input0Shape { 2, 2, 2, 2 };
338*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input1Shape { 2, 2, 2, 2 };
339*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> expectedOutputShape { 2, 2, 2, 2 };
340*89c4ff92SAndroid Build Coastguard Worker
341*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input0Values =
342*89c4ff92SAndroid Build Coastguard Worker {
343*89c4ff92SAndroid Build Coastguard Worker -37.5f, -15.2f, -8.76f, -2.0f, -2.6f, -1.0f, -0.8f, 0.0f,
344*89c4ff92SAndroid Build Coastguard Worker 4.0f, 1.6f, 2.0f, 5.2f, 6.0f, 35.04f, 60.8f, 150.0f
345*89c4ff92SAndroid Build Coastguard Worker };
346*89c4ff92SAndroid Build Coastguard Worker
347*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input1Values =
348*89c4ff92SAndroid Build Coastguard Worker {
349*89c4ff92SAndroid Build Coastguard Worker 1.f, 1.f, 1.f, 1.f, 2.f, 2.f, 2.f, 2.f,
350*89c4ff92SAndroid Build Coastguard Worker 4.f, 4.f, 4.f, 4.f, 4.f, 4.f, 4.f, 4.f
351*89c4ff92SAndroid Build Coastguard Worker };
352*89c4ff92SAndroid Build Coastguard Worker
353*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues =
354*89c4ff92SAndroid Build Coastguard Worker {
355*89c4ff92SAndroid Build Coastguard Worker -38.0f, -16.0f, -9.0f, -2.0f, -2.0f, -1.0f, -1.0f, 0.0f,
356*89c4ff92SAndroid Build Coastguard Worker 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 8.0f, 15.0f, 37.0f
357*89c4ff92SAndroid Build Coastguard Worker };
358*89c4ff92SAndroid Build Coastguard Worker
359*89c4ff92SAndroid Build Coastguard Worker ElementwiseBinaryTest<float>(tflite::BuiltinOperator_FLOOR_DIV,
360*89c4ff92SAndroid Build Coastguard Worker tflite::ActivationFunctionType_NONE,
361*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
362*89c4ff92SAndroid Build Coastguard Worker backends,
363*89c4ff92SAndroid Build Coastguard Worker input0Shape,
364*89c4ff92SAndroid Build Coastguard Worker input1Shape,
365*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape,
366*89c4ff92SAndroid Build Coastguard Worker input0Values,
367*89c4ff92SAndroid Build Coastguard Worker input1Values,
368*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues);
369*89c4ff92SAndroid Build Coastguard Worker
370*89c4ff92SAndroid Build Coastguard Worker }
371*89c4ff92SAndroid Build Coastguard Worker
MaxFP32Test(std::vector<armnn::BackendId> & backends)372*89c4ff92SAndroid Build Coastguard Worker void MaxFP32Test(std::vector<armnn::BackendId>& backends)
373*89c4ff92SAndroid Build Coastguard Worker {
374*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input0Shape { 2, 2, 2, 2 };
375*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input1Shape { 2, 2, 2, 2 };
376*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> expectedOutputShape { 2, 2, 2, 2 };
377*89c4ff92SAndroid Build Coastguard Worker
378*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input0Values =
379*89c4ff92SAndroid Build Coastguard Worker {
380*89c4ff92SAndroid Build Coastguard Worker 1.f, 1.f, 5.f, 1.f, 2.f, 2.f, 7.f, 2.f,
381*89c4ff92SAndroid Build Coastguard Worker 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
382*89c4ff92SAndroid Build Coastguard Worker
383*89c4ff92SAndroid Build Coastguard Worker };
384*89c4ff92SAndroid Build Coastguard Worker
385*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input1Values =
386*89c4ff92SAndroid Build Coastguard Worker {
387*89c4ff92SAndroid Build Coastguard Worker 2.f, 2.f, 2.f, 2.f, 3.f, 3.f, 3.f, 3.f,
388*89c4ff92SAndroid Build Coastguard Worker 4.f, 4.f, 4.f, 4.f, 5.f, 5.f, 5.f, 5.f
389*89c4ff92SAndroid Build Coastguard Worker };
390*89c4ff92SAndroid Build Coastguard Worker
391*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues =
392*89c4ff92SAndroid Build Coastguard Worker {
393*89c4ff92SAndroid Build Coastguard Worker 2.f, 2.f, 5.f, 2.f, 3.f, 3.f, 7.f, 3.f,
394*89c4ff92SAndroid Build Coastguard Worker 4.f, 4.f, 4.f, 4.f, 5.f, 5.f, 5.f, 5.f
395*89c4ff92SAndroid Build Coastguard Worker };
396*89c4ff92SAndroid Build Coastguard Worker
397*89c4ff92SAndroid Build Coastguard Worker ElementwiseBinaryTest<float>(tflite::BuiltinOperator_MAXIMUM,
398*89c4ff92SAndroid Build Coastguard Worker tflite::ActivationFunctionType_NONE,
399*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
400*89c4ff92SAndroid Build Coastguard Worker backends,
401*89c4ff92SAndroid Build Coastguard Worker input0Shape,
402*89c4ff92SAndroid Build Coastguard Worker input1Shape,
403*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape,
404*89c4ff92SAndroid Build Coastguard Worker input0Values,
405*89c4ff92SAndroid Build Coastguard Worker input1Values,
406*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues);
407*89c4ff92SAndroid Build Coastguard Worker }
408*89c4ff92SAndroid Build Coastguard Worker
MaxBroadcastTest(std::vector<armnn::BackendId> & backends)409*89c4ff92SAndroid Build Coastguard Worker void MaxBroadcastTest(std::vector<armnn::BackendId>& backends)
410*89c4ff92SAndroid Build Coastguard Worker {
411*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input0Shape { 1, 2, 2, 2 };
412*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input1Shape { 1, 1, 1, 1 };
413*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> expectedOutputShape { 1, 2, 2, 2 };
414*89c4ff92SAndroid Build Coastguard Worker
415*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input0Values = { 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f };
416*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input1Values = { 4.f };
417*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues = { 4.f, 4.f, 4.f, 4.f, 5.f, 6.f, 7.f, 8.f };
418*89c4ff92SAndroid Build Coastguard Worker
419*89c4ff92SAndroid Build Coastguard Worker ElementwiseBinaryTest<float>(tflite::BuiltinOperator_MAXIMUM,
420*89c4ff92SAndroid Build Coastguard Worker tflite::ActivationFunctionType_NONE,
421*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
422*89c4ff92SAndroid Build Coastguard Worker backends,
423*89c4ff92SAndroid Build Coastguard Worker input0Shape,
424*89c4ff92SAndroid Build Coastguard Worker input1Shape,
425*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape,
426*89c4ff92SAndroid Build Coastguard Worker input0Values,
427*89c4ff92SAndroid Build Coastguard Worker input1Values,
428*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues);
429*89c4ff92SAndroid Build Coastguard Worker }
430*89c4ff92SAndroid Build Coastguard Worker
MaxUint8Test(std::vector<armnn::BackendId> & backends)431*89c4ff92SAndroid Build Coastguard Worker void MaxUint8Test(std::vector<armnn::BackendId>& backends)
432*89c4ff92SAndroid Build Coastguard Worker {
433*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input0Shape { 2, 2, 2, 2 };
434*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input1Shape { 2, 2, 2, 2 };
435*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> expectedOutputShape { 2, 2, 2, 2 };
436*89c4ff92SAndroid Build Coastguard Worker
437*89c4ff92SAndroid Build Coastguard Worker std::vector<uint8_t> input0Values =
438*89c4ff92SAndroid Build Coastguard Worker {
439*89c4ff92SAndroid Build Coastguard Worker 1, 1, 1, 1, 7, 8, 9, 9,
440*89c4ff92SAndroid Build Coastguard Worker 3, 3, 3, 3, 4, 4, 4, 4
441*89c4ff92SAndroid Build Coastguard Worker
442*89c4ff92SAndroid Build Coastguard Worker };
443*89c4ff92SAndroid Build Coastguard Worker
444*89c4ff92SAndroid Build Coastguard Worker std::vector<uint8_t> input1Values =
445*89c4ff92SAndroid Build Coastguard Worker {
446*89c4ff92SAndroid Build Coastguard Worker 2, 2, 2, 2, 3, 3, 3, 3,
447*89c4ff92SAndroid Build Coastguard Worker 4, 4, 4, 4, 5, 5, 5, 5
448*89c4ff92SAndroid Build Coastguard Worker };
449*89c4ff92SAndroid Build Coastguard Worker
450*89c4ff92SAndroid Build Coastguard Worker std::vector<uint8_t> expectedOutputValues =
451*89c4ff92SAndroid Build Coastguard Worker {
452*89c4ff92SAndroid Build Coastguard Worker 2, 2, 2, 2, 7, 8, 9, 9,
453*89c4ff92SAndroid Build Coastguard Worker 4, 4, 4, 4, 5, 5, 5, 5
454*89c4ff92SAndroid Build Coastguard Worker };
455*89c4ff92SAndroid Build Coastguard Worker
456*89c4ff92SAndroid Build Coastguard Worker ElementwiseBinaryTest<uint8_t>(tflite::BuiltinOperator_MAXIMUM,
457*89c4ff92SAndroid Build Coastguard Worker tflite::ActivationFunctionType_NONE,
458*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_UINT8,
459*89c4ff92SAndroid Build Coastguard Worker backends,
460*89c4ff92SAndroid Build Coastguard Worker input0Shape,
461*89c4ff92SAndroid Build Coastguard Worker input1Shape,
462*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape,
463*89c4ff92SAndroid Build Coastguard Worker input0Values,
464*89c4ff92SAndroid Build Coastguard Worker input1Values,
465*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues, 1.0f, 0);
466*89c4ff92SAndroid Build Coastguard Worker }
467*89c4ff92SAndroid Build Coastguard Worker
MinFP32Test(std::vector<armnn::BackendId> & backends)468*89c4ff92SAndroid Build Coastguard Worker void MinFP32Test(std::vector<armnn::BackendId>& backends)
469*89c4ff92SAndroid Build Coastguard Worker {
470*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input0Shape { 2, 2, 2, 2 };
471*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input1Shape { 2, 2, 2, 2 };
472*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> expectedOutputShape { 2, 2, 2, 2 };
473*89c4ff92SAndroid Build Coastguard Worker
474*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input0Values =
475*89c4ff92SAndroid Build Coastguard Worker {
476*89c4ff92SAndroid Build Coastguard Worker 1.f, 1.f, 5.f, 1.f, 2.f, 2.f, 7.f, 2.f,
477*89c4ff92SAndroid Build Coastguard Worker 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
478*89c4ff92SAndroid Build Coastguard Worker
479*89c4ff92SAndroid Build Coastguard Worker };
480*89c4ff92SAndroid Build Coastguard Worker
481*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input1Values =
482*89c4ff92SAndroid Build Coastguard Worker {
483*89c4ff92SAndroid Build Coastguard Worker 2.f, 2.f, 2.f, 2.f, 3.f, 3.f, 3.f, 3.f,
484*89c4ff92SAndroid Build Coastguard Worker 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f
485*89c4ff92SAndroid Build Coastguard Worker };
486*89c4ff92SAndroid Build Coastguard Worker
487*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues =
488*89c4ff92SAndroid Build Coastguard Worker {
489*89c4ff92SAndroid Build Coastguard Worker 1.f, 1.f, 2.f, 1.f, 2.f, 2.f, 3.f, 2.f,
490*89c4ff92SAndroid Build Coastguard Worker 1.f, 1.f, 1.f, 1.f, 4.f, 4.f, 4.f, 4.f
491*89c4ff92SAndroid Build Coastguard Worker };
492*89c4ff92SAndroid Build Coastguard Worker
493*89c4ff92SAndroid Build Coastguard Worker ElementwiseBinaryTest<float>(tflite::BuiltinOperator_MINIMUM,
494*89c4ff92SAndroid Build Coastguard Worker tflite::ActivationFunctionType_NONE,
495*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
496*89c4ff92SAndroid Build Coastguard Worker backends,
497*89c4ff92SAndroid Build Coastguard Worker input0Shape,
498*89c4ff92SAndroid Build Coastguard Worker input1Shape,
499*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape,
500*89c4ff92SAndroid Build Coastguard Worker input0Values,
501*89c4ff92SAndroid Build Coastguard Worker input1Values,
502*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues);
503*89c4ff92SAndroid Build Coastguard Worker }
504*89c4ff92SAndroid Build Coastguard Worker
MinBroadcastTest(std::vector<armnn::BackendId> & backends)505*89c4ff92SAndroid Build Coastguard Worker void MinBroadcastTest(std::vector<armnn::BackendId>& backends)
506*89c4ff92SAndroid Build Coastguard Worker {
507*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input0Shape { 1, 2, 2, 2 };
508*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input1Shape { 1, 1, 1, 1 };
509*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> expectedOutputShape { 1, 2, 2, 2 };
510*89c4ff92SAndroid Build Coastguard Worker
511*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input0Values = { 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f };
512*89c4ff92SAndroid Build Coastguard Worker
513*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input1Values = { 4.f };
514*89c4ff92SAndroid Build Coastguard Worker
515*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues = { 1.f, 2.f, 3.f, 4.f, 4.f, 4.f, 4.f, 4.f };
516*89c4ff92SAndroid Build Coastguard Worker
517*89c4ff92SAndroid Build Coastguard Worker ElementwiseBinaryTest<float>(tflite::BuiltinOperator_MINIMUM,
518*89c4ff92SAndroid Build Coastguard Worker tflite::ActivationFunctionType_NONE,
519*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
520*89c4ff92SAndroid Build Coastguard Worker backends,
521*89c4ff92SAndroid Build Coastguard Worker input0Shape,
522*89c4ff92SAndroid Build Coastguard Worker input1Shape,
523*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape,
524*89c4ff92SAndroid Build Coastguard Worker input0Values,
525*89c4ff92SAndroid Build Coastguard Worker input1Values,
526*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues);
527*89c4ff92SAndroid Build Coastguard Worker }
528*89c4ff92SAndroid Build Coastguard Worker
MinUint8Test(std::vector<armnn::BackendId> & backends)529*89c4ff92SAndroid Build Coastguard Worker void MinUint8Test(std::vector<armnn::BackendId>& backends)
530*89c4ff92SAndroid Build Coastguard Worker {
531*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input0Shape { 2, 2, 2, 2 };
532*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input1Shape { 2, 2, 2, 2 };
533*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> expectedOutputShape { 2, 2, 2, 2 };
534*89c4ff92SAndroid Build Coastguard Worker
535*89c4ff92SAndroid Build Coastguard Worker std::vector<uint8_t> input0Values =
536*89c4ff92SAndroid Build Coastguard Worker {
537*89c4ff92SAndroid Build Coastguard Worker 1, 1, 1, 1, 7, 8, 9, 9,
538*89c4ff92SAndroid Build Coastguard Worker 3, 3, 3, 3, 4, 4, 4, 4
539*89c4ff92SAndroid Build Coastguard Worker
540*89c4ff92SAndroid Build Coastguard Worker };
541*89c4ff92SAndroid Build Coastguard Worker
542*89c4ff92SAndroid Build Coastguard Worker std::vector<uint8_t> input1Values =
543*89c4ff92SAndroid Build Coastguard Worker {
544*89c4ff92SAndroid Build Coastguard Worker 2, 2, 2, 2, 3, 3, 3, 3,
545*89c4ff92SAndroid Build Coastguard Worker 4, 4, 4, 4, 5, 5, 5, 5
546*89c4ff92SAndroid Build Coastguard Worker };
547*89c4ff92SAndroid Build Coastguard Worker
548*89c4ff92SAndroid Build Coastguard Worker std::vector<uint8_t> expectedOutputValues =
549*89c4ff92SAndroid Build Coastguard Worker {
550*89c4ff92SAndroid Build Coastguard Worker 1, 1, 1, 1, 3, 3, 3, 3,
551*89c4ff92SAndroid Build Coastguard Worker 3, 3, 3, 3, 4, 4, 4, 4
552*89c4ff92SAndroid Build Coastguard Worker };
553*89c4ff92SAndroid Build Coastguard Worker
554*89c4ff92SAndroid Build Coastguard Worker ElementwiseBinaryTest<uint8_t>(tflite::BuiltinOperator_MINIMUM,
555*89c4ff92SAndroid Build Coastguard Worker tflite::ActivationFunctionType_NONE,
556*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_UINT8,
557*89c4ff92SAndroid Build Coastguard Worker backends,
558*89c4ff92SAndroid Build Coastguard Worker input0Shape,
559*89c4ff92SAndroid Build Coastguard Worker input1Shape,
560*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape,
561*89c4ff92SAndroid Build Coastguard Worker input0Values,
562*89c4ff92SAndroid Build Coastguard Worker input1Values,
563*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues, 1.0f, 0);
564*89c4ff92SAndroid Build Coastguard Worker }
565*89c4ff92SAndroid Build Coastguard Worker
MulFP32Test(std::vector<armnn::BackendId> & backends)566*89c4ff92SAndroid Build Coastguard Worker void MulFP32Test(std::vector<armnn::BackendId>& backends)
567*89c4ff92SAndroid Build Coastguard Worker {
568*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input0Shape { 2, 2, 2, 2 };
569*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input1Shape { 2, 2, 2, 2 };
570*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> expectedOutputShape { 2, 2, 2, 2 };
571*89c4ff92SAndroid Build Coastguard Worker
572*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input0Values =
573*89c4ff92SAndroid Build Coastguard Worker {
574*89c4ff92SAndroid Build Coastguard Worker 1.f, 1.f, 1.f, 1.f, 2.f, 2.f, 2.f, 2.f,
575*89c4ff92SAndroid Build Coastguard Worker 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
576*89c4ff92SAndroid Build Coastguard Worker
577*89c4ff92SAndroid Build Coastguard Worker };
578*89c4ff92SAndroid Build Coastguard Worker
579*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input1Values =
580*89c4ff92SAndroid Build Coastguard Worker {
581*89c4ff92SAndroid Build Coastguard Worker 2.f, 2.f, 2.f, 2.f, 3.f, 3.f, 3.f, 3.f,
582*89c4ff92SAndroid Build Coastguard Worker 4.f, 4.f, 4.f, 4.f, 5.f, 5.f, 5.f, 5.f
583*89c4ff92SAndroid Build Coastguard Worker };
584*89c4ff92SAndroid Build Coastguard Worker
585*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues =
586*89c4ff92SAndroid Build Coastguard Worker {
587*89c4ff92SAndroid Build Coastguard Worker 2.f, 2.f, 2.f, 2.f, 6.f, 6.f, 6.f, 6.f,
588*89c4ff92SAndroid Build Coastguard Worker 12.f, 12.f, 12.f, 12.f, 20.f, 20.f, 20.f, 20.f
589*89c4ff92SAndroid Build Coastguard Worker };
590*89c4ff92SAndroid Build Coastguard Worker
591*89c4ff92SAndroid Build Coastguard Worker ElementwiseBinaryTest<float>(tflite::BuiltinOperator_MUL,
592*89c4ff92SAndroid Build Coastguard Worker tflite::ActivationFunctionType_NONE,
593*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
594*89c4ff92SAndroid Build Coastguard Worker backends,
595*89c4ff92SAndroid Build Coastguard Worker input0Shape,
596*89c4ff92SAndroid Build Coastguard Worker input1Shape,
597*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape,
598*89c4ff92SAndroid Build Coastguard Worker input0Values,
599*89c4ff92SAndroid Build Coastguard Worker input1Values,
600*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues);
601*89c4ff92SAndroid Build Coastguard Worker }
602*89c4ff92SAndroid Build Coastguard Worker
MulBroadcastTest(std::vector<armnn::BackendId> & backends)603*89c4ff92SAndroid Build Coastguard Worker void MulBroadcastTest(std::vector<armnn::BackendId>& backends)
604*89c4ff92SAndroid Build Coastguard Worker {
605*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input0Shape { 1, 2, 2, 2 };
606*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input1Shape { 1, 1, 1, 1 };
607*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> expectedOutputShape { 1, 2, 2, 2 };
608*89c4ff92SAndroid Build Coastguard Worker
609*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input0Values = { 2, 4, 6, 8, 10, 12, 14, 16 };
610*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input1Values = { 2 };
611*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues = { 4, 8, 12, 16, 20, 24, 28, 32 };
612*89c4ff92SAndroid Build Coastguard Worker
613*89c4ff92SAndroid Build Coastguard Worker ElementwiseBinaryTest<float>(tflite::BuiltinOperator_MUL,
614*89c4ff92SAndroid Build Coastguard Worker tflite::ActivationFunctionType_NONE,
615*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
616*89c4ff92SAndroid Build Coastguard Worker backends,
617*89c4ff92SAndroid Build Coastguard Worker input0Shape,
618*89c4ff92SAndroid Build Coastguard Worker input1Shape,
619*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape,
620*89c4ff92SAndroid Build Coastguard Worker input0Values,
621*89c4ff92SAndroid Build Coastguard Worker input1Values,
622*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues);
623*89c4ff92SAndroid Build Coastguard Worker }
624*89c4ff92SAndroid Build Coastguard Worker
MulUint8Test(std::vector<armnn::BackendId> & backends)625*89c4ff92SAndroid Build Coastguard Worker void MulUint8Test(std::vector<armnn::BackendId>& backends)
626*89c4ff92SAndroid Build Coastguard Worker {
627*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input0Shape { 1, 2, 2, 3 };
628*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input1Shape { 1, 1, 1, 3 };
629*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> expectedOutputShape { 1, 2, 2, 3 };
630*89c4ff92SAndroid Build Coastguard Worker
631*89c4ff92SAndroid Build Coastguard Worker std::vector<uint8_t> input0Values =
632*89c4ff92SAndroid Build Coastguard Worker {
633*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3, 4, 5, 6,
634*89c4ff92SAndroid Build Coastguard Worker 7, 8, 9, 10, 11, 12
635*89c4ff92SAndroid Build Coastguard Worker
636*89c4ff92SAndroid Build Coastguard Worker };
637*89c4ff92SAndroid Build Coastguard Worker
638*89c4ff92SAndroid Build Coastguard Worker std::vector<uint8_t> input1Values = { 1, 2, 3 };
639*89c4ff92SAndroid Build Coastguard Worker
640*89c4ff92SAndroid Build Coastguard Worker std::vector<uint8_t> expectedOutputValues =
641*89c4ff92SAndroid Build Coastguard Worker {
642*89c4ff92SAndroid Build Coastguard Worker 1, 4, 9, 4, 10, 18,
643*89c4ff92SAndroid Build Coastguard Worker 7, 16, 27, 10, 22, 36
644*89c4ff92SAndroid Build Coastguard Worker };
645*89c4ff92SAndroid Build Coastguard Worker
646*89c4ff92SAndroid Build Coastguard Worker ElementwiseBinaryTest<uint8_t>(tflite::BuiltinOperator_MUL,
647*89c4ff92SAndroid Build Coastguard Worker tflite::ActivationFunctionType_NONE,
648*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_UINT8,
649*89c4ff92SAndroid Build Coastguard Worker backends,
650*89c4ff92SAndroid Build Coastguard Worker input0Shape,
651*89c4ff92SAndroid Build Coastguard Worker input1Shape,
652*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape,
653*89c4ff92SAndroid Build Coastguard Worker input0Values,
654*89c4ff92SAndroid Build Coastguard Worker input1Values,
655*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues, 1.0f, 0);
656*89c4ff92SAndroid Build Coastguard Worker }
657*89c4ff92SAndroid Build Coastguard Worker
MulActivationTest(std::vector<armnn::BackendId> & backends)658*89c4ff92SAndroid Build Coastguard Worker void MulActivationTest(std::vector<armnn::BackendId>& backends)
659*89c4ff92SAndroid Build Coastguard Worker {
660*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input0Shape { 1, 2, 2, 1 };
661*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input1Shape { 1, 2, 2, 1 };
662*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> expectedOutputShape { 1, 2, 2, 1 };
663*89c4ff92SAndroid Build Coastguard Worker
664*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input0Values { 4.0f, 0.0f, 1.0f, 0.5f };
665*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input1Values { -2.0f, -1.2f, 2.5f, 2.0f };
666*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues { 0.0f, 0.0f, 2.5f, 1.0f };
667*89c4ff92SAndroid Build Coastguard Worker
668*89c4ff92SAndroid Build Coastguard Worker ElementwiseBinaryTest<float>(tflite::BuiltinOperator_MUL,
669*89c4ff92SAndroid Build Coastguard Worker tflite::ActivationFunctionType_RELU,
670*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
671*89c4ff92SAndroid Build Coastguard Worker backends,
672*89c4ff92SAndroid Build Coastguard Worker input0Shape,
673*89c4ff92SAndroid Build Coastguard Worker input1Shape,
674*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape,
675*89c4ff92SAndroid Build Coastguard Worker input0Values,
676*89c4ff92SAndroid Build Coastguard Worker input1Values,
677*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues);
678*89c4ff92SAndroid Build Coastguard Worker }
679*89c4ff92SAndroid Build Coastguard Worker
SubFP32Test(std::vector<armnn::BackendId> & backends)680*89c4ff92SAndroid Build Coastguard Worker void SubFP32Test(std::vector<armnn::BackendId>& backends)
681*89c4ff92SAndroid Build Coastguard Worker {
682*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input0Shape { 1, 1, 2, 2 };
683*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input1Shape { 1, 1, 2, 2 };
684*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> expectedOutputShape { 1, 1, 2, 2 };
685*89c4ff92SAndroid Build Coastguard Worker
686*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input0Values = { 1, 3, 3, -7 };
687*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input1Values = { 1, -1, 0, -2 };
688*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues = { 0, 4, 3, -5 };
689*89c4ff92SAndroid Build Coastguard Worker
690*89c4ff92SAndroid Build Coastguard Worker ElementwiseBinaryTest<float>(tflite::BuiltinOperator_SUB,
691*89c4ff92SAndroid Build Coastguard Worker tflite::ActivationFunctionType_NONE,
692*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
693*89c4ff92SAndroid Build Coastguard Worker backends,
694*89c4ff92SAndroid Build Coastguard Worker input0Shape,
695*89c4ff92SAndroid Build Coastguard Worker input1Shape,
696*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape,
697*89c4ff92SAndroid Build Coastguard Worker input0Values,
698*89c4ff92SAndroid Build Coastguard Worker input1Values,
699*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues);
700*89c4ff92SAndroid Build Coastguard Worker }
701*89c4ff92SAndroid Build Coastguard Worker
SubBroadcastTest(std::vector<armnn::BackendId> & backends)702*89c4ff92SAndroid Build Coastguard Worker void SubBroadcastTest(std::vector<armnn::BackendId>& backends)
703*89c4ff92SAndroid Build Coastguard Worker {
704*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input0Shape { 1, 1, 2, 2 };
705*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input1Shape { 1, 1, 1, 1 };
706*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> expectedOutputShape { 1, 1, 2, 2 };
707*89c4ff92SAndroid Build Coastguard Worker
708*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input0Values = { 2, 3, 4, 5};
709*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input1Values = { 10 };
710*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues = { -8, -7, -6, -5 };
711*89c4ff92SAndroid Build Coastguard Worker
712*89c4ff92SAndroid Build Coastguard Worker ElementwiseBinaryTest<float>(tflite::BuiltinOperator_SUB,
713*89c4ff92SAndroid Build Coastguard Worker tflite::ActivationFunctionType_NONE,
714*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
715*89c4ff92SAndroid Build Coastguard Worker backends,
716*89c4ff92SAndroid Build Coastguard Worker input0Shape,
717*89c4ff92SAndroid Build Coastguard Worker input1Shape,
718*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape,
719*89c4ff92SAndroid Build Coastguard Worker input0Values,
720*89c4ff92SAndroid Build Coastguard Worker input1Values,
721*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues);
722*89c4ff92SAndroid Build Coastguard Worker }
723*89c4ff92SAndroid Build Coastguard Worker
SubUint8Test(std::vector<armnn::BackendId> & backends)724*89c4ff92SAndroid Build Coastguard Worker void SubUint8Test(std::vector<armnn::BackendId>& backends)
725*89c4ff92SAndroid Build Coastguard Worker {
726*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input0Shape { 1, 1, 2, 2 };
727*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> input1Shape { 1, 1, 1, 1 };
728*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> expectedOutputShape { 1, 1, 2, 2 };
729*89c4ff92SAndroid Build Coastguard Worker
730*89c4ff92SAndroid Build Coastguard Worker std::vector<uint8_t> input0Values = { 10, 12, 14, 16 };
731*89c4ff92SAndroid Build Coastguard Worker std::vector<uint8_t> input1Values = { 2 };
732*89c4ff92SAndroid Build Coastguard Worker std::vector<uint8_t> expectedOutputValues = { 8, 10, 12, 14 };
733*89c4ff92SAndroid Build Coastguard Worker
734*89c4ff92SAndroid Build Coastguard Worker ElementwiseBinaryTest<uint8_t>(tflite::BuiltinOperator_SUB,
735*89c4ff92SAndroid Build Coastguard Worker tflite::ActivationFunctionType_NONE,
736*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_UINT8,
737*89c4ff92SAndroid Build Coastguard Worker backends,
738*89c4ff92SAndroid Build Coastguard Worker input0Shape,
739*89c4ff92SAndroid Build Coastguard Worker input1Shape,
740*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape,
741*89c4ff92SAndroid Build Coastguard Worker input0Values,
742*89c4ff92SAndroid Build Coastguard Worker input1Values,
743*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues, 1.0f, 0);
744*89c4ff92SAndroid Build Coastguard Worker }
745*89c4ff92SAndroid Build Coastguard Worker
746*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("ElementwiseBinary_GpuAccTests")
747*89c4ff92SAndroid Build Coastguard Worker {
748*89c4ff92SAndroid Build Coastguard Worker
749*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("ADD_FP32_GpuAcc_Test")
750*89c4ff92SAndroid Build Coastguard Worker {
751*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
752*89c4ff92SAndroid Build Coastguard Worker AddFP32Test(backends);
753*89c4ff92SAndroid Build Coastguard Worker }
754*89c4ff92SAndroid Build Coastguard Worker
755*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("ADD_Broadcast_GpuAcc_Test")
756*89c4ff92SAndroid Build Coastguard Worker {
757*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
758*89c4ff92SAndroid Build Coastguard Worker AddBroadcastTest(backends);
759*89c4ff92SAndroid Build Coastguard Worker }
760*89c4ff92SAndroid Build Coastguard Worker
761*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("ADD_Activation_GpuAcc_Test")
762*89c4ff92SAndroid Build Coastguard Worker {
763*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
764*89c4ff92SAndroid Build Coastguard Worker AddActivationTest(backends);
765*89c4ff92SAndroid Build Coastguard Worker }
766*89c4ff92SAndroid Build Coastguard Worker
767*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("ADD_UINT8_GpuAcc_Test")
768*89c4ff92SAndroid Build Coastguard Worker {
769*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
770*89c4ff92SAndroid Build Coastguard Worker AddUint8Test(backends);
771*89c4ff92SAndroid Build Coastguard Worker }
772*89c4ff92SAndroid Build Coastguard Worker
773*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("DIV_FP32_GpuAcc_Test")
774*89c4ff92SAndroid Build Coastguard Worker {
775*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
776*89c4ff92SAndroid Build Coastguard Worker DivFP32Test(backends);
777*89c4ff92SAndroid Build Coastguard Worker }
778*89c4ff92SAndroid Build Coastguard Worker
779*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("DIV_Broadcast_GpuAcc_Test")
780*89c4ff92SAndroid Build Coastguard Worker {
781*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
782*89c4ff92SAndroid Build Coastguard Worker DivBroadcastTest(backends);
783*89c4ff92SAndroid Build Coastguard Worker }
784*89c4ff92SAndroid Build Coastguard Worker
785*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("FLOORDIV_FP32_GpuAcc_Test")
786*89c4ff92SAndroid Build Coastguard Worker {
787*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
788*89c4ff92SAndroid Build Coastguard Worker FloorDivFP32Test(backends);
789*89c4ff92SAndroid Build Coastguard Worker }
790*89c4ff92SAndroid Build Coastguard Worker
791*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MAX_FP32_GpuAcc_Test")
792*89c4ff92SAndroid Build Coastguard Worker {
793*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
794*89c4ff92SAndroid Build Coastguard Worker MaxFP32Test(backends);
795*89c4ff92SAndroid Build Coastguard Worker }
796*89c4ff92SAndroid Build Coastguard Worker
797*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MAX_Broadcast_GpuAcc_Test")
798*89c4ff92SAndroid Build Coastguard Worker {
799*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
800*89c4ff92SAndroid Build Coastguard Worker MaxBroadcastTest(backends);
801*89c4ff92SAndroid Build Coastguard Worker }
802*89c4ff92SAndroid Build Coastguard Worker
803*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MAX_UINT8_GpuAcc_Test")
804*89c4ff92SAndroid Build Coastguard Worker {
805*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
806*89c4ff92SAndroid Build Coastguard Worker MaxUint8Test(backends);
807*89c4ff92SAndroid Build Coastguard Worker }
808*89c4ff92SAndroid Build Coastguard Worker
809*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MIN_FP32_GpuAcc_Test")
810*89c4ff92SAndroid Build Coastguard Worker {
811*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
812*89c4ff92SAndroid Build Coastguard Worker MinFP32Test(backends);
813*89c4ff92SAndroid Build Coastguard Worker }
814*89c4ff92SAndroid Build Coastguard Worker
815*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MIN_Broadcast_GpuAcc_Test")
816*89c4ff92SAndroid Build Coastguard Worker {
817*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
818*89c4ff92SAndroid Build Coastguard Worker MinBroadcastTest(backends);
819*89c4ff92SAndroid Build Coastguard Worker }
820*89c4ff92SAndroid Build Coastguard Worker
821*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MIN_UINT8_GpuAcc_Test")
822*89c4ff92SAndroid Build Coastguard Worker {
823*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
824*89c4ff92SAndroid Build Coastguard Worker MinUint8Test(backends);
825*89c4ff92SAndroid Build Coastguard Worker }
826*89c4ff92SAndroid Build Coastguard Worker
827*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MUL_FP32_GpuAcc_Test")
828*89c4ff92SAndroid Build Coastguard Worker {
829*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
830*89c4ff92SAndroid Build Coastguard Worker MulFP32Test(backends);
831*89c4ff92SAndroid Build Coastguard Worker }
832*89c4ff92SAndroid Build Coastguard Worker
833*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MUL_Broadcast_GpuAcc_Test")
834*89c4ff92SAndroid Build Coastguard Worker {
835*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
836*89c4ff92SAndroid Build Coastguard Worker MulBroadcastTest(backends);
837*89c4ff92SAndroid Build Coastguard Worker }
838*89c4ff92SAndroid Build Coastguard Worker
839*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MUL_Activation_GpuAcc_Test")
840*89c4ff92SAndroid Build Coastguard Worker {
841*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
842*89c4ff92SAndroid Build Coastguard Worker MulActivationTest(backends);
843*89c4ff92SAndroid Build Coastguard Worker }
844*89c4ff92SAndroid Build Coastguard Worker
845*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MUL_UINT8_GpuAcc_Test")
846*89c4ff92SAndroid Build Coastguard Worker {
847*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
848*89c4ff92SAndroid Build Coastguard Worker MulUint8Test(backends);
849*89c4ff92SAndroid Build Coastguard Worker }
850*89c4ff92SAndroid Build Coastguard Worker
851*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("SUB_FP32_GpuAcc_Test")
852*89c4ff92SAndroid Build Coastguard Worker {
853*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
854*89c4ff92SAndroid Build Coastguard Worker SubFP32Test(backends);
855*89c4ff92SAndroid Build Coastguard Worker }
856*89c4ff92SAndroid Build Coastguard Worker
857*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("SUB_Broadcast_GpuAcc_Test")
858*89c4ff92SAndroid Build Coastguard Worker {
859*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
860*89c4ff92SAndroid Build Coastguard Worker SubBroadcastTest(backends);
861*89c4ff92SAndroid Build Coastguard Worker }
862*89c4ff92SAndroid Build Coastguard Worker
863*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("SUB_UINT8_GpuAcc_Test")
864*89c4ff92SAndroid Build Coastguard Worker {
865*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
866*89c4ff92SAndroid Build Coastguard Worker SubUint8Test(backends);
867*89c4ff92SAndroid Build Coastguard Worker }
868*89c4ff92SAndroid Build Coastguard Worker
869*89c4ff92SAndroid Build Coastguard Worker } //TEST_SUITE("ElementwiseBinary_GpuAccTests")
870*89c4ff92SAndroid Build Coastguard Worker
871*89c4ff92SAndroid Build Coastguard Worker
872*89c4ff92SAndroid Build Coastguard Worker
873*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("ElementwiseBinary_CpuAccTests")
874*89c4ff92SAndroid Build Coastguard Worker {
875*89c4ff92SAndroid Build Coastguard Worker
876*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("ADD_FP32_CpuAcc_Test")
877*89c4ff92SAndroid Build Coastguard Worker {
878*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
879*89c4ff92SAndroid Build Coastguard Worker AddFP32Test(backends);
880*89c4ff92SAndroid Build Coastguard Worker }
881*89c4ff92SAndroid Build Coastguard Worker
882*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("ADD_Broadcast_CpuAcc_Test")
883*89c4ff92SAndroid Build Coastguard Worker {
884*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
885*89c4ff92SAndroid Build Coastguard Worker AddBroadcastTest(backends);
886*89c4ff92SAndroid Build Coastguard Worker }
887*89c4ff92SAndroid Build Coastguard Worker
888*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("ADD_Activation_CpuAcc_Test")
889*89c4ff92SAndroid Build Coastguard Worker {
890*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
891*89c4ff92SAndroid Build Coastguard Worker AddActivationTest(backends);
892*89c4ff92SAndroid Build Coastguard Worker }
893*89c4ff92SAndroid Build Coastguard Worker
894*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("ADD_UINT8_CpuAcc_Test")
895*89c4ff92SAndroid Build Coastguard Worker {
896*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
897*89c4ff92SAndroid Build Coastguard Worker AddUint8Test(backends);
898*89c4ff92SAndroid Build Coastguard Worker }
899*89c4ff92SAndroid Build Coastguard Worker
900*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("DIV_FP32_CpuAcc_Test")
901*89c4ff92SAndroid Build Coastguard Worker {
902*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
903*89c4ff92SAndroid Build Coastguard Worker DivFP32Test(backends);
904*89c4ff92SAndroid Build Coastguard Worker }
905*89c4ff92SAndroid Build Coastguard Worker
906*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("DIV_Broadcast_CpuAcc_Test")
907*89c4ff92SAndroid Build Coastguard Worker {
908*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
909*89c4ff92SAndroid Build Coastguard Worker DivBroadcastTest(backends);
910*89c4ff92SAndroid Build Coastguard Worker }
911*89c4ff92SAndroid Build Coastguard Worker
912*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("FLOORDIV_FP32_CpuAcc_Test")
913*89c4ff92SAndroid Build Coastguard Worker {
914*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
915*89c4ff92SAndroid Build Coastguard Worker FloorDivFP32Test(backends);
916*89c4ff92SAndroid Build Coastguard Worker }
917*89c4ff92SAndroid Build Coastguard Worker
918*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MAX_FP32_CpuAcc_Test")
919*89c4ff92SAndroid Build Coastguard Worker {
920*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
921*89c4ff92SAndroid Build Coastguard Worker MaxFP32Test(backends);
922*89c4ff92SAndroid Build Coastguard Worker }
923*89c4ff92SAndroid Build Coastguard Worker
924*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MAX_Broadcast_CpuAcc_Test")
925*89c4ff92SAndroid Build Coastguard Worker {
926*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
927*89c4ff92SAndroid Build Coastguard Worker MaxBroadcastTest(backends);
928*89c4ff92SAndroid Build Coastguard Worker }
929*89c4ff92SAndroid Build Coastguard Worker
930*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MAX_UINT8_CpuAcc_Test")
931*89c4ff92SAndroid Build Coastguard Worker {
932*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
933*89c4ff92SAndroid Build Coastguard Worker MaxUint8Test(backends);
934*89c4ff92SAndroid Build Coastguard Worker }
935*89c4ff92SAndroid Build Coastguard Worker
936*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MIN_FP32_CpuAcc_Test")
937*89c4ff92SAndroid Build Coastguard Worker {
938*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
939*89c4ff92SAndroid Build Coastguard Worker MinFP32Test(backends);
940*89c4ff92SAndroid Build Coastguard Worker }
941*89c4ff92SAndroid Build Coastguard Worker
942*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MIN_Broadcast_CpuAcc_Test")
943*89c4ff92SAndroid Build Coastguard Worker {
944*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
945*89c4ff92SAndroid Build Coastguard Worker MinBroadcastTest(backends);
946*89c4ff92SAndroid Build Coastguard Worker }
947*89c4ff92SAndroid Build Coastguard Worker
948*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MIN_UINT8_CpuAcc_Test")
949*89c4ff92SAndroid Build Coastguard Worker {
950*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
951*89c4ff92SAndroid Build Coastguard Worker MinUint8Test(backends);
952*89c4ff92SAndroid Build Coastguard Worker }
953*89c4ff92SAndroid Build Coastguard Worker
954*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MUL_FP32_CpuAcc_Test")
955*89c4ff92SAndroid Build Coastguard Worker {
956*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
957*89c4ff92SAndroid Build Coastguard Worker MulFP32Test(backends);
958*89c4ff92SAndroid Build Coastguard Worker }
959*89c4ff92SAndroid Build Coastguard Worker
960*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MUL_Broadcast_CpuAcc_Test")
961*89c4ff92SAndroid Build Coastguard Worker {
962*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
963*89c4ff92SAndroid Build Coastguard Worker MulBroadcastTest(backends);
964*89c4ff92SAndroid Build Coastguard Worker }
965*89c4ff92SAndroid Build Coastguard Worker
966*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MUL_Actiation_CpuAcc_Test")
967*89c4ff92SAndroid Build Coastguard Worker {
968*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
969*89c4ff92SAndroid Build Coastguard Worker MulActivationTest(backends);
970*89c4ff92SAndroid Build Coastguard Worker }
971*89c4ff92SAndroid Build Coastguard Worker
972*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MUL_UINT8_CpuAcc_Test")
973*89c4ff92SAndroid Build Coastguard Worker {
974*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
975*89c4ff92SAndroid Build Coastguard Worker MulUint8Test(backends);
976*89c4ff92SAndroid Build Coastguard Worker }
977*89c4ff92SAndroid Build Coastguard Worker
978*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("SUB_FP32_CpuAcc_Test")
979*89c4ff92SAndroid Build Coastguard Worker {
980*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
981*89c4ff92SAndroid Build Coastguard Worker SubFP32Test(backends);
982*89c4ff92SAndroid Build Coastguard Worker }
983*89c4ff92SAndroid Build Coastguard Worker
984*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("SUB_Broadcast_CpuAcc_Test")
985*89c4ff92SAndroid Build Coastguard Worker {
986*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
987*89c4ff92SAndroid Build Coastguard Worker SubBroadcastTest(backends);
988*89c4ff92SAndroid Build Coastguard Worker }
989*89c4ff92SAndroid Build Coastguard Worker
990*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("SUB_UINT8_CpuAcc_Test")
991*89c4ff92SAndroid Build Coastguard Worker {
992*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
993*89c4ff92SAndroid Build Coastguard Worker SubUint8Test(backends);
994*89c4ff92SAndroid Build Coastguard Worker }
995*89c4ff92SAndroid Build Coastguard Worker
996*89c4ff92SAndroid Build Coastguard Worker } // TEST_SUITE("ElementwiseBinary_CpuAccTests")
997*89c4ff92SAndroid Build Coastguard Worker
998*89c4ff92SAndroid Build Coastguard Worker
999*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("ElementwiseBinary_CpuRefTests")
1000*89c4ff92SAndroid Build Coastguard Worker {
1001*89c4ff92SAndroid Build Coastguard Worker
1002*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("ADD_FP32_CpuRef_Test")
1003*89c4ff92SAndroid Build Coastguard Worker {
1004*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1005*89c4ff92SAndroid Build Coastguard Worker AddFP32Test(backends);
1006*89c4ff92SAndroid Build Coastguard Worker }
1007*89c4ff92SAndroid Build Coastguard Worker
1008*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("ADD_Broadcast_CpuRef_Test")
1009*89c4ff92SAndroid Build Coastguard Worker {
1010*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1011*89c4ff92SAndroid Build Coastguard Worker AddBroadcastTest(backends);
1012*89c4ff92SAndroid Build Coastguard Worker }
1013*89c4ff92SAndroid Build Coastguard Worker
1014*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("ADD_Constant_Input_CpuRef_Test")
1015*89c4ff92SAndroid Build Coastguard Worker {
1016*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1017*89c4ff92SAndroid Build Coastguard Worker AddConstInputTest(backends);
1018*89c4ff92SAndroid Build Coastguard Worker }
1019*89c4ff92SAndroid Build Coastguard Worker
1020*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("ADD_Activation_CpuRef_Test")
1021*89c4ff92SAndroid Build Coastguard Worker {
1022*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1023*89c4ff92SAndroid Build Coastguard Worker AddActivationTest(backends);
1024*89c4ff92SAndroid Build Coastguard Worker }
1025*89c4ff92SAndroid Build Coastguard Worker
1026*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("ADD_UINT8_CpuRef_Test")
1027*89c4ff92SAndroid Build Coastguard Worker {
1028*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1029*89c4ff92SAndroid Build Coastguard Worker AddUint8Test(backends);
1030*89c4ff92SAndroid Build Coastguard Worker }
1031*89c4ff92SAndroid Build Coastguard Worker
1032*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("DIV_FP32_CpuRef_Test")
1033*89c4ff92SAndroid Build Coastguard Worker {
1034*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1035*89c4ff92SAndroid Build Coastguard Worker DivFP32Test(backends);
1036*89c4ff92SAndroid Build Coastguard Worker }
1037*89c4ff92SAndroid Build Coastguard Worker
1038*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("DIV_Broadcast_CpuRef_Test")
1039*89c4ff92SAndroid Build Coastguard Worker {
1040*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1041*89c4ff92SAndroid Build Coastguard Worker DivBroadcastTest(backends);
1042*89c4ff92SAndroid Build Coastguard Worker }
1043*89c4ff92SAndroid Build Coastguard Worker
1044*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("FLOORDIV_FP32_CpuRef_Test")
1045*89c4ff92SAndroid Build Coastguard Worker {
1046*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1047*89c4ff92SAndroid Build Coastguard Worker FloorDivFP32Test(backends);
1048*89c4ff92SAndroid Build Coastguard Worker }
1049*89c4ff92SAndroid Build Coastguard Worker
1050*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("DIV_UINT8_CpuRef_Test")
1051*89c4ff92SAndroid Build Coastguard Worker {
1052*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1053*89c4ff92SAndroid Build Coastguard Worker DivUint8Test(backends);
1054*89c4ff92SAndroid Build Coastguard Worker }
1055*89c4ff92SAndroid Build Coastguard Worker
1056*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MAX_FP32_CpuRef_Test")
1057*89c4ff92SAndroid Build Coastguard Worker {
1058*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1059*89c4ff92SAndroid Build Coastguard Worker MaxFP32Test(backends);
1060*89c4ff92SAndroid Build Coastguard Worker }
1061*89c4ff92SAndroid Build Coastguard Worker
1062*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MAX_Broadcast_CpuRef_Test")
1063*89c4ff92SAndroid Build Coastguard Worker {
1064*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1065*89c4ff92SAndroid Build Coastguard Worker MaxBroadcastTest(backends);
1066*89c4ff92SAndroid Build Coastguard Worker }
1067*89c4ff92SAndroid Build Coastguard Worker
1068*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MAX_UINT8_CpuRef_Test")
1069*89c4ff92SAndroid Build Coastguard Worker {
1070*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1071*89c4ff92SAndroid Build Coastguard Worker MaxUint8Test(backends);
1072*89c4ff92SAndroid Build Coastguard Worker }
1073*89c4ff92SAndroid Build Coastguard Worker
1074*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MIN_FP32_CpuRef_Test")
1075*89c4ff92SAndroid Build Coastguard Worker {
1076*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1077*89c4ff92SAndroid Build Coastguard Worker MinFP32Test(backends);
1078*89c4ff92SAndroid Build Coastguard Worker }
1079*89c4ff92SAndroid Build Coastguard Worker
1080*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MIN_Broadcast_CpuRef_Test")
1081*89c4ff92SAndroid Build Coastguard Worker {
1082*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1083*89c4ff92SAndroid Build Coastguard Worker MinBroadcastTest(backends);
1084*89c4ff92SAndroid Build Coastguard Worker }
1085*89c4ff92SAndroid Build Coastguard Worker
1086*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MIN_UINT8_CpuRef_Test")
1087*89c4ff92SAndroid Build Coastguard Worker {
1088*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1089*89c4ff92SAndroid Build Coastguard Worker MinUint8Test(backends);
1090*89c4ff92SAndroid Build Coastguard Worker }
1091*89c4ff92SAndroid Build Coastguard Worker
1092*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MUL_FP32_CpuRef_Test")
1093*89c4ff92SAndroid Build Coastguard Worker {
1094*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1095*89c4ff92SAndroid Build Coastguard Worker MulFP32Test(backends);
1096*89c4ff92SAndroid Build Coastguard Worker }
1097*89c4ff92SAndroid Build Coastguard Worker
1098*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MUL_Broadcast_CpuRef_Test")
1099*89c4ff92SAndroid Build Coastguard Worker {
1100*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1101*89c4ff92SAndroid Build Coastguard Worker MulBroadcastTest(backends);
1102*89c4ff92SAndroid Build Coastguard Worker }
1103*89c4ff92SAndroid Build Coastguard Worker
1104*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MUL_Actiation_CpuRef_Test")
1105*89c4ff92SAndroid Build Coastguard Worker {
1106*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1107*89c4ff92SAndroid Build Coastguard Worker MulActivationTest(backends);
1108*89c4ff92SAndroid Build Coastguard Worker }
1109*89c4ff92SAndroid Build Coastguard Worker
1110*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("MUL_UINT8_CpuRef_Test")
1111*89c4ff92SAndroid Build Coastguard Worker {
1112*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1113*89c4ff92SAndroid Build Coastguard Worker MulUint8Test(backends);
1114*89c4ff92SAndroid Build Coastguard Worker }
1115*89c4ff92SAndroid Build Coastguard Worker
1116*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("SUB_FP32_CpuRef_Test")
1117*89c4ff92SAndroid Build Coastguard Worker {
1118*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1119*89c4ff92SAndroid Build Coastguard Worker SubFP32Test(backends);
1120*89c4ff92SAndroid Build Coastguard Worker }
1121*89c4ff92SAndroid Build Coastguard Worker
1122*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("SUB_Broadcast_CpuRef_Test")
1123*89c4ff92SAndroid Build Coastguard Worker {
1124*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1125*89c4ff92SAndroid Build Coastguard Worker SubBroadcastTest(backends);
1126*89c4ff92SAndroid Build Coastguard Worker }
1127*89c4ff92SAndroid Build Coastguard Worker
1128*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("SUB_UINT8_CpuRef_Test")
1129*89c4ff92SAndroid Build Coastguard Worker {
1130*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
1131*89c4ff92SAndroid Build Coastguard Worker SubUint8Test(backends);
1132*89c4ff92SAndroid Build Coastguard Worker }
1133*89c4ff92SAndroid Build Coastguard Worker
1134*89c4ff92SAndroid Build Coastguard Worker } // TEST_SUITE("ElementwiseBinary_CpuRefTests")
1135*89c4ff92SAndroid Build Coastguard Worker
1136*89c4ff92SAndroid Build Coastguard Worker } // namespace armnnDelegate
1137