xref: /aosp_15_r20/external/armnn/delegate/test/ReduceTest.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
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 "ReduceTestHelper.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 
ReduceUint8KeepDimsTest(tflite::BuiltinOperator reduceOperatorCode,std::vector<armnn::BackendId> & backends,std::vector<uint8_t> & expectedOutputValues)18*89c4ff92SAndroid Build Coastguard Worker void ReduceUint8KeepDimsTest(tflite::BuiltinOperator reduceOperatorCode,
19*89c4ff92SAndroid Build Coastguard Worker                              std::vector<armnn::BackendId>& backends,
20*89c4ff92SAndroid Build Coastguard Worker                              std::vector<uint8_t>& expectedOutputValues)
21*89c4ff92SAndroid Build Coastguard Worker {
22*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> input0Shape { 1, 1, 2, 3 };
23*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> input1Shape { 1 };
24*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> expectedOutputShape { 1, 1, 1, 3 };
25*89c4ff92SAndroid Build Coastguard Worker 
26*89c4ff92SAndroid Build Coastguard Worker     std::vector<uint8_t> input0Values { 1, 2, 3,
27*89c4ff92SAndroid Build Coastguard Worker                                         4, 3, 1  }; // Inputs
28*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> input1Values { 2 }; // Axis
29*89c4ff92SAndroid Build Coastguard Worker 
30*89c4ff92SAndroid Build Coastguard Worker     ReduceTest<uint8_t>(reduceOperatorCode,
31*89c4ff92SAndroid Build Coastguard Worker                         ::tflite::TensorType_UINT8,
32*89c4ff92SAndroid Build Coastguard Worker                         backends,
33*89c4ff92SAndroid Build Coastguard Worker                         input0Shape,
34*89c4ff92SAndroid Build Coastguard Worker                         input1Shape,
35*89c4ff92SAndroid Build Coastguard Worker                         expectedOutputShape,
36*89c4ff92SAndroid Build Coastguard Worker                         input0Values,
37*89c4ff92SAndroid Build Coastguard Worker                         input1Values,
38*89c4ff92SAndroid Build Coastguard Worker                         expectedOutputValues,
39*89c4ff92SAndroid Build Coastguard Worker                         true);
40*89c4ff92SAndroid Build Coastguard Worker }
41*89c4ff92SAndroid Build Coastguard Worker 
ReduceUint8Test(tflite::BuiltinOperator reduceOperatorCode,std::vector<armnn::BackendId> & backends,std::vector<uint8_t> & expectedOutputValues)42*89c4ff92SAndroid Build Coastguard Worker void ReduceUint8Test(tflite::BuiltinOperator reduceOperatorCode,
43*89c4ff92SAndroid Build Coastguard Worker                      std::vector<armnn::BackendId>& backends,
44*89c4ff92SAndroid Build Coastguard Worker                      std::vector<uint8_t>& expectedOutputValues)
45*89c4ff92SAndroid Build Coastguard Worker {
46*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> input0Shape { 1, 1, 2, 3 };
47*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> input1Shape { 1 };
48*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> expectedOutputShape { 1, 1, 3 };
49*89c4ff92SAndroid Build Coastguard Worker 
50*89c4ff92SAndroid Build Coastguard Worker     std::vector<uint8_t> input0Values { 1, 2, 3,
51*89c4ff92SAndroid Build Coastguard Worker                                         4, 3, 1 }; // Inputs
52*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> input1Values { 2 }; // Axis
53*89c4ff92SAndroid Build Coastguard Worker 
54*89c4ff92SAndroid Build Coastguard Worker     ReduceTest<uint8_t>(reduceOperatorCode,
55*89c4ff92SAndroid Build Coastguard Worker                         ::tflite::TensorType_UINT8,
56*89c4ff92SAndroid Build Coastguard Worker                         backends,
57*89c4ff92SAndroid Build Coastguard Worker                         input0Shape,
58*89c4ff92SAndroid Build Coastguard Worker                         input1Shape,
59*89c4ff92SAndroid Build Coastguard Worker                         expectedOutputShape,
60*89c4ff92SAndroid Build Coastguard Worker                         input0Values,
61*89c4ff92SAndroid Build Coastguard Worker                         input1Values,
62*89c4ff92SAndroid Build Coastguard Worker                         expectedOutputValues,
63*89c4ff92SAndroid Build Coastguard Worker                         false);
64*89c4ff92SAndroid Build Coastguard Worker }
65*89c4ff92SAndroid Build Coastguard Worker 
ReduceFp32KeepDimsTest(tflite::BuiltinOperator reduceOperatorCode,std::vector<armnn::BackendId> & backends,std::vector<float> & expectedOutputValues)66*89c4ff92SAndroid Build Coastguard Worker void ReduceFp32KeepDimsTest(tflite::BuiltinOperator reduceOperatorCode,
67*89c4ff92SAndroid Build Coastguard Worker                             std::vector<armnn::BackendId>& backends,
68*89c4ff92SAndroid Build Coastguard Worker                             std::vector<float>& expectedOutputValues)
69*89c4ff92SAndroid Build Coastguard Worker {
70*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> input0Shape { 1, 1, 2, 3 };
71*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> input1Shape { 1 };
72*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> expectedOutputShape { 1, 1, 1, 3 };
73*89c4ff92SAndroid Build Coastguard Worker 
74*89c4ff92SAndroid Build Coastguard Worker     std::vector<float>   input0Values { 1001.0f, 11.0f,   1003.0f,
75*89c4ff92SAndroid Build Coastguard Worker                                         10.0f,   1002.0f, 12.0f }; // Inputs
76*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> input1Values { 2 }; // Axis
77*89c4ff92SAndroid Build Coastguard Worker 
78*89c4ff92SAndroid Build Coastguard Worker     ReduceTest<float>(reduceOperatorCode,
79*89c4ff92SAndroid Build Coastguard Worker                       ::tflite::TensorType_FLOAT32,
80*89c4ff92SAndroid Build Coastguard Worker                       backends,
81*89c4ff92SAndroid Build Coastguard Worker                       input0Shape,
82*89c4ff92SAndroid Build Coastguard Worker                       input1Shape,
83*89c4ff92SAndroid Build Coastguard Worker                       expectedOutputShape,
84*89c4ff92SAndroid Build Coastguard Worker                       input0Values,
85*89c4ff92SAndroid Build Coastguard Worker                       input1Values,
86*89c4ff92SAndroid Build Coastguard Worker                       expectedOutputValues,
87*89c4ff92SAndroid Build Coastguard Worker                       true);
88*89c4ff92SAndroid Build Coastguard Worker }
89*89c4ff92SAndroid Build Coastguard Worker 
ReduceFp32Test(tflite::BuiltinOperator reduceOperatorCode,std::vector<armnn::BackendId> & backends,std::vector<float> & expectedOutputValues)90*89c4ff92SAndroid Build Coastguard Worker void ReduceFp32Test(tflite::BuiltinOperator reduceOperatorCode,
91*89c4ff92SAndroid Build Coastguard Worker                     std::vector<armnn::BackendId>& backends,
92*89c4ff92SAndroid Build Coastguard Worker                     std::vector<float>& expectedOutputValues)
93*89c4ff92SAndroid Build Coastguard Worker {
94*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> input0Shape { 1, 1, 2, 3 };
95*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> input1Shape { 1 };
96*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> expectedOutputShape { 1, 1, 3 };
97*89c4ff92SAndroid Build Coastguard Worker 
98*89c4ff92SAndroid Build Coastguard Worker     std::vector<float>   input0Values { 1001.0f, 11.0f,   1003.0f,
99*89c4ff92SAndroid Build Coastguard Worker                                         10.0f,   1002.0f, 12.0f }; // Inputs
100*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> input1Values { 2 }; // Axis
101*89c4ff92SAndroid Build Coastguard Worker 
102*89c4ff92SAndroid Build Coastguard Worker     ReduceTest<float>(reduceOperatorCode,
103*89c4ff92SAndroid Build Coastguard Worker                       ::tflite::TensorType_FLOAT32,
104*89c4ff92SAndroid Build Coastguard Worker                       backends,
105*89c4ff92SAndroid Build Coastguard Worker                       input0Shape,
106*89c4ff92SAndroid Build Coastguard Worker                       input1Shape,
107*89c4ff92SAndroid Build Coastguard Worker                       expectedOutputShape,
108*89c4ff92SAndroid Build Coastguard Worker                       input0Values,
109*89c4ff92SAndroid Build Coastguard Worker                       input1Values,
110*89c4ff92SAndroid Build Coastguard Worker                       expectedOutputValues,
111*89c4ff92SAndroid Build Coastguard Worker                       false);
112*89c4ff92SAndroid Build Coastguard Worker }
113*89c4ff92SAndroid Build Coastguard Worker 
114*89c4ff92SAndroid Build Coastguard Worker // REDUCE_MAX Tests
115*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("ReduceMax_CpuRefTests")
116*89c4ff92SAndroid Build Coastguard Worker {
117*89c4ff92SAndroid Build Coastguard Worker 
118*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("ReduceMax_Uint8_KeepDims_CpuRef_Test")
119*89c4ff92SAndroid Build Coastguard Worker {
120*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
121*89c4ff92SAndroid Build Coastguard Worker     std::vector<uint8_t> expectedOutputValues { 4, 3, 3 };
122*89c4ff92SAndroid Build Coastguard Worker     ReduceUint8KeepDimsTest(tflite::BuiltinOperator_REDUCE_MAX,
123*89c4ff92SAndroid Build Coastguard Worker                             backends,
124*89c4ff92SAndroid Build Coastguard Worker                             expectedOutputValues);
125*89c4ff92SAndroid Build Coastguard Worker }
126*89c4ff92SAndroid Build Coastguard Worker 
127*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("ReduceMax_Uint8_CpuRef_Test")
128*89c4ff92SAndroid Build Coastguard Worker {
129*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
130*89c4ff92SAndroid Build Coastguard Worker     std::vector<uint8_t> expectedOutputValues { 4, 3, 3 };
131*89c4ff92SAndroid Build Coastguard Worker     ReduceUint8Test(tflite::BuiltinOperator_REDUCE_MAX,
132*89c4ff92SAndroid Build Coastguard Worker                     backends,
133*89c4ff92SAndroid Build Coastguard Worker                     expectedOutputValues);
134*89c4ff92SAndroid Build Coastguard Worker }
135*89c4ff92SAndroid Build Coastguard Worker 
136*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("ReduceMax_Fp32_KeepDims_CpuRef_Test")
137*89c4ff92SAndroid Build Coastguard Worker {
138*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
139*89c4ff92SAndroid Build Coastguard Worker     std::vector<float>   expectedOutputValues { 1001.0f, 1002.0f, 1003.0f };
140*89c4ff92SAndroid Build Coastguard Worker     ReduceFp32KeepDimsTest(tflite::BuiltinOperator_REDUCE_MAX,
141*89c4ff92SAndroid Build Coastguard Worker                            backends,
142*89c4ff92SAndroid Build Coastguard Worker                            expectedOutputValues);
143*89c4ff92SAndroid Build Coastguard Worker }
144*89c4ff92SAndroid Build Coastguard Worker 
145*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("ReduceMax_Fp32_CpuRef_Test")
146*89c4ff92SAndroid Build Coastguard Worker {
147*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
148*89c4ff92SAndroid Build Coastguard Worker     std::vector<float>   expectedOutputValues { 1001.0f, 1002.0f, 1003.0f };
149*89c4ff92SAndroid Build Coastguard Worker     ReduceFp32Test(tflite::BuiltinOperator_REDUCE_MAX,
150*89c4ff92SAndroid Build Coastguard Worker                    backends,
151*89c4ff92SAndroid Build Coastguard Worker                    expectedOutputValues);
152*89c4ff92SAndroid Build Coastguard Worker }
153*89c4ff92SAndroid Build Coastguard Worker 
154*89c4ff92SAndroid Build Coastguard Worker } // End of ReduceMax_CpuRefTests
155*89c4ff92SAndroid Build Coastguard Worker 
156*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("ReduceMax_CpuAccTests")
157*89c4ff92SAndroid Build Coastguard Worker {
158*89c4ff92SAndroid Build Coastguard Worker 
159*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("ReduceMax_Uint8_KeepDims_CpuAcc_Test")
160*89c4ff92SAndroid Build Coastguard Worker {
161*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
162*89c4ff92SAndroid Build Coastguard Worker     std::vector<uint8_t> expectedOutputValues { 4, 3, 3 };
163*89c4ff92SAndroid Build Coastguard Worker     ReduceUint8KeepDimsTest(tflite::BuiltinOperator_REDUCE_MAX,
164*89c4ff92SAndroid Build Coastguard Worker                             backends,
165*89c4ff92SAndroid Build Coastguard Worker                             expectedOutputValues);
166*89c4ff92SAndroid Build Coastguard Worker }
167*89c4ff92SAndroid Build Coastguard Worker 
168*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("ReduceMax_Uint8_CpuAcc_Test")
169*89c4ff92SAndroid Build Coastguard Worker {
170*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
171*89c4ff92SAndroid Build Coastguard Worker     std::vector<uint8_t> expectedOutputValues { 4, 3, 3 };
172*89c4ff92SAndroid Build Coastguard Worker     ReduceUint8Test(tflite::BuiltinOperator_REDUCE_MAX,
173*89c4ff92SAndroid Build Coastguard Worker                     backends,
174*89c4ff92SAndroid Build Coastguard Worker                     expectedOutputValues);
175*89c4ff92SAndroid Build Coastguard Worker }
176*89c4ff92SAndroid Build Coastguard Worker 
177*89c4ff92SAndroid Build Coastguard Worker 
178*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("ReduceMax_Fp32_KeepDims_CpuAcc_Test")
179*89c4ff92SAndroid Build Coastguard Worker {
180*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
181*89c4ff92SAndroid Build Coastguard Worker     std::vector<float>   expectedOutputValues { 1001.0f, 1002.0f, 1003.0f };
182*89c4ff92SAndroid Build Coastguard Worker     ReduceFp32KeepDimsTest(tflite::BuiltinOperator_REDUCE_MAX,
183*89c4ff92SAndroid Build Coastguard Worker                            backends,
184*89c4ff92SAndroid Build Coastguard Worker                            expectedOutputValues);
185*89c4ff92SAndroid Build Coastguard Worker }
186*89c4ff92SAndroid Build Coastguard Worker 
187*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("ReduceMax_Fp32_CpuAcc_Test")
188*89c4ff92SAndroid Build Coastguard Worker {
189*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
190*89c4ff92SAndroid Build Coastguard Worker     std::vector<float>   expectedOutputValues { 1001.0f, 1002.0f, 1003.0f };
191*89c4ff92SAndroid Build Coastguard Worker     ReduceFp32Test(tflite::BuiltinOperator_REDUCE_MAX,
192*89c4ff92SAndroid Build Coastguard Worker                    backends,
193*89c4ff92SAndroid Build Coastguard Worker                    expectedOutputValues);
194*89c4ff92SAndroid Build Coastguard Worker }
195*89c4ff92SAndroid Build Coastguard Worker 
196*89c4ff92SAndroid Build Coastguard Worker } // End of ReduceMax_CpuAccTests
197*89c4ff92SAndroid Build Coastguard Worker 
198*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("ReduceMax_GpuAccTests")
199*89c4ff92SAndroid Build Coastguard Worker {
200*89c4ff92SAndroid Build Coastguard Worker 
201*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("ReduceMax_Uint8_KeepDims_GpuAcc_Test")
202*89c4ff92SAndroid Build Coastguard Worker {
203*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
204*89c4ff92SAndroid Build Coastguard Worker     std::vector<uint8_t> expectedOutputValues { 4, 3, 3 };
205*89c4ff92SAndroid Build Coastguard Worker     ReduceUint8KeepDimsTest(tflite::BuiltinOperator_REDUCE_MAX,
206*89c4ff92SAndroid Build Coastguard Worker                             backends,
207*89c4ff92SAndroid Build Coastguard Worker                             expectedOutputValues);
208*89c4ff92SAndroid Build Coastguard Worker }
209*89c4ff92SAndroid Build Coastguard Worker 
210*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("ReduceMax_Uint8_GpuAcc_Test")
211*89c4ff92SAndroid Build Coastguard Worker {
212*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
213*89c4ff92SAndroid Build Coastguard Worker     std::vector<uint8_t> expectedOutputValues { 4, 3, 3 };
214*89c4ff92SAndroid Build Coastguard Worker     ReduceUint8Test(tflite::BuiltinOperator_REDUCE_MAX,
215*89c4ff92SAndroid Build Coastguard Worker                     backends,
216*89c4ff92SAndroid Build Coastguard Worker                     expectedOutputValues);
217*89c4ff92SAndroid Build Coastguard Worker }
218*89c4ff92SAndroid Build Coastguard Worker 
219*89c4ff92SAndroid Build Coastguard Worker 
220*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("ReduceMax_Fp32_KeepDims_GpuAcc_Test")
221*89c4ff92SAndroid Build Coastguard Worker {
222*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
223*89c4ff92SAndroid Build Coastguard Worker     std::vector<float>   expectedOutputValues { 1001.0f, 1002.0f, 1003.0f };
224*89c4ff92SAndroid Build Coastguard Worker     ReduceFp32KeepDimsTest(tflite::BuiltinOperator_REDUCE_MAX,
225*89c4ff92SAndroid Build Coastguard Worker                            backends,
226*89c4ff92SAndroid Build Coastguard Worker                            expectedOutputValues);
227*89c4ff92SAndroid Build Coastguard Worker }
228*89c4ff92SAndroid Build Coastguard Worker 
229*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("ReduceMax_Fp32_GpuAcc_Test")
230*89c4ff92SAndroid Build Coastguard Worker {
231*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
232*89c4ff92SAndroid Build Coastguard Worker     std::vector<float>   expectedOutputValues { 1001.0f, 1002.0f, 1003.0f };
233*89c4ff92SAndroid Build Coastguard Worker     ReduceFp32Test(tflite::BuiltinOperator_REDUCE_MAX,
234*89c4ff92SAndroid Build Coastguard Worker                    backends,
235*89c4ff92SAndroid Build Coastguard Worker                    expectedOutputValues);
236*89c4ff92SAndroid Build Coastguard Worker }
237*89c4ff92SAndroid Build Coastguard Worker 
238*89c4ff92SAndroid Build Coastguard Worker } // End of ReduceMax_GpuAccTests
239*89c4ff92SAndroid Build Coastguard Worker 
240*89c4ff92SAndroid Build Coastguard Worker // REDUCE_MIN Tests
241*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("ReduceMin_CpuRefTests")
242*89c4ff92SAndroid Build Coastguard Worker {
243*89c4ff92SAndroid Build Coastguard Worker 
244*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("ReduceMin_Fp32_CpuRef_Test")
245*89c4ff92SAndroid Build Coastguard Worker {
246*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
247*89c4ff92SAndroid Build Coastguard Worker     std::vector<float>   expectedOutputValues { 10.0f, 11.0f, 12.0f };
248*89c4ff92SAndroid Build Coastguard Worker     ReduceFp32Test(tflite::BuiltinOperator_REDUCE_MIN,
249*89c4ff92SAndroid Build Coastguard Worker                    backends,
250*89c4ff92SAndroid Build Coastguard Worker                    expectedOutputValues);
251*89c4ff92SAndroid Build Coastguard Worker }
252*89c4ff92SAndroid Build Coastguard Worker 
253*89c4ff92SAndroid Build Coastguard Worker } // End of ReduceMin_CpuRefTests
254*89c4ff92SAndroid Build Coastguard Worker 
255*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("ReduceMin_CpuAccTests")
256*89c4ff92SAndroid Build Coastguard Worker {
257*89c4ff92SAndroid Build Coastguard Worker 
258*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("ReduceMin_Fp32_CpuAcc_Test")
259*89c4ff92SAndroid Build Coastguard Worker {
260*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
261*89c4ff92SAndroid Build Coastguard Worker     std::vector<float>   expectedOutputValues { 10.0f, 11.0f, 12.0f };
262*89c4ff92SAndroid Build Coastguard Worker     ReduceFp32Test(tflite::BuiltinOperator_REDUCE_MIN,
263*89c4ff92SAndroid Build Coastguard Worker                    backends,
264*89c4ff92SAndroid Build Coastguard Worker                    expectedOutputValues);
265*89c4ff92SAndroid Build Coastguard Worker }
266*89c4ff92SAndroid Build Coastguard Worker 
267*89c4ff92SAndroid Build Coastguard Worker } // End of ReduceMin_CpuAccTests
268*89c4ff92SAndroid Build Coastguard Worker 
269*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("ReduceMin_GpuAccTests")
270*89c4ff92SAndroid Build Coastguard Worker {
271*89c4ff92SAndroid Build Coastguard Worker 
272*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("ReduceMin_Fp32_GpuAcc_Test")
273*89c4ff92SAndroid Build Coastguard Worker {
274*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
275*89c4ff92SAndroid Build Coastguard Worker     std::vector<float>   expectedOutputValues { 10.0f, 11.0f, 12.0f };
276*89c4ff92SAndroid Build Coastguard Worker     ReduceFp32Test(tflite::BuiltinOperator_REDUCE_MIN,
277*89c4ff92SAndroid Build Coastguard Worker                    backends,
278*89c4ff92SAndroid Build Coastguard Worker                    expectedOutputValues);
279*89c4ff92SAndroid Build Coastguard Worker }
280*89c4ff92SAndroid Build Coastguard Worker 
281*89c4ff92SAndroid Build Coastguard Worker } // End of ReduceMin_GpuAccTests
282*89c4ff92SAndroid Build Coastguard Worker 
283*89c4ff92SAndroid Build Coastguard Worker // SUM Tests
284*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("Sum_CpuRefTests")
285*89c4ff92SAndroid Build Coastguard Worker {
286*89c4ff92SAndroid Build Coastguard Worker 
287*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Sum_Uint8_KeepDims_CpuRef_Test")
288*89c4ff92SAndroid Build Coastguard Worker {
289*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
290*89c4ff92SAndroid Build Coastguard Worker     std::vector<uint8_t> expectedOutputValues { 5, 5, 4 };
291*89c4ff92SAndroid Build Coastguard Worker     ReduceUint8KeepDimsTest(tflite::BuiltinOperator_SUM,
292*89c4ff92SAndroid Build Coastguard Worker                             backends,
293*89c4ff92SAndroid Build Coastguard Worker                             expectedOutputValues);
294*89c4ff92SAndroid Build Coastguard Worker }
295*89c4ff92SAndroid Build Coastguard Worker 
296*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Sum_Fp32_CpuRef_Test")
297*89c4ff92SAndroid Build Coastguard Worker {
298*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
299*89c4ff92SAndroid Build Coastguard Worker     std::vector<float>   expectedOutputValues { 1011.0f, 1013.0f, 1015.0f };
300*89c4ff92SAndroid Build Coastguard Worker     ReduceFp32Test(tflite::BuiltinOperator_SUM,
301*89c4ff92SAndroid Build Coastguard Worker                    backends,
302*89c4ff92SAndroid Build Coastguard Worker                    expectedOutputValues);
303*89c4ff92SAndroid Build Coastguard Worker }
304*89c4ff92SAndroid Build Coastguard Worker 
305*89c4ff92SAndroid Build Coastguard Worker } // End of Sum_CpuRefTests
306*89c4ff92SAndroid Build Coastguard Worker 
307*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("Sum_CpuAccTests")
308*89c4ff92SAndroid Build Coastguard Worker {
309*89c4ff92SAndroid Build Coastguard Worker 
310*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Sum_Uint8_KeepDims_CpuAcc_Test")
311*89c4ff92SAndroid Build Coastguard Worker {
312*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
313*89c4ff92SAndroid Build Coastguard Worker     std::vector<uint8_t> expectedOutputValues { 5, 5, 4 };
314*89c4ff92SAndroid Build Coastguard Worker     ReduceUint8KeepDimsTest(tflite::BuiltinOperator_SUM,
315*89c4ff92SAndroid Build Coastguard Worker                             backends,
316*89c4ff92SAndroid Build Coastguard Worker                             expectedOutputValues);
317*89c4ff92SAndroid Build Coastguard Worker }
318*89c4ff92SAndroid Build Coastguard Worker 
319*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Sum_Fp32_CpuAcc_Test")
320*89c4ff92SAndroid Build Coastguard Worker {
321*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
322*89c4ff92SAndroid Build Coastguard Worker     std::vector<float>   expectedOutputValues { 1011.0f, 1013.0f, 1015.0f };
323*89c4ff92SAndroid Build Coastguard Worker     ReduceFp32Test(tflite::BuiltinOperator_SUM,
324*89c4ff92SAndroid Build Coastguard Worker                    backends,
325*89c4ff92SAndroid Build Coastguard Worker                    expectedOutputValues);
326*89c4ff92SAndroid Build Coastguard Worker }
327*89c4ff92SAndroid Build Coastguard Worker 
328*89c4ff92SAndroid Build Coastguard Worker } // End of Sum_CpuAccTests
329*89c4ff92SAndroid Build Coastguard Worker 
330*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("Sum_GpuAccTests")
331*89c4ff92SAndroid Build Coastguard Worker {
332*89c4ff92SAndroid Build Coastguard Worker 
333*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Sum_Uint8_KeepDims_GpuAcc_Test")
334*89c4ff92SAndroid Build Coastguard Worker {
335*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
336*89c4ff92SAndroid Build Coastguard Worker     std::vector<uint8_t> expectedOutputValues { 5, 5, 4 };
337*89c4ff92SAndroid Build Coastguard Worker     ReduceUint8KeepDimsTest(tflite::BuiltinOperator_SUM,
338*89c4ff92SAndroid Build Coastguard Worker                             backends,
339*89c4ff92SAndroid Build Coastguard Worker                             expectedOutputValues);
340*89c4ff92SAndroid Build Coastguard Worker }
341*89c4ff92SAndroid Build Coastguard Worker 
342*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Sum_Fp32_GpuAcc_Test")
343*89c4ff92SAndroid Build Coastguard Worker {
344*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
345*89c4ff92SAndroid Build Coastguard Worker     std::vector<float>   expectedOutputValues { 1011.0f, 1013.0f, 1015.0f };
346*89c4ff92SAndroid Build Coastguard Worker     ReduceFp32Test(tflite::BuiltinOperator_SUM,
347*89c4ff92SAndroid Build Coastguard Worker                    backends,
348*89c4ff92SAndroid Build Coastguard Worker                    expectedOutputValues);
349*89c4ff92SAndroid Build Coastguard Worker }
350*89c4ff92SAndroid Build Coastguard Worker 
351*89c4ff92SAndroid Build Coastguard Worker } // End of Sum_GpuAccTests
352*89c4ff92SAndroid Build Coastguard Worker 
353*89c4ff92SAndroid Build Coastguard Worker // PROD Tests
354*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("Prod_CpuRefTests")
355*89c4ff92SAndroid Build Coastguard Worker {
356*89c4ff92SAndroid Build Coastguard Worker 
357*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Prod_Uint8_KeepDims_CpuRef_Test")
358*89c4ff92SAndroid Build Coastguard Worker {
359*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
360*89c4ff92SAndroid Build Coastguard Worker     std::vector<uint8_t> expectedOutputValues { 4, 6, 3 };
361*89c4ff92SAndroid Build Coastguard Worker     ReduceUint8KeepDimsTest(tflite::BuiltinOperator_REDUCE_PROD,
362*89c4ff92SAndroid Build Coastguard Worker                             backends,
363*89c4ff92SAndroid Build Coastguard Worker                             expectedOutputValues);
364*89c4ff92SAndroid Build Coastguard Worker }
365*89c4ff92SAndroid Build Coastguard Worker 
366*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Prod_Fp32_CpuRef_Test")
367*89c4ff92SAndroid Build Coastguard Worker {
368*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
369*89c4ff92SAndroid Build Coastguard Worker     std::vector<float>   expectedOutputValues { 10010.0f, 11022.0f, 12036.0f };
370*89c4ff92SAndroid Build Coastguard Worker     ReduceFp32Test(tflite::BuiltinOperator_REDUCE_PROD,
371*89c4ff92SAndroid Build Coastguard Worker                    backends,
372*89c4ff92SAndroid Build Coastguard Worker                    expectedOutputValues);
373*89c4ff92SAndroid Build Coastguard Worker }
374*89c4ff92SAndroid Build Coastguard Worker 
375*89c4ff92SAndroid Build Coastguard Worker } // End of Prod_CpuRefTests
376*89c4ff92SAndroid Build Coastguard Worker 
377*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("Prod_CpuAccTests")
378*89c4ff92SAndroid Build Coastguard Worker {
379*89c4ff92SAndroid Build Coastguard Worker 
380*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Prod_Uint8_KeepDims_CpuAcc_Test" )
381*89c4ff92SAndroid Build Coastguard Worker {
382*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
383*89c4ff92SAndroid Build Coastguard Worker     std::vector<uint8_t> expectedOutputValues { 4, 6, 3 };
384*89c4ff92SAndroid Build Coastguard Worker     ReduceUint8KeepDimsTest(tflite::BuiltinOperator_REDUCE_PROD,
385*89c4ff92SAndroid Build Coastguard Worker                             backends,
386*89c4ff92SAndroid Build Coastguard Worker                             expectedOutputValues);
387*89c4ff92SAndroid Build Coastguard Worker }
388*89c4ff92SAndroid Build Coastguard Worker 
389*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Prod_Fp32_CpuAcc_Test")
390*89c4ff92SAndroid Build Coastguard Worker {
391*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
392*89c4ff92SAndroid Build Coastguard Worker     std::vector<float>   expectedOutputValues { 10010.0f, 11022.0f, 12036.0f };
393*89c4ff92SAndroid Build Coastguard Worker     ReduceFp32Test(tflite::BuiltinOperator_REDUCE_PROD,
394*89c4ff92SAndroid Build Coastguard Worker                    backends,
395*89c4ff92SAndroid Build Coastguard Worker                    expectedOutputValues);
396*89c4ff92SAndroid Build Coastguard Worker }
397*89c4ff92SAndroid Build Coastguard Worker 
398*89c4ff92SAndroid Build Coastguard Worker } // End of Prod_CpuAccTests
399*89c4ff92SAndroid Build Coastguard Worker 
400*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("Prod_GpuAccTests")
401*89c4ff92SAndroid Build Coastguard Worker {
402*89c4ff92SAndroid Build Coastguard Worker 
403*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Prod_Uint8_KeepDims_GpuAcc_Test")
404*89c4ff92SAndroid Build Coastguard Worker {
405*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
406*89c4ff92SAndroid Build Coastguard Worker     std::vector<uint8_t> expectedOutputValues { 4, 6, 3 };
407*89c4ff92SAndroid Build Coastguard Worker     ReduceUint8KeepDimsTest(tflite::BuiltinOperator_REDUCE_PROD,
408*89c4ff92SAndroid Build Coastguard Worker                             backends,
409*89c4ff92SAndroid Build Coastguard Worker                             expectedOutputValues);
410*89c4ff92SAndroid Build Coastguard Worker }
411*89c4ff92SAndroid Build Coastguard Worker 
412*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Prod_Fp32_GpuAcc_Test")
413*89c4ff92SAndroid Build Coastguard Worker {
414*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
415*89c4ff92SAndroid Build Coastguard Worker     std::vector<float>   expectedOutputValues { 10010.0f, 11022.0f, 12036.0f };
416*89c4ff92SAndroid Build Coastguard Worker     ReduceFp32Test(tflite::BuiltinOperator_REDUCE_PROD,
417*89c4ff92SAndroid Build Coastguard Worker                    backends,
418*89c4ff92SAndroid Build Coastguard Worker                    expectedOutputValues);
419*89c4ff92SAndroid Build Coastguard Worker }
420*89c4ff92SAndroid Build Coastguard Worker 
421*89c4ff92SAndroid Build Coastguard Worker } // End of Prod_GpuAccTests
422*89c4ff92SAndroid Build Coastguard Worker 
423*89c4ff92SAndroid Build Coastguard Worker } // namespace armnnDelegate