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 "ConvolutionTestHelper.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
DepthwiseConv2dValidReluFp32Test(std::vector<armnn::BackendId> & backends)22*89c4ff92SAndroid Build Coastguard Worker void DepthwiseConv2dValidReluFp32Test(std::vector<armnn::BackendId>& backends)
23*89c4ff92SAndroid Build Coastguard Worker {
24*89c4ff92SAndroid Build Coastguard Worker // Set input data
25*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape { 1, 3, 2, 2 };
26*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> filterShape { 1, 2, 2, 4 };
27*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> biasShape { 4 };
28*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> outputShape { 1, 2, 1, 4 };
29*89c4ff92SAndroid Build Coastguard Worker
30*89c4ff92SAndroid Build Coastguard Worker static std::vector<float> inputValues =
31*89c4ff92SAndroid Build Coastguard Worker {
32*89c4ff92SAndroid Build Coastguard Worker 1, 2, 7, 8,
33*89c4ff92SAndroid Build Coastguard Worker 3, 4, 9, 10,
34*89c4ff92SAndroid Build Coastguard Worker 5, 6, 11, 12
35*89c4ff92SAndroid Build Coastguard Worker };
36*89c4ff92SAndroid Build Coastguard Worker
37*89c4ff92SAndroid Build Coastguard Worker std::vector<float> filterValues =
38*89c4ff92SAndroid Build Coastguard Worker {
39*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3, 4,
40*89c4ff92SAndroid Build Coastguard Worker -9, 10, -11, 12,
41*89c4ff92SAndroid Build Coastguard Worker 5, 6, 7, 8,
42*89c4ff92SAndroid Build Coastguard Worker 13, -14, 15, -16
43*89c4ff92SAndroid Build Coastguard Worker };
44*89c4ff92SAndroid Build Coastguard Worker
45*89c4ff92SAndroid Build Coastguard Worker std::vector<float> biasValues = { 1, 2, 3, 4 };
46*89c4ff92SAndroid Build Coastguard Worker
47*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues =
48*89c4ff92SAndroid Build Coastguard Worker {
49*89c4ff92SAndroid Build Coastguard Worker 71, 0, 99, 0,
50*89c4ff92SAndroid Build Coastguard Worker 91, 0, 127, 0
51*89c4ff92SAndroid Build Coastguard Worker };
52*89c4ff92SAndroid Build Coastguard Worker
53*89c4ff92SAndroid Build Coastguard Worker tflite::Padding padding = tflite::Padding_VALID;
54*89c4ff92SAndroid Build Coastguard Worker int32_t depth_multiplier = 2;
55*89c4ff92SAndroid Build Coastguard Worker
56*89c4ff92SAndroid Build Coastguard Worker ConvolutionTest<float>(tflite::BuiltinOperator_DEPTHWISE_CONV_2D,
57*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_FLOAT32,
58*89c4ff92SAndroid Build Coastguard Worker 1, // strideX
59*89c4ff92SAndroid Build Coastguard Worker 1, // strideY
60*89c4ff92SAndroid Build Coastguard Worker 1, // dilationX
61*89c4ff92SAndroid Build Coastguard Worker 1, // dilationY
62*89c4ff92SAndroid Build Coastguard Worker padding,
63*89c4ff92SAndroid Build Coastguard Worker tflite::ActivationFunctionType_RELU,
64*89c4ff92SAndroid Build Coastguard Worker backends,
65*89c4ff92SAndroid Build Coastguard Worker inputShape,
66*89c4ff92SAndroid Build Coastguard Worker filterShape,
67*89c4ff92SAndroid Build Coastguard Worker outputShape,
68*89c4ff92SAndroid Build Coastguard Worker inputValues,
69*89c4ff92SAndroid Build Coastguard Worker filterValues,
70*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues,
71*89c4ff92SAndroid Build Coastguard Worker biasShape,
72*89c4ff92SAndroid Build Coastguard Worker biasValues,
73*89c4ff92SAndroid Build Coastguard Worker {1.0f}, // biasScale
74*89c4ff92SAndroid Build Coastguard Worker {0}, // biasOffset
75*89c4ff92SAndroid Build Coastguard Worker {1.0f}, // filterScale
76*89c4ff92SAndroid Build Coastguard Worker {0}, // filterOffsets
77*89c4ff92SAndroid Build Coastguard Worker 2.0f, // outputQuantScale
78*89c4ff92SAndroid Build Coastguard Worker 0, // outputQuantOffset
79*89c4ff92SAndroid Build Coastguard Worker 1.0f, // quantScale
80*89c4ff92SAndroid Build Coastguard Worker 0, // quantOffset
81*89c4ff92SAndroid Build Coastguard Worker depth_multiplier);
82*89c4ff92SAndroid Build Coastguard Worker }
83*89c4ff92SAndroid Build Coastguard Worker
DepthwiseConv2dSameUint8Test(std::vector<armnn::BackendId> & backends)84*89c4ff92SAndroid Build Coastguard Worker void DepthwiseConv2dSameUint8Test(std::vector<armnn::BackendId>& backends)
85*89c4ff92SAndroid Build Coastguard Worker {
86*89c4ff92SAndroid Build Coastguard Worker // Set input data
87*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape { 1, 3, 3, 1 };
88*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> filterShape { 1, 3, 3, 1 };
89*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> biasShape { 1 } ;
90*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> outputShape { 1, 3, 3, 1 };
91*89c4ff92SAndroid Build Coastguard Worker
92*89c4ff92SAndroid Build Coastguard Worker static std::vector<uint8_t> inputValues =
93*89c4ff92SAndroid Build Coastguard Worker {
94*89c4ff92SAndroid Build Coastguard Worker 0, 1, 2,
95*89c4ff92SAndroid Build Coastguard Worker 3, 4, 5,
96*89c4ff92SAndroid Build Coastguard Worker 6, 7, 8
97*89c4ff92SAndroid Build Coastguard Worker };
98*89c4ff92SAndroid Build Coastguard Worker
99*89c4ff92SAndroid Build Coastguard Worker std::vector<uint8_t> filterValues = { 9, 8, 7, 6, 5, 4, 3, 2, 1 };
100*89c4ff92SAndroid Build Coastguard Worker
101*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> biasValues = { 10 };
102*89c4ff92SAndroid Build Coastguard Worker
103*89c4ff92SAndroid Build Coastguard Worker std::vector<uint8_t> expectedOutputValues =
104*89c4ff92SAndroid Build Coastguard Worker {
105*89c4ff92SAndroid Build Coastguard Worker 12, 23, 24, // ( 14+10)/2, ( 35+10)/2, ( 38+10)/2,
106*89c4ff92SAndroid Build Coastguard Worker 34, 65, 61, // ( 57+10)/2, (120+10)/2, (111+10)/2,
107*89c4ff92SAndroid Build Coastguard Worker 60, 104, 84 // (110+10)/2, (197+10)/2, (158+10)/2
108*89c4ff92SAndroid Build Coastguard Worker };
109*89c4ff92SAndroid Build Coastguard Worker
110*89c4ff92SAndroid Build Coastguard Worker tflite::Padding padding = tflite::Padding_SAME;
111*89c4ff92SAndroid Build Coastguard Worker
112*89c4ff92SAndroid Build Coastguard Worker ConvolutionTest<uint8_t, int32_t>(tflite::BuiltinOperator_DEPTHWISE_CONV_2D,
113*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_UINT8,
114*89c4ff92SAndroid Build Coastguard Worker 1, // strideX
115*89c4ff92SAndroid Build Coastguard Worker 1, // strideY
116*89c4ff92SAndroid Build Coastguard Worker 1, // dilationX
117*89c4ff92SAndroid Build Coastguard Worker 1, // dilationY
118*89c4ff92SAndroid Build Coastguard Worker padding,
119*89c4ff92SAndroid Build Coastguard Worker tflite::ActivationFunctionType_NONE,
120*89c4ff92SAndroid Build Coastguard Worker backends,
121*89c4ff92SAndroid Build Coastguard Worker inputShape,
122*89c4ff92SAndroid Build Coastguard Worker filterShape,
123*89c4ff92SAndroid Build Coastguard Worker outputShape,
124*89c4ff92SAndroid Build Coastguard Worker inputValues,
125*89c4ff92SAndroid Build Coastguard Worker filterValues,
126*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues,
127*89c4ff92SAndroid Build Coastguard Worker biasShape,
128*89c4ff92SAndroid Build Coastguard Worker biasValues);
129*89c4ff92SAndroid Build Coastguard Worker }
130*89c4ff92SAndroid Build Coastguard Worker
DepthwiseConv2dSameInt8PerChannelTest(std::vector<armnn::BackendId> & backends)131*89c4ff92SAndroid Build Coastguard Worker void DepthwiseConv2dSameInt8PerChannelTest(std::vector<armnn::BackendId>& backends)
132*89c4ff92SAndroid Build Coastguard Worker {
133*89c4ff92SAndroid Build Coastguard Worker // Set input data
134*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> inputShape { 1, 4, 4, 4 };
135*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> filterShape { 1, 2, 2, 16 };
136*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> biasShape {16} ;
137*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> outputShape { 1, 4, 4, 16 };
138*89c4ff92SAndroid Build Coastguard Worker
139*89c4ff92SAndroid Build Coastguard Worker static std::vector<int8_t> inputValues =
140*89c4ff92SAndroid Build Coastguard Worker {
141*89c4ff92SAndroid Build Coastguard Worker 3,3,3,4, 4,4,0,0, 0,3,4,3, 0,2,2,3,
142*89c4ff92SAndroid Build Coastguard Worker 3,0,3,0, 0,3,2,1, 4,1,2,2, 0,0,0,4,
143*89c4ff92SAndroid Build Coastguard Worker 3,2,2,2, 2,1,0,4, 4,3,2,4, 3,2,0,0,
144*89c4ff92SAndroid Build Coastguard Worker 4,1,4,4, 1,0,4,3, 3,2,0,3, 1,1,0,2
145*89c4ff92SAndroid Build Coastguard Worker };
146*89c4ff92SAndroid Build Coastguard Worker
147*89c4ff92SAndroid Build Coastguard Worker std::vector<int8_t> filterValues = { 12,20,10, 3, 2,24, 9,10, 5,16,30,12, 3,10, 4,32,
148*89c4ff92SAndroid Build Coastguard Worker 8, 0,30, 3, 0,16,12,15,20,12, 0, 3, 9,20, 8, 8,
149*89c4ff92SAndroid Build Coastguard Worker 12,15,20, 0, 0, 0, 3,15,15, 8,40,12, 9, 5, 2,24,
150*89c4ff92SAndroid Build Coastguard Worker 4, 0, 0, 6, 6, 0, 3, 5,20, 8,20, 3, 6,15, 4, 0 };
151*89c4ff92SAndroid Build Coastguard Worker std::vector<float> filterScales = { 0.25, 0.2, 0.1, 0.3333333333,
152*89c4ff92SAndroid Build Coastguard Worker 0.5, 0.125, 0.33333333, 0.2,
153*89c4ff92SAndroid Build Coastguard Worker 0.2, 0.25, 0.1, 0.333333333,
154*89c4ff92SAndroid Build Coastguard Worker 0.3333333333, 0.2, 0.5, 0.125 };
155*89c4ff92SAndroid Build Coastguard Worker
156*89c4ff92SAndroid Build Coastguard Worker int32_t filterQuantizationDim = 3;
157*89c4ff92SAndroid Build Coastguard Worker
158*89c4ff92SAndroid Build Coastguard Worker int32_t depth_multiplier = 4;
159*89c4ff92SAndroid Build Coastguard Worker
160*89c4ff92SAndroid Build Coastguard Worker std::vector<int32_t> biasValues = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
161*89c4ff92SAndroid Build Coastguard Worker
162*89c4ff92SAndroid Build Coastguard Worker float inputScale = 1.0f;
163*89c4ff92SAndroid Build Coastguard Worker std::vector<float> biasScales {};
164*89c4ff92SAndroid Build Coastguard Worker std::vector<int64_t> biasOffsets {};
165*89c4ff92SAndroid Build Coastguard Worker std::vector<int64_t> filterOffsets {};
166*89c4ff92SAndroid Build Coastguard Worker for (const auto& filterScale: filterScales)
167*89c4ff92SAndroid Build Coastguard Worker {
168*89c4ff92SAndroid Build Coastguard Worker biasScales.push_back(inputScale * filterScale);
169*89c4ff92SAndroid Build Coastguard Worker // filter and bias offset always needs to be zero for per channel. We don't support anything else
170*89c4ff92SAndroid Build Coastguard Worker biasOffsets.push_back(0);
171*89c4ff92SAndroid Build Coastguard Worker filterOffsets.push_back(0);
172*89c4ff92SAndroid Build Coastguard Worker }
173*89c4ff92SAndroid Build Coastguard Worker
174*89c4ff92SAndroid Build Coastguard Worker std::vector<int8_t> expectedOutputValues =
175*89c4ff92SAndroid Build Coastguard Worker {
176*89c4ff92SAndroid Build Coastguard Worker 26,21,21, 7,12,17,28,21,20,22,25,26, 6,11,10,16,
177*89c4ff92SAndroid Build Coastguard Worker 16,16, 4,12, 7,18,28,27,30,20,12,14,16,19,17, 6,
178*89c4ff92SAndroid Build Coastguard Worker 12,12, 8, 0, 3,13,18,15,18,26,20,26,26,32,28,21,
179*89c4ff92SAndroid Build Coastguard Worker 0, 0, 0, 0, 2, 6, 6, 4, 2, 8, 6, 8,15,10,10,24,
180*89c4ff92SAndroid Build Coastguard Worker 20,21, 9, 7, 3, 6,15,16,17,22,17,22,17,18,14, 7,
181*89c4ff92SAndroid Build Coastguard Worker 18, 6,16,12,12,11,17,15,18,18,10,12,27,26,22,18,
182*89c4ff92SAndroid Build Coastguard Worker 27,28,12,10, 7, 3, 8,13, 8,12,14,16,26,24,24,24,
183*89c4ff92SAndroid Build Coastguard Worker 9, 9, 6, 0, 0, 0, 2, 6, 0, 0, 0, 0, 4, 8, 8,16,
184*89c4ff92SAndroid Build Coastguard Worker 26,24,17, 7, 2, 8,11,10,30,24,30,28,32,33,30,24,
185*89c4ff92SAndroid Build Coastguard Worker 20,11,16,12, 7, 9,17,13,20,14,16,18,31,36,33,29,
186*89c4ff92SAndroid Build Coastguard Worker 28,25,19, 9, 6,13,20,19, 2, 8, 6, 8,17,17,15,25,
187*89c4ff92SAndroid Build Coastguard Worker 12,15, 5, 3, 2, 6, 7, 7, 0, 0, 0, 0, 6, 2, 2, 6,
188*89c4ff92SAndroid Build Coastguard Worker 14,16, 7, 5, 1, 3, 3, 2,20,28,12,20,13,20,20,19,
189*89c4ff92SAndroid Build Coastguard Worker 9, 4,10, 4, 0, 4, 8, 6, 4,16,12,16,12,18,18,15,
190*89c4ff92SAndroid Build Coastguard Worker 11,12, 6, 4, 2, 8,10, 7, 0, 0, 0, 0, 9,14,14,14,
191*89c4ff92SAndroid Build Coastguard Worker 3, 4, 1, 1, 1, 3, 3, 2, 0, 0, 0, 0, 2, 4, 4, 8
192*89c4ff92SAndroid Build Coastguard Worker };
193*89c4ff92SAndroid Build Coastguard Worker
194*89c4ff92SAndroid Build Coastguard Worker tflite::Padding padding = tflite::Padding_SAME;
195*89c4ff92SAndroid Build Coastguard Worker
196*89c4ff92SAndroid Build Coastguard Worker ConvolutionTest<int8_t, int32_t>(tflite::BuiltinOperator_DEPTHWISE_CONV_2D,
197*89c4ff92SAndroid Build Coastguard Worker ::tflite::TensorType_INT8,
198*89c4ff92SAndroid Build Coastguard Worker 1, // strideX
199*89c4ff92SAndroid Build Coastguard Worker 1, // strideY
200*89c4ff92SAndroid Build Coastguard Worker 1, // dilationX
201*89c4ff92SAndroid Build Coastguard Worker 1, // dilationY
202*89c4ff92SAndroid Build Coastguard Worker padding,
203*89c4ff92SAndroid Build Coastguard Worker tflite::ActivationFunctionType_NONE,
204*89c4ff92SAndroid Build Coastguard Worker backends,
205*89c4ff92SAndroid Build Coastguard Worker inputShape,
206*89c4ff92SAndroid Build Coastguard Worker filterShape,
207*89c4ff92SAndroid Build Coastguard Worker outputShape,
208*89c4ff92SAndroid Build Coastguard Worker inputValues,
209*89c4ff92SAndroid Build Coastguard Worker filterValues,
210*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues,
211*89c4ff92SAndroid Build Coastguard Worker biasShape,
212*89c4ff92SAndroid Build Coastguard Worker biasValues,
213*89c4ff92SAndroid Build Coastguard Worker biasScales,
214*89c4ff92SAndroid Build Coastguard Worker biasOffsets,
215*89c4ff92SAndroid Build Coastguard Worker filterScales,
216*89c4ff92SAndroid Build Coastguard Worker filterOffsets,
217*89c4ff92SAndroid Build Coastguard Worker 1.0f,
218*89c4ff92SAndroid Build Coastguard Worker 0,
219*89c4ff92SAndroid Build Coastguard Worker inputScale,
220*89c4ff92SAndroid Build Coastguard Worker 0,
221*89c4ff92SAndroid Build Coastguard Worker depth_multiplier,
222*89c4ff92SAndroid Build Coastguard Worker filterQuantizationDim);
223*89c4ff92SAndroid Build Coastguard Worker }
224*89c4ff92SAndroid Build Coastguard Worker
225*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("DepthwiseConv2d_CpuRef_Tests")
226*89c4ff92SAndroid Build Coastguard Worker {
227*89c4ff92SAndroid Build Coastguard Worker
228*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("DepthwiseConv2d_Valid_Relu_Fp32_CpuRef_Test")
229*89c4ff92SAndroid Build Coastguard Worker {
230*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
231*89c4ff92SAndroid Build Coastguard Worker DepthwiseConv2dValidReluFp32Test(backends);
232*89c4ff92SAndroid Build Coastguard Worker }
233*89c4ff92SAndroid Build Coastguard Worker
234*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("DepthwiseConv2d_Same_Uint8_CpuRef_Test")
235*89c4ff92SAndroid Build Coastguard Worker {
236*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
237*89c4ff92SAndroid Build Coastguard Worker DepthwiseConv2dSameUint8Test(backends);
238*89c4ff92SAndroid Build Coastguard Worker }
239*89c4ff92SAndroid Build Coastguard Worker
240*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("DepthwiseConv2d_Same_Int8_PerChannelQuantization_CpuRef_Test")
241*89c4ff92SAndroid Build Coastguard Worker {
242*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
243*89c4ff92SAndroid Build Coastguard Worker DepthwiseConv2dSameInt8PerChannelTest(backends);
244*89c4ff92SAndroid Build Coastguard Worker }
245*89c4ff92SAndroid Build Coastguard Worker
246*89c4ff92SAndroid Build Coastguard Worker }//End of TEST_SUITE("DepthwiseConv2d_CpuRef_Tests")
247*89c4ff92SAndroid Build Coastguard Worker
248*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("DepthwiseConv2d_CpuAcc_Tests")
249*89c4ff92SAndroid Build Coastguard Worker {
250*89c4ff92SAndroid Build Coastguard Worker
251*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("DepthwiseConv2d_Valid_Relu_Fp32_CpuAcc_Test")
252*89c4ff92SAndroid Build Coastguard Worker {
253*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
254*89c4ff92SAndroid Build Coastguard Worker DepthwiseConv2dValidReluFp32Test(backends);
255*89c4ff92SAndroid Build Coastguard Worker }
256*89c4ff92SAndroid Build Coastguard Worker
257*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("DepthwiseConv2d_Same_Uint8_CpuAcc_Test")
258*89c4ff92SAndroid Build Coastguard Worker {
259*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
260*89c4ff92SAndroid Build Coastguard Worker DepthwiseConv2dSameUint8Test(backends);
261*89c4ff92SAndroid Build Coastguard Worker }
262*89c4ff92SAndroid Build Coastguard Worker
263*89c4ff92SAndroid Build Coastguard Worker }//End of TEST_SUITE("DepthwiseConv2d_CpuAcc_Tests")
264*89c4ff92SAndroid Build Coastguard Worker
265*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("DepthwiseConv2d_GpuAcc_Tests")
266*89c4ff92SAndroid Build Coastguard Worker {
267*89c4ff92SAndroid Build Coastguard Worker
268*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("DepthwiseConv2d_Valid_Relu_Fp32_GpuAcc_Test")
269*89c4ff92SAndroid Build Coastguard Worker {
270*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
271*89c4ff92SAndroid Build Coastguard Worker DepthwiseConv2dValidReluFp32Test(backends);
272*89c4ff92SAndroid Build Coastguard Worker }
273*89c4ff92SAndroid Build Coastguard Worker
274*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("DepthwiseConv2d_Same_Uint8_GpuAcc_Test")
275*89c4ff92SAndroid Build Coastguard Worker {
276*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
277*89c4ff92SAndroid Build Coastguard Worker DepthwiseConv2dSameUint8Test(backends);
278*89c4ff92SAndroid Build Coastguard Worker }
279*89c4ff92SAndroid Build Coastguard Worker
280*89c4ff92SAndroid Build Coastguard Worker }//End of TEST_SUITE("DepthwiseConv2d_GpuAcc_Tests")
281*89c4ff92SAndroid Build Coastguard Worker
282*89c4ff92SAndroid Build Coastguard Worker } // namespace armnnDelegate