xref: /aosp_15_r20/external/armnn/src/armnnTfLiteParser/test/LoadScopeDynamicTensor.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2020 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 "armnnTfLiteParser/ITfLiteParser.hpp"
7*89c4ff92SAndroid Build Coastguard Worker #include "ParserFlatbuffersFixture.hpp"
8*89c4ff92SAndroid Build Coastguard Worker 
9*89c4ff92SAndroid Build Coastguard Worker 
10*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("TensorflowLiteParser_LoadScopeDynamicTensor")
11*89c4ff92SAndroid Build Coastguard Worker {
12*89c4ff92SAndroid Build Coastguard Worker struct LoadScopeDynamicTensorFixture : public ParserFlatbuffersFixture
13*89c4ff92SAndroid Build Coastguard Worker {
LoadScopeDynamicTensorFixtureLoadScopeDynamicTensorFixture14*89c4ff92SAndroid Build Coastguard Worker     explicit LoadScopeDynamicTensorFixture(const std::string& shape0,
15*89c4ff92SAndroid Build Coastguard Worker                                            const std::string& shape1,
16*89c4ff92SAndroid Build Coastguard Worker                                            const std::string& shape2)
17*89c4ff92SAndroid Build Coastguard Worker     {
18*89c4ff92SAndroid Build Coastguard Worker         m_JsonString = R"(
19*89c4ff92SAndroid Build Coastguard Worker         {
20*89c4ff92SAndroid Build Coastguard Worker             "version": 3,
21*89c4ff92SAndroid Build Coastguard Worker             "operator_codes": [
22*89c4ff92SAndroid Build Coastguard Worker                 {
23*89c4ff92SAndroid Build Coastguard Worker                     "builtin_code": "AVERAGE_POOL_2D",
24*89c4ff92SAndroid Build Coastguard Worker                     "version": 1
25*89c4ff92SAndroid Build Coastguard Worker                 },
26*89c4ff92SAndroid Build Coastguard Worker                 {
27*89c4ff92SAndroid Build Coastguard Worker                     "builtin_code": "SOFTMAX",
28*89c4ff92SAndroid Build Coastguard Worker                     "version": 1
29*89c4ff92SAndroid Build Coastguard Worker                 }
30*89c4ff92SAndroid Build Coastguard Worker             ],
31*89c4ff92SAndroid Build Coastguard Worker             "subgraphs": [
32*89c4ff92SAndroid Build Coastguard Worker                 {
33*89c4ff92SAndroid Build Coastguard Worker                     "tensors": [
34*89c4ff92SAndroid Build Coastguard Worker                         {
35*89c4ff92SAndroid Build Coastguard Worker                             "shape": )" + shape0 + R"(,
36*89c4ff92SAndroid Build Coastguard Worker                             "type": "FLOAT32",
37*89c4ff92SAndroid Build Coastguard Worker                             "buffer": 1,
38*89c4ff92SAndroid Build Coastguard Worker                             "name": "input0",
39*89c4ff92SAndroid Build Coastguard Worker                             "quantization": {
40*89c4ff92SAndroid Build Coastguard Worker                                 "details_type": 0,
41*89c4ff92SAndroid Build Coastguard Worker                                 "quantized_dimension": 0
42*89c4ff92SAndroid Build Coastguard Worker                             },
43*89c4ff92SAndroid Build Coastguard Worker                             "is_variable": false
44*89c4ff92SAndroid Build Coastguard Worker                         },
45*89c4ff92SAndroid Build Coastguard Worker                         {
46*89c4ff92SAndroid Build Coastguard Worker                             "shape": )" + shape1 + R"(,
47*89c4ff92SAndroid Build Coastguard Worker                             "type": "FLOAT32",
48*89c4ff92SAndroid Build Coastguard Worker                             "buffer": 3,
49*89c4ff92SAndroid Build Coastguard Worker                             "name": "output",
50*89c4ff92SAndroid Build Coastguard Worker                             "quantization": {
51*89c4ff92SAndroid Build Coastguard Worker                                 "details_type": 0,
52*89c4ff92SAndroid Build Coastguard Worker                                 "quantized_dimension": 0
53*89c4ff92SAndroid Build Coastguard Worker                             },
54*89c4ff92SAndroid Build Coastguard Worker                             "is_variable": false
55*89c4ff92SAndroid Build Coastguard Worker                         },
56*89c4ff92SAndroid Build Coastguard Worker                         {
57*89c4ff92SAndroid Build Coastguard Worker                             "shape": )" + shape2 + R"(,
58*89c4ff92SAndroid Build Coastguard Worker                             "type": "FLOAT32",
59*89c4ff92SAndroid Build Coastguard Worker                             "buffer": 2,
60*89c4ff92SAndroid Build Coastguard Worker                             "name": "model/average_pooling2d/AvgPool",
61*89c4ff92SAndroid Build Coastguard Worker                             "quantization": {
62*89c4ff92SAndroid Build Coastguard Worker                                 "details_type": 0,
63*89c4ff92SAndroid Build Coastguard Worker                                 "quantized_dimension": 0
64*89c4ff92SAndroid Build Coastguard Worker                             },
65*89c4ff92SAndroid Build Coastguard Worker                             "is_variable": false
66*89c4ff92SAndroid Build Coastguard Worker                         }
67*89c4ff92SAndroid Build Coastguard Worker                     ],
68*89c4ff92SAndroid Build Coastguard Worker                     "inputs": [
69*89c4ff92SAndroid Build Coastguard Worker                         0
70*89c4ff92SAndroid Build Coastguard Worker                     ],
71*89c4ff92SAndroid Build Coastguard Worker                     "outputs": [
72*89c4ff92SAndroid Build Coastguard Worker                         1
73*89c4ff92SAndroid Build Coastguard Worker                     ],
74*89c4ff92SAndroid Build Coastguard Worker                     "operators": [
75*89c4ff92SAndroid Build Coastguard Worker                         {
76*89c4ff92SAndroid Build Coastguard Worker                             "opcode_index": 1,
77*89c4ff92SAndroid Build Coastguard Worker                             "inputs": [
78*89c4ff92SAndroid Build Coastguard Worker                                 2
79*89c4ff92SAndroid Build Coastguard Worker                             ],
80*89c4ff92SAndroid Build Coastguard Worker                             "outputs": [
81*89c4ff92SAndroid Build Coastguard Worker                                 1
82*89c4ff92SAndroid Build Coastguard Worker                             ],
83*89c4ff92SAndroid Build Coastguard Worker                             "builtin_options_type": "SoftmaxOptions",
84*89c4ff92SAndroid Build Coastguard Worker                             "builtin_options": {
85*89c4ff92SAndroid Build Coastguard Worker                                 "beta": 1.0
86*89c4ff92SAndroid Build Coastguard Worker                             },
87*89c4ff92SAndroid Build Coastguard Worker                             "custom_options_format": "FLEXBUFFERS"
88*89c4ff92SAndroid Build Coastguard Worker                         },
89*89c4ff92SAndroid Build Coastguard Worker                         {
90*89c4ff92SAndroid Build Coastguard Worker                             "opcode_index": 0,
91*89c4ff92SAndroid Build Coastguard Worker                             "inputs": [
92*89c4ff92SAndroid Build Coastguard Worker                                 0
93*89c4ff92SAndroid Build Coastguard Worker                             ],
94*89c4ff92SAndroid Build Coastguard Worker                             "outputs": [
95*89c4ff92SAndroid Build Coastguard Worker                                 2
96*89c4ff92SAndroid Build Coastguard Worker                             ],
97*89c4ff92SAndroid Build Coastguard Worker                             "builtin_options_type": "Pool2DOptions",
98*89c4ff92SAndroid Build Coastguard Worker                             "builtin_options": {
99*89c4ff92SAndroid Build Coastguard Worker                                 "padding": "VALID",
100*89c4ff92SAndroid Build Coastguard Worker                                 "stride_w": 2,
101*89c4ff92SAndroid Build Coastguard Worker                                 "stride_h": 2,
102*89c4ff92SAndroid Build Coastguard Worker                                 "filter_width": 2,
103*89c4ff92SAndroid Build Coastguard Worker                                 "filter_height": 2,
104*89c4ff92SAndroid Build Coastguard Worker                                 "fused_activation_function": "NONE"
105*89c4ff92SAndroid Build Coastguard Worker                             },
106*89c4ff92SAndroid Build Coastguard Worker                             "custom_options_format": "FLEXBUFFERS"
107*89c4ff92SAndroid Build Coastguard Worker                         }
108*89c4ff92SAndroid Build Coastguard Worker                     ],
109*89c4ff92SAndroid Build Coastguard Worker                     "name": "main"
110*89c4ff92SAndroid Build Coastguard Worker                 }
111*89c4ff92SAndroid Build Coastguard Worker             ],
112*89c4ff92SAndroid Build Coastguard Worker             "description": "MLIR Converted.",
113*89c4ff92SAndroid Build Coastguard Worker             "buffers": [
114*89c4ff92SAndroid Build Coastguard Worker                 {
115*89c4ff92SAndroid Build Coastguard Worker                 },
116*89c4ff92SAndroid Build Coastguard Worker                 {
117*89c4ff92SAndroid Build Coastguard Worker                 },
118*89c4ff92SAndroid Build Coastguard Worker                 {
119*89c4ff92SAndroid Build Coastguard Worker                 },
120*89c4ff92SAndroid Build Coastguard Worker                 {
121*89c4ff92SAndroid Build Coastguard Worker                 }
122*89c4ff92SAndroid Build Coastguard Worker             ]
123*89c4ff92SAndroid Build Coastguard Worker         }
124*89c4ff92SAndroid Build Coastguard Worker         )";
125*89c4ff92SAndroid Build Coastguard Worker         Setup();
126*89c4ff92SAndroid Build Coastguard Worker     }
127*89c4ff92SAndroid Build Coastguard Worker };
128*89c4ff92SAndroid Build Coastguard Worker 
129*89c4ff92SAndroid Build Coastguard Worker struct LoadScopeDynamicTensor0Fixture : LoadScopeDynamicTensorFixture
130*89c4ff92SAndroid Build Coastguard Worker {
LoadScopeDynamicTensor0FixtureLoadScopeDynamicTensor0Fixture131*89c4ff92SAndroid Build Coastguard Worker     LoadScopeDynamicTensor0Fixture() : LoadScopeDynamicTensorFixture("[ 1, 2, 3, 2 ]", "[]", "[]") {}
132*89c4ff92SAndroid Build Coastguard Worker };
133*89c4ff92SAndroid Build Coastguard Worker 
134*89c4ff92SAndroid Build Coastguard Worker struct LoadScopeDynamicTensor1Fixture : LoadScopeDynamicTensorFixture
135*89c4ff92SAndroid Build Coastguard Worker {
LoadScopeDynamicTensor1FixtureLoadScopeDynamicTensor1Fixture136*89c4ff92SAndroid Build Coastguard Worker     LoadScopeDynamicTensor1Fixture() : LoadScopeDynamicTensorFixture("[ 1, 2, 4, 1 ]", "[ 1, 1, 2, 1 ]", "[]") {}
137*89c4ff92SAndroid Build Coastguard Worker };
138*89c4ff92SAndroid Build Coastguard Worker 
139*89c4ff92SAndroid Build Coastguard Worker struct LoadScopeDynamicTensor2Fixture : LoadScopeDynamicTensorFixture
140*89c4ff92SAndroid Build Coastguard Worker {
LoadScopeDynamicTensor2FixtureLoadScopeDynamicTensor2Fixture141*89c4ff92SAndroid Build Coastguard Worker     LoadScopeDynamicTensor2Fixture() : LoadScopeDynamicTensorFixture("[ 1, 3, 3, 2 ]", "[ ]", "[ 1, 1, 1, 2 ]") {}
142*89c4ff92SAndroid Build Coastguard Worker };
143*89c4ff92SAndroid Build Coastguard Worker 
144*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(LoadScopeDynamicTensor0Fixture, "LoadScopeDynamicTensor0")
145*89c4ff92SAndroid Build Coastguard Worker {
146*89c4ff92SAndroid Build Coastguard Worker     RunTest<4, armnn::DataType::Float32, armnn::DataType::Float32>(
147*89c4ff92SAndroid Build Coastguard Worker         0,
148*89c4ff92SAndroid Build Coastguard Worker         { {"input0", { 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f }} },
149*89c4ff92SAndroid Build Coastguard Worker         { {"output", { 0.26894143f, 0.7310586f }} },
150*89c4ff92SAndroid Build Coastguard Worker         true);
151*89c4ff92SAndroid Build Coastguard Worker }
152*89c4ff92SAndroid Build Coastguard Worker 
153*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(LoadScopeDynamicTensor1Fixture, "LoadScopeDynamicTensor1")
154*89c4ff92SAndroid Build Coastguard Worker {
155*89c4ff92SAndroid Build Coastguard Worker     RunTest<4, armnn::DataType::Float32, armnn::DataType::Float32>(
156*89c4ff92SAndroid Build Coastguard Worker         0,
157*89c4ff92SAndroid Build Coastguard Worker         { {"input0", { 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f }} },
158*89c4ff92SAndroid Build Coastguard Worker         { {"output", { 1.f, 1.f }} },
159*89c4ff92SAndroid Build Coastguard Worker         true);
160*89c4ff92SAndroid Build Coastguard Worker }
161*89c4ff92SAndroid Build Coastguard Worker 
162*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(LoadScopeDynamicTensor2Fixture, "LoadScopeDynamicTensor2")
163*89c4ff92SAndroid Build Coastguard Worker {
164*89c4ff92SAndroid Build Coastguard Worker   RunTest<4, armnn::DataType::Float32, armnn::DataType::Float32>(
165*89c4ff92SAndroid Build Coastguard Worker         0,
166*89c4ff92SAndroid Build Coastguard Worker         { {"input0", { 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f }} },
167*89c4ff92SAndroid Build Coastguard Worker         { {"output", { 0.7772999f, 0.22270015f }} },
168*89c4ff92SAndroid Build Coastguard Worker         true);
169*89c4ff92SAndroid Build Coastguard Worker }
170*89c4ff92SAndroid Build Coastguard Worker 
171*89c4ff92SAndroid Build Coastguard Worker struct LoadScopeDynamicTensorBroadcastingFixture : public ParserFlatbuffersFixture
172*89c4ff92SAndroid Build Coastguard Worker {
LoadScopeDynamicTensorBroadcastingFixtureLoadScopeDynamicTensorBroadcastingFixture173*89c4ff92SAndroid Build Coastguard Worker     explicit LoadScopeDynamicTensorBroadcastingFixture(const std::string& inputShape0,
174*89c4ff92SAndroid Build Coastguard Worker                                                        const std::string& inputShape1,
175*89c4ff92SAndroid Build Coastguard Worker                                                        const std::string& inputShape2,
176*89c4ff92SAndroid Build Coastguard Worker                                                        const std::string& addShape,
177*89c4ff92SAndroid Build Coastguard Worker                                                        const std::string& outputShape)
178*89c4ff92SAndroid Build Coastguard Worker     {
179*89c4ff92SAndroid Build Coastguard Worker         m_JsonString = R"(
180*89c4ff92SAndroid Build Coastguard Worker         {
181*89c4ff92SAndroid Build Coastguard Worker             "version": 3,
182*89c4ff92SAndroid Build Coastguard Worker             "operator_codes": [
183*89c4ff92SAndroid Build Coastguard Worker                 {
184*89c4ff92SAndroid Build Coastguard Worker                     "builtin_code": "ADD",
185*89c4ff92SAndroid Build Coastguard Worker                     "version": 1
186*89c4ff92SAndroid Build Coastguard Worker                 },
187*89c4ff92SAndroid Build Coastguard Worker                 {
188*89c4ff92SAndroid Build Coastguard Worker                     "builtin_code": "SUB",
189*89c4ff92SAndroid Build Coastguard Worker                     "version": 1
190*89c4ff92SAndroid Build Coastguard Worker                 }
191*89c4ff92SAndroid Build Coastguard Worker             ],
192*89c4ff92SAndroid Build Coastguard Worker             "subgraphs": [
193*89c4ff92SAndroid Build Coastguard Worker                 {
194*89c4ff92SAndroid Build Coastguard Worker                     "tensors": [
195*89c4ff92SAndroid Build Coastguard Worker                         {
196*89c4ff92SAndroid Build Coastguard Worker                             "shape": )" + inputShape0 + R"(,
197*89c4ff92SAndroid Build Coastguard Worker                             "type": "FLOAT32",
198*89c4ff92SAndroid Build Coastguard Worker                             "buffer": 1,
199*89c4ff92SAndroid Build Coastguard Worker                             "name": "input0",
200*89c4ff92SAndroid Build Coastguard Worker                             "quantization": {
201*89c4ff92SAndroid Build Coastguard Worker                                 "details_type": 0,
202*89c4ff92SAndroid Build Coastguard Worker                                 "quantized_dimension": 0
203*89c4ff92SAndroid Build Coastguard Worker                             },
204*89c4ff92SAndroid Build Coastguard Worker                             "is_variable": false
205*89c4ff92SAndroid Build Coastguard Worker                         },
206*89c4ff92SAndroid Build Coastguard Worker                         {
207*89c4ff92SAndroid Build Coastguard Worker                             "shape": )" + inputShape1 + R"(,
208*89c4ff92SAndroid Build Coastguard Worker                             "type": "FLOAT32",
209*89c4ff92SAndroid Build Coastguard Worker                             "buffer": 2,
210*89c4ff92SAndroid Build Coastguard Worker                             "name": "input1",
211*89c4ff92SAndroid Build Coastguard Worker                             "quantization": {
212*89c4ff92SAndroid Build Coastguard Worker                                 "details_type": 0,
213*89c4ff92SAndroid Build Coastguard Worker                                 "quantized_dimension": 0
214*89c4ff92SAndroid Build Coastguard Worker                             },
215*89c4ff92SAndroid Build Coastguard Worker                             "is_variable": false
216*89c4ff92SAndroid Build Coastguard Worker                         },
217*89c4ff92SAndroid Build Coastguard Worker                         {
218*89c4ff92SAndroid Build Coastguard Worker                             "shape": )" + outputShape + R"(,
219*89c4ff92SAndroid Build Coastguard Worker                             "type": "FLOAT32",
220*89c4ff92SAndroid Build Coastguard Worker                             "buffer": 5,
221*89c4ff92SAndroid Build Coastguard Worker                             "name": "output",
222*89c4ff92SAndroid Build Coastguard Worker                             "quantization": {
223*89c4ff92SAndroid Build Coastguard Worker                                 "details_type": 0,
224*89c4ff92SAndroid Build Coastguard Worker                                 "quantized_dimension": 0
225*89c4ff92SAndroid Build Coastguard Worker                             },
226*89c4ff92SAndroid Build Coastguard Worker                             "is_variable": false
227*89c4ff92SAndroid Build Coastguard Worker                         },
228*89c4ff92SAndroid Build Coastguard Worker 
229*89c4ff92SAndroid Build Coastguard Worker                         {
230*89c4ff92SAndroid Build Coastguard Worker                             "shape": )" + addShape + R"(,
231*89c4ff92SAndroid Build Coastguard Worker                             "type": "FLOAT32",
232*89c4ff92SAndroid Build Coastguard Worker                             "buffer": 4,
233*89c4ff92SAndroid Build Coastguard Worker                             "name": "model/add/add",
234*89c4ff92SAndroid Build Coastguard Worker                             "quantization": {
235*89c4ff92SAndroid Build Coastguard Worker                                 "details_type": 0,
236*89c4ff92SAndroid Build Coastguard Worker                                 "quantized_dimension": 0
237*89c4ff92SAndroid Build Coastguard Worker                             },
238*89c4ff92SAndroid Build Coastguard Worker                             "is_variable": false
239*89c4ff92SAndroid Build Coastguard Worker                         },
240*89c4ff92SAndroid Build Coastguard Worker                         {
241*89c4ff92SAndroid Build Coastguard Worker                             "shape": )" + inputShape2 + R"(,
242*89c4ff92SAndroid Build Coastguard Worker                             "type": "FLOAT32",
243*89c4ff92SAndroid Build Coastguard Worker                             "buffer": 3,
244*89c4ff92SAndroid Build Coastguard Worker                             "name": "input2",
245*89c4ff92SAndroid Build Coastguard Worker                             "quantization": {
246*89c4ff92SAndroid Build Coastguard Worker                                 "details_type": 0,
247*89c4ff92SAndroid Build Coastguard Worker                                 "quantized_dimension": 0
248*89c4ff92SAndroid Build Coastguard Worker                             },
249*89c4ff92SAndroid Build Coastguard Worker                             "is_variable": false
250*89c4ff92SAndroid Build Coastguard Worker                         },
251*89c4ff92SAndroid Build Coastguard Worker                     ],
252*89c4ff92SAndroid Build Coastguard Worker                     "inputs": [
253*89c4ff92SAndroid Build Coastguard Worker                         0,
254*89c4ff92SAndroid Build Coastguard Worker                         1,
255*89c4ff92SAndroid Build Coastguard Worker                         4
256*89c4ff92SAndroid Build Coastguard Worker                     ],
257*89c4ff92SAndroid Build Coastguard Worker                     "outputs": [
258*89c4ff92SAndroid Build Coastguard Worker                         2
259*89c4ff92SAndroid Build Coastguard Worker                     ],
260*89c4ff92SAndroid Build Coastguard Worker                     "operators": [
261*89c4ff92SAndroid Build Coastguard Worker                         {
262*89c4ff92SAndroid Build Coastguard Worker                             "opcode_index": 0,
263*89c4ff92SAndroid Build Coastguard Worker                             "inputs": [
264*89c4ff92SAndroid Build Coastguard Worker                                 0,
265*89c4ff92SAndroid Build Coastguard Worker                                 1
266*89c4ff92SAndroid Build Coastguard Worker                             ],
267*89c4ff92SAndroid Build Coastguard Worker                             "outputs": [
268*89c4ff92SAndroid Build Coastguard Worker                                 3
269*89c4ff92SAndroid Build Coastguard Worker                             ],
270*89c4ff92SAndroid Build Coastguard Worker                             "builtin_options_type": "AddOptions",
271*89c4ff92SAndroid Build Coastguard Worker                             "builtin_options": {
272*89c4ff92SAndroid Build Coastguard Worker                                 "fused_activation_function": "NONE"
273*89c4ff92SAndroid Build Coastguard Worker                             },
274*89c4ff92SAndroid Build Coastguard Worker                             "custom_options_format": "FLEXBUFFERS"
275*89c4ff92SAndroid Build Coastguard Worker                         },
276*89c4ff92SAndroid Build Coastguard Worker                         {
277*89c4ff92SAndroid Build Coastguard Worker                             "opcode_index": 1,
278*89c4ff92SAndroid Build Coastguard Worker                             "inputs": [
279*89c4ff92SAndroid Build Coastguard Worker                                 3,
280*89c4ff92SAndroid Build Coastguard Worker                                 4
281*89c4ff92SAndroid Build Coastguard Worker                             ],
282*89c4ff92SAndroid Build Coastguard Worker                             "outputs": [
283*89c4ff92SAndroid Build Coastguard Worker                                 2
284*89c4ff92SAndroid Build Coastguard Worker                             ],
285*89c4ff92SAndroid Build Coastguard Worker                             "builtin_options_type": "SubOptions",
286*89c4ff92SAndroid Build Coastguard Worker                             "builtin_options": {
287*89c4ff92SAndroid Build Coastguard Worker                                 "fused_activation_function": "NONE"
288*89c4ff92SAndroid Build Coastguard Worker                             },
289*89c4ff92SAndroid Build Coastguard Worker                             "custom_options_format": "FLEXBUFFERS"
290*89c4ff92SAndroid Build Coastguard Worker                         }
291*89c4ff92SAndroid Build Coastguard Worker                     ],
292*89c4ff92SAndroid Build Coastguard Worker                     "name": "main"
293*89c4ff92SAndroid Build Coastguard Worker                 }
294*89c4ff92SAndroid Build Coastguard Worker             ],
295*89c4ff92SAndroid Build Coastguard Worker             "buffers": [
296*89c4ff92SAndroid Build Coastguard Worker                 {
297*89c4ff92SAndroid Build Coastguard Worker                 },
298*89c4ff92SAndroid Build Coastguard Worker                 {
299*89c4ff92SAndroid Build Coastguard Worker                 },
300*89c4ff92SAndroid Build Coastguard Worker                 {
301*89c4ff92SAndroid Build Coastguard Worker                 },
302*89c4ff92SAndroid Build Coastguard Worker                 {
303*89c4ff92SAndroid Build Coastguard Worker                 },
304*89c4ff92SAndroid Build Coastguard Worker                 {
305*89c4ff92SAndroid Build Coastguard Worker                 },
306*89c4ff92SAndroid Build Coastguard Worker                 {
307*89c4ff92SAndroid Build Coastguard Worker                 }
308*89c4ff92SAndroid Build Coastguard Worker             ]
309*89c4ff92SAndroid Build Coastguard Worker         }
310*89c4ff92SAndroid Build Coastguard Worker         )";
311*89c4ff92SAndroid Build Coastguard Worker         Setup();
312*89c4ff92SAndroid Build Coastguard Worker     }
313*89c4ff92SAndroid Build Coastguard Worker };
314*89c4ff92SAndroid Build Coastguard Worker 
315*89c4ff92SAndroid Build Coastguard Worker struct LoadScopeDynamicTensorBroadcasting3DFixture : LoadScopeDynamicTensorBroadcastingFixture
316*89c4ff92SAndroid Build Coastguard Worker {
LoadScopeDynamicTensorBroadcasting3DFixtureLoadScopeDynamicTensorBroadcasting3DFixture317*89c4ff92SAndroid Build Coastguard Worker     LoadScopeDynamicTensorBroadcasting3DFixture() : LoadScopeDynamicTensorBroadcastingFixture("[ 1, 2, 3, 2 ]",
318*89c4ff92SAndroid Build Coastguard Worker                                                                                               "[ 2, 3, 2 ]",
319*89c4ff92SAndroid Build Coastguard Worker                                                                                               "[ 2, 3, 2 ]",
320*89c4ff92SAndroid Build Coastguard Worker                                                                                               "[ 1, 2, 3, 2 ]", "[]") {}
321*89c4ff92SAndroid Build Coastguard Worker };
322*89c4ff92SAndroid Build Coastguard Worker 
323*89c4ff92SAndroid Build Coastguard Worker struct LoadScopeDynamicTensorBroadcasting2DFixture : LoadScopeDynamicTensorBroadcastingFixture
324*89c4ff92SAndroid Build Coastguard Worker {
LoadScopeDynamicTensorBroadcasting2DFixtureLoadScopeDynamicTensorBroadcasting2DFixture325*89c4ff92SAndroid Build Coastguard Worker     LoadScopeDynamicTensorBroadcasting2DFixture() : LoadScopeDynamicTensorBroadcastingFixture("[ 1, 2, 3, 2 ]",
326*89c4ff92SAndroid Build Coastguard Worker                                                                                               "[ 3, 2 ]",
327*89c4ff92SAndroid Build Coastguard Worker                                                                                               "[ 3, 2 ]",
328*89c4ff92SAndroid Build Coastguard Worker                                                                                               "[]", "[]") {}
329*89c4ff92SAndroid Build Coastguard Worker };
330*89c4ff92SAndroid Build Coastguard Worker 
331*89c4ff92SAndroid Build Coastguard Worker struct LoadScopeDynamicTensorBroadcasting1DFixture : LoadScopeDynamicTensorBroadcastingFixture
332*89c4ff92SAndroid Build Coastguard Worker {
LoadScopeDynamicTensorBroadcasting1DFixtureLoadScopeDynamicTensorBroadcasting1DFixture333*89c4ff92SAndroid Build Coastguard Worker     LoadScopeDynamicTensorBroadcasting1DFixture() : LoadScopeDynamicTensorBroadcastingFixture("[ 1, 2, 3, 2 ]",
334*89c4ff92SAndroid Build Coastguard Worker                                                                                               "[ 1 ]",
335*89c4ff92SAndroid Build Coastguard Worker                                                                                               "[ 1 ]",
336*89c4ff92SAndroid Build Coastguard Worker                                                                                               "[]",
337*89c4ff92SAndroid Build Coastguard Worker                                                                                               "[ 1, 2, 3, 2 ]") {}
338*89c4ff92SAndroid Build Coastguard Worker };
339*89c4ff92SAndroid Build Coastguard Worker 
340*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(LoadScopeDynamicTensorBroadcasting3DFixture, "LoadScopeDynamicTensorBroadcasting3D")
341*89c4ff92SAndroid Build Coastguard Worker {
342*89c4ff92SAndroid Build Coastguard Worker     RunTest<4, armnn::DataType::Float32, armnn::DataType::Float32>(
343*89c4ff92SAndroid Build Coastguard Worker         0,
344*89c4ff92SAndroid Build Coastguard Worker         { {"input0", { 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f }},
345*89c4ff92SAndroid Build Coastguard Worker           {"input1", { 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f, 13.f, 14.f }},
346*89c4ff92SAndroid Build Coastguard Worker           {"input2", { 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f }}
347*89c4ff92SAndroid Build Coastguard Worker         },
348*89c4ff92SAndroid Build Coastguard Worker         { {"output", { 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f, 13.f }} },
349*89c4ff92SAndroid Build Coastguard Worker         true);
350*89c4ff92SAndroid Build Coastguard Worker }
351*89c4ff92SAndroid Build Coastguard Worker 
352*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(LoadScopeDynamicTensorBroadcasting2DFixture, "LoadScopeDynamicTensorBroadcasting2D")
353*89c4ff92SAndroid Build Coastguard Worker {
354*89c4ff92SAndroid Build Coastguard Worker     RunTest<4, armnn::DataType::Float32, armnn::DataType::Float32>(
355*89c4ff92SAndroid Build Coastguard Worker         0,
356*89c4ff92SAndroid Build Coastguard Worker         { {"input0", { 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f }},
357*89c4ff92SAndroid Build Coastguard Worker           {"input1", { 3.f, 4.f, 5.f, 6.f, 7.f, 8.f }},
358*89c4ff92SAndroid Build Coastguard Worker           {"input2", { -1.f, -2.f, 3.f, 4.f, 5.f, 6.f }}
359*89c4ff92SAndroid Build Coastguard Worker         },
360*89c4ff92SAndroid Build Coastguard Worker         { {"output", { 4.f, 7.f, 4.f, 5.f, 6.f, 7.f, 10.f, 13.f, 10.f, 11.f, 12.f, 13.f }} },
361*89c4ff92SAndroid Build Coastguard Worker         true);
362*89c4ff92SAndroid Build Coastguard Worker }
363*89c4ff92SAndroid Build Coastguard Worker 
364*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(LoadScopeDynamicTensorBroadcasting1DFixture, "LoadScopeDynamicTensorBroadcasting1D")
365*89c4ff92SAndroid Build Coastguard Worker {
366*89c4ff92SAndroid Build Coastguard Worker     RunTest<4, armnn::DataType::Float32, armnn::DataType::Float32>(
367*89c4ff92SAndroid Build Coastguard Worker         0,
368*89c4ff92SAndroid Build Coastguard Worker         { {"input0", { 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f }},
369*89c4ff92SAndroid Build Coastguard Worker           {"input1", { 5.f }},
370*89c4ff92SAndroid Build Coastguard Worker           {"input2", { 1.f }}
371*89c4ff92SAndroid Build Coastguard Worker         },
372*89c4ff92SAndroid Build Coastguard Worker         { {"output", { 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f, 13.f, 14.f, 15.f }} },
373*89c4ff92SAndroid Build Coastguard Worker         true);
374*89c4ff92SAndroid Build Coastguard Worker }
375*89c4ff92SAndroid Build Coastguard Worker 
376*89c4ff92SAndroid Build Coastguard Worker }
377