1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2020, 2023 Arm Ltd and Contributors. All rights reserved.
3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT
4*89c4ff92SAndroid Build Coastguard Worker //
5*89c4ff92SAndroid Build Coastguard Worker
6*89c4ff92SAndroid Build Coastguard Worker #include "QuantizationTestHelper.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
18*89c4ff92SAndroid Build Coastguard Worker // Dequantize operator test functions.
DequantizeUint8Test(std::vector<armnn::BackendId> & backends)19*89c4ff92SAndroid Build Coastguard Worker void DequantizeUint8Test(std::vector<armnn::BackendId>& backends)
20*89c4ff92SAndroid Build Coastguard Worker {
21*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape { 2, 4 };
22*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> outputShape { 2, 4 };
23*89c4ff92SAndroid Build Coastguard Worker
24*89c4ff92SAndroid Build Coastguard Worker // Set input and output data
25*89c4ff92SAndroid Build Coastguard Worker std::vector<uint8_t> inputValues
26*89c4ff92SAndroid Build Coastguard Worker {
27*89c4ff92SAndroid Build Coastguard Worker 0, 1, 2, 3, // Lower bounds
28*89c4ff92SAndroid Build Coastguard Worker 252, 253, 254, 255 // Upper bounds
29*89c4ff92SAndroid Build Coastguard Worker };
30*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues
31*89c4ff92SAndroid Build Coastguard Worker {
32*89c4ff92SAndroid Build Coastguard Worker 0.f, 1.f, 2.f, 3.f,
33*89c4ff92SAndroid Build Coastguard Worker 252.f, 253.f, 254.f, 255.f
34*89c4ff92SAndroid Build Coastguard Worker };
35*89c4ff92SAndroid Build Coastguard Worker
36*89c4ff92SAndroid Build Coastguard Worker QuantizationTest<uint8_t, float>(tflite::BuiltinOperator_DEQUANTIZE,
37*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_UINT8,
38*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
39*89c4ff92SAndroid Build Coastguard Worker backends,
40*89c4ff92SAndroid Build Coastguard Worker inputShape,
41*89c4ff92SAndroid Build Coastguard Worker outputShape,
42*89c4ff92SAndroid Build Coastguard Worker inputValues,
43*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues);
44*89c4ff92SAndroid Build Coastguard Worker }
45*89c4ff92SAndroid Build Coastguard Worker
DequantizeInt8Test(std::vector<armnn::BackendId> & backends)46*89c4ff92SAndroid Build Coastguard Worker void DequantizeInt8Test(std::vector<armnn::BackendId>& backends)
47*89c4ff92SAndroid Build Coastguard Worker {
48*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape { 2, 4 };
49*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> outputShape { 2, 4 };
50*89c4ff92SAndroid Build Coastguard Worker
51*89c4ff92SAndroid Build Coastguard Worker std::vector<int8_t> inputValues
52*89c4ff92SAndroid Build Coastguard Worker {
53*89c4ff92SAndroid Build Coastguard Worker -1, 0, 1, 2,
54*89c4ff92SAndroid Build Coastguard Worker -128, -127, 126, 127
55*89c4ff92SAndroid Build Coastguard Worker };
56*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues
57*89c4ff92SAndroid Build Coastguard Worker {
58*89c4ff92SAndroid Build Coastguard Worker -1.f, 0.f, 1.f, 2.f,
59*89c4ff92SAndroid Build Coastguard Worker -128.f, -127.f, 126.f, 127.f
60*89c4ff92SAndroid Build Coastguard Worker };
61*89c4ff92SAndroid Build Coastguard Worker
62*89c4ff92SAndroid Build Coastguard Worker QuantizationTest<int8_t , float>(tflite::BuiltinOperator_DEQUANTIZE,
63*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_INT8,
64*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
65*89c4ff92SAndroid Build Coastguard Worker backends,
66*89c4ff92SAndroid Build Coastguard Worker inputShape,
67*89c4ff92SAndroid Build Coastguard Worker outputShape,
68*89c4ff92SAndroid Build Coastguard Worker inputValues,
69*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues);
70*89c4ff92SAndroid Build Coastguard Worker }
71*89c4ff92SAndroid Build Coastguard Worker
DequantizeInt16Test(std::vector<armnn::BackendId> & backends)72*89c4ff92SAndroid Build Coastguard Worker void DequantizeInt16Test(std::vector<armnn::BackendId>& backends)
73*89c4ff92SAndroid Build Coastguard Worker {
74*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape { 2, 5 };
75*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> outputShape { 2, 5 };
76*89c4ff92SAndroid Build Coastguard Worker
77*89c4ff92SAndroid Build Coastguard Worker std::vector<int16_t> inputValues
78*89c4ff92SAndroid Build Coastguard Worker {
79*89c4ff92SAndroid Build Coastguard Worker -1, 0, 1, 2,
80*89c4ff92SAndroid Build Coastguard Worker -32768, -16384, 16384, 32767
81*89c4ff92SAndroid Build Coastguard Worker };
82*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues
83*89c4ff92SAndroid Build Coastguard Worker {
84*89c4ff92SAndroid Build Coastguard Worker -1.f, 0.f, 1.f, 2.f,
85*89c4ff92SAndroid Build Coastguard Worker -32768.f, -16384.f, 16384.f, 32767.f
86*89c4ff92SAndroid Build Coastguard Worker };
87*89c4ff92SAndroid Build Coastguard Worker
88*89c4ff92SAndroid Build Coastguard Worker QuantizationTest<int16_t, float>(tflite::BuiltinOperator_DEQUANTIZE,
89*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_INT16,
90*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
91*89c4ff92SAndroid Build Coastguard Worker backends,
92*89c4ff92SAndroid Build Coastguard Worker inputShape,
93*89c4ff92SAndroid Build Coastguard Worker outputShape,
94*89c4ff92SAndroid Build Coastguard Worker inputValues,
95*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues);
96*89c4ff92SAndroid Build Coastguard Worker }
97*89c4ff92SAndroid Build Coastguard Worker
98*89c4ff92SAndroid Build Coastguard Worker // Quantize operator test functions.
QuantizeFloat32Uint8Test(std::vector<armnn::BackendId> & backends)99*89c4ff92SAndroid Build Coastguard Worker void QuantizeFloat32Uint8Test(std::vector<armnn::BackendId>& backends)
100*89c4ff92SAndroid Build Coastguard Worker {
101*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape { 2, 4 };
102*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> outputShape { 2, 4 };
103*89c4ff92SAndroid Build Coastguard Worker
104*89c4ff92SAndroid Build Coastguard Worker // Set input and output data
105*89c4ff92SAndroid Build Coastguard Worker std::vector<float> inputValues
106*89c4ff92SAndroid Build Coastguard Worker {
107*89c4ff92SAndroid Build Coastguard Worker -1.f, 0.f, 1.f, 2.f, // Lower bounds
108*89c4ff92SAndroid Build Coastguard Worker 252.f, 253.f, 255.f, 256.f // Upper bounds
109*89c4ff92SAndroid Build Coastguard Worker };
110*89c4ff92SAndroid Build Coastguard Worker std::vector<uint8_t> expectedOutputValues
111*89c4ff92SAndroid Build Coastguard Worker {
112*89c4ff92SAndroid Build Coastguard Worker 0, 0, 1, 2,
113*89c4ff92SAndroid Build Coastguard Worker 252, 253, 255, 255
114*89c4ff92SAndroid Build Coastguard Worker };
115*89c4ff92SAndroid Build Coastguard Worker
116*89c4ff92SAndroid Build Coastguard Worker QuantizationTest<float, uint8_t>(tflite::BuiltinOperator_QUANTIZE,
117*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
118*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_UINT8,
119*89c4ff92SAndroid Build Coastguard Worker backends,
120*89c4ff92SAndroid Build Coastguard Worker inputShape,
121*89c4ff92SAndroid Build Coastguard Worker outputShape,
122*89c4ff92SAndroid Build Coastguard Worker inputValues,
123*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues);
124*89c4ff92SAndroid Build Coastguard Worker }
125*89c4ff92SAndroid Build Coastguard Worker
QuantizeFloat32Int8Test(std::vector<armnn::BackendId> & backends)126*89c4ff92SAndroid Build Coastguard Worker void QuantizeFloat32Int8Test(std::vector<armnn::BackendId>& backends)
127*89c4ff92SAndroid Build Coastguard Worker {
128*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape { 2, 4 };
129*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> outputShape { 2, 4 };
130*89c4ff92SAndroid Build Coastguard Worker
131*89c4ff92SAndroid Build Coastguard Worker std::vector<float> inputValues
132*89c4ff92SAndroid Build Coastguard Worker {
133*89c4ff92SAndroid Build Coastguard Worker -1.f, 0.f, 1.f, 2.f,
134*89c4ff92SAndroid Build Coastguard Worker -128.5f, -127.f, 126.f, 127.5f
135*89c4ff92SAndroid Build Coastguard Worker };
136*89c4ff92SAndroid Build Coastguard Worker std::vector<int8_t> expectedOutputValues
137*89c4ff92SAndroid Build Coastguard Worker {
138*89c4ff92SAndroid Build Coastguard Worker -1, 0, 1, 2,
139*89c4ff92SAndroid Build Coastguard Worker -128, -127, 126, 127
140*89c4ff92SAndroid Build Coastguard Worker };
141*89c4ff92SAndroid Build Coastguard Worker
142*89c4ff92SAndroid Build Coastguard Worker QuantizationTest<float, int8_t>(tflite::BuiltinOperator_QUANTIZE,
143*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
144*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_INT8,
145*89c4ff92SAndroid Build Coastguard Worker backends,
146*89c4ff92SAndroid Build Coastguard Worker inputShape,
147*89c4ff92SAndroid Build Coastguard Worker outputShape,
148*89c4ff92SAndroid Build Coastguard Worker inputValues,
149*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues);
150*89c4ff92SAndroid Build Coastguard Worker }
151*89c4ff92SAndroid Build Coastguard Worker
QuantizeFloat32Int16Test(std::vector<armnn::BackendId> & backends)152*89c4ff92SAndroid Build Coastguard Worker void QuantizeFloat32Int16Test(std::vector<armnn::BackendId>& backends)
153*89c4ff92SAndroid Build Coastguard Worker {
154*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape { 2, 4 };
155*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> outputShape { 2, 4 };
156*89c4ff92SAndroid Build Coastguard Worker
157*89c4ff92SAndroid Build Coastguard Worker std::vector<float> inputValues
158*89c4ff92SAndroid Build Coastguard Worker {
159*89c4ff92SAndroid Build Coastguard Worker -1.f, 0.f, 1.f, 2.f,
160*89c4ff92SAndroid Build Coastguard Worker -32768.5f, -16384.f, 16384.f, 32767.5f
161*89c4ff92SAndroid Build Coastguard Worker };
162*89c4ff92SAndroid Build Coastguard Worker std::vector<int16_t> expectedOutputValues
163*89c4ff92SAndroid Build Coastguard Worker {
164*89c4ff92SAndroid Build Coastguard Worker -1, 0, 1, 2,
165*89c4ff92SAndroid Build Coastguard Worker -32768, -16384, 16384, 32767
166*89c4ff92SAndroid Build Coastguard Worker };
167*89c4ff92SAndroid Build Coastguard Worker
168*89c4ff92SAndroid Build Coastguard Worker QuantizationTest<float, int16_t>(tflite::BuiltinOperator_QUANTIZE,
169*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
170*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_INT16,
171*89c4ff92SAndroid Build Coastguard Worker backends,
172*89c4ff92SAndroid Build Coastguard Worker inputShape,
173*89c4ff92SAndroid Build Coastguard Worker outputShape,
174*89c4ff92SAndroid Build Coastguard Worker inputValues,
175*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues);
176*89c4ff92SAndroid Build Coastguard Worker }
177*89c4ff92SAndroid Build Coastguard Worker
QuantizeInt16Int16Test(std::vector<armnn::BackendId> & backends)178*89c4ff92SAndroid Build Coastguard Worker void QuantizeInt16Int16Test(std::vector<armnn::BackendId>& backends)
179*89c4ff92SAndroid Build Coastguard Worker {
180*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape { 2, 4 };
181*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> outputShape { 2, 4 };
182*89c4ff92SAndroid Build Coastguard Worker
183*89c4ff92SAndroid Build Coastguard Worker std::vector<int16_t> inputValues
184*89c4ff92SAndroid Build Coastguard Worker {
185*89c4ff92SAndroid Build Coastguard Worker -1, 0, 1, 2,
186*89c4ff92SAndroid Build Coastguard Worker -32768, -16384, 16384, 32767
187*89c4ff92SAndroid Build Coastguard Worker };
188*89c4ff92SAndroid Build Coastguard Worker std::vector<int16_t> expectedOutputValues
189*89c4ff92SAndroid Build Coastguard Worker {
190*89c4ff92SAndroid Build Coastguard Worker -1, 0, 1, 2,
191*89c4ff92SAndroid Build Coastguard Worker -32768, -16384, 16384, 32767
192*89c4ff92SAndroid Build Coastguard Worker };
193*89c4ff92SAndroid Build Coastguard Worker
194*89c4ff92SAndroid Build Coastguard Worker QuantizationTest<int16_t, int16_t>(tflite::BuiltinOperator_QUANTIZE,
195*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_INT16,
196*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_INT16,
197*89c4ff92SAndroid Build Coastguard Worker backends,
198*89c4ff92SAndroid Build Coastguard Worker inputShape,
199*89c4ff92SAndroid Build Coastguard Worker outputShape,
200*89c4ff92SAndroid Build Coastguard Worker inputValues,
201*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues);
202*89c4ff92SAndroid Build Coastguard Worker }
203*89c4ff92SAndroid Build Coastguard Worker
QuantizeInt16Int8Test(std::vector<armnn::BackendId> & backends)204*89c4ff92SAndroid Build Coastguard Worker void QuantizeInt16Int8Test(std::vector<armnn::BackendId>& backends)
205*89c4ff92SAndroid Build Coastguard Worker {
206*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape { 2, 4 };
207*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> outputShape { 2, 4 };
208*89c4ff92SAndroid Build Coastguard Worker
209*89c4ff92SAndroid Build Coastguard Worker std::vector<int16_t> inputValues
210*89c4ff92SAndroid Build Coastguard Worker {
211*89c4ff92SAndroid Build Coastguard Worker -1, 0, 1, 2,
212*89c4ff92SAndroid Build Coastguard Worker -32768, -16384, 16384, 32767
213*89c4ff92SAndroid Build Coastguard Worker };
214*89c4ff92SAndroid Build Coastguard Worker std::vector<int8_t> expectedOutputValues
215*89c4ff92SAndroid Build Coastguard Worker {
216*89c4ff92SAndroid Build Coastguard Worker -1, 0, 1, 2,
217*89c4ff92SAndroid Build Coastguard Worker -128, -128, 127, 127
218*89c4ff92SAndroid Build Coastguard Worker };
219*89c4ff92SAndroid Build Coastguard Worker
220*89c4ff92SAndroid Build Coastguard Worker QuantizationTest<int16_t, int8_t>(tflite::BuiltinOperator_QUANTIZE,
221*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_INT16,
222*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_INT8,
223*89c4ff92SAndroid Build Coastguard Worker backends,
224*89c4ff92SAndroid Build Coastguard Worker inputShape,
225*89c4ff92SAndroid Build Coastguard Worker outputShape,
226*89c4ff92SAndroid Build Coastguard Worker inputValues,
227*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues);
228*89c4ff92SAndroid Build Coastguard Worker }
229*89c4ff92SAndroid Build Coastguard Worker
QuantizeInt8Uint8Test(std::vector<armnn::BackendId> & backends)230*89c4ff92SAndroid Build Coastguard Worker void QuantizeInt8Uint8Test(std::vector<armnn::BackendId>& backends)
231*89c4ff92SAndroid Build Coastguard Worker {
232*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape { 2, 4 };
233*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> outputShape { 2, 4 };
234*89c4ff92SAndroid Build Coastguard Worker
235*89c4ff92SAndroid Build Coastguard Worker std::vector<int8_t> inputValues
236*89c4ff92SAndroid Build Coastguard Worker {
237*89c4ff92SAndroid Build Coastguard Worker -1, 0, 1, 2,
238*89c4ff92SAndroid Build Coastguard Worker -128, -127, 126, 127
239*89c4ff92SAndroid Build Coastguard Worker };
240*89c4ff92SAndroid Build Coastguard Worker std::vector<uint8_t> expectedOutputValues
241*89c4ff92SAndroid Build Coastguard Worker {
242*89c4ff92SAndroid Build Coastguard Worker 0, 0, 1, 2,
243*89c4ff92SAndroid Build Coastguard Worker 0, 0, 126, 127
244*89c4ff92SAndroid Build Coastguard Worker };
245*89c4ff92SAndroid Build Coastguard Worker
246*89c4ff92SAndroid Build Coastguard Worker QuantizationTest<int8_t, uint8_t>(tflite::BuiltinOperator_QUANTIZE,
247*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_INT8,
248*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_UINT8,
249*89c4ff92SAndroid Build Coastguard Worker backends,
250*89c4ff92SAndroid Build Coastguard Worker inputShape,
251*89c4ff92SAndroid Build Coastguard Worker outputShape,
252*89c4ff92SAndroid Build Coastguard Worker inputValues,
253*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues);
254*89c4ff92SAndroid Build Coastguard Worker }
255*89c4ff92SAndroid Build Coastguard Worker
QuantizeUint8Int8Test(std::vector<armnn::BackendId> & backends)256*89c4ff92SAndroid Build Coastguard Worker void QuantizeUint8Int8Test(std::vector<armnn::BackendId>& backends)
257*89c4ff92SAndroid Build Coastguard Worker {
258*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape { 2, 4 };
259*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> outputShape { 2, 4 };
260*89c4ff92SAndroid Build Coastguard Worker
261*89c4ff92SAndroid Build Coastguard Worker std::vector<uint8_t> inputValues
262*89c4ff92SAndroid Build Coastguard Worker {
263*89c4ff92SAndroid Build Coastguard Worker 0, 1, 2, 3,
264*89c4ff92SAndroid Build Coastguard Worker 126, 127, 254, 255
265*89c4ff92SAndroid Build Coastguard Worker };
266*89c4ff92SAndroid Build Coastguard Worker std::vector<int8_t> expectedOutputValues
267*89c4ff92SAndroid Build Coastguard Worker {
268*89c4ff92SAndroid Build Coastguard Worker 0, 1, 2, 3,
269*89c4ff92SAndroid Build Coastguard Worker 126, 127, 127, 127
270*89c4ff92SAndroid Build Coastguard Worker };
271*89c4ff92SAndroid Build Coastguard Worker
272*89c4ff92SAndroid Build Coastguard Worker QuantizationTest<uint8_t, int8_t>(tflite::BuiltinOperator_QUANTIZE,
273*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_UINT8,
274*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_INT8,
275*89c4ff92SAndroid Build Coastguard Worker backends,
276*89c4ff92SAndroid Build Coastguard Worker inputShape,
277*89c4ff92SAndroid Build Coastguard Worker outputShape,
278*89c4ff92SAndroid Build Coastguard Worker inputValues,
279*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues);
280*89c4ff92SAndroid Build Coastguard Worker }
281*89c4ff92SAndroid Build Coastguard Worker
282*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("CpuRef_QuantizationTests")
283*89c4ff92SAndroid Build Coastguard Worker {
284*89c4ff92SAndroid Build Coastguard Worker
285*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("DEQUANTIZE_UINT8_CpuRef_Test")
286*89c4ff92SAndroid Build Coastguard Worker {
287*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
288*89c4ff92SAndroid Build Coastguard Worker DequantizeUint8Test(backends);
289*89c4ff92SAndroid Build Coastguard Worker }
290*89c4ff92SAndroid Build Coastguard Worker
291*89c4ff92SAndroid Build Coastguard Worker
292*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("DEQUANTIZE_INT8_CpuRef_Test")
293*89c4ff92SAndroid Build Coastguard Worker {
294*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
295*89c4ff92SAndroid Build Coastguard Worker DequantizeInt8Test(backends);
296*89c4ff92SAndroid Build Coastguard Worker }
297*89c4ff92SAndroid Build Coastguard Worker
298*89c4ff92SAndroid Build Coastguard Worker
299*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("DEQUANTIZE_INT16_CpuRef_Test")
300*89c4ff92SAndroid Build Coastguard Worker {
301*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
302*89c4ff92SAndroid Build Coastguard Worker DequantizeInt16Test(backends);
303*89c4ff92SAndroid Build Coastguard Worker }
304*89c4ff92SAndroid Build Coastguard Worker
305*89c4ff92SAndroid Build Coastguard Worker
306*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("QUANTIZE_FLOAT32_UINT8_CpuRef_Test")
307*89c4ff92SAndroid Build Coastguard Worker {
308*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
309*89c4ff92SAndroid Build Coastguard Worker QuantizeFloat32Uint8Test(backends);
310*89c4ff92SAndroid Build Coastguard Worker }
311*89c4ff92SAndroid Build Coastguard Worker
312*89c4ff92SAndroid Build Coastguard Worker
313*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("QUANTIZE_FLOAT32_INT8_CpuRef_Test")
314*89c4ff92SAndroid Build Coastguard Worker {
315*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
316*89c4ff92SAndroid Build Coastguard Worker QuantizeFloat32Int8Test(backends);
317*89c4ff92SAndroid Build Coastguard Worker }
318*89c4ff92SAndroid Build Coastguard Worker
319*89c4ff92SAndroid Build Coastguard Worker
320*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("QUANTIZE_FLOAT32_INT16_CpuRef_Test")
321*89c4ff92SAndroid Build Coastguard Worker {
322*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
323*89c4ff92SAndroid Build Coastguard Worker QuantizeFloat32Int16Test(backends);
324*89c4ff92SAndroid Build Coastguard Worker }
325*89c4ff92SAndroid Build Coastguard Worker
326*89c4ff92SAndroid Build Coastguard Worker
327*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("QUANTIZE_INT16_INT16_CpuRef_Test")
328*89c4ff92SAndroid Build Coastguard Worker {
329*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
330*89c4ff92SAndroid Build Coastguard Worker QuantizeInt16Int16Test(backends);
331*89c4ff92SAndroid Build Coastguard Worker }
332*89c4ff92SAndroid Build Coastguard Worker
333*89c4ff92SAndroid Build Coastguard Worker
334*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("QUANTIZE_INT16_INT8_CpuRef_Test")
335*89c4ff92SAndroid Build Coastguard Worker {
336*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
337*89c4ff92SAndroid Build Coastguard Worker QuantizeInt16Int8Test(backends);
338*89c4ff92SAndroid Build Coastguard Worker }
339*89c4ff92SAndroid Build Coastguard Worker
340*89c4ff92SAndroid Build Coastguard Worker
341*89c4ff92SAndroid Build Coastguard Worker
342*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("QUANTIZE_INT8_UINT8_CpuRef_Test")
343*89c4ff92SAndroid Build Coastguard Worker {
344*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
345*89c4ff92SAndroid Build Coastguard Worker QuantizeInt8Uint8Test(backends);
346*89c4ff92SAndroid Build Coastguard Worker }
347*89c4ff92SAndroid Build Coastguard Worker
348*89c4ff92SAndroid Build Coastguard Worker
349*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("QUANTIZE_UINT8_INT8_CpuRef_Test")
350*89c4ff92SAndroid Build Coastguard Worker {
351*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
352*89c4ff92SAndroid Build Coastguard Worker QuantizeUint8Int8Test(backends);
353*89c4ff92SAndroid Build Coastguard Worker }
354*89c4ff92SAndroid Build Coastguard Worker
355*89c4ff92SAndroid Build Coastguard Worker }
356*89c4ff92SAndroid Build Coastguard Worker
357*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("CpuAcc_QuantizationTests")
358*89c4ff92SAndroid Build Coastguard Worker {
359*89c4ff92SAndroid Build Coastguard Worker
360*89c4ff92SAndroid Build Coastguard Worker // Dequantize Operator Tests
361*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("DEQUANTIZE_UINT8_CpuAcc_Test")
362*89c4ff92SAndroid Build Coastguard Worker {
363*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
364*89c4ff92SAndroid Build Coastguard Worker DequantizeUint8Test(backends);
365*89c4ff92SAndroid Build Coastguard Worker }
366*89c4ff92SAndroid Build Coastguard Worker
367*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("DEQUANTIZE_INT8_CpuAcc_Test")
368*89c4ff92SAndroid Build Coastguard Worker {
369*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
370*89c4ff92SAndroid Build Coastguard Worker DequantizeInt8Test(backends);
371*89c4ff92SAndroid Build Coastguard Worker }
372*89c4ff92SAndroid Build Coastguard Worker
373*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("DEQUANTIZE_INT16_CpuAcc_Test")
374*89c4ff92SAndroid Build Coastguard Worker {
375*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
376*89c4ff92SAndroid Build Coastguard Worker DequantizeInt16Test(backends);
377*89c4ff92SAndroid Build Coastguard Worker }
378*89c4ff92SAndroid Build Coastguard Worker
379*89c4ff92SAndroid Build Coastguard Worker // Quantize Operator Tests
380*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("QUANTIZE_FLOAT32_UINT8_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 QuantizeFloat32Uint8Test(backends);
384*89c4ff92SAndroid Build Coastguard Worker }
385*89c4ff92SAndroid Build Coastguard Worker
386*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("QUANTIZE_FLOAT32_INT8_CpuAcc_Test")
387*89c4ff92SAndroid Build Coastguard Worker {
388*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
389*89c4ff92SAndroid Build Coastguard Worker QuantizeFloat32Int8Test(backends);
390*89c4ff92SAndroid Build Coastguard Worker }
391*89c4ff92SAndroid Build Coastguard Worker
392*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("QUANTIZE_INT8_UINT8_CpuAcc_Test")
393*89c4ff92SAndroid Build Coastguard Worker {
394*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
395*89c4ff92SAndroid Build Coastguard Worker QuantizeInt8Uint8Test(backends);
396*89c4ff92SAndroid Build Coastguard Worker }
397*89c4ff92SAndroid Build Coastguard Worker
398*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("QUANTIZE_UINT8_INT8_CpuAcc_Test")
399*89c4ff92SAndroid Build Coastguard Worker {
400*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
401*89c4ff92SAndroid Build Coastguard Worker QuantizeUint8Int8Test(backends);
402*89c4ff92SAndroid Build Coastguard Worker }
403*89c4ff92SAndroid Build Coastguard Worker
404*89c4ff92SAndroid Build Coastguard Worker }
405*89c4ff92SAndroid Build Coastguard Worker
406*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("GpuAcc_QuantizationTests")
407*89c4ff92SAndroid Build Coastguard Worker {
408*89c4ff92SAndroid Build Coastguard Worker
409*89c4ff92SAndroid Build Coastguard Worker // Dequantize Operator Tests
410*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("DEQUANTIZE_UINT8_GpuAcc_Test")
411*89c4ff92SAndroid Build Coastguard Worker {
412*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
413*89c4ff92SAndroid Build Coastguard Worker DequantizeUint8Test(backends);
414*89c4ff92SAndroid Build Coastguard Worker }
415*89c4ff92SAndroid Build Coastguard Worker
416*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("DEQUANTIZE_INT8_GpuAcc_Test")
417*89c4ff92SAndroid Build Coastguard Worker {
418*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
419*89c4ff92SAndroid Build Coastguard Worker DequantizeInt8Test(backends);
420*89c4ff92SAndroid Build Coastguard Worker }
421*89c4ff92SAndroid Build Coastguard Worker
422*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("DEQUANTIZE_INT16_GpuAcc_Test")
423*89c4ff92SAndroid Build Coastguard Worker {
424*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
425*89c4ff92SAndroid Build Coastguard Worker DequantizeInt16Test(backends);
426*89c4ff92SAndroid Build Coastguard Worker }
427*89c4ff92SAndroid Build Coastguard Worker
428*89c4ff92SAndroid Build Coastguard Worker // Quantize Operator Tests
429*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("QUANTIZE_FLOAT32_UINT8_GpuAcc_Test")
430*89c4ff92SAndroid Build Coastguard Worker {
431*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
432*89c4ff92SAndroid Build Coastguard Worker QuantizeFloat32Uint8Test(backends);
433*89c4ff92SAndroid Build Coastguard Worker }
434*89c4ff92SAndroid Build Coastguard Worker
435*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("QUANTIZE_FLOAT32_INT8_GpuAcc_Test")
436*89c4ff92SAndroid Build Coastguard Worker {
437*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
438*89c4ff92SAndroid Build Coastguard Worker QuantizeFloat32Int8Test(backends);
439*89c4ff92SAndroid Build Coastguard Worker }
440*89c4ff92SAndroid Build Coastguard Worker
441*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("QUANTIZE_INT8_UINT8_GpuAcc_Test")
442*89c4ff92SAndroid Build Coastguard Worker {
443*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
444*89c4ff92SAndroid Build Coastguard Worker QuantizeInt8Uint8Test(backends);
445*89c4ff92SAndroid Build Coastguard Worker }
446*89c4ff92SAndroid Build Coastguard Worker
447*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("QUANTIZE_UINT8_INT8_GpuAcc_Test")
448*89c4ff92SAndroid Build Coastguard Worker {
449*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
450*89c4ff92SAndroid Build Coastguard Worker QuantizeUint8Int8Test(backends);
451*89c4ff92SAndroid Build Coastguard Worker }
452*89c4ff92SAndroid Build Coastguard Worker
453*89c4ff92SAndroid Build Coastguard Worker }
454*89c4ff92SAndroid Build Coastguard Worker
455*89c4ff92SAndroid Build Coastguard Worker } // namespace armnnDelegate