1 // clang-format off
2 // Generated file (from: avg_pool_v1_2.mod.py). Do not edit
CreateModel_nhwc(Model * model)3 void CreateModel_nhwc(Model *model) {
4 OperandType type0(Type::BOOL, {});
5 OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
6 OperandType type2(Type::INT32, {});
7 // Phase 1, operands
8 auto op1 = model->addOperand(&type1);
9 auto param = model->addOperand(&type2);
10 auto param1 = model->addOperand(&type2);
11 auto param2 = model->addOperand(&type2);
12 auto param3 = model->addOperand(&type2);
13 auto param4 = model->addOperand(&type2);
14 auto param5 = model->addOperand(&type2);
15 auto param6 = model->addOperand(&type2);
16 auto param7 = model->addOperand(&type2);
17 auto param8 = model->addOperand(&type2);
18 auto layout = model->addOperand(&type0);
19 auto op4 = model->addOperand(&type1);
20 // Phase 2, operations
21 static int32_t param_init[] = {0};
22 model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
23 static int32_t param1_init[] = {0};
24 model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
25 static int32_t param2_init[] = {0};
26 model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1);
27 static int32_t param3_init[] = {0};
28 model->setOperandValue(param3, param3_init, sizeof(int32_t) * 1);
29 static int32_t param4_init[] = {1};
30 model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
31 static int32_t param5_init[] = {1};
32 model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
33 static int32_t param6_init[] = {1};
34 model->setOperandValue(param6, param6_init, sizeof(int32_t) * 1);
35 static int32_t param7_init[] = {1};
36 model->setOperandValue(param7, param7_init, sizeof(int32_t) * 1);
37 static int32_t param8_init[] = {0};
38 model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
39 static bool8 layout_init[] = {false};
40 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
41 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op1, param, param1, param2, param3, param4, param5, param6, param7, param8, layout}, {op4});
42 // Phase 3, inputs and outputs
43 model->identifyInputsAndOutputs(
44 {op1},
45 {op4});
46 assert(model->isValid());
47 }
48
is_ignored_nhwc(int i)49 inline bool is_ignored_nhwc(int i) {
50 static std::set<int> ignore = {};
51 return ignore.find(i) != ignore.end();
52 }
53
CreateModel_nhwc_relaxed(Model * model)54 void CreateModel_nhwc_relaxed(Model *model) {
55 OperandType type0(Type::BOOL, {});
56 OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
57 OperandType type2(Type::INT32, {});
58 // Phase 1, operands
59 auto op1 = model->addOperand(&type1);
60 auto param = model->addOperand(&type2);
61 auto param1 = model->addOperand(&type2);
62 auto param2 = model->addOperand(&type2);
63 auto param3 = model->addOperand(&type2);
64 auto param4 = model->addOperand(&type2);
65 auto param5 = model->addOperand(&type2);
66 auto param6 = model->addOperand(&type2);
67 auto param7 = model->addOperand(&type2);
68 auto param8 = model->addOperand(&type2);
69 auto layout = model->addOperand(&type0);
70 auto op4 = model->addOperand(&type1);
71 // Phase 2, operations
72 static int32_t param_init[] = {0};
73 model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
74 static int32_t param1_init[] = {0};
75 model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
76 static int32_t param2_init[] = {0};
77 model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1);
78 static int32_t param3_init[] = {0};
79 model->setOperandValue(param3, param3_init, sizeof(int32_t) * 1);
80 static int32_t param4_init[] = {1};
81 model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
82 static int32_t param5_init[] = {1};
83 model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
84 static int32_t param6_init[] = {1};
85 model->setOperandValue(param6, param6_init, sizeof(int32_t) * 1);
86 static int32_t param7_init[] = {1};
87 model->setOperandValue(param7, param7_init, sizeof(int32_t) * 1);
88 static int32_t param8_init[] = {0};
89 model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
90 static bool8 layout_init[] = {false};
91 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
92 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op1, param, param1, param2, param3, param4, param5, param6, param7, param8, layout}, {op4});
93 // Phase 3, inputs and outputs
94 model->identifyInputsAndOutputs(
95 {op1},
96 {op4});
97 // Phase 4: set relaxed execution
98 model->relaxComputationFloat32toFloat16(true);
99 assert(model->isValid());
100 }
101
is_ignored_nhwc_relaxed(int i)102 inline bool is_ignored_nhwc_relaxed(int i) {
103 static std::set<int> ignore = {};
104 return ignore.find(i) != ignore.end();
105 }
106
CreateModel_nhwc_float16(Model * model)107 void CreateModel_nhwc_float16(Model *model) {
108 OperandType type0(Type::BOOL, {});
109 OperandType type19(Type::TENSOR_FLOAT16, {1, 2, 2, 1});
110 OperandType type2(Type::INT32, {});
111 // Phase 1, operands
112 auto op1 = model->addOperand(&type19);
113 auto param = model->addOperand(&type2);
114 auto param1 = model->addOperand(&type2);
115 auto param2 = model->addOperand(&type2);
116 auto param3 = model->addOperand(&type2);
117 auto param4 = model->addOperand(&type2);
118 auto param5 = model->addOperand(&type2);
119 auto param6 = model->addOperand(&type2);
120 auto param7 = model->addOperand(&type2);
121 auto param8 = model->addOperand(&type2);
122 auto layout = model->addOperand(&type0);
123 auto op4 = model->addOperand(&type19);
124 // Phase 2, operations
125 static int32_t param_init[] = {0};
126 model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
127 static int32_t param1_init[] = {0};
128 model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
129 static int32_t param2_init[] = {0};
130 model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1);
131 static int32_t param3_init[] = {0};
132 model->setOperandValue(param3, param3_init, sizeof(int32_t) * 1);
133 static int32_t param4_init[] = {1};
134 model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
135 static int32_t param5_init[] = {1};
136 model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
137 static int32_t param6_init[] = {1};
138 model->setOperandValue(param6, param6_init, sizeof(int32_t) * 1);
139 static int32_t param7_init[] = {1};
140 model->setOperandValue(param7, param7_init, sizeof(int32_t) * 1);
141 static int32_t param8_init[] = {0};
142 model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
143 static bool8 layout_init[] = {false};
144 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
145 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op1, param, param1, param2, param3, param4, param5, param6, param7, param8, layout}, {op4});
146 // Phase 3, inputs and outputs
147 model->identifyInputsAndOutputs(
148 {op1},
149 {op4});
150 assert(model->isValid());
151 }
152
is_ignored_nhwc_float16(int i)153 inline bool is_ignored_nhwc_float16(int i) {
154 static std::set<int> ignore = {};
155 return ignore.find(i) != ignore.end();
156 }
157
CreateModel_nhwc_quant8(Model * model)158 void CreateModel_nhwc_quant8(Model *model) {
159 OperandType type0(Type::BOOL, {});
160 OperandType type2(Type::INT32, {});
161 OperandType type20(Type::TENSOR_QUANT8_ASYMM, {1, 2, 2, 1}, 0.5f, 0);
162 // Phase 1, operands
163 auto op1 = model->addOperand(&type20);
164 auto param = model->addOperand(&type2);
165 auto param1 = model->addOperand(&type2);
166 auto param2 = model->addOperand(&type2);
167 auto param3 = model->addOperand(&type2);
168 auto param4 = model->addOperand(&type2);
169 auto param5 = model->addOperand(&type2);
170 auto param6 = model->addOperand(&type2);
171 auto param7 = model->addOperand(&type2);
172 auto param8 = model->addOperand(&type2);
173 auto layout = model->addOperand(&type0);
174 auto op4 = model->addOperand(&type20);
175 // Phase 2, operations
176 static int32_t param_init[] = {0};
177 model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
178 static int32_t param1_init[] = {0};
179 model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
180 static int32_t param2_init[] = {0};
181 model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1);
182 static int32_t param3_init[] = {0};
183 model->setOperandValue(param3, param3_init, sizeof(int32_t) * 1);
184 static int32_t param4_init[] = {1};
185 model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
186 static int32_t param5_init[] = {1};
187 model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
188 static int32_t param6_init[] = {1};
189 model->setOperandValue(param6, param6_init, sizeof(int32_t) * 1);
190 static int32_t param7_init[] = {1};
191 model->setOperandValue(param7, param7_init, sizeof(int32_t) * 1);
192 static int32_t param8_init[] = {0};
193 model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
194 static bool8 layout_init[] = {false};
195 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
196 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op1, param, param1, param2, param3, param4, param5, param6, param7, param8, layout}, {op4});
197 // Phase 3, inputs and outputs
198 model->identifyInputsAndOutputs(
199 {op1},
200 {op4});
201 assert(model->isValid());
202 }
203
is_ignored_nhwc_quant8(int i)204 inline bool is_ignored_nhwc_quant8(int i) {
205 static std::set<int> ignore = {};
206 return ignore.find(i) != ignore.end();
207 }
208
CreateModel_nchw(Model * model)209 void CreateModel_nchw(Model *model) {
210 OperandType type0(Type::BOOL, {});
211 OperandType type2(Type::INT32, {});
212 OperandType type21(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
213 // Phase 1, operands
214 auto op1 = model->addOperand(&type21);
215 auto param = model->addOperand(&type2);
216 auto param1 = model->addOperand(&type2);
217 auto param2 = model->addOperand(&type2);
218 auto param3 = model->addOperand(&type2);
219 auto param4 = model->addOperand(&type2);
220 auto param5 = model->addOperand(&type2);
221 auto param6 = model->addOperand(&type2);
222 auto param7 = model->addOperand(&type2);
223 auto param8 = model->addOperand(&type2);
224 auto layout = model->addOperand(&type0);
225 auto op4 = model->addOperand(&type21);
226 // Phase 2, operations
227 static int32_t param_init[] = {0};
228 model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
229 static int32_t param1_init[] = {0};
230 model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
231 static int32_t param2_init[] = {0};
232 model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1);
233 static int32_t param3_init[] = {0};
234 model->setOperandValue(param3, param3_init, sizeof(int32_t) * 1);
235 static int32_t param4_init[] = {1};
236 model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
237 static int32_t param5_init[] = {1};
238 model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
239 static int32_t param6_init[] = {1};
240 model->setOperandValue(param6, param6_init, sizeof(int32_t) * 1);
241 static int32_t param7_init[] = {1};
242 model->setOperandValue(param7, param7_init, sizeof(int32_t) * 1);
243 static int32_t param8_init[] = {0};
244 model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
245 static bool8 layout_init[] = {true};
246 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
247 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op1, param, param1, param2, param3, param4, param5, param6, param7, param8, layout}, {op4});
248 // Phase 3, inputs and outputs
249 model->identifyInputsAndOutputs(
250 {op1},
251 {op4});
252 assert(model->isValid());
253 }
254
is_ignored_nchw(int i)255 inline bool is_ignored_nchw(int i) {
256 static std::set<int> ignore = {};
257 return ignore.find(i) != ignore.end();
258 }
259
CreateModel_nchw_relaxed(Model * model)260 void CreateModel_nchw_relaxed(Model *model) {
261 OperandType type0(Type::BOOL, {});
262 OperandType type2(Type::INT32, {});
263 OperandType type21(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
264 // Phase 1, operands
265 auto op1 = model->addOperand(&type21);
266 auto param = model->addOperand(&type2);
267 auto param1 = model->addOperand(&type2);
268 auto param2 = model->addOperand(&type2);
269 auto param3 = model->addOperand(&type2);
270 auto param4 = model->addOperand(&type2);
271 auto param5 = model->addOperand(&type2);
272 auto param6 = model->addOperand(&type2);
273 auto param7 = model->addOperand(&type2);
274 auto param8 = model->addOperand(&type2);
275 auto layout = model->addOperand(&type0);
276 auto op4 = model->addOperand(&type21);
277 // Phase 2, operations
278 static int32_t param_init[] = {0};
279 model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
280 static int32_t param1_init[] = {0};
281 model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
282 static int32_t param2_init[] = {0};
283 model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1);
284 static int32_t param3_init[] = {0};
285 model->setOperandValue(param3, param3_init, sizeof(int32_t) * 1);
286 static int32_t param4_init[] = {1};
287 model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
288 static int32_t param5_init[] = {1};
289 model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
290 static int32_t param6_init[] = {1};
291 model->setOperandValue(param6, param6_init, sizeof(int32_t) * 1);
292 static int32_t param7_init[] = {1};
293 model->setOperandValue(param7, param7_init, sizeof(int32_t) * 1);
294 static int32_t param8_init[] = {0};
295 model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
296 static bool8 layout_init[] = {true};
297 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
298 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op1, param, param1, param2, param3, param4, param5, param6, param7, param8, layout}, {op4});
299 // Phase 3, inputs and outputs
300 model->identifyInputsAndOutputs(
301 {op1},
302 {op4});
303 // Phase 4: set relaxed execution
304 model->relaxComputationFloat32toFloat16(true);
305 assert(model->isValid());
306 }
307
is_ignored_nchw_relaxed(int i)308 inline bool is_ignored_nchw_relaxed(int i) {
309 static std::set<int> ignore = {};
310 return ignore.find(i) != ignore.end();
311 }
312
CreateModel_nchw_float16(Model * model)313 void CreateModel_nchw_float16(Model *model) {
314 OperandType type0(Type::BOOL, {});
315 OperandType type2(Type::INT32, {});
316 OperandType type22(Type::TENSOR_FLOAT16, {1, 1, 2, 2});
317 // Phase 1, operands
318 auto op1 = model->addOperand(&type22);
319 auto param = model->addOperand(&type2);
320 auto param1 = model->addOperand(&type2);
321 auto param2 = model->addOperand(&type2);
322 auto param3 = model->addOperand(&type2);
323 auto param4 = model->addOperand(&type2);
324 auto param5 = model->addOperand(&type2);
325 auto param6 = model->addOperand(&type2);
326 auto param7 = model->addOperand(&type2);
327 auto param8 = model->addOperand(&type2);
328 auto layout = model->addOperand(&type0);
329 auto op4 = model->addOperand(&type22);
330 // Phase 2, operations
331 static int32_t param_init[] = {0};
332 model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
333 static int32_t param1_init[] = {0};
334 model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
335 static int32_t param2_init[] = {0};
336 model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1);
337 static int32_t param3_init[] = {0};
338 model->setOperandValue(param3, param3_init, sizeof(int32_t) * 1);
339 static int32_t param4_init[] = {1};
340 model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
341 static int32_t param5_init[] = {1};
342 model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
343 static int32_t param6_init[] = {1};
344 model->setOperandValue(param6, param6_init, sizeof(int32_t) * 1);
345 static int32_t param7_init[] = {1};
346 model->setOperandValue(param7, param7_init, sizeof(int32_t) * 1);
347 static int32_t param8_init[] = {0};
348 model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
349 static bool8 layout_init[] = {true};
350 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
351 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op1, param, param1, param2, param3, param4, param5, param6, param7, param8, layout}, {op4});
352 // Phase 3, inputs and outputs
353 model->identifyInputsAndOutputs(
354 {op1},
355 {op4});
356 assert(model->isValid());
357 }
358
is_ignored_nchw_float16(int i)359 inline bool is_ignored_nchw_float16(int i) {
360 static std::set<int> ignore = {};
361 return ignore.find(i) != ignore.end();
362 }
363
CreateModel_nchw_quant8(Model * model)364 void CreateModel_nchw_quant8(Model *model) {
365 OperandType type0(Type::BOOL, {});
366 OperandType type2(Type::INT32, {});
367 OperandType type23(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 2}, 0.5f, 0);
368 // Phase 1, operands
369 auto op1 = model->addOperand(&type23);
370 auto param = model->addOperand(&type2);
371 auto param1 = model->addOperand(&type2);
372 auto param2 = model->addOperand(&type2);
373 auto param3 = model->addOperand(&type2);
374 auto param4 = model->addOperand(&type2);
375 auto param5 = model->addOperand(&type2);
376 auto param6 = model->addOperand(&type2);
377 auto param7 = model->addOperand(&type2);
378 auto param8 = model->addOperand(&type2);
379 auto layout = model->addOperand(&type0);
380 auto op4 = model->addOperand(&type23);
381 // Phase 2, operations
382 static int32_t param_init[] = {0};
383 model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
384 static int32_t param1_init[] = {0};
385 model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
386 static int32_t param2_init[] = {0};
387 model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1);
388 static int32_t param3_init[] = {0};
389 model->setOperandValue(param3, param3_init, sizeof(int32_t) * 1);
390 static int32_t param4_init[] = {1};
391 model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
392 static int32_t param5_init[] = {1};
393 model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
394 static int32_t param6_init[] = {1};
395 model->setOperandValue(param6, param6_init, sizeof(int32_t) * 1);
396 static int32_t param7_init[] = {1};
397 model->setOperandValue(param7, param7_init, sizeof(int32_t) * 1);
398 static int32_t param8_init[] = {0};
399 model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
400 static bool8 layout_init[] = {true};
401 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
402 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op1, param, param1, param2, param3, param4, param5, param6, param7, param8, layout}, {op4});
403 // Phase 3, inputs and outputs
404 model->identifyInputsAndOutputs(
405 {op1},
406 {op4});
407 assert(model->isValid());
408 }
409
is_ignored_nchw_quant8(int i)410 inline bool is_ignored_nchw_quant8(int i) {
411 static std::set<int> ignore = {};
412 return ignore.find(i) != ignore.end();
413 }
414
CreateModel_dynamic_output_shape_nhwc(Model * model)415 void CreateModel_dynamic_output_shape_nhwc(Model *model) {
416 OperandType type0(Type::BOOL, {});
417 OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
418 OperandType type2(Type::INT32, {});
419 OperandType type24(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
420 // Phase 1, operands
421 auto op1 = model->addOperand(&type1);
422 auto param = model->addOperand(&type2);
423 auto param1 = model->addOperand(&type2);
424 auto param2 = model->addOperand(&type2);
425 auto param3 = model->addOperand(&type2);
426 auto param4 = model->addOperand(&type2);
427 auto param5 = model->addOperand(&type2);
428 auto param6 = model->addOperand(&type2);
429 auto param7 = model->addOperand(&type2);
430 auto param8 = model->addOperand(&type2);
431 auto layout = model->addOperand(&type0);
432 auto op4 = model->addOperand(&type24);
433 // Phase 2, operations
434 static int32_t param_init[] = {0};
435 model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
436 static int32_t param1_init[] = {0};
437 model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
438 static int32_t param2_init[] = {0};
439 model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1);
440 static int32_t param3_init[] = {0};
441 model->setOperandValue(param3, param3_init, sizeof(int32_t) * 1);
442 static int32_t param4_init[] = {1};
443 model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
444 static int32_t param5_init[] = {1};
445 model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
446 static int32_t param6_init[] = {1};
447 model->setOperandValue(param6, param6_init, sizeof(int32_t) * 1);
448 static int32_t param7_init[] = {1};
449 model->setOperandValue(param7, param7_init, sizeof(int32_t) * 1);
450 static int32_t param8_init[] = {0};
451 model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
452 static bool8 layout_init[] = {false};
453 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
454 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op1, param, param1, param2, param3, param4, param5, param6, param7, param8, layout}, {op4});
455 // Phase 3, inputs and outputs
456 model->identifyInputsAndOutputs(
457 {op1},
458 {op4});
459 assert(model->isValid());
460 }
461
is_ignored_dynamic_output_shape_nhwc(int i)462 inline bool is_ignored_dynamic_output_shape_nhwc(int i) {
463 static std::set<int> ignore = {};
464 return ignore.find(i) != ignore.end();
465 }
466
CreateModel_dynamic_output_shape_nhwc_relaxed(Model * model)467 void CreateModel_dynamic_output_shape_nhwc_relaxed(Model *model) {
468 OperandType type0(Type::BOOL, {});
469 OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
470 OperandType type2(Type::INT32, {});
471 OperandType type24(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
472 // Phase 1, operands
473 auto op1 = model->addOperand(&type1);
474 auto param = model->addOperand(&type2);
475 auto param1 = model->addOperand(&type2);
476 auto param2 = model->addOperand(&type2);
477 auto param3 = model->addOperand(&type2);
478 auto param4 = model->addOperand(&type2);
479 auto param5 = model->addOperand(&type2);
480 auto param6 = model->addOperand(&type2);
481 auto param7 = model->addOperand(&type2);
482 auto param8 = model->addOperand(&type2);
483 auto layout = model->addOperand(&type0);
484 auto op4 = model->addOperand(&type24);
485 // Phase 2, operations
486 static int32_t param_init[] = {0};
487 model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
488 static int32_t param1_init[] = {0};
489 model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
490 static int32_t param2_init[] = {0};
491 model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1);
492 static int32_t param3_init[] = {0};
493 model->setOperandValue(param3, param3_init, sizeof(int32_t) * 1);
494 static int32_t param4_init[] = {1};
495 model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
496 static int32_t param5_init[] = {1};
497 model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
498 static int32_t param6_init[] = {1};
499 model->setOperandValue(param6, param6_init, sizeof(int32_t) * 1);
500 static int32_t param7_init[] = {1};
501 model->setOperandValue(param7, param7_init, sizeof(int32_t) * 1);
502 static int32_t param8_init[] = {0};
503 model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
504 static bool8 layout_init[] = {false};
505 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
506 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op1, param, param1, param2, param3, param4, param5, param6, param7, param8, layout}, {op4});
507 // Phase 3, inputs and outputs
508 model->identifyInputsAndOutputs(
509 {op1},
510 {op4});
511 // Phase 4: set relaxed execution
512 model->relaxComputationFloat32toFloat16(true);
513 assert(model->isValid());
514 }
515
is_ignored_dynamic_output_shape_nhwc_relaxed(int i)516 inline bool is_ignored_dynamic_output_shape_nhwc_relaxed(int i) {
517 static std::set<int> ignore = {};
518 return ignore.find(i) != ignore.end();
519 }
520
CreateModel_dynamic_output_shape_nhwc_float16(Model * model)521 void CreateModel_dynamic_output_shape_nhwc_float16(Model *model) {
522 OperandType type0(Type::BOOL, {});
523 OperandType type19(Type::TENSOR_FLOAT16, {1, 2, 2, 1});
524 OperandType type2(Type::INT32, {});
525 OperandType type25(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
526 // Phase 1, operands
527 auto op1 = model->addOperand(&type19);
528 auto param = model->addOperand(&type2);
529 auto param1 = model->addOperand(&type2);
530 auto param2 = model->addOperand(&type2);
531 auto param3 = model->addOperand(&type2);
532 auto param4 = model->addOperand(&type2);
533 auto param5 = model->addOperand(&type2);
534 auto param6 = model->addOperand(&type2);
535 auto param7 = model->addOperand(&type2);
536 auto param8 = model->addOperand(&type2);
537 auto layout = model->addOperand(&type0);
538 auto op4 = model->addOperand(&type25);
539 // Phase 2, operations
540 static int32_t param_init[] = {0};
541 model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
542 static int32_t param1_init[] = {0};
543 model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
544 static int32_t param2_init[] = {0};
545 model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1);
546 static int32_t param3_init[] = {0};
547 model->setOperandValue(param3, param3_init, sizeof(int32_t) * 1);
548 static int32_t param4_init[] = {1};
549 model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
550 static int32_t param5_init[] = {1};
551 model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
552 static int32_t param6_init[] = {1};
553 model->setOperandValue(param6, param6_init, sizeof(int32_t) * 1);
554 static int32_t param7_init[] = {1};
555 model->setOperandValue(param7, param7_init, sizeof(int32_t) * 1);
556 static int32_t param8_init[] = {0};
557 model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
558 static bool8 layout_init[] = {false};
559 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
560 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op1, param, param1, param2, param3, param4, param5, param6, param7, param8, layout}, {op4});
561 // Phase 3, inputs and outputs
562 model->identifyInputsAndOutputs(
563 {op1},
564 {op4});
565 assert(model->isValid());
566 }
567
is_ignored_dynamic_output_shape_nhwc_float16(int i)568 inline bool is_ignored_dynamic_output_shape_nhwc_float16(int i) {
569 static std::set<int> ignore = {};
570 return ignore.find(i) != ignore.end();
571 }
572
CreateModel_dynamic_output_shape_nhwc_quant8(Model * model)573 void CreateModel_dynamic_output_shape_nhwc_quant8(Model *model) {
574 OperandType type0(Type::BOOL, {});
575 OperandType type2(Type::INT32, {});
576 OperandType type20(Type::TENSOR_QUANT8_ASYMM, {1, 2, 2, 1}, 0.5f, 0);
577 OperandType type26(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.5f, 0);
578 // Phase 1, operands
579 auto op1 = model->addOperand(&type20);
580 auto param = model->addOperand(&type2);
581 auto param1 = model->addOperand(&type2);
582 auto param2 = model->addOperand(&type2);
583 auto param3 = model->addOperand(&type2);
584 auto param4 = model->addOperand(&type2);
585 auto param5 = model->addOperand(&type2);
586 auto param6 = model->addOperand(&type2);
587 auto param7 = model->addOperand(&type2);
588 auto param8 = model->addOperand(&type2);
589 auto layout = model->addOperand(&type0);
590 auto op4 = model->addOperand(&type26);
591 // Phase 2, operations
592 static int32_t param_init[] = {0};
593 model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
594 static int32_t param1_init[] = {0};
595 model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
596 static int32_t param2_init[] = {0};
597 model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1);
598 static int32_t param3_init[] = {0};
599 model->setOperandValue(param3, param3_init, sizeof(int32_t) * 1);
600 static int32_t param4_init[] = {1};
601 model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
602 static int32_t param5_init[] = {1};
603 model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
604 static int32_t param6_init[] = {1};
605 model->setOperandValue(param6, param6_init, sizeof(int32_t) * 1);
606 static int32_t param7_init[] = {1};
607 model->setOperandValue(param7, param7_init, sizeof(int32_t) * 1);
608 static int32_t param8_init[] = {0};
609 model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
610 static bool8 layout_init[] = {false};
611 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
612 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op1, param, param1, param2, param3, param4, param5, param6, param7, param8, layout}, {op4});
613 // Phase 3, inputs and outputs
614 model->identifyInputsAndOutputs(
615 {op1},
616 {op4});
617 assert(model->isValid());
618 }
619
is_ignored_dynamic_output_shape_nhwc_quant8(int i)620 inline bool is_ignored_dynamic_output_shape_nhwc_quant8(int i) {
621 static std::set<int> ignore = {};
622 return ignore.find(i) != ignore.end();
623 }
624
CreateModel_dynamic_output_shape_nchw(Model * model)625 void CreateModel_dynamic_output_shape_nchw(Model *model) {
626 OperandType type0(Type::BOOL, {});
627 OperandType type2(Type::INT32, {});
628 OperandType type21(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
629 OperandType type24(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
630 // Phase 1, operands
631 auto op1 = model->addOperand(&type21);
632 auto param = model->addOperand(&type2);
633 auto param1 = model->addOperand(&type2);
634 auto param2 = model->addOperand(&type2);
635 auto param3 = model->addOperand(&type2);
636 auto param4 = model->addOperand(&type2);
637 auto param5 = model->addOperand(&type2);
638 auto param6 = model->addOperand(&type2);
639 auto param7 = model->addOperand(&type2);
640 auto param8 = model->addOperand(&type2);
641 auto layout = model->addOperand(&type0);
642 auto op4 = model->addOperand(&type24);
643 // Phase 2, operations
644 static int32_t param_init[] = {0};
645 model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
646 static int32_t param1_init[] = {0};
647 model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
648 static int32_t param2_init[] = {0};
649 model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1);
650 static int32_t param3_init[] = {0};
651 model->setOperandValue(param3, param3_init, sizeof(int32_t) * 1);
652 static int32_t param4_init[] = {1};
653 model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
654 static int32_t param5_init[] = {1};
655 model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
656 static int32_t param6_init[] = {1};
657 model->setOperandValue(param6, param6_init, sizeof(int32_t) * 1);
658 static int32_t param7_init[] = {1};
659 model->setOperandValue(param7, param7_init, sizeof(int32_t) * 1);
660 static int32_t param8_init[] = {0};
661 model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
662 static bool8 layout_init[] = {true};
663 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
664 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op1, param, param1, param2, param3, param4, param5, param6, param7, param8, layout}, {op4});
665 // Phase 3, inputs and outputs
666 model->identifyInputsAndOutputs(
667 {op1},
668 {op4});
669 assert(model->isValid());
670 }
671
is_ignored_dynamic_output_shape_nchw(int i)672 inline bool is_ignored_dynamic_output_shape_nchw(int i) {
673 static std::set<int> ignore = {};
674 return ignore.find(i) != ignore.end();
675 }
676
CreateModel_dynamic_output_shape_nchw_relaxed(Model * model)677 void CreateModel_dynamic_output_shape_nchw_relaxed(Model *model) {
678 OperandType type0(Type::BOOL, {});
679 OperandType type2(Type::INT32, {});
680 OperandType type21(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
681 OperandType type24(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
682 // Phase 1, operands
683 auto op1 = model->addOperand(&type21);
684 auto param = model->addOperand(&type2);
685 auto param1 = model->addOperand(&type2);
686 auto param2 = model->addOperand(&type2);
687 auto param3 = model->addOperand(&type2);
688 auto param4 = model->addOperand(&type2);
689 auto param5 = model->addOperand(&type2);
690 auto param6 = model->addOperand(&type2);
691 auto param7 = model->addOperand(&type2);
692 auto param8 = model->addOperand(&type2);
693 auto layout = model->addOperand(&type0);
694 auto op4 = model->addOperand(&type24);
695 // Phase 2, operations
696 static int32_t param_init[] = {0};
697 model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
698 static int32_t param1_init[] = {0};
699 model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
700 static int32_t param2_init[] = {0};
701 model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1);
702 static int32_t param3_init[] = {0};
703 model->setOperandValue(param3, param3_init, sizeof(int32_t) * 1);
704 static int32_t param4_init[] = {1};
705 model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
706 static int32_t param5_init[] = {1};
707 model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
708 static int32_t param6_init[] = {1};
709 model->setOperandValue(param6, param6_init, sizeof(int32_t) * 1);
710 static int32_t param7_init[] = {1};
711 model->setOperandValue(param7, param7_init, sizeof(int32_t) * 1);
712 static int32_t param8_init[] = {0};
713 model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
714 static bool8 layout_init[] = {true};
715 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
716 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op1, param, param1, param2, param3, param4, param5, param6, param7, param8, layout}, {op4});
717 // Phase 3, inputs and outputs
718 model->identifyInputsAndOutputs(
719 {op1},
720 {op4});
721 // Phase 4: set relaxed execution
722 model->relaxComputationFloat32toFloat16(true);
723 assert(model->isValid());
724 }
725
is_ignored_dynamic_output_shape_nchw_relaxed(int i)726 inline bool is_ignored_dynamic_output_shape_nchw_relaxed(int i) {
727 static std::set<int> ignore = {};
728 return ignore.find(i) != ignore.end();
729 }
730
CreateModel_dynamic_output_shape_nchw_float16(Model * model)731 void CreateModel_dynamic_output_shape_nchw_float16(Model *model) {
732 OperandType type0(Type::BOOL, {});
733 OperandType type2(Type::INT32, {});
734 OperandType type22(Type::TENSOR_FLOAT16, {1, 1, 2, 2});
735 OperandType type25(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
736 // Phase 1, operands
737 auto op1 = model->addOperand(&type22);
738 auto param = model->addOperand(&type2);
739 auto param1 = model->addOperand(&type2);
740 auto param2 = model->addOperand(&type2);
741 auto param3 = model->addOperand(&type2);
742 auto param4 = model->addOperand(&type2);
743 auto param5 = model->addOperand(&type2);
744 auto param6 = model->addOperand(&type2);
745 auto param7 = model->addOperand(&type2);
746 auto param8 = model->addOperand(&type2);
747 auto layout = model->addOperand(&type0);
748 auto op4 = model->addOperand(&type25);
749 // Phase 2, operations
750 static int32_t param_init[] = {0};
751 model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
752 static int32_t param1_init[] = {0};
753 model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
754 static int32_t param2_init[] = {0};
755 model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1);
756 static int32_t param3_init[] = {0};
757 model->setOperandValue(param3, param3_init, sizeof(int32_t) * 1);
758 static int32_t param4_init[] = {1};
759 model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
760 static int32_t param5_init[] = {1};
761 model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
762 static int32_t param6_init[] = {1};
763 model->setOperandValue(param6, param6_init, sizeof(int32_t) * 1);
764 static int32_t param7_init[] = {1};
765 model->setOperandValue(param7, param7_init, sizeof(int32_t) * 1);
766 static int32_t param8_init[] = {0};
767 model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
768 static bool8 layout_init[] = {true};
769 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
770 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op1, param, param1, param2, param3, param4, param5, param6, param7, param8, layout}, {op4});
771 // Phase 3, inputs and outputs
772 model->identifyInputsAndOutputs(
773 {op1},
774 {op4});
775 assert(model->isValid());
776 }
777
is_ignored_dynamic_output_shape_nchw_float16(int i)778 inline bool is_ignored_dynamic_output_shape_nchw_float16(int i) {
779 static std::set<int> ignore = {};
780 return ignore.find(i) != ignore.end();
781 }
782
CreateModel_dynamic_output_shape_nchw_quant8(Model * model)783 void CreateModel_dynamic_output_shape_nchw_quant8(Model *model) {
784 OperandType type0(Type::BOOL, {});
785 OperandType type2(Type::INT32, {});
786 OperandType type23(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 2}, 0.5f, 0);
787 OperandType type26(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.5f, 0);
788 // Phase 1, operands
789 auto op1 = model->addOperand(&type23);
790 auto param = model->addOperand(&type2);
791 auto param1 = model->addOperand(&type2);
792 auto param2 = model->addOperand(&type2);
793 auto param3 = model->addOperand(&type2);
794 auto param4 = model->addOperand(&type2);
795 auto param5 = model->addOperand(&type2);
796 auto param6 = model->addOperand(&type2);
797 auto param7 = model->addOperand(&type2);
798 auto param8 = model->addOperand(&type2);
799 auto layout = model->addOperand(&type0);
800 auto op4 = model->addOperand(&type26);
801 // Phase 2, operations
802 static int32_t param_init[] = {0};
803 model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
804 static int32_t param1_init[] = {0};
805 model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
806 static int32_t param2_init[] = {0};
807 model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1);
808 static int32_t param3_init[] = {0};
809 model->setOperandValue(param3, param3_init, sizeof(int32_t) * 1);
810 static int32_t param4_init[] = {1};
811 model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
812 static int32_t param5_init[] = {1};
813 model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
814 static int32_t param6_init[] = {1};
815 model->setOperandValue(param6, param6_init, sizeof(int32_t) * 1);
816 static int32_t param7_init[] = {1};
817 model->setOperandValue(param7, param7_init, sizeof(int32_t) * 1);
818 static int32_t param8_init[] = {0};
819 model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
820 static bool8 layout_init[] = {true};
821 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
822 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op1, param, param1, param2, param3, param4, param5, param6, param7, param8, layout}, {op4});
823 // Phase 3, inputs and outputs
824 model->identifyInputsAndOutputs(
825 {op1},
826 {op4});
827 assert(model->isValid());
828 }
829
is_ignored_dynamic_output_shape_nchw_quant8(int i)830 inline bool is_ignored_dynamic_output_shape_nchw_quant8(int i) {
831 static std::set<int> ignore = {};
832 return ignore.find(i) != ignore.end();
833 }
834
CreateModel_nhwc_2(Model * model)835 void CreateModel_nhwc_2(Model *model) {
836 OperandType type0(Type::BOOL, {});
837 OperandType type2(Type::INT32, {});
838 OperandType type3(Type::TENSOR_FLOAT32, {5, 52, 60, 3});
839 OperandType type4(Type::TENSOR_FLOAT32, {5, 11, 13, 3});
840 // Phase 1, operands
841 auto op11 = model->addOperand(&type3);
842 auto param9 = model->addOperand(&type2);
843 auto param10 = model->addOperand(&type2);
844 auto param11 = model->addOperand(&type2);
845 auto param12 = model->addOperand(&type2);
846 auto param13 = model->addOperand(&type2);
847 auto param14 = model->addOperand(&type2);
848 auto param15 = model->addOperand(&type2);
849 auto param16 = model->addOperand(&type2);
850 auto param17 = model->addOperand(&type2);
851 auto layout = model->addOperand(&type0);
852 auto op41 = model->addOperand(&type4);
853 // Phase 2, operations
854 static int32_t param9_init[] = {50};
855 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
856 static int32_t param10_init[] = {50};
857 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
858 static int32_t param11_init[] = {50};
859 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
860 static int32_t param12_init[] = {50};
861 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
862 static int32_t param13_init[] = {5};
863 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
864 static int32_t param14_init[] = {5};
865 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
866 static int32_t param15_init[] = {100};
867 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
868 static int32_t param16_init[] = {100};
869 model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
870 static int32_t param17_init[] = {0};
871 model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
872 static bool8 layout_init[] = {false};
873 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
874 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op11, param9, param10, param11, param12, param13, param14, param15, param16, param17, layout}, {op41});
875 // Phase 3, inputs and outputs
876 model->identifyInputsAndOutputs(
877 {op11},
878 {op41});
879 assert(model->isValid());
880 }
881
is_ignored_nhwc_2(int i)882 inline bool is_ignored_nhwc_2(int i) {
883 static std::set<int> ignore = {};
884 return ignore.find(i) != ignore.end();
885 }
886
CreateModel_nhwc_relaxed_2(Model * model)887 void CreateModel_nhwc_relaxed_2(Model *model) {
888 OperandType type0(Type::BOOL, {});
889 OperandType type2(Type::INT32, {});
890 OperandType type3(Type::TENSOR_FLOAT32, {5, 52, 60, 3});
891 OperandType type4(Type::TENSOR_FLOAT32, {5, 11, 13, 3});
892 // Phase 1, operands
893 auto op11 = model->addOperand(&type3);
894 auto param9 = model->addOperand(&type2);
895 auto param10 = model->addOperand(&type2);
896 auto param11 = model->addOperand(&type2);
897 auto param12 = model->addOperand(&type2);
898 auto param13 = model->addOperand(&type2);
899 auto param14 = model->addOperand(&type2);
900 auto param15 = model->addOperand(&type2);
901 auto param16 = model->addOperand(&type2);
902 auto param17 = model->addOperand(&type2);
903 auto layout = model->addOperand(&type0);
904 auto op41 = model->addOperand(&type4);
905 // Phase 2, operations
906 static int32_t param9_init[] = {50};
907 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
908 static int32_t param10_init[] = {50};
909 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
910 static int32_t param11_init[] = {50};
911 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
912 static int32_t param12_init[] = {50};
913 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
914 static int32_t param13_init[] = {5};
915 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
916 static int32_t param14_init[] = {5};
917 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
918 static int32_t param15_init[] = {100};
919 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
920 static int32_t param16_init[] = {100};
921 model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
922 static int32_t param17_init[] = {0};
923 model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
924 static bool8 layout_init[] = {false};
925 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
926 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op11, param9, param10, param11, param12, param13, param14, param15, param16, param17, layout}, {op41});
927 // Phase 3, inputs and outputs
928 model->identifyInputsAndOutputs(
929 {op11},
930 {op41});
931 // Phase 4: set relaxed execution
932 model->relaxComputationFloat32toFloat16(true);
933 assert(model->isValid());
934 }
935
is_ignored_nhwc_relaxed_2(int i)936 inline bool is_ignored_nhwc_relaxed_2(int i) {
937 static std::set<int> ignore = {};
938 return ignore.find(i) != ignore.end();
939 }
940
CreateModel_nhwc_float16_2(Model * model)941 void CreateModel_nhwc_float16_2(Model *model) {
942 OperandType type0(Type::BOOL, {});
943 OperandType type2(Type::INT32, {});
944 OperandType type27(Type::TENSOR_FLOAT16, {5, 52, 60, 3});
945 OperandType type28(Type::TENSOR_FLOAT16, {5, 11, 13, 3});
946 // Phase 1, operands
947 auto op11 = model->addOperand(&type27);
948 auto param9 = model->addOperand(&type2);
949 auto param10 = model->addOperand(&type2);
950 auto param11 = model->addOperand(&type2);
951 auto param12 = model->addOperand(&type2);
952 auto param13 = model->addOperand(&type2);
953 auto param14 = model->addOperand(&type2);
954 auto param15 = model->addOperand(&type2);
955 auto param16 = model->addOperand(&type2);
956 auto param17 = model->addOperand(&type2);
957 auto layout = model->addOperand(&type0);
958 auto op41 = model->addOperand(&type28);
959 // Phase 2, operations
960 static int32_t param9_init[] = {50};
961 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
962 static int32_t param10_init[] = {50};
963 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
964 static int32_t param11_init[] = {50};
965 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
966 static int32_t param12_init[] = {50};
967 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
968 static int32_t param13_init[] = {5};
969 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
970 static int32_t param14_init[] = {5};
971 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
972 static int32_t param15_init[] = {100};
973 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
974 static int32_t param16_init[] = {100};
975 model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
976 static int32_t param17_init[] = {0};
977 model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
978 static bool8 layout_init[] = {false};
979 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
980 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op11, param9, param10, param11, param12, param13, param14, param15, param16, param17, layout}, {op41});
981 // Phase 3, inputs and outputs
982 model->identifyInputsAndOutputs(
983 {op11},
984 {op41});
985 assert(model->isValid());
986 }
987
is_ignored_nhwc_float16_2(int i)988 inline bool is_ignored_nhwc_float16_2(int i) {
989 static std::set<int> ignore = {};
990 return ignore.find(i) != ignore.end();
991 }
992
CreateModel_nhwc_quant8_2(Model * model)993 void CreateModel_nhwc_quant8_2(Model *model) {
994 OperandType type0(Type::BOOL, {});
995 OperandType type2(Type::INT32, {});
996 OperandType type29(Type::TENSOR_QUANT8_ASYMM, {5, 52, 60, 3}, 0.5f, 0);
997 OperandType type30(Type::TENSOR_QUANT8_ASYMM, {5, 11, 13, 3}, 0.5f, 0);
998 // Phase 1, operands
999 auto op11 = model->addOperand(&type29);
1000 auto param9 = model->addOperand(&type2);
1001 auto param10 = model->addOperand(&type2);
1002 auto param11 = model->addOperand(&type2);
1003 auto param12 = model->addOperand(&type2);
1004 auto param13 = model->addOperand(&type2);
1005 auto param14 = model->addOperand(&type2);
1006 auto param15 = model->addOperand(&type2);
1007 auto param16 = model->addOperand(&type2);
1008 auto param17 = model->addOperand(&type2);
1009 auto layout = model->addOperand(&type0);
1010 auto op41 = model->addOperand(&type30);
1011 // Phase 2, operations
1012 static int32_t param9_init[] = {50};
1013 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
1014 static int32_t param10_init[] = {50};
1015 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
1016 static int32_t param11_init[] = {50};
1017 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
1018 static int32_t param12_init[] = {50};
1019 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
1020 static int32_t param13_init[] = {5};
1021 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
1022 static int32_t param14_init[] = {5};
1023 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
1024 static int32_t param15_init[] = {100};
1025 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
1026 static int32_t param16_init[] = {100};
1027 model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
1028 static int32_t param17_init[] = {0};
1029 model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
1030 static bool8 layout_init[] = {false};
1031 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1032 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op11, param9, param10, param11, param12, param13, param14, param15, param16, param17, layout}, {op41});
1033 // Phase 3, inputs and outputs
1034 model->identifyInputsAndOutputs(
1035 {op11},
1036 {op41});
1037 assert(model->isValid());
1038 }
1039
is_ignored_nhwc_quant8_2(int i)1040 inline bool is_ignored_nhwc_quant8_2(int i) {
1041 static std::set<int> ignore = {};
1042 return ignore.find(i) != ignore.end();
1043 }
1044
CreateModel_nchw_2(Model * model)1045 void CreateModel_nchw_2(Model *model) {
1046 OperandType type0(Type::BOOL, {});
1047 OperandType type2(Type::INT32, {});
1048 OperandType type31(Type::TENSOR_FLOAT32, {5, 3, 52, 60});
1049 OperandType type32(Type::TENSOR_FLOAT32, {5, 3, 11, 13});
1050 // Phase 1, operands
1051 auto op11 = model->addOperand(&type31);
1052 auto param9 = model->addOperand(&type2);
1053 auto param10 = model->addOperand(&type2);
1054 auto param11 = model->addOperand(&type2);
1055 auto param12 = model->addOperand(&type2);
1056 auto param13 = model->addOperand(&type2);
1057 auto param14 = model->addOperand(&type2);
1058 auto param15 = model->addOperand(&type2);
1059 auto param16 = model->addOperand(&type2);
1060 auto param17 = model->addOperand(&type2);
1061 auto layout = model->addOperand(&type0);
1062 auto op41 = model->addOperand(&type32);
1063 // Phase 2, operations
1064 static int32_t param9_init[] = {50};
1065 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
1066 static int32_t param10_init[] = {50};
1067 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
1068 static int32_t param11_init[] = {50};
1069 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
1070 static int32_t param12_init[] = {50};
1071 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
1072 static int32_t param13_init[] = {5};
1073 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
1074 static int32_t param14_init[] = {5};
1075 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
1076 static int32_t param15_init[] = {100};
1077 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
1078 static int32_t param16_init[] = {100};
1079 model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
1080 static int32_t param17_init[] = {0};
1081 model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
1082 static bool8 layout_init[] = {true};
1083 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1084 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op11, param9, param10, param11, param12, param13, param14, param15, param16, param17, layout}, {op41});
1085 // Phase 3, inputs and outputs
1086 model->identifyInputsAndOutputs(
1087 {op11},
1088 {op41});
1089 assert(model->isValid());
1090 }
1091
is_ignored_nchw_2(int i)1092 inline bool is_ignored_nchw_2(int i) {
1093 static std::set<int> ignore = {};
1094 return ignore.find(i) != ignore.end();
1095 }
1096
CreateModel_nchw_relaxed_2(Model * model)1097 void CreateModel_nchw_relaxed_2(Model *model) {
1098 OperandType type0(Type::BOOL, {});
1099 OperandType type2(Type::INT32, {});
1100 OperandType type31(Type::TENSOR_FLOAT32, {5, 3, 52, 60});
1101 OperandType type32(Type::TENSOR_FLOAT32, {5, 3, 11, 13});
1102 // Phase 1, operands
1103 auto op11 = model->addOperand(&type31);
1104 auto param9 = model->addOperand(&type2);
1105 auto param10 = model->addOperand(&type2);
1106 auto param11 = model->addOperand(&type2);
1107 auto param12 = model->addOperand(&type2);
1108 auto param13 = model->addOperand(&type2);
1109 auto param14 = model->addOperand(&type2);
1110 auto param15 = model->addOperand(&type2);
1111 auto param16 = model->addOperand(&type2);
1112 auto param17 = model->addOperand(&type2);
1113 auto layout = model->addOperand(&type0);
1114 auto op41 = model->addOperand(&type32);
1115 // Phase 2, operations
1116 static int32_t param9_init[] = {50};
1117 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
1118 static int32_t param10_init[] = {50};
1119 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
1120 static int32_t param11_init[] = {50};
1121 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
1122 static int32_t param12_init[] = {50};
1123 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
1124 static int32_t param13_init[] = {5};
1125 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
1126 static int32_t param14_init[] = {5};
1127 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
1128 static int32_t param15_init[] = {100};
1129 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
1130 static int32_t param16_init[] = {100};
1131 model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
1132 static int32_t param17_init[] = {0};
1133 model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
1134 static bool8 layout_init[] = {true};
1135 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1136 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op11, param9, param10, param11, param12, param13, param14, param15, param16, param17, layout}, {op41});
1137 // Phase 3, inputs and outputs
1138 model->identifyInputsAndOutputs(
1139 {op11},
1140 {op41});
1141 // Phase 4: set relaxed execution
1142 model->relaxComputationFloat32toFloat16(true);
1143 assert(model->isValid());
1144 }
1145
is_ignored_nchw_relaxed_2(int i)1146 inline bool is_ignored_nchw_relaxed_2(int i) {
1147 static std::set<int> ignore = {};
1148 return ignore.find(i) != ignore.end();
1149 }
1150
CreateModel_nchw_float16_2(Model * model)1151 void CreateModel_nchw_float16_2(Model *model) {
1152 OperandType type0(Type::BOOL, {});
1153 OperandType type2(Type::INT32, {});
1154 OperandType type33(Type::TENSOR_FLOAT16, {5, 3, 52, 60});
1155 OperandType type34(Type::TENSOR_FLOAT16, {5, 3, 11, 13});
1156 // Phase 1, operands
1157 auto op11 = model->addOperand(&type33);
1158 auto param9 = model->addOperand(&type2);
1159 auto param10 = model->addOperand(&type2);
1160 auto param11 = model->addOperand(&type2);
1161 auto param12 = model->addOperand(&type2);
1162 auto param13 = model->addOperand(&type2);
1163 auto param14 = model->addOperand(&type2);
1164 auto param15 = model->addOperand(&type2);
1165 auto param16 = model->addOperand(&type2);
1166 auto param17 = model->addOperand(&type2);
1167 auto layout = model->addOperand(&type0);
1168 auto op41 = model->addOperand(&type34);
1169 // Phase 2, operations
1170 static int32_t param9_init[] = {50};
1171 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
1172 static int32_t param10_init[] = {50};
1173 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
1174 static int32_t param11_init[] = {50};
1175 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
1176 static int32_t param12_init[] = {50};
1177 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
1178 static int32_t param13_init[] = {5};
1179 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
1180 static int32_t param14_init[] = {5};
1181 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
1182 static int32_t param15_init[] = {100};
1183 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
1184 static int32_t param16_init[] = {100};
1185 model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
1186 static int32_t param17_init[] = {0};
1187 model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
1188 static bool8 layout_init[] = {true};
1189 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1190 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op11, param9, param10, param11, param12, param13, param14, param15, param16, param17, layout}, {op41});
1191 // Phase 3, inputs and outputs
1192 model->identifyInputsAndOutputs(
1193 {op11},
1194 {op41});
1195 assert(model->isValid());
1196 }
1197
is_ignored_nchw_float16_2(int i)1198 inline bool is_ignored_nchw_float16_2(int i) {
1199 static std::set<int> ignore = {};
1200 return ignore.find(i) != ignore.end();
1201 }
1202
CreateModel_nchw_quant8_2(Model * model)1203 void CreateModel_nchw_quant8_2(Model *model) {
1204 OperandType type0(Type::BOOL, {});
1205 OperandType type2(Type::INT32, {});
1206 OperandType type35(Type::TENSOR_QUANT8_ASYMM, {5, 3, 52, 60}, 0.5f, 0);
1207 OperandType type36(Type::TENSOR_QUANT8_ASYMM, {5, 3, 11, 13}, 0.5f, 0);
1208 // Phase 1, operands
1209 auto op11 = model->addOperand(&type35);
1210 auto param9 = model->addOperand(&type2);
1211 auto param10 = model->addOperand(&type2);
1212 auto param11 = model->addOperand(&type2);
1213 auto param12 = model->addOperand(&type2);
1214 auto param13 = model->addOperand(&type2);
1215 auto param14 = model->addOperand(&type2);
1216 auto param15 = model->addOperand(&type2);
1217 auto param16 = model->addOperand(&type2);
1218 auto param17 = model->addOperand(&type2);
1219 auto layout = model->addOperand(&type0);
1220 auto op41 = model->addOperand(&type36);
1221 // Phase 2, operations
1222 static int32_t param9_init[] = {50};
1223 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
1224 static int32_t param10_init[] = {50};
1225 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
1226 static int32_t param11_init[] = {50};
1227 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
1228 static int32_t param12_init[] = {50};
1229 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
1230 static int32_t param13_init[] = {5};
1231 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
1232 static int32_t param14_init[] = {5};
1233 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
1234 static int32_t param15_init[] = {100};
1235 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
1236 static int32_t param16_init[] = {100};
1237 model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
1238 static int32_t param17_init[] = {0};
1239 model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
1240 static bool8 layout_init[] = {true};
1241 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1242 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op11, param9, param10, param11, param12, param13, param14, param15, param16, param17, layout}, {op41});
1243 // Phase 3, inputs and outputs
1244 model->identifyInputsAndOutputs(
1245 {op11},
1246 {op41});
1247 assert(model->isValid());
1248 }
1249
is_ignored_nchw_quant8_2(int i)1250 inline bool is_ignored_nchw_quant8_2(int i) {
1251 static std::set<int> ignore = {};
1252 return ignore.find(i) != ignore.end();
1253 }
1254
CreateModel_dynamic_output_shape_nhwc_2(Model * model)1255 void CreateModel_dynamic_output_shape_nhwc_2(Model *model) {
1256 OperandType type0(Type::BOOL, {});
1257 OperandType type2(Type::INT32, {});
1258 OperandType type24(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
1259 OperandType type3(Type::TENSOR_FLOAT32, {5, 52, 60, 3});
1260 // Phase 1, operands
1261 auto op11 = model->addOperand(&type3);
1262 auto param9 = model->addOperand(&type2);
1263 auto param10 = model->addOperand(&type2);
1264 auto param11 = model->addOperand(&type2);
1265 auto param12 = model->addOperand(&type2);
1266 auto param13 = model->addOperand(&type2);
1267 auto param14 = model->addOperand(&type2);
1268 auto param15 = model->addOperand(&type2);
1269 auto param16 = model->addOperand(&type2);
1270 auto param17 = model->addOperand(&type2);
1271 auto layout = model->addOperand(&type0);
1272 auto op41 = model->addOperand(&type24);
1273 // Phase 2, operations
1274 static int32_t param9_init[] = {50};
1275 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
1276 static int32_t param10_init[] = {50};
1277 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
1278 static int32_t param11_init[] = {50};
1279 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
1280 static int32_t param12_init[] = {50};
1281 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
1282 static int32_t param13_init[] = {5};
1283 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
1284 static int32_t param14_init[] = {5};
1285 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
1286 static int32_t param15_init[] = {100};
1287 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
1288 static int32_t param16_init[] = {100};
1289 model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
1290 static int32_t param17_init[] = {0};
1291 model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
1292 static bool8 layout_init[] = {false};
1293 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1294 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op11, param9, param10, param11, param12, param13, param14, param15, param16, param17, layout}, {op41});
1295 // Phase 3, inputs and outputs
1296 model->identifyInputsAndOutputs(
1297 {op11},
1298 {op41});
1299 assert(model->isValid());
1300 }
1301
is_ignored_dynamic_output_shape_nhwc_2(int i)1302 inline bool is_ignored_dynamic_output_shape_nhwc_2(int i) {
1303 static std::set<int> ignore = {};
1304 return ignore.find(i) != ignore.end();
1305 }
1306
CreateModel_dynamic_output_shape_nhwc_relaxed_2(Model * model)1307 void CreateModel_dynamic_output_shape_nhwc_relaxed_2(Model *model) {
1308 OperandType type0(Type::BOOL, {});
1309 OperandType type2(Type::INT32, {});
1310 OperandType type24(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
1311 OperandType type3(Type::TENSOR_FLOAT32, {5, 52, 60, 3});
1312 // Phase 1, operands
1313 auto op11 = model->addOperand(&type3);
1314 auto param9 = model->addOperand(&type2);
1315 auto param10 = model->addOperand(&type2);
1316 auto param11 = model->addOperand(&type2);
1317 auto param12 = model->addOperand(&type2);
1318 auto param13 = model->addOperand(&type2);
1319 auto param14 = model->addOperand(&type2);
1320 auto param15 = model->addOperand(&type2);
1321 auto param16 = model->addOperand(&type2);
1322 auto param17 = model->addOperand(&type2);
1323 auto layout = model->addOperand(&type0);
1324 auto op41 = model->addOperand(&type24);
1325 // Phase 2, operations
1326 static int32_t param9_init[] = {50};
1327 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
1328 static int32_t param10_init[] = {50};
1329 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
1330 static int32_t param11_init[] = {50};
1331 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
1332 static int32_t param12_init[] = {50};
1333 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
1334 static int32_t param13_init[] = {5};
1335 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
1336 static int32_t param14_init[] = {5};
1337 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
1338 static int32_t param15_init[] = {100};
1339 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
1340 static int32_t param16_init[] = {100};
1341 model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
1342 static int32_t param17_init[] = {0};
1343 model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
1344 static bool8 layout_init[] = {false};
1345 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1346 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op11, param9, param10, param11, param12, param13, param14, param15, param16, param17, layout}, {op41});
1347 // Phase 3, inputs and outputs
1348 model->identifyInputsAndOutputs(
1349 {op11},
1350 {op41});
1351 // Phase 4: set relaxed execution
1352 model->relaxComputationFloat32toFloat16(true);
1353 assert(model->isValid());
1354 }
1355
is_ignored_dynamic_output_shape_nhwc_relaxed_2(int i)1356 inline bool is_ignored_dynamic_output_shape_nhwc_relaxed_2(int i) {
1357 static std::set<int> ignore = {};
1358 return ignore.find(i) != ignore.end();
1359 }
1360
CreateModel_dynamic_output_shape_nhwc_float16_2(Model * model)1361 void CreateModel_dynamic_output_shape_nhwc_float16_2(Model *model) {
1362 OperandType type0(Type::BOOL, {});
1363 OperandType type2(Type::INT32, {});
1364 OperandType type25(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
1365 OperandType type27(Type::TENSOR_FLOAT16, {5, 52, 60, 3});
1366 // Phase 1, operands
1367 auto op11 = model->addOperand(&type27);
1368 auto param9 = model->addOperand(&type2);
1369 auto param10 = model->addOperand(&type2);
1370 auto param11 = model->addOperand(&type2);
1371 auto param12 = model->addOperand(&type2);
1372 auto param13 = model->addOperand(&type2);
1373 auto param14 = model->addOperand(&type2);
1374 auto param15 = model->addOperand(&type2);
1375 auto param16 = model->addOperand(&type2);
1376 auto param17 = model->addOperand(&type2);
1377 auto layout = model->addOperand(&type0);
1378 auto op41 = model->addOperand(&type25);
1379 // Phase 2, operations
1380 static int32_t param9_init[] = {50};
1381 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
1382 static int32_t param10_init[] = {50};
1383 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
1384 static int32_t param11_init[] = {50};
1385 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
1386 static int32_t param12_init[] = {50};
1387 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
1388 static int32_t param13_init[] = {5};
1389 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
1390 static int32_t param14_init[] = {5};
1391 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
1392 static int32_t param15_init[] = {100};
1393 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
1394 static int32_t param16_init[] = {100};
1395 model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
1396 static int32_t param17_init[] = {0};
1397 model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
1398 static bool8 layout_init[] = {false};
1399 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1400 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op11, param9, param10, param11, param12, param13, param14, param15, param16, param17, layout}, {op41});
1401 // Phase 3, inputs and outputs
1402 model->identifyInputsAndOutputs(
1403 {op11},
1404 {op41});
1405 assert(model->isValid());
1406 }
1407
is_ignored_dynamic_output_shape_nhwc_float16_2(int i)1408 inline bool is_ignored_dynamic_output_shape_nhwc_float16_2(int i) {
1409 static std::set<int> ignore = {};
1410 return ignore.find(i) != ignore.end();
1411 }
1412
CreateModel_dynamic_output_shape_nhwc_quant8_2(Model * model)1413 void CreateModel_dynamic_output_shape_nhwc_quant8_2(Model *model) {
1414 OperandType type0(Type::BOOL, {});
1415 OperandType type2(Type::INT32, {});
1416 OperandType type26(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.5f, 0);
1417 OperandType type29(Type::TENSOR_QUANT8_ASYMM, {5, 52, 60, 3}, 0.5f, 0);
1418 // Phase 1, operands
1419 auto op11 = model->addOperand(&type29);
1420 auto param9 = model->addOperand(&type2);
1421 auto param10 = model->addOperand(&type2);
1422 auto param11 = model->addOperand(&type2);
1423 auto param12 = model->addOperand(&type2);
1424 auto param13 = model->addOperand(&type2);
1425 auto param14 = model->addOperand(&type2);
1426 auto param15 = model->addOperand(&type2);
1427 auto param16 = model->addOperand(&type2);
1428 auto param17 = model->addOperand(&type2);
1429 auto layout = model->addOperand(&type0);
1430 auto op41 = model->addOperand(&type26);
1431 // Phase 2, operations
1432 static int32_t param9_init[] = {50};
1433 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
1434 static int32_t param10_init[] = {50};
1435 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
1436 static int32_t param11_init[] = {50};
1437 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
1438 static int32_t param12_init[] = {50};
1439 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
1440 static int32_t param13_init[] = {5};
1441 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
1442 static int32_t param14_init[] = {5};
1443 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
1444 static int32_t param15_init[] = {100};
1445 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
1446 static int32_t param16_init[] = {100};
1447 model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
1448 static int32_t param17_init[] = {0};
1449 model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
1450 static bool8 layout_init[] = {false};
1451 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1452 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op11, param9, param10, param11, param12, param13, param14, param15, param16, param17, layout}, {op41});
1453 // Phase 3, inputs and outputs
1454 model->identifyInputsAndOutputs(
1455 {op11},
1456 {op41});
1457 assert(model->isValid());
1458 }
1459
is_ignored_dynamic_output_shape_nhwc_quant8_2(int i)1460 inline bool is_ignored_dynamic_output_shape_nhwc_quant8_2(int i) {
1461 static std::set<int> ignore = {};
1462 return ignore.find(i) != ignore.end();
1463 }
1464
CreateModel_dynamic_output_shape_nchw_2(Model * model)1465 void CreateModel_dynamic_output_shape_nchw_2(Model *model) {
1466 OperandType type0(Type::BOOL, {});
1467 OperandType type2(Type::INT32, {});
1468 OperandType type24(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
1469 OperandType type31(Type::TENSOR_FLOAT32, {5, 3, 52, 60});
1470 // Phase 1, operands
1471 auto op11 = model->addOperand(&type31);
1472 auto param9 = model->addOperand(&type2);
1473 auto param10 = model->addOperand(&type2);
1474 auto param11 = model->addOperand(&type2);
1475 auto param12 = model->addOperand(&type2);
1476 auto param13 = model->addOperand(&type2);
1477 auto param14 = model->addOperand(&type2);
1478 auto param15 = model->addOperand(&type2);
1479 auto param16 = model->addOperand(&type2);
1480 auto param17 = model->addOperand(&type2);
1481 auto layout = model->addOperand(&type0);
1482 auto op41 = model->addOperand(&type24);
1483 // Phase 2, operations
1484 static int32_t param9_init[] = {50};
1485 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
1486 static int32_t param10_init[] = {50};
1487 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
1488 static int32_t param11_init[] = {50};
1489 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
1490 static int32_t param12_init[] = {50};
1491 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
1492 static int32_t param13_init[] = {5};
1493 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
1494 static int32_t param14_init[] = {5};
1495 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
1496 static int32_t param15_init[] = {100};
1497 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
1498 static int32_t param16_init[] = {100};
1499 model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
1500 static int32_t param17_init[] = {0};
1501 model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
1502 static bool8 layout_init[] = {true};
1503 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1504 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op11, param9, param10, param11, param12, param13, param14, param15, param16, param17, layout}, {op41});
1505 // Phase 3, inputs and outputs
1506 model->identifyInputsAndOutputs(
1507 {op11},
1508 {op41});
1509 assert(model->isValid());
1510 }
1511
is_ignored_dynamic_output_shape_nchw_2(int i)1512 inline bool is_ignored_dynamic_output_shape_nchw_2(int i) {
1513 static std::set<int> ignore = {};
1514 return ignore.find(i) != ignore.end();
1515 }
1516
CreateModel_dynamic_output_shape_nchw_relaxed_2(Model * model)1517 void CreateModel_dynamic_output_shape_nchw_relaxed_2(Model *model) {
1518 OperandType type0(Type::BOOL, {});
1519 OperandType type2(Type::INT32, {});
1520 OperandType type24(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
1521 OperandType type31(Type::TENSOR_FLOAT32, {5, 3, 52, 60});
1522 // Phase 1, operands
1523 auto op11 = model->addOperand(&type31);
1524 auto param9 = model->addOperand(&type2);
1525 auto param10 = model->addOperand(&type2);
1526 auto param11 = model->addOperand(&type2);
1527 auto param12 = model->addOperand(&type2);
1528 auto param13 = model->addOperand(&type2);
1529 auto param14 = model->addOperand(&type2);
1530 auto param15 = model->addOperand(&type2);
1531 auto param16 = model->addOperand(&type2);
1532 auto param17 = model->addOperand(&type2);
1533 auto layout = model->addOperand(&type0);
1534 auto op41 = model->addOperand(&type24);
1535 // Phase 2, operations
1536 static int32_t param9_init[] = {50};
1537 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
1538 static int32_t param10_init[] = {50};
1539 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
1540 static int32_t param11_init[] = {50};
1541 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
1542 static int32_t param12_init[] = {50};
1543 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
1544 static int32_t param13_init[] = {5};
1545 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
1546 static int32_t param14_init[] = {5};
1547 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
1548 static int32_t param15_init[] = {100};
1549 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
1550 static int32_t param16_init[] = {100};
1551 model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
1552 static int32_t param17_init[] = {0};
1553 model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
1554 static bool8 layout_init[] = {true};
1555 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1556 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op11, param9, param10, param11, param12, param13, param14, param15, param16, param17, layout}, {op41});
1557 // Phase 3, inputs and outputs
1558 model->identifyInputsAndOutputs(
1559 {op11},
1560 {op41});
1561 // Phase 4: set relaxed execution
1562 model->relaxComputationFloat32toFloat16(true);
1563 assert(model->isValid());
1564 }
1565
is_ignored_dynamic_output_shape_nchw_relaxed_2(int i)1566 inline bool is_ignored_dynamic_output_shape_nchw_relaxed_2(int i) {
1567 static std::set<int> ignore = {};
1568 return ignore.find(i) != ignore.end();
1569 }
1570
CreateModel_dynamic_output_shape_nchw_float16_2(Model * model)1571 void CreateModel_dynamic_output_shape_nchw_float16_2(Model *model) {
1572 OperandType type0(Type::BOOL, {});
1573 OperandType type2(Type::INT32, {});
1574 OperandType type25(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
1575 OperandType type33(Type::TENSOR_FLOAT16, {5, 3, 52, 60});
1576 // Phase 1, operands
1577 auto op11 = model->addOperand(&type33);
1578 auto param9 = model->addOperand(&type2);
1579 auto param10 = model->addOperand(&type2);
1580 auto param11 = model->addOperand(&type2);
1581 auto param12 = model->addOperand(&type2);
1582 auto param13 = model->addOperand(&type2);
1583 auto param14 = model->addOperand(&type2);
1584 auto param15 = model->addOperand(&type2);
1585 auto param16 = model->addOperand(&type2);
1586 auto param17 = model->addOperand(&type2);
1587 auto layout = model->addOperand(&type0);
1588 auto op41 = model->addOperand(&type25);
1589 // Phase 2, operations
1590 static int32_t param9_init[] = {50};
1591 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
1592 static int32_t param10_init[] = {50};
1593 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
1594 static int32_t param11_init[] = {50};
1595 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
1596 static int32_t param12_init[] = {50};
1597 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
1598 static int32_t param13_init[] = {5};
1599 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
1600 static int32_t param14_init[] = {5};
1601 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
1602 static int32_t param15_init[] = {100};
1603 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
1604 static int32_t param16_init[] = {100};
1605 model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
1606 static int32_t param17_init[] = {0};
1607 model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
1608 static bool8 layout_init[] = {true};
1609 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1610 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op11, param9, param10, param11, param12, param13, param14, param15, param16, param17, layout}, {op41});
1611 // Phase 3, inputs and outputs
1612 model->identifyInputsAndOutputs(
1613 {op11},
1614 {op41});
1615 assert(model->isValid());
1616 }
1617
is_ignored_dynamic_output_shape_nchw_float16_2(int i)1618 inline bool is_ignored_dynamic_output_shape_nchw_float16_2(int i) {
1619 static std::set<int> ignore = {};
1620 return ignore.find(i) != ignore.end();
1621 }
1622
CreateModel_dynamic_output_shape_nchw_quant8_2(Model * model)1623 void CreateModel_dynamic_output_shape_nchw_quant8_2(Model *model) {
1624 OperandType type0(Type::BOOL, {});
1625 OperandType type2(Type::INT32, {});
1626 OperandType type26(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.5f, 0);
1627 OperandType type35(Type::TENSOR_QUANT8_ASYMM, {5, 3, 52, 60}, 0.5f, 0);
1628 // Phase 1, operands
1629 auto op11 = model->addOperand(&type35);
1630 auto param9 = model->addOperand(&type2);
1631 auto param10 = model->addOperand(&type2);
1632 auto param11 = model->addOperand(&type2);
1633 auto param12 = model->addOperand(&type2);
1634 auto param13 = model->addOperand(&type2);
1635 auto param14 = model->addOperand(&type2);
1636 auto param15 = model->addOperand(&type2);
1637 auto param16 = model->addOperand(&type2);
1638 auto param17 = model->addOperand(&type2);
1639 auto layout = model->addOperand(&type0);
1640 auto op41 = model->addOperand(&type26);
1641 // Phase 2, operations
1642 static int32_t param9_init[] = {50};
1643 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
1644 static int32_t param10_init[] = {50};
1645 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
1646 static int32_t param11_init[] = {50};
1647 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
1648 static int32_t param12_init[] = {50};
1649 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
1650 static int32_t param13_init[] = {5};
1651 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
1652 static int32_t param14_init[] = {5};
1653 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
1654 static int32_t param15_init[] = {100};
1655 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
1656 static int32_t param16_init[] = {100};
1657 model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
1658 static int32_t param17_init[] = {0};
1659 model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
1660 static bool8 layout_init[] = {true};
1661 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1662 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op11, param9, param10, param11, param12, param13, param14, param15, param16, param17, layout}, {op41});
1663 // Phase 3, inputs and outputs
1664 model->identifyInputsAndOutputs(
1665 {op11},
1666 {op41});
1667 assert(model->isValid());
1668 }
1669
is_ignored_dynamic_output_shape_nchw_quant8_2(int i)1670 inline bool is_ignored_dynamic_output_shape_nchw_quant8_2(int i) {
1671 static std::set<int> ignore = {};
1672 return ignore.find(i) != ignore.end();
1673 }
1674
CreateModel_nhwc_3(Model * model)1675 void CreateModel_nhwc_3(Model *model) {
1676 OperandType type0(Type::BOOL, {});
1677 OperandType type2(Type::INT32, {});
1678 OperandType type5(Type::TENSOR_FLOAT32, {1, 200, 180, 1});
1679 OperandType type6(Type::TENSOR_FLOAT32, {1, 96, 86, 1});
1680 // Phase 1, operands
1681 auto op12 = model->addOperand(&type5);
1682 auto param18 = model->addOperand(&type2);
1683 auto param19 = model->addOperand(&type2);
1684 auto param20 = model->addOperand(&type2);
1685 auto param21 = model->addOperand(&type2);
1686 auto param22 = model->addOperand(&type2);
1687 auto param23 = model->addOperand(&type2);
1688 auto param24 = model->addOperand(&type2);
1689 auto param25 = model->addOperand(&type2);
1690 auto param26 = model->addOperand(&type2);
1691 auto layout = model->addOperand(&type0);
1692 auto op42 = model->addOperand(&type6);
1693 // Phase 2, operations
1694 static int32_t param18_init[] = {0};
1695 model->setOperandValue(param18, param18_init, sizeof(int32_t) * 1);
1696 static int32_t param19_init[] = {0};
1697 model->setOperandValue(param19, param19_init, sizeof(int32_t) * 1);
1698 static int32_t param20_init[] = {0};
1699 model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
1700 static int32_t param21_init[] = {0};
1701 model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
1702 static int32_t param22_init[] = {2};
1703 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
1704 static int32_t param23_init[] = {2};
1705 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
1706 static int32_t param24_init[] = {10};
1707 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
1708 static int32_t param25_init[] = {10};
1709 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
1710 static int32_t param26_init[] = {0};
1711 model->setOperandValue(param26, param26_init, sizeof(int32_t) * 1);
1712 static bool8 layout_init[] = {false};
1713 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1714 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op12, param18, param19, param20, param21, param22, param23, param24, param25, param26, layout}, {op42});
1715 // Phase 3, inputs and outputs
1716 model->identifyInputsAndOutputs(
1717 {op12},
1718 {op42});
1719 assert(model->isValid());
1720 }
1721
is_ignored_nhwc_3(int i)1722 inline bool is_ignored_nhwc_3(int i) {
1723 static std::set<int> ignore = {};
1724 return ignore.find(i) != ignore.end();
1725 }
1726
CreateModel_nhwc_relaxed_3(Model * model)1727 void CreateModel_nhwc_relaxed_3(Model *model) {
1728 OperandType type0(Type::BOOL, {});
1729 OperandType type2(Type::INT32, {});
1730 OperandType type5(Type::TENSOR_FLOAT32, {1, 200, 180, 1});
1731 OperandType type6(Type::TENSOR_FLOAT32, {1, 96, 86, 1});
1732 // Phase 1, operands
1733 auto op12 = model->addOperand(&type5);
1734 auto param18 = model->addOperand(&type2);
1735 auto param19 = model->addOperand(&type2);
1736 auto param20 = model->addOperand(&type2);
1737 auto param21 = model->addOperand(&type2);
1738 auto param22 = model->addOperand(&type2);
1739 auto param23 = model->addOperand(&type2);
1740 auto param24 = model->addOperand(&type2);
1741 auto param25 = model->addOperand(&type2);
1742 auto param26 = model->addOperand(&type2);
1743 auto layout = model->addOperand(&type0);
1744 auto op42 = model->addOperand(&type6);
1745 // Phase 2, operations
1746 static int32_t param18_init[] = {0};
1747 model->setOperandValue(param18, param18_init, sizeof(int32_t) * 1);
1748 static int32_t param19_init[] = {0};
1749 model->setOperandValue(param19, param19_init, sizeof(int32_t) * 1);
1750 static int32_t param20_init[] = {0};
1751 model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
1752 static int32_t param21_init[] = {0};
1753 model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
1754 static int32_t param22_init[] = {2};
1755 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
1756 static int32_t param23_init[] = {2};
1757 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
1758 static int32_t param24_init[] = {10};
1759 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
1760 static int32_t param25_init[] = {10};
1761 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
1762 static int32_t param26_init[] = {0};
1763 model->setOperandValue(param26, param26_init, sizeof(int32_t) * 1);
1764 static bool8 layout_init[] = {false};
1765 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1766 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op12, param18, param19, param20, param21, param22, param23, param24, param25, param26, layout}, {op42});
1767 // Phase 3, inputs and outputs
1768 model->identifyInputsAndOutputs(
1769 {op12},
1770 {op42});
1771 // Phase 4: set relaxed execution
1772 model->relaxComputationFloat32toFloat16(true);
1773 assert(model->isValid());
1774 }
1775
is_ignored_nhwc_relaxed_3(int i)1776 inline bool is_ignored_nhwc_relaxed_3(int i) {
1777 static std::set<int> ignore = {};
1778 return ignore.find(i) != ignore.end();
1779 }
1780
CreateModel_nhwc_float16_3(Model * model)1781 void CreateModel_nhwc_float16_3(Model *model) {
1782 OperandType type0(Type::BOOL, {});
1783 OperandType type2(Type::INT32, {});
1784 OperandType type37(Type::TENSOR_FLOAT16, {1, 200, 180, 1});
1785 OperandType type38(Type::TENSOR_FLOAT16, {1, 96, 86, 1});
1786 // Phase 1, operands
1787 auto op12 = model->addOperand(&type37);
1788 auto param18 = model->addOperand(&type2);
1789 auto param19 = model->addOperand(&type2);
1790 auto param20 = model->addOperand(&type2);
1791 auto param21 = model->addOperand(&type2);
1792 auto param22 = model->addOperand(&type2);
1793 auto param23 = model->addOperand(&type2);
1794 auto param24 = model->addOperand(&type2);
1795 auto param25 = model->addOperand(&type2);
1796 auto param26 = model->addOperand(&type2);
1797 auto layout = model->addOperand(&type0);
1798 auto op42 = model->addOperand(&type38);
1799 // Phase 2, operations
1800 static int32_t param18_init[] = {0};
1801 model->setOperandValue(param18, param18_init, sizeof(int32_t) * 1);
1802 static int32_t param19_init[] = {0};
1803 model->setOperandValue(param19, param19_init, sizeof(int32_t) * 1);
1804 static int32_t param20_init[] = {0};
1805 model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
1806 static int32_t param21_init[] = {0};
1807 model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
1808 static int32_t param22_init[] = {2};
1809 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
1810 static int32_t param23_init[] = {2};
1811 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
1812 static int32_t param24_init[] = {10};
1813 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
1814 static int32_t param25_init[] = {10};
1815 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
1816 static int32_t param26_init[] = {0};
1817 model->setOperandValue(param26, param26_init, sizeof(int32_t) * 1);
1818 static bool8 layout_init[] = {false};
1819 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1820 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op12, param18, param19, param20, param21, param22, param23, param24, param25, param26, layout}, {op42});
1821 // Phase 3, inputs and outputs
1822 model->identifyInputsAndOutputs(
1823 {op12},
1824 {op42});
1825 assert(model->isValid());
1826 }
1827
is_ignored_nhwc_float16_3(int i)1828 inline bool is_ignored_nhwc_float16_3(int i) {
1829 static std::set<int> ignore = {};
1830 return ignore.find(i) != ignore.end();
1831 }
1832
CreateModel_nhwc_quant8_3(Model * model)1833 void CreateModel_nhwc_quant8_3(Model *model) {
1834 OperandType type0(Type::BOOL, {});
1835 OperandType type2(Type::INT32, {});
1836 OperandType type39(Type::TENSOR_QUANT8_ASYMM, {1, 200, 180, 1}, 0.25f, 0);
1837 OperandType type40(Type::TENSOR_QUANT8_ASYMM, {1, 96, 86, 1}, 0.25f, 0);
1838 // Phase 1, operands
1839 auto op12 = model->addOperand(&type39);
1840 auto param18 = model->addOperand(&type2);
1841 auto param19 = model->addOperand(&type2);
1842 auto param20 = model->addOperand(&type2);
1843 auto param21 = model->addOperand(&type2);
1844 auto param22 = model->addOperand(&type2);
1845 auto param23 = model->addOperand(&type2);
1846 auto param24 = model->addOperand(&type2);
1847 auto param25 = model->addOperand(&type2);
1848 auto param26 = model->addOperand(&type2);
1849 auto layout = model->addOperand(&type0);
1850 auto op42 = model->addOperand(&type40);
1851 // Phase 2, operations
1852 static int32_t param18_init[] = {0};
1853 model->setOperandValue(param18, param18_init, sizeof(int32_t) * 1);
1854 static int32_t param19_init[] = {0};
1855 model->setOperandValue(param19, param19_init, sizeof(int32_t) * 1);
1856 static int32_t param20_init[] = {0};
1857 model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
1858 static int32_t param21_init[] = {0};
1859 model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
1860 static int32_t param22_init[] = {2};
1861 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
1862 static int32_t param23_init[] = {2};
1863 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
1864 static int32_t param24_init[] = {10};
1865 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
1866 static int32_t param25_init[] = {10};
1867 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
1868 static int32_t param26_init[] = {0};
1869 model->setOperandValue(param26, param26_init, sizeof(int32_t) * 1);
1870 static bool8 layout_init[] = {false};
1871 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1872 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op12, param18, param19, param20, param21, param22, param23, param24, param25, param26, layout}, {op42});
1873 // Phase 3, inputs and outputs
1874 model->identifyInputsAndOutputs(
1875 {op12},
1876 {op42});
1877 assert(model->isValid());
1878 }
1879
is_ignored_nhwc_quant8_3(int i)1880 inline bool is_ignored_nhwc_quant8_3(int i) {
1881 static std::set<int> ignore = {};
1882 return ignore.find(i) != ignore.end();
1883 }
1884
CreateModel_nchw_3(Model * model)1885 void CreateModel_nchw_3(Model *model) {
1886 OperandType type0(Type::BOOL, {});
1887 OperandType type2(Type::INT32, {});
1888 OperandType type41(Type::TENSOR_FLOAT32, {1, 1, 200, 180});
1889 OperandType type42(Type::TENSOR_FLOAT32, {1, 1, 96, 86});
1890 // Phase 1, operands
1891 auto op12 = model->addOperand(&type41);
1892 auto param18 = model->addOperand(&type2);
1893 auto param19 = model->addOperand(&type2);
1894 auto param20 = model->addOperand(&type2);
1895 auto param21 = model->addOperand(&type2);
1896 auto param22 = model->addOperand(&type2);
1897 auto param23 = model->addOperand(&type2);
1898 auto param24 = model->addOperand(&type2);
1899 auto param25 = model->addOperand(&type2);
1900 auto param26 = model->addOperand(&type2);
1901 auto layout = model->addOperand(&type0);
1902 auto op42 = model->addOperand(&type42);
1903 // Phase 2, operations
1904 static int32_t param18_init[] = {0};
1905 model->setOperandValue(param18, param18_init, sizeof(int32_t) * 1);
1906 static int32_t param19_init[] = {0};
1907 model->setOperandValue(param19, param19_init, sizeof(int32_t) * 1);
1908 static int32_t param20_init[] = {0};
1909 model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
1910 static int32_t param21_init[] = {0};
1911 model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
1912 static int32_t param22_init[] = {2};
1913 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
1914 static int32_t param23_init[] = {2};
1915 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
1916 static int32_t param24_init[] = {10};
1917 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
1918 static int32_t param25_init[] = {10};
1919 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
1920 static int32_t param26_init[] = {0};
1921 model->setOperandValue(param26, param26_init, sizeof(int32_t) * 1);
1922 static bool8 layout_init[] = {true};
1923 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1924 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op12, param18, param19, param20, param21, param22, param23, param24, param25, param26, layout}, {op42});
1925 // Phase 3, inputs and outputs
1926 model->identifyInputsAndOutputs(
1927 {op12},
1928 {op42});
1929 assert(model->isValid());
1930 }
1931
is_ignored_nchw_3(int i)1932 inline bool is_ignored_nchw_3(int i) {
1933 static std::set<int> ignore = {};
1934 return ignore.find(i) != ignore.end();
1935 }
1936
CreateModel_nchw_relaxed_3(Model * model)1937 void CreateModel_nchw_relaxed_3(Model *model) {
1938 OperandType type0(Type::BOOL, {});
1939 OperandType type2(Type::INT32, {});
1940 OperandType type41(Type::TENSOR_FLOAT32, {1, 1, 200, 180});
1941 OperandType type42(Type::TENSOR_FLOAT32, {1, 1, 96, 86});
1942 // Phase 1, operands
1943 auto op12 = model->addOperand(&type41);
1944 auto param18 = model->addOperand(&type2);
1945 auto param19 = model->addOperand(&type2);
1946 auto param20 = model->addOperand(&type2);
1947 auto param21 = model->addOperand(&type2);
1948 auto param22 = model->addOperand(&type2);
1949 auto param23 = model->addOperand(&type2);
1950 auto param24 = model->addOperand(&type2);
1951 auto param25 = model->addOperand(&type2);
1952 auto param26 = model->addOperand(&type2);
1953 auto layout = model->addOperand(&type0);
1954 auto op42 = model->addOperand(&type42);
1955 // Phase 2, operations
1956 static int32_t param18_init[] = {0};
1957 model->setOperandValue(param18, param18_init, sizeof(int32_t) * 1);
1958 static int32_t param19_init[] = {0};
1959 model->setOperandValue(param19, param19_init, sizeof(int32_t) * 1);
1960 static int32_t param20_init[] = {0};
1961 model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
1962 static int32_t param21_init[] = {0};
1963 model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
1964 static int32_t param22_init[] = {2};
1965 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
1966 static int32_t param23_init[] = {2};
1967 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
1968 static int32_t param24_init[] = {10};
1969 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
1970 static int32_t param25_init[] = {10};
1971 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
1972 static int32_t param26_init[] = {0};
1973 model->setOperandValue(param26, param26_init, sizeof(int32_t) * 1);
1974 static bool8 layout_init[] = {true};
1975 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1976 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op12, param18, param19, param20, param21, param22, param23, param24, param25, param26, layout}, {op42});
1977 // Phase 3, inputs and outputs
1978 model->identifyInputsAndOutputs(
1979 {op12},
1980 {op42});
1981 // Phase 4: set relaxed execution
1982 model->relaxComputationFloat32toFloat16(true);
1983 assert(model->isValid());
1984 }
1985
is_ignored_nchw_relaxed_3(int i)1986 inline bool is_ignored_nchw_relaxed_3(int i) {
1987 static std::set<int> ignore = {};
1988 return ignore.find(i) != ignore.end();
1989 }
1990
CreateModel_nchw_float16_3(Model * model)1991 void CreateModel_nchw_float16_3(Model *model) {
1992 OperandType type0(Type::BOOL, {});
1993 OperandType type2(Type::INT32, {});
1994 OperandType type43(Type::TENSOR_FLOAT16, {1, 1, 200, 180});
1995 OperandType type44(Type::TENSOR_FLOAT16, {1, 1, 96, 86});
1996 // Phase 1, operands
1997 auto op12 = model->addOperand(&type43);
1998 auto param18 = model->addOperand(&type2);
1999 auto param19 = model->addOperand(&type2);
2000 auto param20 = model->addOperand(&type2);
2001 auto param21 = model->addOperand(&type2);
2002 auto param22 = model->addOperand(&type2);
2003 auto param23 = model->addOperand(&type2);
2004 auto param24 = model->addOperand(&type2);
2005 auto param25 = model->addOperand(&type2);
2006 auto param26 = model->addOperand(&type2);
2007 auto layout = model->addOperand(&type0);
2008 auto op42 = model->addOperand(&type44);
2009 // Phase 2, operations
2010 static int32_t param18_init[] = {0};
2011 model->setOperandValue(param18, param18_init, sizeof(int32_t) * 1);
2012 static int32_t param19_init[] = {0};
2013 model->setOperandValue(param19, param19_init, sizeof(int32_t) * 1);
2014 static int32_t param20_init[] = {0};
2015 model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
2016 static int32_t param21_init[] = {0};
2017 model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
2018 static int32_t param22_init[] = {2};
2019 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
2020 static int32_t param23_init[] = {2};
2021 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
2022 static int32_t param24_init[] = {10};
2023 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
2024 static int32_t param25_init[] = {10};
2025 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
2026 static int32_t param26_init[] = {0};
2027 model->setOperandValue(param26, param26_init, sizeof(int32_t) * 1);
2028 static bool8 layout_init[] = {true};
2029 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2030 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op12, param18, param19, param20, param21, param22, param23, param24, param25, param26, layout}, {op42});
2031 // Phase 3, inputs and outputs
2032 model->identifyInputsAndOutputs(
2033 {op12},
2034 {op42});
2035 assert(model->isValid());
2036 }
2037
is_ignored_nchw_float16_3(int i)2038 inline bool is_ignored_nchw_float16_3(int i) {
2039 static std::set<int> ignore = {};
2040 return ignore.find(i) != ignore.end();
2041 }
2042
CreateModel_nchw_quant8_3(Model * model)2043 void CreateModel_nchw_quant8_3(Model *model) {
2044 OperandType type0(Type::BOOL, {});
2045 OperandType type2(Type::INT32, {});
2046 OperandType type45(Type::TENSOR_QUANT8_ASYMM, {1, 1, 200, 180}, 0.25f, 0);
2047 OperandType type46(Type::TENSOR_QUANT8_ASYMM, {1, 1, 96, 86}, 0.25f, 0);
2048 // Phase 1, operands
2049 auto op12 = model->addOperand(&type45);
2050 auto param18 = model->addOperand(&type2);
2051 auto param19 = model->addOperand(&type2);
2052 auto param20 = model->addOperand(&type2);
2053 auto param21 = model->addOperand(&type2);
2054 auto param22 = model->addOperand(&type2);
2055 auto param23 = model->addOperand(&type2);
2056 auto param24 = model->addOperand(&type2);
2057 auto param25 = model->addOperand(&type2);
2058 auto param26 = model->addOperand(&type2);
2059 auto layout = model->addOperand(&type0);
2060 auto op42 = model->addOperand(&type46);
2061 // Phase 2, operations
2062 static int32_t param18_init[] = {0};
2063 model->setOperandValue(param18, param18_init, sizeof(int32_t) * 1);
2064 static int32_t param19_init[] = {0};
2065 model->setOperandValue(param19, param19_init, sizeof(int32_t) * 1);
2066 static int32_t param20_init[] = {0};
2067 model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
2068 static int32_t param21_init[] = {0};
2069 model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
2070 static int32_t param22_init[] = {2};
2071 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
2072 static int32_t param23_init[] = {2};
2073 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
2074 static int32_t param24_init[] = {10};
2075 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
2076 static int32_t param25_init[] = {10};
2077 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
2078 static int32_t param26_init[] = {0};
2079 model->setOperandValue(param26, param26_init, sizeof(int32_t) * 1);
2080 static bool8 layout_init[] = {true};
2081 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2082 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op12, param18, param19, param20, param21, param22, param23, param24, param25, param26, layout}, {op42});
2083 // Phase 3, inputs and outputs
2084 model->identifyInputsAndOutputs(
2085 {op12},
2086 {op42});
2087 assert(model->isValid());
2088 }
2089
is_ignored_nchw_quant8_3(int i)2090 inline bool is_ignored_nchw_quant8_3(int i) {
2091 static std::set<int> ignore = {};
2092 return ignore.find(i) != ignore.end();
2093 }
2094
CreateModel_dynamic_output_shape_nhwc_3(Model * model)2095 void CreateModel_dynamic_output_shape_nhwc_3(Model *model) {
2096 OperandType type0(Type::BOOL, {});
2097 OperandType type2(Type::INT32, {});
2098 OperandType type24(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
2099 OperandType type5(Type::TENSOR_FLOAT32, {1, 200, 180, 1});
2100 // Phase 1, operands
2101 auto op12 = model->addOperand(&type5);
2102 auto param18 = model->addOperand(&type2);
2103 auto param19 = model->addOperand(&type2);
2104 auto param20 = model->addOperand(&type2);
2105 auto param21 = model->addOperand(&type2);
2106 auto param22 = model->addOperand(&type2);
2107 auto param23 = model->addOperand(&type2);
2108 auto param24 = model->addOperand(&type2);
2109 auto param25 = model->addOperand(&type2);
2110 auto param26 = model->addOperand(&type2);
2111 auto layout = model->addOperand(&type0);
2112 auto op42 = model->addOperand(&type24);
2113 // Phase 2, operations
2114 static int32_t param18_init[] = {0};
2115 model->setOperandValue(param18, param18_init, sizeof(int32_t) * 1);
2116 static int32_t param19_init[] = {0};
2117 model->setOperandValue(param19, param19_init, sizeof(int32_t) * 1);
2118 static int32_t param20_init[] = {0};
2119 model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
2120 static int32_t param21_init[] = {0};
2121 model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
2122 static int32_t param22_init[] = {2};
2123 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
2124 static int32_t param23_init[] = {2};
2125 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
2126 static int32_t param24_init[] = {10};
2127 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
2128 static int32_t param25_init[] = {10};
2129 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
2130 static int32_t param26_init[] = {0};
2131 model->setOperandValue(param26, param26_init, sizeof(int32_t) * 1);
2132 static bool8 layout_init[] = {false};
2133 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2134 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op12, param18, param19, param20, param21, param22, param23, param24, param25, param26, layout}, {op42});
2135 // Phase 3, inputs and outputs
2136 model->identifyInputsAndOutputs(
2137 {op12},
2138 {op42});
2139 assert(model->isValid());
2140 }
2141
is_ignored_dynamic_output_shape_nhwc_3(int i)2142 inline bool is_ignored_dynamic_output_shape_nhwc_3(int i) {
2143 static std::set<int> ignore = {};
2144 return ignore.find(i) != ignore.end();
2145 }
2146
CreateModel_dynamic_output_shape_nhwc_relaxed_3(Model * model)2147 void CreateModel_dynamic_output_shape_nhwc_relaxed_3(Model *model) {
2148 OperandType type0(Type::BOOL, {});
2149 OperandType type2(Type::INT32, {});
2150 OperandType type24(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
2151 OperandType type5(Type::TENSOR_FLOAT32, {1, 200, 180, 1});
2152 // Phase 1, operands
2153 auto op12 = model->addOperand(&type5);
2154 auto param18 = model->addOperand(&type2);
2155 auto param19 = model->addOperand(&type2);
2156 auto param20 = model->addOperand(&type2);
2157 auto param21 = model->addOperand(&type2);
2158 auto param22 = model->addOperand(&type2);
2159 auto param23 = model->addOperand(&type2);
2160 auto param24 = model->addOperand(&type2);
2161 auto param25 = model->addOperand(&type2);
2162 auto param26 = model->addOperand(&type2);
2163 auto layout = model->addOperand(&type0);
2164 auto op42 = model->addOperand(&type24);
2165 // Phase 2, operations
2166 static int32_t param18_init[] = {0};
2167 model->setOperandValue(param18, param18_init, sizeof(int32_t) * 1);
2168 static int32_t param19_init[] = {0};
2169 model->setOperandValue(param19, param19_init, sizeof(int32_t) * 1);
2170 static int32_t param20_init[] = {0};
2171 model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
2172 static int32_t param21_init[] = {0};
2173 model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
2174 static int32_t param22_init[] = {2};
2175 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
2176 static int32_t param23_init[] = {2};
2177 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
2178 static int32_t param24_init[] = {10};
2179 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
2180 static int32_t param25_init[] = {10};
2181 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
2182 static int32_t param26_init[] = {0};
2183 model->setOperandValue(param26, param26_init, sizeof(int32_t) * 1);
2184 static bool8 layout_init[] = {false};
2185 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2186 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op12, param18, param19, param20, param21, param22, param23, param24, param25, param26, layout}, {op42});
2187 // Phase 3, inputs and outputs
2188 model->identifyInputsAndOutputs(
2189 {op12},
2190 {op42});
2191 // Phase 4: set relaxed execution
2192 model->relaxComputationFloat32toFloat16(true);
2193 assert(model->isValid());
2194 }
2195
is_ignored_dynamic_output_shape_nhwc_relaxed_3(int i)2196 inline bool is_ignored_dynamic_output_shape_nhwc_relaxed_3(int i) {
2197 static std::set<int> ignore = {};
2198 return ignore.find(i) != ignore.end();
2199 }
2200
CreateModel_dynamic_output_shape_nhwc_float16_3(Model * model)2201 void CreateModel_dynamic_output_shape_nhwc_float16_3(Model *model) {
2202 OperandType type0(Type::BOOL, {});
2203 OperandType type2(Type::INT32, {});
2204 OperandType type25(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
2205 OperandType type37(Type::TENSOR_FLOAT16, {1, 200, 180, 1});
2206 // Phase 1, operands
2207 auto op12 = model->addOperand(&type37);
2208 auto param18 = model->addOperand(&type2);
2209 auto param19 = model->addOperand(&type2);
2210 auto param20 = model->addOperand(&type2);
2211 auto param21 = model->addOperand(&type2);
2212 auto param22 = model->addOperand(&type2);
2213 auto param23 = model->addOperand(&type2);
2214 auto param24 = model->addOperand(&type2);
2215 auto param25 = model->addOperand(&type2);
2216 auto param26 = model->addOperand(&type2);
2217 auto layout = model->addOperand(&type0);
2218 auto op42 = model->addOperand(&type25);
2219 // Phase 2, operations
2220 static int32_t param18_init[] = {0};
2221 model->setOperandValue(param18, param18_init, sizeof(int32_t) * 1);
2222 static int32_t param19_init[] = {0};
2223 model->setOperandValue(param19, param19_init, sizeof(int32_t) * 1);
2224 static int32_t param20_init[] = {0};
2225 model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
2226 static int32_t param21_init[] = {0};
2227 model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
2228 static int32_t param22_init[] = {2};
2229 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
2230 static int32_t param23_init[] = {2};
2231 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
2232 static int32_t param24_init[] = {10};
2233 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
2234 static int32_t param25_init[] = {10};
2235 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
2236 static int32_t param26_init[] = {0};
2237 model->setOperandValue(param26, param26_init, sizeof(int32_t) * 1);
2238 static bool8 layout_init[] = {false};
2239 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2240 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op12, param18, param19, param20, param21, param22, param23, param24, param25, param26, layout}, {op42});
2241 // Phase 3, inputs and outputs
2242 model->identifyInputsAndOutputs(
2243 {op12},
2244 {op42});
2245 assert(model->isValid());
2246 }
2247
is_ignored_dynamic_output_shape_nhwc_float16_3(int i)2248 inline bool is_ignored_dynamic_output_shape_nhwc_float16_3(int i) {
2249 static std::set<int> ignore = {};
2250 return ignore.find(i) != ignore.end();
2251 }
2252
CreateModel_dynamic_output_shape_nhwc_quant8_3(Model * model)2253 void CreateModel_dynamic_output_shape_nhwc_quant8_3(Model *model) {
2254 OperandType type0(Type::BOOL, {});
2255 OperandType type2(Type::INT32, {});
2256 OperandType type39(Type::TENSOR_QUANT8_ASYMM, {1, 200, 180, 1}, 0.25f, 0);
2257 OperandType type47(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 0);
2258 // Phase 1, operands
2259 auto op12 = model->addOperand(&type39);
2260 auto param18 = model->addOperand(&type2);
2261 auto param19 = model->addOperand(&type2);
2262 auto param20 = model->addOperand(&type2);
2263 auto param21 = model->addOperand(&type2);
2264 auto param22 = model->addOperand(&type2);
2265 auto param23 = model->addOperand(&type2);
2266 auto param24 = model->addOperand(&type2);
2267 auto param25 = model->addOperand(&type2);
2268 auto param26 = model->addOperand(&type2);
2269 auto layout = model->addOperand(&type0);
2270 auto op42 = model->addOperand(&type47);
2271 // Phase 2, operations
2272 static int32_t param18_init[] = {0};
2273 model->setOperandValue(param18, param18_init, sizeof(int32_t) * 1);
2274 static int32_t param19_init[] = {0};
2275 model->setOperandValue(param19, param19_init, sizeof(int32_t) * 1);
2276 static int32_t param20_init[] = {0};
2277 model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
2278 static int32_t param21_init[] = {0};
2279 model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
2280 static int32_t param22_init[] = {2};
2281 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
2282 static int32_t param23_init[] = {2};
2283 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
2284 static int32_t param24_init[] = {10};
2285 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
2286 static int32_t param25_init[] = {10};
2287 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
2288 static int32_t param26_init[] = {0};
2289 model->setOperandValue(param26, param26_init, sizeof(int32_t) * 1);
2290 static bool8 layout_init[] = {false};
2291 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2292 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op12, param18, param19, param20, param21, param22, param23, param24, param25, param26, layout}, {op42});
2293 // Phase 3, inputs and outputs
2294 model->identifyInputsAndOutputs(
2295 {op12},
2296 {op42});
2297 assert(model->isValid());
2298 }
2299
is_ignored_dynamic_output_shape_nhwc_quant8_3(int i)2300 inline bool is_ignored_dynamic_output_shape_nhwc_quant8_3(int i) {
2301 static std::set<int> ignore = {};
2302 return ignore.find(i) != ignore.end();
2303 }
2304
CreateModel_dynamic_output_shape_nchw_3(Model * model)2305 void CreateModel_dynamic_output_shape_nchw_3(Model *model) {
2306 OperandType type0(Type::BOOL, {});
2307 OperandType type2(Type::INT32, {});
2308 OperandType type24(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
2309 OperandType type41(Type::TENSOR_FLOAT32, {1, 1, 200, 180});
2310 // Phase 1, operands
2311 auto op12 = model->addOperand(&type41);
2312 auto param18 = model->addOperand(&type2);
2313 auto param19 = model->addOperand(&type2);
2314 auto param20 = model->addOperand(&type2);
2315 auto param21 = model->addOperand(&type2);
2316 auto param22 = model->addOperand(&type2);
2317 auto param23 = model->addOperand(&type2);
2318 auto param24 = model->addOperand(&type2);
2319 auto param25 = model->addOperand(&type2);
2320 auto param26 = model->addOperand(&type2);
2321 auto layout = model->addOperand(&type0);
2322 auto op42 = model->addOperand(&type24);
2323 // Phase 2, operations
2324 static int32_t param18_init[] = {0};
2325 model->setOperandValue(param18, param18_init, sizeof(int32_t) * 1);
2326 static int32_t param19_init[] = {0};
2327 model->setOperandValue(param19, param19_init, sizeof(int32_t) * 1);
2328 static int32_t param20_init[] = {0};
2329 model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
2330 static int32_t param21_init[] = {0};
2331 model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
2332 static int32_t param22_init[] = {2};
2333 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
2334 static int32_t param23_init[] = {2};
2335 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
2336 static int32_t param24_init[] = {10};
2337 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
2338 static int32_t param25_init[] = {10};
2339 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
2340 static int32_t param26_init[] = {0};
2341 model->setOperandValue(param26, param26_init, sizeof(int32_t) * 1);
2342 static bool8 layout_init[] = {true};
2343 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2344 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op12, param18, param19, param20, param21, param22, param23, param24, param25, param26, layout}, {op42});
2345 // Phase 3, inputs and outputs
2346 model->identifyInputsAndOutputs(
2347 {op12},
2348 {op42});
2349 assert(model->isValid());
2350 }
2351
is_ignored_dynamic_output_shape_nchw_3(int i)2352 inline bool is_ignored_dynamic_output_shape_nchw_3(int i) {
2353 static std::set<int> ignore = {};
2354 return ignore.find(i) != ignore.end();
2355 }
2356
CreateModel_dynamic_output_shape_nchw_relaxed_3(Model * model)2357 void CreateModel_dynamic_output_shape_nchw_relaxed_3(Model *model) {
2358 OperandType type0(Type::BOOL, {});
2359 OperandType type2(Type::INT32, {});
2360 OperandType type24(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
2361 OperandType type41(Type::TENSOR_FLOAT32, {1, 1, 200, 180});
2362 // Phase 1, operands
2363 auto op12 = model->addOperand(&type41);
2364 auto param18 = model->addOperand(&type2);
2365 auto param19 = model->addOperand(&type2);
2366 auto param20 = model->addOperand(&type2);
2367 auto param21 = model->addOperand(&type2);
2368 auto param22 = model->addOperand(&type2);
2369 auto param23 = model->addOperand(&type2);
2370 auto param24 = model->addOperand(&type2);
2371 auto param25 = model->addOperand(&type2);
2372 auto param26 = model->addOperand(&type2);
2373 auto layout = model->addOperand(&type0);
2374 auto op42 = model->addOperand(&type24);
2375 // Phase 2, operations
2376 static int32_t param18_init[] = {0};
2377 model->setOperandValue(param18, param18_init, sizeof(int32_t) * 1);
2378 static int32_t param19_init[] = {0};
2379 model->setOperandValue(param19, param19_init, sizeof(int32_t) * 1);
2380 static int32_t param20_init[] = {0};
2381 model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
2382 static int32_t param21_init[] = {0};
2383 model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
2384 static int32_t param22_init[] = {2};
2385 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
2386 static int32_t param23_init[] = {2};
2387 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
2388 static int32_t param24_init[] = {10};
2389 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
2390 static int32_t param25_init[] = {10};
2391 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
2392 static int32_t param26_init[] = {0};
2393 model->setOperandValue(param26, param26_init, sizeof(int32_t) * 1);
2394 static bool8 layout_init[] = {true};
2395 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2396 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op12, param18, param19, param20, param21, param22, param23, param24, param25, param26, layout}, {op42});
2397 // Phase 3, inputs and outputs
2398 model->identifyInputsAndOutputs(
2399 {op12},
2400 {op42});
2401 // Phase 4: set relaxed execution
2402 model->relaxComputationFloat32toFloat16(true);
2403 assert(model->isValid());
2404 }
2405
is_ignored_dynamic_output_shape_nchw_relaxed_3(int i)2406 inline bool is_ignored_dynamic_output_shape_nchw_relaxed_3(int i) {
2407 static std::set<int> ignore = {};
2408 return ignore.find(i) != ignore.end();
2409 }
2410
CreateModel_dynamic_output_shape_nchw_float16_3(Model * model)2411 void CreateModel_dynamic_output_shape_nchw_float16_3(Model *model) {
2412 OperandType type0(Type::BOOL, {});
2413 OperandType type2(Type::INT32, {});
2414 OperandType type25(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
2415 OperandType type43(Type::TENSOR_FLOAT16, {1, 1, 200, 180});
2416 // Phase 1, operands
2417 auto op12 = model->addOperand(&type43);
2418 auto param18 = model->addOperand(&type2);
2419 auto param19 = model->addOperand(&type2);
2420 auto param20 = model->addOperand(&type2);
2421 auto param21 = model->addOperand(&type2);
2422 auto param22 = model->addOperand(&type2);
2423 auto param23 = model->addOperand(&type2);
2424 auto param24 = model->addOperand(&type2);
2425 auto param25 = model->addOperand(&type2);
2426 auto param26 = model->addOperand(&type2);
2427 auto layout = model->addOperand(&type0);
2428 auto op42 = model->addOperand(&type25);
2429 // Phase 2, operations
2430 static int32_t param18_init[] = {0};
2431 model->setOperandValue(param18, param18_init, sizeof(int32_t) * 1);
2432 static int32_t param19_init[] = {0};
2433 model->setOperandValue(param19, param19_init, sizeof(int32_t) * 1);
2434 static int32_t param20_init[] = {0};
2435 model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
2436 static int32_t param21_init[] = {0};
2437 model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
2438 static int32_t param22_init[] = {2};
2439 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
2440 static int32_t param23_init[] = {2};
2441 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
2442 static int32_t param24_init[] = {10};
2443 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
2444 static int32_t param25_init[] = {10};
2445 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
2446 static int32_t param26_init[] = {0};
2447 model->setOperandValue(param26, param26_init, sizeof(int32_t) * 1);
2448 static bool8 layout_init[] = {true};
2449 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2450 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op12, param18, param19, param20, param21, param22, param23, param24, param25, param26, layout}, {op42});
2451 // Phase 3, inputs and outputs
2452 model->identifyInputsAndOutputs(
2453 {op12},
2454 {op42});
2455 assert(model->isValid());
2456 }
2457
is_ignored_dynamic_output_shape_nchw_float16_3(int i)2458 inline bool is_ignored_dynamic_output_shape_nchw_float16_3(int i) {
2459 static std::set<int> ignore = {};
2460 return ignore.find(i) != ignore.end();
2461 }
2462
CreateModel_dynamic_output_shape_nchw_quant8_3(Model * model)2463 void CreateModel_dynamic_output_shape_nchw_quant8_3(Model *model) {
2464 OperandType type0(Type::BOOL, {});
2465 OperandType type2(Type::INT32, {});
2466 OperandType type45(Type::TENSOR_QUANT8_ASYMM, {1, 1, 200, 180}, 0.25f, 0);
2467 OperandType type47(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 0);
2468 // Phase 1, operands
2469 auto op12 = model->addOperand(&type45);
2470 auto param18 = model->addOperand(&type2);
2471 auto param19 = model->addOperand(&type2);
2472 auto param20 = model->addOperand(&type2);
2473 auto param21 = model->addOperand(&type2);
2474 auto param22 = model->addOperand(&type2);
2475 auto param23 = model->addOperand(&type2);
2476 auto param24 = model->addOperand(&type2);
2477 auto param25 = model->addOperand(&type2);
2478 auto param26 = model->addOperand(&type2);
2479 auto layout = model->addOperand(&type0);
2480 auto op42 = model->addOperand(&type47);
2481 // Phase 2, operations
2482 static int32_t param18_init[] = {0};
2483 model->setOperandValue(param18, param18_init, sizeof(int32_t) * 1);
2484 static int32_t param19_init[] = {0};
2485 model->setOperandValue(param19, param19_init, sizeof(int32_t) * 1);
2486 static int32_t param20_init[] = {0};
2487 model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
2488 static int32_t param21_init[] = {0};
2489 model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
2490 static int32_t param22_init[] = {2};
2491 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
2492 static int32_t param23_init[] = {2};
2493 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
2494 static int32_t param24_init[] = {10};
2495 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
2496 static int32_t param25_init[] = {10};
2497 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
2498 static int32_t param26_init[] = {0};
2499 model->setOperandValue(param26, param26_init, sizeof(int32_t) * 1);
2500 static bool8 layout_init[] = {true};
2501 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2502 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op12, param18, param19, param20, param21, param22, param23, param24, param25, param26, layout}, {op42});
2503 // Phase 3, inputs and outputs
2504 model->identifyInputsAndOutputs(
2505 {op12},
2506 {op42});
2507 assert(model->isValid());
2508 }
2509
is_ignored_dynamic_output_shape_nchw_quant8_3(int i)2510 inline bool is_ignored_dynamic_output_shape_nchw_quant8_3(int i) {
2511 static std::set<int> ignore = {};
2512 return ignore.find(i) != ignore.end();
2513 }
2514
CreateModel_nhwc_4(Model * model)2515 void CreateModel_nhwc_4(Model *model) {
2516 OperandType type0(Type::BOOL, {});
2517 OperandType type2(Type::INT32, {});
2518 OperandType type3(Type::TENSOR_FLOAT32, {5, 52, 60, 3});
2519 OperandType type4(Type::TENSOR_FLOAT32, {5, 11, 13, 3});
2520 // Phase 1, operands
2521 auto op13 = model->addOperand(&type3);
2522 auto param27 = model->addOperand(&type2);
2523 auto param28 = model->addOperand(&type2);
2524 auto param29 = model->addOperand(&type2);
2525 auto param30 = model->addOperand(&type2);
2526 auto param31 = model->addOperand(&type2);
2527 auto param32 = model->addOperand(&type2);
2528 auto param33 = model->addOperand(&type2);
2529 auto param34 = model->addOperand(&type2);
2530 auto param35 = model->addOperand(&type2);
2531 auto layout = model->addOperand(&type0);
2532 auto op43 = model->addOperand(&type4);
2533 // Phase 2, operations
2534 static int32_t param27_init[] = {50};
2535 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
2536 static int32_t param28_init[] = {50};
2537 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
2538 static int32_t param29_init[] = {50};
2539 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
2540 static int32_t param30_init[] = {50};
2541 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
2542 static int32_t param31_init[] = {5};
2543 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
2544 static int32_t param32_init[] = {5};
2545 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
2546 static int32_t param33_init[] = {100};
2547 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
2548 static int32_t param34_init[] = {100};
2549 model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
2550 static int32_t param35_init[] = {3};
2551 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
2552 static bool8 layout_init[] = {false};
2553 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2554 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, param33, param34, param35, layout}, {op43});
2555 // Phase 3, inputs and outputs
2556 model->identifyInputsAndOutputs(
2557 {op13},
2558 {op43});
2559 assert(model->isValid());
2560 }
2561
is_ignored_nhwc_4(int i)2562 inline bool is_ignored_nhwc_4(int i) {
2563 static std::set<int> ignore = {};
2564 return ignore.find(i) != ignore.end();
2565 }
2566
CreateModel_nhwc_relaxed_4(Model * model)2567 void CreateModel_nhwc_relaxed_4(Model *model) {
2568 OperandType type0(Type::BOOL, {});
2569 OperandType type2(Type::INT32, {});
2570 OperandType type3(Type::TENSOR_FLOAT32, {5, 52, 60, 3});
2571 OperandType type4(Type::TENSOR_FLOAT32, {5, 11, 13, 3});
2572 // Phase 1, operands
2573 auto op13 = model->addOperand(&type3);
2574 auto param27 = model->addOperand(&type2);
2575 auto param28 = model->addOperand(&type2);
2576 auto param29 = model->addOperand(&type2);
2577 auto param30 = model->addOperand(&type2);
2578 auto param31 = model->addOperand(&type2);
2579 auto param32 = model->addOperand(&type2);
2580 auto param33 = model->addOperand(&type2);
2581 auto param34 = model->addOperand(&type2);
2582 auto param35 = model->addOperand(&type2);
2583 auto layout = model->addOperand(&type0);
2584 auto op43 = model->addOperand(&type4);
2585 // Phase 2, operations
2586 static int32_t param27_init[] = {50};
2587 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
2588 static int32_t param28_init[] = {50};
2589 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
2590 static int32_t param29_init[] = {50};
2591 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
2592 static int32_t param30_init[] = {50};
2593 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
2594 static int32_t param31_init[] = {5};
2595 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
2596 static int32_t param32_init[] = {5};
2597 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
2598 static int32_t param33_init[] = {100};
2599 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
2600 static int32_t param34_init[] = {100};
2601 model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
2602 static int32_t param35_init[] = {3};
2603 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
2604 static bool8 layout_init[] = {false};
2605 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2606 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, param33, param34, param35, layout}, {op43});
2607 // Phase 3, inputs and outputs
2608 model->identifyInputsAndOutputs(
2609 {op13},
2610 {op43});
2611 // Phase 4: set relaxed execution
2612 model->relaxComputationFloat32toFloat16(true);
2613 assert(model->isValid());
2614 }
2615
is_ignored_nhwc_relaxed_4(int i)2616 inline bool is_ignored_nhwc_relaxed_4(int i) {
2617 static std::set<int> ignore = {};
2618 return ignore.find(i) != ignore.end();
2619 }
2620
CreateModel_nhwc_float16_4(Model * model)2621 void CreateModel_nhwc_float16_4(Model *model) {
2622 OperandType type0(Type::BOOL, {});
2623 OperandType type2(Type::INT32, {});
2624 OperandType type27(Type::TENSOR_FLOAT16, {5, 52, 60, 3});
2625 OperandType type28(Type::TENSOR_FLOAT16, {5, 11, 13, 3});
2626 // Phase 1, operands
2627 auto op13 = model->addOperand(&type27);
2628 auto param27 = model->addOperand(&type2);
2629 auto param28 = model->addOperand(&type2);
2630 auto param29 = model->addOperand(&type2);
2631 auto param30 = model->addOperand(&type2);
2632 auto param31 = model->addOperand(&type2);
2633 auto param32 = model->addOperand(&type2);
2634 auto param33 = model->addOperand(&type2);
2635 auto param34 = model->addOperand(&type2);
2636 auto param35 = model->addOperand(&type2);
2637 auto layout = model->addOperand(&type0);
2638 auto op43 = model->addOperand(&type28);
2639 // Phase 2, operations
2640 static int32_t param27_init[] = {50};
2641 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
2642 static int32_t param28_init[] = {50};
2643 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
2644 static int32_t param29_init[] = {50};
2645 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
2646 static int32_t param30_init[] = {50};
2647 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
2648 static int32_t param31_init[] = {5};
2649 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
2650 static int32_t param32_init[] = {5};
2651 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
2652 static int32_t param33_init[] = {100};
2653 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
2654 static int32_t param34_init[] = {100};
2655 model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
2656 static int32_t param35_init[] = {3};
2657 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
2658 static bool8 layout_init[] = {false};
2659 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2660 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, param33, param34, param35, layout}, {op43});
2661 // Phase 3, inputs and outputs
2662 model->identifyInputsAndOutputs(
2663 {op13},
2664 {op43});
2665 assert(model->isValid());
2666 }
2667
is_ignored_nhwc_float16_4(int i)2668 inline bool is_ignored_nhwc_float16_4(int i) {
2669 static std::set<int> ignore = {};
2670 return ignore.find(i) != ignore.end();
2671 }
2672
CreateModel_nhwc_quant8_4(Model * model)2673 void CreateModel_nhwc_quant8_4(Model *model) {
2674 OperandType type0(Type::BOOL, {});
2675 OperandType type2(Type::INT32, {});
2676 OperandType type29(Type::TENSOR_QUANT8_ASYMM, {5, 52, 60, 3}, 0.5f, 0);
2677 OperandType type30(Type::TENSOR_QUANT8_ASYMM, {5, 11, 13, 3}, 0.5f, 0);
2678 // Phase 1, operands
2679 auto op13 = model->addOperand(&type29);
2680 auto param27 = model->addOperand(&type2);
2681 auto param28 = model->addOperand(&type2);
2682 auto param29 = model->addOperand(&type2);
2683 auto param30 = model->addOperand(&type2);
2684 auto param31 = model->addOperand(&type2);
2685 auto param32 = model->addOperand(&type2);
2686 auto param33 = model->addOperand(&type2);
2687 auto param34 = model->addOperand(&type2);
2688 auto param35 = model->addOperand(&type2);
2689 auto layout = model->addOperand(&type0);
2690 auto op43 = model->addOperand(&type30);
2691 // Phase 2, operations
2692 static int32_t param27_init[] = {50};
2693 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
2694 static int32_t param28_init[] = {50};
2695 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
2696 static int32_t param29_init[] = {50};
2697 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
2698 static int32_t param30_init[] = {50};
2699 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
2700 static int32_t param31_init[] = {5};
2701 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
2702 static int32_t param32_init[] = {5};
2703 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
2704 static int32_t param33_init[] = {100};
2705 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
2706 static int32_t param34_init[] = {100};
2707 model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
2708 static int32_t param35_init[] = {3};
2709 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
2710 static bool8 layout_init[] = {false};
2711 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2712 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, param33, param34, param35, layout}, {op43});
2713 // Phase 3, inputs and outputs
2714 model->identifyInputsAndOutputs(
2715 {op13},
2716 {op43});
2717 assert(model->isValid());
2718 }
2719
is_ignored_nhwc_quant8_4(int i)2720 inline bool is_ignored_nhwc_quant8_4(int i) {
2721 static std::set<int> ignore = {};
2722 return ignore.find(i) != ignore.end();
2723 }
2724
CreateModel_nchw_4(Model * model)2725 void CreateModel_nchw_4(Model *model) {
2726 OperandType type0(Type::BOOL, {});
2727 OperandType type2(Type::INT32, {});
2728 OperandType type31(Type::TENSOR_FLOAT32, {5, 3, 52, 60});
2729 OperandType type32(Type::TENSOR_FLOAT32, {5, 3, 11, 13});
2730 // Phase 1, operands
2731 auto op13 = model->addOperand(&type31);
2732 auto param27 = model->addOperand(&type2);
2733 auto param28 = model->addOperand(&type2);
2734 auto param29 = model->addOperand(&type2);
2735 auto param30 = model->addOperand(&type2);
2736 auto param31 = model->addOperand(&type2);
2737 auto param32 = model->addOperand(&type2);
2738 auto param33 = model->addOperand(&type2);
2739 auto param34 = model->addOperand(&type2);
2740 auto param35 = model->addOperand(&type2);
2741 auto layout = model->addOperand(&type0);
2742 auto op43 = model->addOperand(&type32);
2743 // Phase 2, operations
2744 static int32_t param27_init[] = {50};
2745 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
2746 static int32_t param28_init[] = {50};
2747 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
2748 static int32_t param29_init[] = {50};
2749 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
2750 static int32_t param30_init[] = {50};
2751 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
2752 static int32_t param31_init[] = {5};
2753 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
2754 static int32_t param32_init[] = {5};
2755 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
2756 static int32_t param33_init[] = {100};
2757 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
2758 static int32_t param34_init[] = {100};
2759 model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
2760 static int32_t param35_init[] = {3};
2761 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
2762 static bool8 layout_init[] = {true};
2763 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2764 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, param33, param34, param35, layout}, {op43});
2765 // Phase 3, inputs and outputs
2766 model->identifyInputsAndOutputs(
2767 {op13},
2768 {op43});
2769 assert(model->isValid());
2770 }
2771
is_ignored_nchw_4(int i)2772 inline bool is_ignored_nchw_4(int i) {
2773 static std::set<int> ignore = {};
2774 return ignore.find(i) != ignore.end();
2775 }
2776
CreateModel_nchw_relaxed_4(Model * model)2777 void CreateModel_nchw_relaxed_4(Model *model) {
2778 OperandType type0(Type::BOOL, {});
2779 OperandType type2(Type::INT32, {});
2780 OperandType type31(Type::TENSOR_FLOAT32, {5, 3, 52, 60});
2781 OperandType type32(Type::TENSOR_FLOAT32, {5, 3, 11, 13});
2782 // Phase 1, operands
2783 auto op13 = model->addOperand(&type31);
2784 auto param27 = model->addOperand(&type2);
2785 auto param28 = model->addOperand(&type2);
2786 auto param29 = model->addOperand(&type2);
2787 auto param30 = model->addOperand(&type2);
2788 auto param31 = model->addOperand(&type2);
2789 auto param32 = model->addOperand(&type2);
2790 auto param33 = model->addOperand(&type2);
2791 auto param34 = model->addOperand(&type2);
2792 auto param35 = model->addOperand(&type2);
2793 auto layout = model->addOperand(&type0);
2794 auto op43 = model->addOperand(&type32);
2795 // Phase 2, operations
2796 static int32_t param27_init[] = {50};
2797 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
2798 static int32_t param28_init[] = {50};
2799 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
2800 static int32_t param29_init[] = {50};
2801 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
2802 static int32_t param30_init[] = {50};
2803 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
2804 static int32_t param31_init[] = {5};
2805 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
2806 static int32_t param32_init[] = {5};
2807 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
2808 static int32_t param33_init[] = {100};
2809 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
2810 static int32_t param34_init[] = {100};
2811 model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
2812 static int32_t param35_init[] = {3};
2813 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
2814 static bool8 layout_init[] = {true};
2815 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2816 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, param33, param34, param35, layout}, {op43});
2817 // Phase 3, inputs and outputs
2818 model->identifyInputsAndOutputs(
2819 {op13},
2820 {op43});
2821 // Phase 4: set relaxed execution
2822 model->relaxComputationFloat32toFloat16(true);
2823 assert(model->isValid());
2824 }
2825
is_ignored_nchw_relaxed_4(int i)2826 inline bool is_ignored_nchw_relaxed_4(int i) {
2827 static std::set<int> ignore = {};
2828 return ignore.find(i) != ignore.end();
2829 }
2830
CreateModel_nchw_float16_4(Model * model)2831 void CreateModel_nchw_float16_4(Model *model) {
2832 OperandType type0(Type::BOOL, {});
2833 OperandType type2(Type::INT32, {});
2834 OperandType type33(Type::TENSOR_FLOAT16, {5, 3, 52, 60});
2835 OperandType type34(Type::TENSOR_FLOAT16, {5, 3, 11, 13});
2836 // Phase 1, operands
2837 auto op13 = model->addOperand(&type33);
2838 auto param27 = model->addOperand(&type2);
2839 auto param28 = model->addOperand(&type2);
2840 auto param29 = model->addOperand(&type2);
2841 auto param30 = model->addOperand(&type2);
2842 auto param31 = model->addOperand(&type2);
2843 auto param32 = model->addOperand(&type2);
2844 auto param33 = model->addOperand(&type2);
2845 auto param34 = model->addOperand(&type2);
2846 auto param35 = model->addOperand(&type2);
2847 auto layout = model->addOperand(&type0);
2848 auto op43 = model->addOperand(&type34);
2849 // Phase 2, operations
2850 static int32_t param27_init[] = {50};
2851 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
2852 static int32_t param28_init[] = {50};
2853 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
2854 static int32_t param29_init[] = {50};
2855 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
2856 static int32_t param30_init[] = {50};
2857 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
2858 static int32_t param31_init[] = {5};
2859 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
2860 static int32_t param32_init[] = {5};
2861 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
2862 static int32_t param33_init[] = {100};
2863 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
2864 static int32_t param34_init[] = {100};
2865 model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
2866 static int32_t param35_init[] = {3};
2867 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
2868 static bool8 layout_init[] = {true};
2869 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2870 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, param33, param34, param35, layout}, {op43});
2871 // Phase 3, inputs and outputs
2872 model->identifyInputsAndOutputs(
2873 {op13},
2874 {op43});
2875 assert(model->isValid());
2876 }
2877
is_ignored_nchw_float16_4(int i)2878 inline bool is_ignored_nchw_float16_4(int i) {
2879 static std::set<int> ignore = {};
2880 return ignore.find(i) != ignore.end();
2881 }
2882
CreateModel_nchw_quant8_4(Model * model)2883 void CreateModel_nchw_quant8_4(Model *model) {
2884 OperandType type0(Type::BOOL, {});
2885 OperandType type2(Type::INT32, {});
2886 OperandType type35(Type::TENSOR_QUANT8_ASYMM, {5, 3, 52, 60}, 0.5f, 0);
2887 OperandType type36(Type::TENSOR_QUANT8_ASYMM, {5, 3, 11, 13}, 0.5f, 0);
2888 // Phase 1, operands
2889 auto op13 = model->addOperand(&type35);
2890 auto param27 = model->addOperand(&type2);
2891 auto param28 = model->addOperand(&type2);
2892 auto param29 = model->addOperand(&type2);
2893 auto param30 = model->addOperand(&type2);
2894 auto param31 = model->addOperand(&type2);
2895 auto param32 = model->addOperand(&type2);
2896 auto param33 = model->addOperand(&type2);
2897 auto param34 = model->addOperand(&type2);
2898 auto param35 = model->addOperand(&type2);
2899 auto layout = model->addOperand(&type0);
2900 auto op43 = model->addOperand(&type36);
2901 // Phase 2, operations
2902 static int32_t param27_init[] = {50};
2903 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
2904 static int32_t param28_init[] = {50};
2905 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
2906 static int32_t param29_init[] = {50};
2907 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
2908 static int32_t param30_init[] = {50};
2909 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
2910 static int32_t param31_init[] = {5};
2911 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
2912 static int32_t param32_init[] = {5};
2913 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
2914 static int32_t param33_init[] = {100};
2915 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
2916 static int32_t param34_init[] = {100};
2917 model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
2918 static int32_t param35_init[] = {3};
2919 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
2920 static bool8 layout_init[] = {true};
2921 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2922 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, param33, param34, param35, layout}, {op43});
2923 // Phase 3, inputs and outputs
2924 model->identifyInputsAndOutputs(
2925 {op13},
2926 {op43});
2927 assert(model->isValid());
2928 }
2929
is_ignored_nchw_quant8_4(int i)2930 inline bool is_ignored_nchw_quant8_4(int i) {
2931 static std::set<int> ignore = {};
2932 return ignore.find(i) != ignore.end();
2933 }
2934
CreateModel_dynamic_output_shape_nhwc_4(Model * model)2935 void CreateModel_dynamic_output_shape_nhwc_4(Model *model) {
2936 OperandType type0(Type::BOOL, {});
2937 OperandType type2(Type::INT32, {});
2938 OperandType type24(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
2939 OperandType type3(Type::TENSOR_FLOAT32, {5, 52, 60, 3});
2940 // Phase 1, operands
2941 auto op13 = model->addOperand(&type3);
2942 auto param27 = model->addOperand(&type2);
2943 auto param28 = model->addOperand(&type2);
2944 auto param29 = model->addOperand(&type2);
2945 auto param30 = model->addOperand(&type2);
2946 auto param31 = model->addOperand(&type2);
2947 auto param32 = model->addOperand(&type2);
2948 auto param33 = model->addOperand(&type2);
2949 auto param34 = model->addOperand(&type2);
2950 auto param35 = model->addOperand(&type2);
2951 auto layout = model->addOperand(&type0);
2952 auto op43 = model->addOperand(&type24);
2953 // Phase 2, operations
2954 static int32_t param27_init[] = {50};
2955 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
2956 static int32_t param28_init[] = {50};
2957 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
2958 static int32_t param29_init[] = {50};
2959 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
2960 static int32_t param30_init[] = {50};
2961 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
2962 static int32_t param31_init[] = {5};
2963 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
2964 static int32_t param32_init[] = {5};
2965 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
2966 static int32_t param33_init[] = {100};
2967 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
2968 static int32_t param34_init[] = {100};
2969 model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
2970 static int32_t param35_init[] = {3};
2971 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
2972 static bool8 layout_init[] = {false};
2973 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2974 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, param33, param34, param35, layout}, {op43});
2975 // Phase 3, inputs and outputs
2976 model->identifyInputsAndOutputs(
2977 {op13},
2978 {op43});
2979 assert(model->isValid());
2980 }
2981
is_ignored_dynamic_output_shape_nhwc_4(int i)2982 inline bool is_ignored_dynamic_output_shape_nhwc_4(int i) {
2983 static std::set<int> ignore = {};
2984 return ignore.find(i) != ignore.end();
2985 }
2986
CreateModel_dynamic_output_shape_nhwc_relaxed_4(Model * model)2987 void CreateModel_dynamic_output_shape_nhwc_relaxed_4(Model *model) {
2988 OperandType type0(Type::BOOL, {});
2989 OperandType type2(Type::INT32, {});
2990 OperandType type24(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
2991 OperandType type3(Type::TENSOR_FLOAT32, {5, 52, 60, 3});
2992 // Phase 1, operands
2993 auto op13 = model->addOperand(&type3);
2994 auto param27 = model->addOperand(&type2);
2995 auto param28 = model->addOperand(&type2);
2996 auto param29 = model->addOperand(&type2);
2997 auto param30 = model->addOperand(&type2);
2998 auto param31 = model->addOperand(&type2);
2999 auto param32 = model->addOperand(&type2);
3000 auto param33 = model->addOperand(&type2);
3001 auto param34 = model->addOperand(&type2);
3002 auto param35 = model->addOperand(&type2);
3003 auto layout = model->addOperand(&type0);
3004 auto op43 = model->addOperand(&type24);
3005 // Phase 2, operations
3006 static int32_t param27_init[] = {50};
3007 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
3008 static int32_t param28_init[] = {50};
3009 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
3010 static int32_t param29_init[] = {50};
3011 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
3012 static int32_t param30_init[] = {50};
3013 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
3014 static int32_t param31_init[] = {5};
3015 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
3016 static int32_t param32_init[] = {5};
3017 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
3018 static int32_t param33_init[] = {100};
3019 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
3020 static int32_t param34_init[] = {100};
3021 model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
3022 static int32_t param35_init[] = {3};
3023 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
3024 static bool8 layout_init[] = {false};
3025 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3026 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, param33, param34, param35, layout}, {op43});
3027 // Phase 3, inputs and outputs
3028 model->identifyInputsAndOutputs(
3029 {op13},
3030 {op43});
3031 // Phase 4: set relaxed execution
3032 model->relaxComputationFloat32toFloat16(true);
3033 assert(model->isValid());
3034 }
3035
is_ignored_dynamic_output_shape_nhwc_relaxed_4(int i)3036 inline bool is_ignored_dynamic_output_shape_nhwc_relaxed_4(int i) {
3037 static std::set<int> ignore = {};
3038 return ignore.find(i) != ignore.end();
3039 }
3040
CreateModel_dynamic_output_shape_nhwc_float16_4(Model * model)3041 void CreateModel_dynamic_output_shape_nhwc_float16_4(Model *model) {
3042 OperandType type0(Type::BOOL, {});
3043 OperandType type2(Type::INT32, {});
3044 OperandType type25(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
3045 OperandType type27(Type::TENSOR_FLOAT16, {5, 52, 60, 3});
3046 // Phase 1, operands
3047 auto op13 = model->addOperand(&type27);
3048 auto param27 = model->addOperand(&type2);
3049 auto param28 = model->addOperand(&type2);
3050 auto param29 = model->addOperand(&type2);
3051 auto param30 = model->addOperand(&type2);
3052 auto param31 = model->addOperand(&type2);
3053 auto param32 = model->addOperand(&type2);
3054 auto param33 = model->addOperand(&type2);
3055 auto param34 = model->addOperand(&type2);
3056 auto param35 = model->addOperand(&type2);
3057 auto layout = model->addOperand(&type0);
3058 auto op43 = model->addOperand(&type25);
3059 // Phase 2, operations
3060 static int32_t param27_init[] = {50};
3061 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
3062 static int32_t param28_init[] = {50};
3063 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
3064 static int32_t param29_init[] = {50};
3065 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
3066 static int32_t param30_init[] = {50};
3067 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
3068 static int32_t param31_init[] = {5};
3069 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
3070 static int32_t param32_init[] = {5};
3071 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
3072 static int32_t param33_init[] = {100};
3073 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
3074 static int32_t param34_init[] = {100};
3075 model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
3076 static int32_t param35_init[] = {3};
3077 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
3078 static bool8 layout_init[] = {false};
3079 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3080 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, param33, param34, param35, layout}, {op43});
3081 // Phase 3, inputs and outputs
3082 model->identifyInputsAndOutputs(
3083 {op13},
3084 {op43});
3085 assert(model->isValid());
3086 }
3087
is_ignored_dynamic_output_shape_nhwc_float16_4(int i)3088 inline bool is_ignored_dynamic_output_shape_nhwc_float16_4(int i) {
3089 static std::set<int> ignore = {};
3090 return ignore.find(i) != ignore.end();
3091 }
3092
CreateModel_dynamic_output_shape_nhwc_quant8_4(Model * model)3093 void CreateModel_dynamic_output_shape_nhwc_quant8_4(Model *model) {
3094 OperandType type0(Type::BOOL, {});
3095 OperandType type2(Type::INT32, {});
3096 OperandType type26(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.5f, 0);
3097 OperandType type29(Type::TENSOR_QUANT8_ASYMM, {5, 52, 60, 3}, 0.5f, 0);
3098 // Phase 1, operands
3099 auto op13 = model->addOperand(&type29);
3100 auto param27 = model->addOperand(&type2);
3101 auto param28 = model->addOperand(&type2);
3102 auto param29 = model->addOperand(&type2);
3103 auto param30 = model->addOperand(&type2);
3104 auto param31 = model->addOperand(&type2);
3105 auto param32 = model->addOperand(&type2);
3106 auto param33 = model->addOperand(&type2);
3107 auto param34 = model->addOperand(&type2);
3108 auto param35 = model->addOperand(&type2);
3109 auto layout = model->addOperand(&type0);
3110 auto op43 = model->addOperand(&type26);
3111 // Phase 2, operations
3112 static int32_t param27_init[] = {50};
3113 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
3114 static int32_t param28_init[] = {50};
3115 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
3116 static int32_t param29_init[] = {50};
3117 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
3118 static int32_t param30_init[] = {50};
3119 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
3120 static int32_t param31_init[] = {5};
3121 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
3122 static int32_t param32_init[] = {5};
3123 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
3124 static int32_t param33_init[] = {100};
3125 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
3126 static int32_t param34_init[] = {100};
3127 model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
3128 static int32_t param35_init[] = {3};
3129 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
3130 static bool8 layout_init[] = {false};
3131 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3132 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, param33, param34, param35, layout}, {op43});
3133 // Phase 3, inputs and outputs
3134 model->identifyInputsAndOutputs(
3135 {op13},
3136 {op43});
3137 assert(model->isValid());
3138 }
3139
is_ignored_dynamic_output_shape_nhwc_quant8_4(int i)3140 inline bool is_ignored_dynamic_output_shape_nhwc_quant8_4(int i) {
3141 static std::set<int> ignore = {};
3142 return ignore.find(i) != ignore.end();
3143 }
3144
CreateModel_dynamic_output_shape_nchw_4(Model * model)3145 void CreateModel_dynamic_output_shape_nchw_4(Model *model) {
3146 OperandType type0(Type::BOOL, {});
3147 OperandType type2(Type::INT32, {});
3148 OperandType type24(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
3149 OperandType type31(Type::TENSOR_FLOAT32, {5, 3, 52, 60});
3150 // Phase 1, operands
3151 auto op13 = model->addOperand(&type31);
3152 auto param27 = model->addOperand(&type2);
3153 auto param28 = model->addOperand(&type2);
3154 auto param29 = model->addOperand(&type2);
3155 auto param30 = model->addOperand(&type2);
3156 auto param31 = model->addOperand(&type2);
3157 auto param32 = model->addOperand(&type2);
3158 auto param33 = model->addOperand(&type2);
3159 auto param34 = model->addOperand(&type2);
3160 auto param35 = model->addOperand(&type2);
3161 auto layout = model->addOperand(&type0);
3162 auto op43 = model->addOperand(&type24);
3163 // Phase 2, operations
3164 static int32_t param27_init[] = {50};
3165 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
3166 static int32_t param28_init[] = {50};
3167 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
3168 static int32_t param29_init[] = {50};
3169 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
3170 static int32_t param30_init[] = {50};
3171 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
3172 static int32_t param31_init[] = {5};
3173 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
3174 static int32_t param32_init[] = {5};
3175 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
3176 static int32_t param33_init[] = {100};
3177 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
3178 static int32_t param34_init[] = {100};
3179 model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
3180 static int32_t param35_init[] = {3};
3181 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
3182 static bool8 layout_init[] = {true};
3183 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3184 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, param33, param34, param35, layout}, {op43});
3185 // Phase 3, inputs and outputs
3186 model->identifyInputsAndOutputs(
3187 {op13},
3188 {op43});
3189 assert(model->isValid());
3190 }
3191
is_ignored_dynamic_output_shape_nchw_4(int i)3192 inline bool is_ignored_dynamic_output_shape_nchw_4(int i) {
3193 static std::set<int> ignore = {};
3194 return ignore.find(i) != ignore.end();
3195 }
3196
CreateModel_dynamic_output_shape_nchw_relaxed_4(Model * model)3197 void CreateModel_dynamic_output_shape_nchw_relaxed_4(Model *model) {
3198 OperandType type0(Type::BOOL, {});
3199 OperandType type2(Type::INT32, {});
3200 OperandType type24(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
3201 OperandType type31(Type::TENSOR_FLOAT32, {5, 3, 52, 60});
3202 // Phase 1, operands
3203 auto op13 = model->addOperand(&type31);
3204 auto param27 = model->addOperand(&type2);
3205 auto param28 = model->addOperand(&type2);
3206 auto param29 = model->addOperand(&type2);
3207 auto param30 = model->addOperand(&type2);
3208 auto param31 = model->addOperand(&type2);
3209 auto param32 = model->addOperand(&type2);
3210 auto param33 = model->addOperand(&type2);
3211 auto param34 = model->addOperand(&type2);
3212 auto param35 = model->addOperand(&type2);
3213 auto layout = model->addOperand(&type0);
3214 auto op43 = model->addOperand(&type24);
3215 // Phase 2, operations
3216 static int32_t param27_init[] = {50};
3217 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
3218 static int32_t param28_init[] = {50};
3219 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
3220 static int32_t param29_init[] = {50};
3221 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
3222 static int32_t param30_init[] = {50};
3223 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
3224 static int32_t param31_init[] = {5};
3225 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
3226 static int32_t param32_init[] = {5};
3227 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
3228 static int32_t param33_init[] = {100};
3229 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
3230 static int32_t param34_init[] = {100};
3231 model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
3232 static int32_t param35_init[] = {3};
3233 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
3234 static bool8 layout_init[] = {true};
3235 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3236 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, param33, param34, param35, layout}, {op43});
3237 // Phase 3, inputs and outputs
3238 model->identifyInputsAndOutputs(
3239 {op13},
3240 {op43});
3241 // Phase 4: set relaxed execution
3242 model->relaxComputationFloat32toFloat16(true);
3243 assert(model->isValid());
3244 }
3245
is_ignored_dynamic_output_shape_nchw_relaxed_4(int i)3246 inline bool is_ignored_dynamic_output_shape_nchw_relaxed_4(int i) {
3247 static std::set<int> ignore = {};
3248 return ignore.find(i) != ignore.end();
3249 }
3250
CreateModel_dynamic_output_shape_nchw_float16_4(Model * model)3251 void CreateModel_dynamic_output_shape_nchw_float16_4(Model *model) {
3252 OperandType type0(Type::BOOL, {});
3253 OperandType type2(Type::INT32, {});
3254 OperandType type25(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
3255 OperandType type33(Type::TENSOR_FLOAT16, {5, 3, 52, 60});
3256 // Phase 1, operands
3257 auto op13 = model->addOperand(&type33);
3258 auto param27 = model->addOperand(&type2);
3259 auto param28 = model->addOperand(&type2);
3260 auto param29 = model->addOperand(&type2);
3261 auto param30 = model->addOperand(&type2);
3262 auto param31 = model->addOperand(&type2);
3263 auto param32 = model->addOperand(&type2);
3264 auto param33 = model->addOperand(&type2);
3265 auto param34 = model->addOperand(&type2);
3266 auto param35 = model->addOperand(&type2);
3267 auto layout = model->addOperand(&type0);
3268 auto op43 = model->addOperand(&type25);
3269 // Phase 2, operations
3270 static int32_t param27_init[] = {50};
3271 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
3272 static int32_t param28_init[] = {50};
3273 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
3274 static int32_t param29_init[] = {50};
3275 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
3276 static int32_t param30_init[] = {50};
3277 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
3278 static int32_t param31_init[] = {5};
3279 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
3280 static int32_t param32_init[] = {5};
3281 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
3282 static int32_t param33_init[] = {100};
3283 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
3284 static int32_t param34_init[] = {100};
3285 model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
3286 static int32_t param35_init[] = {3};
3287 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
3288 static bool8 layout_init[] = {true};
3289 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3290 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, param33, param34, param35, layout}, {op43});
3291 // Phase 3, inputs and outputs
3292 model->identifyInputsAndOutputs(
3293 {op13},
3294 {op43});
3295 assert(model->isValid());
3296 }
3297
is_ignored_dynamic_output_shape_nchw_float16_4(int i)3298 inline bool is_ignored_dynamic_output_shape_nchw_float16_4(int i) {
3299 static std::set<int> ignore = {};
3300 return ignore.find(i) != ignore.end();
3301 }
3302
CreateModel_dynamic_output_shape_nchw_quant8_4(Model * model)3303 void CreateModel_dynamic_output_shape_nchw_quant8_4(Model *model) {
3304 OperandType type0(Type::BOOL, {});
3305 OperandType type2(Type::INT32, {});
3306 OperandType type26(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.5f, 0);
3307 OperandType type35(Type::TENSOR_QUANT8_ASYMM, {5, 3, 52, 60}, 0.5f, 0);
3308 // Phase 1, operands
3309 auto op13 = model->addOperand(&type35);
3310 auto param27 = model->addOperand(&type2);
3311 auto param28 = model->addOperand(&type2);
3312 auto param29 = model->addOperand(&type2);
3313 auto param30 = model->addOperand(&type2);
3314 auto param31 = model->addOperand(&type2);
3315 auto param32 = model->addOperand(&type2);
3316 auto param33 = model->addOperand(&type2);
3317 auto param34 = model->addOperand(&type2);
3318 auto param35 = model->addOperand(&type2);
3319 auto layout = model->addOperand(&type0);
3320 auto op43 = model->addOperand(&type26);
3321 // Phase 2, operations
3322 static int32_t param27_init[] = {50};
3323 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
3324 static int32_t param28_init[] = {50};
3325 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
3326 static int32_t param29_init[] = {50};
3327 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
3328 static int32_t param30_init[] = {50};
3329 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
3330 static int32_t param31_init[] = {5};
3331 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
3332 static int32_t param32_init[] = {5};
3333 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
3334 static int32_t param33_init[] = {100};
3335 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
3336 static int32_t param34_init[] = {100};
3337 model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
3338 static int32_t param35_init[] = {3};
3339 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
3340 static bool8 layout_init[] = {true};
3341 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3342 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, param33, param34, param35, layout}, {op43});
3343 // Phase 3, inputs and outputs
3344 model->identifyInputsAndOutputs(
3345 {op13},
3346 {op43});
3347 assert(model->isValid());
3348 }
3349
is_ignored_dynamic_output_shape_nchw_quant8_4(int i)3350 inline bool is_ignored_dynamic_output_shape_nchw_quant8_4(int i) {
3351 static std::set<int> ignore = {};
3352 return ignore.find(i) != ignore.end();
3353 }
3354
CreateModel_nhwc_5(Model * model)3355 void CreateModel_nhwc_5(Model *model) {
3356 OperandType type0(Type::BOOL, {});
3357 OperandType type2(Type::INT32, {});
3358 OperandType type7(Type::TENSOR_FLOAT32, {1, 2, 4, 1});
3359 OperandType type8(Type::TENSOR_FLOAT32, {1, 1, 2, 1});
3360 // Phase 1, operands
3361 auto op14 = model->addOperand(&type7);
3362 auto param36 = model->addOperand(&type2);
3363 auto param37 = model->addOperand(&type2);
3364 auto param38 = model->addOperand(&type2);
3365 auto param39 = model->addOperand(&type2);
3366 auto param40 = model->addOperand(&type2);
3367 auto param41 = model->addOperand(&type2);
3368 auto layout = model->addOperand(&type0);
3369 auto op44 = model->addOperand(&type8);
3370 // Phase 2, operations
3371 static int32_t param36_init[] = {1};
3372 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
3373 static int32_t param37_init[] = {2};
3374 model->setOperandValue(param37, param37_init, sizeof(int32_t) * 1);
3375 static int32_t param38_init[] = {2};
3376 model->setOperandValue(param38, param38_init, sizeof(int32_t) * 1);
3377 static int32_t param39_init[] = {2};
3378 model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
3379 static int32_t param40_init[] = {2};
3380 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
3381 static int32_t param41_init[] = {0};
3382 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
3383 static bool8 layout_init[] = {false};
3384 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3385 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op14, param36, param37, param38, param39, param40, param41, layout}, {op44});
3386 // Phase 3, inputs and outputs
3387 model->identifyInputsAndOutputs(
3388 {op14},
3389 {op44});
3390 assert(model->isValid());
3391 }
3392
is_ignored_nhwc_5(int i)3393 inline bool is_ignored_nhwc_5(int i) {
3394 static std::set<int> ignore = {};
3395 return ignore.find(i) != ignore.end();
3396 }
3397
CreateModel_nhwc_relaxed_5(Model * model)3398 void CreateModel_nhwc_relaxed_5(Model *model) {
3399 OperandType type0(Type::BOOL, {});
3400 OperandType type2(Type::INT32, {});
3401 OperandType type7(Type::TENSOR_FLOAT32, {1, 2, 4, 1});
3402 OperandType type8(Type::TENSOR_FLOAT32, {1, 1, 2, 1});
3403 // Phase 1, operands
3404 auto op14 = model->addOperand(&type7);
3405 auto param36 = model->addOperand(&type2);
3406 auto param37 = model->addOperand(&type2);
3407 auto param38 = model->addOperand(&type2);
3408 auto param39 = model->addOperand(&type2);
3409 auto param40 = model->addOperand(&type2);
3410 auto param41 = model->addOperand(&type2);
3411 auto layout = model->addOperand(&type0);
3412 auto op44 = model->addOperand(&type8);
3413 // Phase 2, operations
3414 static int32_t param36_init[] = {1};
3415 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
3416 static int32_t param37_init[] = {2};
3417 model->setOperandValue(param37, param37_init, sizeof(int32_t) * 1);
3418 static int32_t param38_init[] = {2};
3419 model->setOperandValue(param38, param38_init, sizeof(int32_t) * 1);
3420 static int32_t param39_init[] = {2};
3421 model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
3422 static int32_t param40_init[] = {2};
3423 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
3424 static int32_t param41_init[] = {0};
3425 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
3426 static bool8 layout_init[] = {false};
3427 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3428 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op14, param36, param37, param38, param39, param40, param41, layout}, {op44});
3429 // Phase 3, inputs and outputs
3430 model->identifyInputsAndOutputs(
3431 {op14},
3432 {op44});
3433 // Phase 4: set relaxed execution
3434 model->relaxComputationFloat32toFloat16(true);
3435 assert(model->isValid());
3436 }
3437
is_ignored_nhwc_relaxed_5(int i)3438 inline bool is_ignored_nhwc_relaxed_5(int i) {
3439 static std::set<int> ignore = {};
3440 return ignore.find(i) != ignore.end();
3441 }
3442
CreateModel_nhwc_float16_5(Model * model)3443 void CreateModel_nhwc_float16_5(Model *model) {
3444 OperandType type0(Type::BOOL, {});
3445 OperandType type2(Type::INT32, {});
3446 OperandType type48(Type::TENSOR_FLOAT16, {1, 2, 4, 1});
3447 OperandType type49(Type::TENSOR_FLOAT16, {1, 1, 2, 1});
3448 // Phase 1, operands
3449 auto op14 = model->addOperand(&type48);
3450 auto param36 = model->addOperand(&type2);
3451 auto param37 = model->addOperand(&type2);
3452 auto param38 = model->addOperand(&type2);
3453 auto param39 = model->addOperand(&type2);
3454 auto param40 = model->addOperand(&type2);
3455 auto param41 = model->addOperand(&type2);
3456 auto layout = model->addOperand(&type0);
3457 auto op44 = model->addOperand(&type49);
3458 // Phase 2, operations
3459 static int32_t param36_init[] = {1};
3460 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
3461 static int32_t param37_init[] = {2};
3462 model->setOperandValue(param37, param37_init, sizeof(int32_t) * 1);
3463 static int32_t param38_init[] = {2};
3464 model->setOperandValue(param38, param38_init, sizeof(int32_t) * 1);
3465 static int32_t param39_init[] = {2};
3466 model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
3467 static int32_t param40_init[] = {2};
3468 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
3469 static int32_t param41_init[] = {0};
3470 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
3471 static bool8 layout_init[] = {false};
3472 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3473 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op14, param36, param37, param38, param39, param40, param41, layout}, {op44});
3474 // Phase 3, inputs and outputs
3475 model->identifyInputsAndOutputs(
3476 {op14},
3477 {op44});
3478 assert(model->isValid());
3479 }
3480
is_ignored_nhwc_float16_5(int i)3481 inline bool is_ignored_nhwc_float16_5(int i) {
3482 static std::set<int> ignore = {};
3483 return ignore.find(i) != ignore.end();
3484 }
3485
CreateModel_nhwc_quant8_5(Model * model)3486 void CreateModel_nhwc_quant8_5(Model *model) {
3487 OperandType type0(Type::BOOL, {});
3488 OperandType type2(Type::INT32, {});
3489 OperandType type50(Type::TENSOR_QUANT8_ASYMM, {1, 2, 4, 1}, 0.25f, 0);
3490 OperandType type51(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 1}, 0.25f, 0);
3491 // Phase 1, operands
3492 auto op14 = model->addOperand(&type50);
3493 auto param36 = model->addOperand(&type2);
3494 auto param37 = model->addOperand(&type2);
3495 auto param38 = model->addOperand(&type2);
3496 auto param39 = model->addOperand(&type2);
3497 auto param40 = model->addOperand(&type2);
3498 auto param41 = model->addOperand(&type2);
3499 auto layout = model->addOperand(&type0);
3500 auto op44 = model->addOperand(&type51);
3501 // Phase 2, operations
3502 static int32_t param36_init[] = {1};
3503 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
3504 static int32_t param37_init[] = {2};
3505 model->setOperandValue(param37, param37_init, sizeof(int32_t) * 1);
3506 static int32_t param38_init[] = {2};
3507 model->setOperandValue(param38, param38_init, sizeof(int32_t) * 1);
3508 static int32_t param39_init[] = {2};
3509 model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
3510 static int32_t param40_init[] = {2};
3511 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
3512 static int32_t param41_init[] = {0};
3513 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
3514 static bool8 layout_init[] = {false};
3515 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3516 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op14, param36, param37, param38, param39, param40, param41, layout}, {op44});
3517 // Phase 3, inputs and outputs
3518 model->identifyInputsAndOutputs(
3519 {op14},
3520 {op44});
3521 assert(model->isValid());
3522 }
3523
is_ignored_nhwc_quant8_5(int i)3524 inline bool is_ignored_nhwc_quant8_5(int i) {
3525 static std::set<int> ignore = {};
3526 return ignore.find(i) != ignore.end();
3527 }
3528
CreateModel_nchw_5(Model * model)3529 void CreateModel_nchw_5(Model *model) {
3530 OperandType type0(Type::BOOL, {});
3531 OperandType type2(Type::INT32, {});
3532 OperandType type52(Type::TENSOR_FLOAT32, {1, 1, 2, 4});
3533 OperandType type53(Type::TENSOR_FLOAT32, {1, 1, 1, 2});
3534 // Phase 1, operands
3535 auto op14 = model->addOperand(&type52);
3536 auto param36 = model->addOperand(&type2);
3537 auto param37 = model->addOperand(&type2);
3538 auto param38 = model->addOperand(&type2);
3539 auto param39 = model->addOperand(&type2);
3540 auto param40 = model->addOperand(&type2);
3541 auto param41 = model->addOperand(&type2);
3542 auto layout = model->addOperand(&type0);
3543 auto op44 = model->addOperand(&type53);
3544 // Phase 2, operations
3545 static int32_t param36_init[] = {1};
3546 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
3547 static int32_t param37_init[] = {2};
3548 model->setOperandValue(param37, param37_init, sizeof(int32_t) * 1);
3549 static int32_t param38_init[] = {2};
3550 model->setOperandValue(param38, param38_init, sizeof(int32_t) * 1);
3551 static int32_t param39_init[] = {2};
3552 model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
3553 static int32_t param40_init[] = {2};
3554 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
3555 static int32_t param41_init[] = {0};
3556 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
3557 static bool8 layout_init[] = {true};
3558 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3559 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op14, param36, param37, param38, param39, param40, param41, layout}, {op44});
3560 // Phase 3, inputs and outputs
3561 model->identifyInputsAndOutputs(
3562 {op14},
3563 {op44});
3564 assert(model->isValid());
3565 }
3566
is_ignored_nchw_5(int i)3567 inline bool is_ignored_nchw_5(int i) {
3568 static std::set<int> ignore = {};
3569 return ignore.find(i) != ignore.end();
3570 }
3571
CreateModel_nchw_relaxed_5(Model * model)3572 void CreateModel_nchw_relaxed_5(Model *model) {
3573 OperandType type0(Type::BOOL, {});
3574 OperandType type2(Type::INT32, {});
3575 OperandType type52(Type::TENSOR_FLOAT32, {1, 1, 2, 4});
3576 OperandType type53(Type::TENSOR_FLOAT32, {1, 1, 1, 2});
3577 // Phase 1, operands
3578 auto op14 = model->addOperand(&type52);
3579 auto param36 = model->addOperand(&type2);
3580 auto param37 = model->addOperand(&type2);
3581 auto param38 = model->addOperand(&type2);
3582 auto param39 = model->addOperand(&type2);
3583 auto param40 = model->addOperand(&type2);
3584 auto param41 = model->addOperand(&type2);
3585 auto layout = model->addOperand(&type0);
3586 auto op44 = model->addOperand(&type53);
3587 // Phase 2, operations
3588 static int32_t param36_init[] = {1};
3589 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
3590 static int32_t param37_init[] = {2};
3591 model->setOperandValue(param37, param37_init, sizeof(int32_t) * 1);
3592 static int32_t param38_init[] = {2};
3593 model->setOperandValue(param38, param38_init, sizeof(int32_t) * 1);
3594 static int32_t param39_init[] = {2};
3595 model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
3596 static int32_t param40_init[] = {2};
3597 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
3598 static int32_t param41_init[] = {0};
3599 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
3600 static bool8 layout_init[] = {true};
3601 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3602 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op14, param36, param37, param38, param39, param40, param41, layout}, {op44});
3603 // Phase 3, inputs and outputs
3604 model->identifyInputsAndOutputs(
3605 {op14},
3606 {op44});
3607 // Phase 4: set relaxed execution
3608 model->relaxComputationFloat32toFloat16(true);
3609 assert(model->isValid());
3610 }
3611
is_ignored_nchw_relaxed_5(int i)3612 inline bool is_ignored_nchw_relaxed_5(int i) {
3613 static std::set<int> ignore = {};
3614 return ignore.find(i) != ignore.end();
3615 }
3616
CreateModel_nchw_float16_5(Model * model)3617 void CreateModel_nchw_float16_5(Model *model) {
3618 OperandType type0(Type::BOOL, {});
3619 OperandType type2(Type::INT32, {});
3620 OperandType type54(Type::TENSOR_FLOAT16, {1, 1, 2, 4});
3621 OperandType type55(Type::TENSOR_FLOAT16, {1, 1, 1, 2});
3622 // Phase 1, operands
3623 auto op14 = model->addOperand(&type54);
3624 auto param36 = model->addOperand(&type2);
3625 auto param37 = model->addOperand(&type2);
3626 auto param38 = model->addOperand(&type2);
3627 auto param39 = model->addOperand(&type2);
3628 auto param40 = model->addOperand(&type2);
3629 auto param41 = model->addOperand(&type2);
3630 auto layout = model->addOperand(&type0);
3631 auto op44 = model->addOperand(&type55);
3632 // Phase 2, operations
3633 static int32_t param36_init[] = {1};
3634 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
3635 static int32_t param37_init[] = {2};
3636 model->setOperandValue(param37, param37_init, sizeof(int32_t) * 1);
3637 static int32_t param38_init[] = {2};
3638 model->setOperandValue(param38, param38_init, sizeof(int32_t) * 1);
3639 static int32_t param39_init[] = {2};
3640 model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
3641 static int32_t param40_init[] = {2};
3642 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
3643 static int32_t param41_init[] = {0};
3644 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
3645 static bool8 layout_init[] = {true};
3646 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3647 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op14, param36, param37, param38, param39, param40, param41, layout}, {op44});
3648 // Phase 3, inputs and outputs
3649 model->identifyInputsAndOutputs(
3650 {op14},
3651 {op44});
3652 assert(model->isValid());
3653 }
3654
is_ignored_nchw_float16_5(int i)3655 inline bool is_ignored_nchw_float16_5(int i) {
3656 static std::set<int> ignore = {};
3657 return ignore.find(i) != ignore.end();
3658 }
3659
CreateModel_nchw_quant8_5(Model * model)3660 void CreateModel_nchw_quant8_5(Model *model) {
3661 OperandType type0(Type::BOOL, {});
3662 OperandType type2(Type::INT32, {});
3663 OperandType type56(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 4}, 0.25f, 0);
3664 OperandType type57(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 2}, 0.25f, 0);
3665 // Phase 1, operands
3666 auto op14 = model->addOperand(&type56);
3667 auto param36 = model->addOperand(&type2);
3668 auto param37 = model->addOperand(&type2);
3669 auto param38 = model->addOperand(&type2);
3670 auto param39 = model->addOperand(&type2);
3671 auto param40 = model->addOperand(&type2);
3672 auto param41 = model->addOperand(&type2);
3673 auto layout = model->addOperand(&type0);
3674 auto op44 = model->addOperand(&type57);
3675 // Phase 2, operations
3676 static int32_t param36_init[] = {1};
3677 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
3678 static int32_t param37_init[] = {2};
3679 model->setOperandValue(param37, param37_init, sizeof(int32_t) * 1);
3680 static int32_t param38_init[] = {2};
3681 model->setOperandValue(param38, param38_init, sizeof(int32_t) * 1);
3682 static int32_t param39_init[] = {2};
3683 model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
3684 static int32_t param40_init[] = {2};
3685 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
3686 static int32_t param41_init[] = {0};
3687 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
3688 static bool8 layout_init[] = {true};
3689 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3690 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op14, param36, param37, param38, param39, param40, param41, layout}, {op44});
3691 // Phase 3, inputs and outputs
3692 model->identifyInputsAndOutputs(
3693 {op14},
3694 {op44});
3695 assert(model->isValid());
3696 }
3697
is_ignored_nchw_quant8_5(int i)3698 inline bool is_ignored_nchw_quant8_5(int i) {
3699 static std::set<int> ignore = {};
3700 return ignore.find(i) != ignore.end();
3701 }
3702
CreateModel_dynamic_output_shape_nhwc_5(Model * model)3703 void CreateModel_dynamic_output_shape_nhwc_5(Model *model) {
3704 OperandType type0(Type::BOOL, {});
3705 OperandType type2(Type::INT32, {});
3706 OperandType type24(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
3707 OperandType type7(Type::TENSOR_FLOAT32, {1, 2, 4, 1});
3708 // Phase 1, operands
3709 auto op14 = model->addOperand(&type7);
3710 auto param36 = model->addOperand(&type2);
3711 auto param37 = model->addOperand(&type2);
3712 auto param38 = model->addOperand(&type2);
3713 auto param39 = model->addOperand(&type2);
3714 auto param40 = model->addOperand(&type2);
3715 auto param41 = model->addOperand(&type2);
3716 auto layout = model->addOperand(&type0);
3717 auto op44 = model->addOperand(&type24);
3718 // Phase 2, operations
3719 static int32_t param36_init[] = {1};
3720 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
3721 static int32_t param37_init[] = {2};
3722 model->setOperandValue(param37, param37_init, sizeof(int32_t) * 1);
3723 static int32_t param38_init[] = {2};
3724 model->setOperandValue(param38, param38_init, sizeof(int32_t) * 1);
3725 static int32_t param39_init[] = {2};
3726 model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
3727 static int32_t param40_init[] = {2};
3728 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
3729 static int32_t param41_init[] = {0};
3730 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
3731 static bool8 layout_init[] = {false};
3732 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3733 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op14, param36, param37, param38, param39, param40, param41, layout}, {op44});
3734 // Phase 3, inputs and outputs
3735 model->identifyInputsAndOutputs(
3736 {op14},
3737 {op44});
3738 assert(model->isValid());
3739 }
3740
is_ignored_dynamic_output_shape_nhwc_5(int i)3741 inline bool is_ignored_dynamic_output_shape_nhwc_5(int i) {
3742 static std::set<int> ignore = {};
3743 return ignore.find(i) != ignore.end();
3744 }
3745
CreateModel_dynamic_output_shape_nhwc_relaxed_5(Model * model)3746 void CreateModel_dynamic_output_shape_nhwc_relaxed_5(Model *model) {
3747 OperandType type0(Type::BOOL, {});
3748 OperandType type2(Type::INT32, {});
3749 OperandType type24(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
3750 OperandType type7(Type::TENSOR_FLOAT32, {1, 2, 4, 1});
3751 // Phase 1, operands
3752 auto op14 = model->addOperand(&type7);
3753 auto param36 = model->addOperand(&type2);
3754 auto param37 = model->addOperand(&type2);
3755 auto param38 = model->addOperand(&type2);
3756 auto param39 = model->addOperand(&type2);
3757 auto param40 = model->addOperand(&type2);
3758 auto param41 = model->addOperand(&type2);
3759 auto layout = model->addOperand(&type0);
3760 auto op44 = model->addOperand(&type24);
3761 // Phase 2, operations
3762 static int32_t param36_init[] = {1};
3763 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
3764 static int32_t param37_init[] = {2};
3765 model->setOperandValue(param37, param37_init, sizeof(int32_t) * 1);
3766 static int32_t param38_init[] = {2};
3767 model->setOperandValue(param38, param38_init, sizeof(int32_t) * 1);
3768 static int32_t param39_init[] = {2};
3769 model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
3770 static int32_t param40_init[] = {2};
3771 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
3772 static int32_t param41_init[] = {0};
3773 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
3774 static bool8 layout_init[] = {false};
3775 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3776 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op14, param36, param37, param38, param39, param40, param41, layout}, {op44});
3777 // Phase 3, inputs and outputs
3778 model->identifyInputsAndOutputs(
3779 {op14},
3780 {op44});
3781 // Phase 4: set relaxed execution
3782 model->relaxComputationFloat32toFloat16(true);
3783 assert(model->isValid());
3784 }
3785
is_ignored_dynamic_output_shape_nhwc_relaxed_5(int i)3786 inline bool is_ignored_dynamic_output_shape_nhwc_relaxed_5(int i) {
3787 static std::set<int> ignore = {};
3788 return ignore.find(i) != ignore.end();
3789 }
3790
CreateModel_dynamic_output_shape_nhwc_float16_5(Model * model)3791 void CreateModel_dynamic_output_shape_nhwc_float16_5(Model *model) {
3792 OperandType type0(Type::BOOL, {});
3793 OperandType type2(Type::INT32, {});
3794 OperandType type25(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
3795 OperandType type48(Type::TENSOR_FLOAT16, {1, 2, 4, 1});
3796 // Phase 1, operands
3797 auto op14 = model->addOperand(&type48);
3798 auto param36 = model->addOperand(&type2);
3799 auto param37 = model->addOperand(&type2);
3800 auto param38 = model->addOperand(&type2);
3801 auto param39 = model->addOperand(&type2);
3802 auto param40 = model->addOperand(&type2);
3803 auto param41 = model->addOperand(&type2);
3804 auto layout = model->addOperand(&type0);
3805 auto op44 = model->addOperand(&type25);
3806 // Phase 2, operations
3807 static int32_t param36_init[] = {1};
3808 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
3809 static int32_t param37_init[] = {2};
3810 model->setOperandValue(param37, param37_init, sizeof(int32_t) * 1);
3811 static int32_t param38_init[] = {2};
3812 model->setOperandValue(param38, param38_init, sizeof(int32_t) * 1);
3813 static int32_t param39_init[] = {2};
3814 model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
3815 static int32_t param40_init[] = {2};
3816 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
3817 static int32_t param41_init[] = {0};
3818 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
3819 static bool8 layout_init[] = {false};
3820 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3821 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op14, param36, param37, param38, param39, param40, param41, layout}, {op44});
3822 // Phase 3, inputs and outputs
3823 model->identifyInputsAndOutputs(
3824 {op14},
3825 {op44});
3826 assert(model->isValid());
3827 }
3828
is_ignored_dynamic_output_shape_nhwc_float16_5(int i)3829 inline bool is_ignored_dynamic_output_shape_nhwc_float16_5(int i) {
3830 static std::set<int> ignore = {};
3831 return ignore.find(i) != ignore.end();
3832 }
3833
CreateModel_dynamic_output_shape_nhwc_quant8_5(Model * model)3834 void CreateModel_dynamic_output_shape_nhwc_quant8_5(Model *model) {
3835 OperandType type0(Type::BOOL, {});
3836 OperandType type2(Type::INT32, {});
3837 OperandType type47(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 0);
3838 OperandType type50(Type::TENSOR_QUANT8_ASYMM, {1, 2, 4, 1}, 0.25f, 0);
3839 // Phase 1, operands
3840 auto op14 = model->addOperand(&type50);
3841 auto param36 = model->addOperand(&type2);
3842 auto param37 = model->addOperand(&type2);
3843 auto param38 = model->addOperand(&type2);
3844 auto param39 = model->addOperand(&type2);
3845 auto param40 = model->addOperand(&type2);
3846 auto param41 = model->addOperand(&type2);
3847 auto layout = model->addOperand(&type0);
3848 auto op44 = model->addOperand(&type47);
3849 // Phase 2, operations
3850 static int32_t param36_init[] = {1};
3851 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
3852 static int32_t param37_init[] = {2};
3853 model->setOperandValue(param37, param37_init, sizeof(int32_t) * 1);
3854 static int32_t param38_init[] = {2};
3855 model->setOperandValue(param38, param38_init, sizeof(int32_t) * 1);
3856 static int32_t param39_init[] = {2};
3857 model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
3858 static int32_t param40_init[] = {2};
3859 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
3860 static int32_t param41_init[] = {0};
3861 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
3862 static bool8 layout_init[] = {false};
3863 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3864 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op14, param36, param37, param38, param39, param40, param41, layout}, {op44});
3865 // Phase 3, inputs and outputs
3866 model->identifyInputsAndOutputs(
3867 {op14},
3868 {op44});
3869 assert(model->isValid());
3870 }
3871
is_ignored_dynamic_output_shape_nhwc_quant8_5(int i)3872 inline bool is_ignored_dynamic_output_shape_nhwc_quant8_5(int i) {
3873 static std::set<int> ignore = {};
3874 return ignore.find(i) != ignore.end();
3875 }
3876
CreateModel_dynamic_output_shape_nchw_5(Model * model)3877 void CreateModel_dynamic_output_shape_nchw_5(Model *model) {
3878 OperandType type0(Type::BOOL, {});
3879 OperandType type2(Type::INT32, {});
3880 OperandType type24(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
3881 OperandType type52(Type::TENSOR_FLOAT32, {1, 1, 2, 4});
3882 // Phase 1, operands
3883 auto op14 = model->addOperand(&type52);
3884 auto param36 = model->addOperand(&type2);
3885 auto param37 = model->addOperand(&type2);
3886 auto param38 = model->addOperand(&type2);
3887 auto param39 = model->addOperand(&type2);
3888 auto param40 = model->addOperand(&type2);
3889 auto param41 = model->addOperand(&type2);
3890 auto layout = model->addOperand(&type0);
3891 auto op44 = model->addOperand(&type24);
3892 // Phase 2, operations
3893 static int32_t param36_init[] = {1};
3894 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
3895 static int32_t param37_init[] = {2};
3896 model->setOperandValue(param37, param37_init, sizeof(int32_t) * 1);
3897 static int32_t param38_init[] = {2};
3898 model->setOperandValue(param38, param38_init, sizeof(int32_t) * 1);
3899 static int32_t param39_init[] = {2};
3900 model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
3901 static int32_t param40_init[] = {2};
3902 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
3903 static int32_t param41_init[] = {0};
3904 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
3905 static bool8 layout_init[] = {true};
3906 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3907 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op14, param36, param37, param38, param39, param40, param41, layout}, {op44});
3908 // Phase 3, inputs and outputs
3909 model->identifyInputsAndOutputs(
3910 {op14},
3911 {op44});
3912 assert(model->isValid());
3913 }
3914
is_ignored_dynamic_output_shape_nchw_5(int i)3915 inline bool is_ignored_dynamic_output_shape_nchw_5(int i) {
3916 static std::set<int> ignore = {};
3917 return ignore.find(i) != ignore.end();
3918 }
3919
CreateModel_dynamic_output_shape_nchw_relaxed_5(Model * model)3920 void CreateModel_dynamic_output_shape_nchw_relaxed_5(Model *model) {
3921 OperandType type0(Type::BOOL, {});
3922 OperandType type2(Type::INT32, {});
3923 OperandType type24(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
3924 OperandType type52(Type::TENSOR_FLOAT32, {1, 1, 2, 4});
3925 // Phase 1, operands
3926 auto op14 = model->addOperand(&type52);
3927 auto param36 = model->addOperand(&type2);
3928 auto param37 = model->addOperand(&type2);
3929 auto param38 = model->addOperand(&type2);
3930 auto param39 = model->addOperand(&type2);
3931 auto param40 = model->addOperand(&type2);
3932 auto param41 = model->addOperand(&type2);
3933 auto layout = model->addOperand(&type0);
3934 auto op44 = model->addOperand(&type24);
3935 // Phase 2, operations
3936 static int32_t param36_init[] = {1};
3937 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
3938 static int32_t param37_init[] = {2};
3939 model->setOperandValue(param37, param37_init, sizeof(int32_t) * 1);
3940 static int32_t param38_init[] = {2};
3941 model->setOperandValue(param38, param38_init, sizeof(int32_t) * 1);
3942 static int32_t param39_init[] = {2};
3943 model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
3944 static int32_t param40_init[] = {2};
3945 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
3946 static int32_t param41_init[] = {0};
3947 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
3948 static bool8 layout_init[] = {true};
3949 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3950 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op14, param36, param37, param38, param39, param40, param41, layout}, {op44});
3951 // Phase 3, inputs and outputs
3952 model->identifyInputsAndOutputs(
3953 {op14},
3954 {op44});
3955 // Phase 4: set relaxed execution
3956 model->relaxComputationFloat32toFloat16(true);
3957 assert(model->isValid());
3958 }
3959
is_ignored_dynamic_output_shape_nchw_relaxed_5(int i)3960 inline bool is_ignored_dynamic_output_shape_nchw_relaxed_5(int i) {
3961 static std::set<int> ignore = {};
3962 return ignore.find(i) != ignore.end();
3963 }
3964
CreateModel_dynamic_output_shape_nchw_float16_5(Model * model)3965 void CreateModel_dynamic_output_shape_nchw_float16_5(Model *model) {
3966 OperandType type0(Type::BOOL, {});
3967 OperandType type2(Type::INT32, {});
3968 OperandType type25(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
3969 OperandType type54(Type::TENSOR_FLOAT16, {1, 1, 2, 4});
3970 // Phase 1, operands
3971 auto op14 = model->addOperand(&type54);
3972 auto param36 = model->addOperand(&type2);
3973 auto param37 = model->addOperand(&type2);
3974 auto param38 = model->addOperand(&type2);
3975 auto param39 = model->addOperand(&type2);
3976 auto param40 = model->addOperand(&type2);
3977 auto param41 = model->addOperand(&type2);
3978 auto layout = model->addOperand(&type0);
3979 auto op44 = model->addOperand(&type25);
3980 // Phase 2, operations
3981 static int32_t param36_init[] = {1};
3982 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
3983 static int32_t param37_init[] = {2};
3984 model->setOperandValue(param37, param37_init, sizeof(int32_t) * 1);
3985 static int32_t param38_init[] = {2};
3986 model->setOperandValue(param38, param38_init, sizeof(int32_t) * 1);
3987 static int32_t param39_init[] = {2};
3988 model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
3989 static int32_t param40_init[] = {2};
3990 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
3991 static int32_t param41_init[] = {0};
3992 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
3993 static bool8 layout_init[] = {true};
3994 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3995 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op14, param36, param37, param38, param39, param40, param41, layout}, {op44});
3996 // Phase 3, inputs and outputs
3997 model->identifyInputsAndOutputs(
3998 {op14},
3999 {op44});
4000 assert(model->isValid());
4001 }
4002
is_ignored_dynamic_output_shape_nchw_float16_5(int i)4003 inline bool is_ignored_dynamic_output_shape_nchw_float16_5(int i) {
4004 static std::set<int> ignore = {};
4005 return ignore.find(i) != ignore.end();
4006 }
4007
CreateModel_dynamic_output_shape_nchw_quant8_5(Model * model)4008 void CreateModel_dynamic_output_shape_nchw_quant8_5(Model *model) {
4009 OperandType type0(Type::BOOL, {});
4010 OperandType type2(Type::INT32, {});
4011 OperandType type47(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 0);
4012 OperandType type56(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 4}, 0.25f, 0);
4013 // Phase 1, operands
4014 auto op14 = model->addOperand(&type56);
4015 auto param36 = model->addOperand(&type2);
4016 auto param37 = model->addOperand(&type2);
4017 auto param38 = model->addOperand(&type2);
4018 auto param39 = model->addOperand(&type2);
4019 auto param40 = model->addOperand(&type2);
4020 auto param41 = model->addOperand(&type2);
4021 auto layout = model->addOperand(&type0);
4022 auto op44 = model->addOperand(&type47);
4023 // Phase 2, operations
4024 static int32_t param36_init[] = {1};
4025 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
4026 static int32_t param37_init[] = {2};
4027 model->setOperandValue(param37, param37_init, sizeof(int32_t) * 1);
4028 static int32_t param38_init[] = {2};
4029 model->setOperandValue(param38, param38_init, sizeof(int32_t) * 1);
4030 static int32_t param39_init[] = {2};
4031 model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
4032 static int32_t param40_init[] = {2};
4033 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
4034 static int32_t param41_init[] = {0};
4035 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
4036 static bool8 layout_init[] = {true};
4037 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4038 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {op14, param36, param37, param38, param39, param40, param41, layout}, {op44});
4039 // Phase 3, inputs and outputs
4040 model->identifyInputsAndOutputs(
4041 {op14},
4042 {op44});
4043 assert(model->isValid());
4044 }
4045
is_ignored_dynamic_output_shape_nchw_quant8_5(int i)4046 inline bool is_ignored_dynamic_output_shape_nchw_quant8_5(int i) {
4047 static std::set<int> ignore = {};
4048 return ignore.find(i) != ignore.end();
4049 }
4050
CreateModel_zero_sized_nhwc(Model * model)4051 void CreateModel_zero_sized_nhwc(Model *model) {
4052 OperandType type0(Type::BOOL, {});
4053 OperandType type10(Type::TENSOR_FLOAT32, {1, 8});
4054 OperandType type11(Type::TENSOR_FLOAT32, {0});
4055 OperandType type12(Type::TENSOR_INT32, {0});
4056 OperandType type13(Type::TENSOR_FLOAT32, {0, 4});
4057 OperandType type14(Type::TENSOR_INT32, {1});
4058 OperandType type15(Type::FLOAT32, {});
4059 OperandType type16(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
4060 OperandType type17(Type::TENSOR_FLOAT32, {0, 2, 2, 1});
4061 OperandType type18(Type::TENSOR_FLOAT32, {0, 1, 1, 1});
4062 OperandType type2(Type::INT32, {});
4063 OperandType type9(Type::TENSOR_FLOAT32, {1, 2});
4064 // Phase 1, operands
4065 auto scores = model->addOperand(&type9);
4066 auto roi = model->addOperand(&type10);
4067 auto param42 = model->addOperand(&type14);
4068 auto param43 = model->addOperand(&type15);
4069 auto param44 = model->addOperand(&type2);
4070 auto param45 = model->addOperand(&type2);
4071 auto param46 = model->addOperand(&type15);
4072 auto param47 = model->addOperand(&type15);
4073 auto param48 = model->addOperand(&type15);
4074 auto scoresOut = model->addOperand(&type11);
4075 auto roiOut = model->addOperand(&type13);
4076 auto classesOut = model->addOperand(&type12);
4077 auto batchSplitOut = model->addOperand(&type12);
4078 auto in = model->addOperand(&type16);
4079 auto param49 = model->addOperand(&type2);
4080 auto param50 = model->addOperand(&type2);
4081 auto param51 = model->addOperand(&type15);
4082 auto param52 = model->addOperand(&type15);
4083 auto param53 = model->addOperand(&type2);
4084 auto param54 = model->addOperand(&type2);
4085 auto layout = model->addOperand(&type0);
4086 auto featureMap = model->addOperand(&type17);
4087 auto param55 = model->addOperand(&type2);
4088 auto param56 = model->addOperand(&type2);
4089 auto param57 = model->addOperand(&type2);
4090 auto param58 = model->addOperand(&type2);
4091 auto param59 = model->addOperand(&type2);
4092 auto param60 = model->addOperand(&type2);
4093 auto param61 = model->addOperand(&type2);
4094 auto param62 = model->addOperand(&type2);
4095 auto param63 = model->addOperand(&type2);
4096 auto out = model->addOperand(&type18);
4097 // Phase 2, operations
4098 static float scores_init[] = {0.9f, 0.1f};
4099 model->setOperandValue(scores, scores_init, sizeof(float) * 2);
4100 static float roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
4101 model->setOperandValue(roi, roi_init, sizeof(float) * 8);
4102 static int32_t param42_init[] = {0};
4103 model->setOperandValue(param42, param42_init, sizeof(int32_t) * 1);
4104 static float param43_init[] = {0.3f};
4105 model->setOperandValue(param43, param43_init, sizeof(float) * 1);
4106 static int32_t param44_init[] = {-1};
4107 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
4108 static int32_t param45_init[] = {0};
4109 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
4110 static float param46_init[] = {0.4f};
4111 model->setOperandValue(param46, param46_init, sizeof(float) * 1);
4112 static float param47_init[] = {1.0f};
4113 model->setOperandValue(param47, param47_init, sizeof(float) * 1);
4114 static float param48_init[] = {0.3f};
4115 model->setOperandValue(param48, param48_init, sizeof(float) * 1);
4116 static int32_t param49_init[] = {2};
4117 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
4118 static int32_t param50_init[] = {2};
4119 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
4120 static float param51_init[] = {2.0f};
4121 model->setOperandValue(param51, param51_init, sizeof(float) * 1);
4122 static float param52_init[] = {2.0f};
4123 model->setOperandValue(param52, param52_init, sizeof(float) * 1);
4124 static int32_t param53_init[] = {4};
4125 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
4126 static int32_t param54_init[] = {4};
4127 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
4128 static bool8 layout_init[] = {false};
4129 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4130 static int32_t param55_init[] = {0};
4131 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
4132 static int32_t param56_init[] = {0};
4133 model->setOperandValue(param56, param56_init, sizeof(int32_t) * 1);
4134 static int32_t param57_init[] = {0};
4135 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
4136 static int32_t param58_init[] = {0};
4137 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
4138 static int32_t param59_init[] = {1};
4139 model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
4140 static int32_t param60_init[] = {1};
4141 model->setOperandValue(param60, param60_init, sizeof(int32_t) * 1);
4142 static int32_t param61_init[] = {2};
4143 model->setOperandValue(param61, param61_init, sizeof(int32_t) * 1);
4144 static int32_t param62_init[] = {2};
4145 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
4146 static int32_t param63_init[] = {0};
4147 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
4148 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param42, param43, param44, param45, param46, param47, param48}, {scoresOut, roiOut, classesOut, batchSplitOut});
4149 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param49, param50, param51, param52, param53, param54, layout}, {featureMap});
4150 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap, param55, param56, param57, param58, param59, param60, param61, param62, param63, layout}, {out});
4151 // Phase 3, inputs and outputs
4152 model->identifyInputsAndOutputs(
4153 {in},
4154 {scoresOut, classesOut, out});
4155 assert(model->isValid());
4156 }
4157
is_ignored_zero_sized_nhwc(int i)4158 inline bool is_ignored_zero_sized_nhwc(int i) {
4159 static std::set<int> ignore = {};
4160 return ignore.find(i) != ignore.end();
4161 }
4162
CreateModel_zero_sized_nhwc_relaxed(Model * model)4163 void CreateModel_zero_sized_nhwc_relaxed(Model *model) {
4164 OperandType type0(Type::BOOL, {});
4165 OperandType type10(Type::TENSOR_FLOAT32, {1, 8});
4166 OperandType type11(Type::TENSOR_FLOAT32, {0});
4167 OperandType type12(Type::TENSOR_INT32, {0});
4168 OperandType type13(Type::TENSOR_FLOAT32, {0, 4});
4169 OperandType type14(Type::TENSOR_INT32, {1});
4170 OperandType type15(Type::FLOAT32, {});
4171 OperandType type16(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
4172 OperandType type17(Type::TENSOR_FLOAT32, {0, 2, 2, 1});
4173 OperandType type18(Type::TENSOR_FLOAT32, {0, 1, 1, 1});
4174 OperandType type2(Type::INT32, {});
4175 OperandType type9(Type::TENSOR_FLOAT32, {1, 2});
4176 // Phase 1, operands
4177 auto scores = model->addOperand(&type9);
4178 auto roi = model->addOperand(&type10);
4179 auto param42 = model->addOperand(&type14);
4180 auto param43 = model->addOperand(&type15);
4181 auto param44 = model->addOperand(&type2);
4182 auto param45 = model->addOperand(&type2);
4183 auto param46 = model->addOperand(&type15);
4184 auto param47 = model->addOperand(&type15);
4185 auto param48 = model->addOperand(&type15);
4186 auto scoresOut = model->addOperand(&type11);
4187 auto roiOut = model->addOperand(&type13);
4188 auto classesOut = model->addOperand(&type12);
4189 auto batchSplitOut = model->addOperand(&type12);
4190 auto in = model->addOperand(&type16);
4191 auto param49 = model->addOperand(&type2);
4192 auto param50 = model->addOperand(&type2);
4193 auto param51 = model->addOperand(&type15);
4194 auto param52 = model->addOperand(&type15);
4195 auto param53 = model->addOperand(&type2);
4196 auto param54 = model->addOperand(&type2);
4197 auto layout = model->addOperand(&type0);
4198 auto featureMap = model->addOperand(&type17);
4199 auto param55 = model->addOperand(&type2);
4200 auto param56 = model->addOperand(&type2);
4201 auto param57 = model->addOperand(&type2);
4202 auto param58 = model->addOperand(&type2);
4203 auto param59 = model->addOperand(&type2);
4204 auto param60 = model->addOperand(&type2);
4205 auto param61 = model->addOperand(&type2);
4206 auto param62 = model->addOperand(&type2);
4207 auto param63 = model->addOperand(&type2);
4208 auto out = model->addOperand(&type18);
4209 // Phase 2, operations
4210 static float scores_init[] = {0.9f, 0.1f};
4211 model->setOperandValue(scores, scores_init, sizeof(float) * 2);
4212 static float roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
4213 model->setOperandValue(roi, roi_init, sizeof(float) * 8);
4214 static int32_t param42_init[] = {0};
4215 model->setOperandValue(param42, param42_init, sizeof(int32_t) * 1);
4216 static float param43_init[] = {0.3f};
4217 model->setOperandValue(param43, param43_init, sizeof(float) * 1);
4218 static int32_t param44_init[] = {-1};
4219 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
4220 static int32_t param45_init[] = {0};
4221 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
4222 static float param46_init[] = {0.4f};
4223 model->setOperandValue(param46, param46_init, sizeof(float) * 1);
4224 static float param47_init[] = {1.0f};
4225 model->setOperandValue(param47, param47_init, sizeof(float) * 1);
4226 static float param48_init[] = {0.3f};
4227 model->setOperandValue(param48, param48_init, sizeof(float) * 1);
4228 static int32_t param49_init[] = {2};
4229 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
4230 static int32_t param50_init[] = {2};
4231 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
4232 static float param51_init[] = {2.0f};
4233 model->setOperandValue(param51, param51_init, sizeof(float) * 1);
4234 static float param52_init[] = {2.0f};
4235 model->setOperandValue(param52, param52_init, sizeof(float) * 1);
4236 static int32_t param53_init[] = {4};
4237 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
4238 static int32_t param54_init[] = {4};
4239 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
4240 static bool8 layout_init[] = {false};
4241 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4242 static int32_t param55_init[] = {0};
4243 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
4244 static int32_t param56_init[] = {0};
4245 model->setOperandValue(param56, param56_init, sizeof(int32_t) * 1);
4246 static int32_t param57_init[] = {0};
4247 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
4248 static int32_t param58_init[] = {0};
4249 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
4250 static int32_t param59_init[] = {1};
4251 model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
4252 static int32_t param60_init[] = {1};
4253 model->setOperandValue(param60, param60_init, sizeof(int32_t) * 1);
4254 static int32_t param61_init[] = {2};
4255 model->setOperandValue(param61, param61_init, sizeof(int32_t) * 1);
4256 static int32_t param62_init[] = {2};
4257 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
4258 static int32_t param63_init[] = {0};
4259 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
4260 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param42, param43, param44, param45, param46, param47, param48}, {scoresOut, roiOut, classesOut, batchSplitOut});
4261 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param49, param50, param51, param52, param53, param54, layout}, {featureMap});
4262 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap, param55, param56, param57, param58, param59, param60, param61, param62, param63, layout}, {out});
4263 // Phase 3, inputs and outputs
4264 model->identifyInputsAndOutputs(
4265 {in},
4266 {scoresOut, classesOut, out});
4267 // Phase 4: set relaxed execution
4268 model->relaxComputationFloat32toFloat16(true);
4269 assert(model->isValid());
4270 }
4271
is_ignored_zero_sized_nhwc_relaxed(int i)4272 inline bool is_ignored_zero_sized_nhwc_relaxed(int i) {
4273 static std::set<int> ignore = {};
4274 return ignore.find(i) != ignore.end();
4275 }
4276
CreateModel_zero_sized_nhwc_quant8(Model * model)4277 void CreateModel_zero_sized_nhwc_quant8(Model *model) {
4278 OperandType type0(Type::BOOL, {});
4279 OperandType type12(Type::TENSOR_INT32, {0});
4280 OperandType type14(Type::TENSOR_INT32, {1});
4281 OperandType type15(Type::FLOAT32, {});
4282 OperandType type2(Type::INT32, {});
4283 OperandType type58(Type::TENSOR_QUANT8_ASYMM, {0, 2, 2, 1}, 0.1f, 128);
4284 OperandType type59(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 1}, 0.1f, 128);
4285 OperandType type60(Type::TENSOR_QUANT8_ASYMM, {0, 1, 1, 1}, 0.1f, 128);
4286 OperandType type61(Type::TENSOR_QUANT16_ASYMM, {1, 8}, 0.125f, 0);
4287 OperandType type62(Type::TENSOR_QUANT16_ASYMM, {0, 4}, 0.125f, 0);
4288 OperandType type63(Type::TENSOR_QUANT8_ASYMM, {1, 2}, 0.1f, 128);
4289 OperandType type64(Type::TENSOR_QUANT8_ASYMM, {0}, 0.1f, 128);
4290 // Phase 1, operands
4291 auto scores = model->addOperand(&type63);
4292 auto roi = model->addOperand(&type61);
4293 auto param42 = model->addOperand(&type14);
4294 auto param43 = model->addOperand(&type15);
4295 auto param44 = model->addOperand(&type2);
4296 auto param45 = model->addOperand(&type2);
4297 auto param46 = model->addOperand(&type15);
4298 auto param47 = model->addOperand(&type15);
4299 auto param48 = model->addOperand(&type15);
4300 auto scoresOut = model->addOperand(&type64);
4301 auto roiOut = model->addOperand(&type62);
4302 auto classesOut = model->addOperand(&type12);
4303 auto batchSplitOut = model->addOperand(&type12);
4304 auto in = model->addOperand(&type59);
4305 auto param49 = model->addOperand(&type2);
4306 auto param50 = model->addOperand(&type2);
4307 auto param51 = model->addOperand(&type15);
4308 auto param52 = model->addOperand(&type15);
4309 auto param53 = model->addOperand(&type2);
4310 auto param54 = model->addOperand(&type2);
4311 auto layout = model->addOperand(&type0);
4312 auto featureMap = model->addOperand(&type58);
4313 auto param55 = model->addOperand(&type2);
4314 auto param56 = model->addOperand(&type2);
4315 auto param57 = model->addOperand(&type2);
4316 auto param58 = model->addOperand(&type2);
4317 auto param59 = model->addOperand(&type2);
4318 auto param60 = model->addOperand(&type2);
4319 auto param61 = model->addOperand(&type2);
4320 auto param62 = model->addOperand(&type2);
4321 auto param63 = model->addOperand(&type2);
4322 auto out = model->addOperand(&type60);
4323 // Phase 2, operations
4324 static uint8_t scores_init[] = {137, 129};
4325 model->setOperandValue(scores, scores_init, sizeof(uint8_t) * 2);
4326 static uint16_t roi_init[] = {8, 8, 80, 80, 0, 0, 80, 80};
4327 model->setOperandValue(roi, roi_init, sizeof(uint16_t) * 8);
4328 static int32_t param42_init[] = {0};
4329 model->setOperandValue(param42, param42_init, sizeof(int32_t) * 1);
4330 static float param43_init[] = {0.3f};
4331 model->setOperandValue(param43, param43_init, sizeof(float) * 1);
4332 static int32_t param44_init[] = {-1};
4333 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
4334 static int32_t param45_init[] = {0};
4335 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
4336 static float param46_init[] = {0.4f};
4337 model->setOperandValue(param46, param46_init, sizeof(float) * 1);
4338 static float param47_init[] = {1.0f};
4339 model->setOperandValue(param47, param47_init, sizeof(float) * 1);
4340 static float param48_init[] = {0.3f};
4341 model->setOperandValue(param48, param48_init, sizeof(float) * 1);
4342 static int32_t param49_init[] = {2};
4343 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
4344 static int32_t param50_init[] = {2};
4345 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
4346 static float param51_init[] = {2.0f};
4347 model->setOperandValue(param51, param51_init, sizeof(float) * 1);
4348 static float param52_init[] = {2.0f};
4349 model->setOperandValue(param52, param52_init, sizeof(float) * 1);
4350 static int32_t param53_init[] = {4};
4351 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
4352 static int32_t param54_init[] = {4};
4353 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
4354 static bool8 layout_init[] = {false};
4355 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4356 static int32_t param55_init[] = {0};
4357 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
4358 static int32_t param56_init[] = {0};
4359 model->setOperandValue(param56, param56_init, sizeof(int32_t) * 1);
4360 static int32_t param57_init[] = {0};
4361 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
4362 static int32_t param58_init[] = {0};
4363 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
4364 static int32_t param59_init[] = {1};
4365 model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
4366 static int32_t param60_init[] = {1};
4367 model->setOperandValue(param60, param60_init, sizeof(int32_t) * 1);
4368 static int32_t param61_init[] = {2};
4369 model->setOperandValue(param61, param61_init, sizeof(int32_t) * 1);
4370 static int32_t param62_init[] = {2};
4371 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
4372 static int32_t param63_init[] = {0};
4373 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
4374 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param42, param43, param44, param45, param46, param47, param48}, {scoresOut, roiOut, classesOut, batchSplitOut});
4375 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param49, param50, param51, param52, param53, param54, layout}, {featureMap});
4376 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap, param55, param56, param57, param58, param59, param60, param61, param62, param63, layout}, {out});
4377 // Phase 3, inputs and outputs
4378 model->identifyInputsAndOutputs(
4379 {in},
4380 {scoresOut, classesOut, out});
4381 assert(model->isValid());
4382 }
4383
is_ignored_zero_sized_nhwc_quant8(int i)4384 inline bool is_ignored_zero_sized_nhwc_quant8(int i) {
4385 static std::set<int> ignore = {};
4386 return ignore.find(i) != ignore.end();
4387 }
4388
CreateModel_zero_sized_nhwc_float16(Model * model)4389 void CreateModel_zero_sized_nhwc_float16(Model *model) {
4390 OperandType type0(Type::BOOL, {});
4391 OperandType type12(Type::TENSOR_INT32, {0});
4392 OperandType type14(Type::TENSOR_INT32, {1});
4393 OperandType type2(Type::INT32, {});
4394 OperandType type65(Type::TENSOR_FLOAT16, {0, 2, 2, 1});
4395 OperandType type66(Type::TENSOR_FLOAT16, {1, 1, 1, 1});
4396 OperandType type67(Type::TENSOR_FLOAT16, {0, 1, 1, 1});
4397 OperandType type68(Type::FLOAT16, {});
4398 OperandType type69(Type::TENSOR_FLOAT16, {1, 8});
4399 OperandType type70(Type::TENSOR_FLOAT16, {0, 4});
4400 OperandType type71(Type::TENSOR_FLOAT16, {1, 2});
4401 OperandType type72(Type::TENSOR_FLOAT16, {0});
4402 // Phase 1, operands
4403 auto scores = model->addOperand(&type71);
4404 auto roi = model->addOperand(&type69);
4405 auto param42 = model->addOperand(&type14);
4406 auto param43 = model->addOperand(&type68);
4407 auto param44 = model->addOperand(&type2);
4408 auto param45 = model->addOperand(&type2);
4409 auto param46 = model->addOperand(&type68);
4410 auto param47 = model->addOperand(&type68);
4411 auto param48 = model->addOperand(&type68);
4412 auto scoresOut = model->addOperand(&type72);
4413 auto roiOut = model->addOperand(&type70);
4414 auto classesOut = model->addOperand(&type12);
4415 auto batchSplitOut = model->addOperand(&type12);
4416 auto in = model->addOperand(&type66);
4417 auto param49 = model->addOperand(&type2);
4418 auto param50 = model->addOperand(&type2);
4419 auto param51 = model->addOperand(&type68);
4420 auto param52 = model->addOperand(&type68);
4421 auto param53 = model->addOperand(&type2);
4422 auto param54 = model->addOperand(&type2);
4423 auto layout = model->addOperand(&type0);
4424 auto featureMap = model->addOperand(&type65);
4425 auto param55 = model->addOperand(&type2);
4426 auto param56 = model->addOperand(&type2);
4427 auto param57 = model->addOperand(&type2);
4428 auto param58 = model->addOperand(&type2);
4429 auto param59 = model->addOperand(&type2);
4430 auto param60 = model->addOperand(&type2);
4431 auto param61 = model->addOperand(&type2);
4432 auto param62 = model->addOperand(&type2);
4433 auto param63 = model->addOperand(&type2);
4434 auto out = model->addOperand(&type67);
4435 // Phase 2, operations
4436 static _Float16 scores_init[] = {0.8999999761581421f, 0.10000000149011612f};
4437 model->setOperandValue(scores, scores_init, sizeof(_Float16) * 2);
4438 static _Float16 roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
4439 model->setOperandValue(roi, roi_init, sizeof(_Float16) * 8);
4440 static int32_t param42_init[] = {0};
4441 model->setOperandValue(param42, param42_init, sizeof(int32_t) * 1);
4442 static _Float16 param43_init[] = {0.30000001192092896f};
4443 model->setOperandValue(param43, param43_init, sizeof(_Float16) * 1);
4444 static int32_t param44_init[] = {-1};
4445 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
4446 static int32_t param45_init[] = {0};
4447 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
4448 static _Float16 param46_init[] = {0.4000000059604645f};
4449 model->setOperandValue(param46, param46_init, sizeof(_Float16) * 1);
4450 static _Float16 param47_init[] = {1.0f};
4451 model->setOperandValue(param47, param47_init, sizeof(_Float16) * 1);
4452 static _Float16 param48_init[] = {0.30000001192092896f};
4453 model->setOperandValue(param48, param48_init, sizeof(_Float16) * 1);
4454 static int32_t param49_init[] = {2};
4455 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
4456 static int32_t param50_init[] = {2};
4457 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
4458 static _Float16 param51_init[] = {2.0f};
4459 model->setOperandValue(param51, param51_init, sizeof(_Float16) * 1);
4460 static _Float16 param52_init[] = {2.0f};
4461 model->setOperandValue(param52, param52_init, sizeof(_Float16) * 1);
4462 static int32_t param53_init[] = {4};
4463 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
4464 static int32_t param54_init[] = {4};
4465 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
4466 static bool8 layout_init[] = {false};
4467 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4468 static int32_t param55_init[] = {0};
4469 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
4470 static int32_t param56_init[] = {0};
4471 model->setOperandValue(param56, param56_init, sizeof(int32_t) * 1);
4472 static int32_t param57_init[] = {0};
4473 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
4474 static int32_t param58_init[] = {0};
4475 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
4476 static int32_t param59_init[] = {1};
4477 model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
4478 static int32_t param60_init[] = {1};
4479 model->setOperandValue(param60, param60_init, sizeof(int32_t) * 1);
4480 static int32_t param61_init[] = {2};
4481 model->setOperandValue(param61, param61_init, sizeof(int32_t) * 1);
4482 static int32_t param62_init[] = {2};
4483 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
4484 static int32_t param63_init[] = {0};
4485 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
4486 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param42, param43, param44, param45, param46, param47, param48}, {scoresOut, roiOut, classesOut, batchSplitOut});
4487 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param49, param50, param51, param52, param53, param54, layout}, {featureMap});
4488 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap, param55, param56, param57, param58, param59, param60, param61, param62, param63, layout}, {out});
4489 // Phase 3, inputs and outputs
4490 model->identifyInputsAndOutputs(
4491 {in},
4492 {scoresOut, classesOut, out});
4493 assert(model->isValid());
4494 }
4495
is_ignored_zero_sized_nhwc_float16(int i)4496 inline bool is_ignored_zero_sized_nhwc_float16(int i) {
4497 static std::set<int> ignore = {};
4498 return ignore.find(i) != ignore.end();
4499 }
4500
CreateModel_zero_sized_nchw(Model * model)4501 void CreateModel_zero_sized_nchw(Model *model) {
4502 OperandType type0(Type::BOOL, {});
4503 OperandType type10(Type::TENSOR_FLOAT32, {1, 8});
4504 OperandType type11(Type::TENSOR_FLOAT32, {0});
4505 OperandType type12(Type::TENSOR_INT32, {0});
4506 OperandType type13(Type::TENSOR_FLOAT32, {0, 4});
4507 OperandType type14(Type::TENSOR_INT32, {1});
4508 OperandType type15(Type::FLOAT32, {});
4509 OperandType type16(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
4510 OperandType type18(Type::TENSOR_FLOAT32, {0, 1, 1, 1});
4511 OperandType type2(Type::INT32, {});
4512 OperandType type73(Type::TENSOR_FLOAT32, {0, 1, 2, 2});
4513 OperandType type9(Type::TENSOR_FLOAT32, {1, 2});
4514 // Phase 1, operands
4515 auto scores = model->addOperand(&type9);
4516 auto roi = model->addOperand(&type10);
4517 auto param42 = model->addOperand(&type14);
4518 auto param43 = model->addOperand(&type15);
4519 auto param44 = model->addOperand(&type2);
4520 auto param45 = model->addOperand(&type2);
4521 auto param46 = model->addOperand(&type15);
4522 auto param47 = model->addOperand(&type15);
4523 auto param48 = model->addOperand(&type15);
4524 auto scoresOut = model->addOperand(&type11);
4525 auto roiOut = model->addOperand(&type13);
4526 auto classesOut = model->addOperand(&type12);
4527 auto batchSplitOut = model->addOperand(&type12);
4528 auto in = model->addOperand(&type16);
4529 auto param49 = model->addOperand(&type2);
4530 auto param50 = model->addOperand(&type2);
4531 auto param51 = model->addOperand(&type15);
4532 auto param52 = model->addOperand(&type15);
4533 auto param53 = model->addOperand(&type2);
4534 auto param54 = model->addOperand(&type2);
4535 auto layout = model->addOperand(&type0);
4536 auto featureMap = model->addOperand(&type73);
4537 auto param55 = model->addOperand(&type2);
4538 auto param56 = model->addOperand(&type2);
4539 auto param57 = model->addOperand(&type2);
4540 auto param58 = model->addOperand(&type2);
4541 auto param59 = model->addOperand(&type2);
4542 auto param60 = model->addOperand(&type2);
4543 auto param61 = model->addOperand(&type2);
4544 auto param62 = model->addOperand(&type2);
4545 auto param63 = model->addOperand(&type2);
4546 auto out = model->addOperand(&type18);
4547 // Phase 2, operations
4548 static float scores_init[] = {0.9f, 0.1f};
4549 model->setOperandValue(scores, scores_init, sizeof(float) * 2);
4550 static float roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
4551 model->setOperandValue(roi, roi_init, sizeof(float) * 8);
4552 static int32_t param42_init[] = {0};
4553 model->setOperandValue(param42, param42_init, sizeof(int32_t) * 1);
4554 static float param43_init[] = {0.3f};
4555 model->setOperandValue(param43, param43_init, sizeof(float) * 1);
4556 static int32_t param44_init[] = {-1};
4557 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
4558 static int32_t param45_init[] = {0};
4559 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
4560 static float param46_init[] = {0.4f};
4561 model->setOperandValue(param46, param46_init, sizeof(float) * 1);
4562 static float param47_init[] = {1.0f};
4563 model->setOperandValue(param47, param47_init, sizeof(float) * 1);
4564 static float param48_init[] = {0.3f};
4565 model->setOperandValue(param48, param48_init, sizeof(float) * 1);
4566 static int32_t param49_init[] = {2};
4567 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
4568 static int32_t param50_init[] = {2};
4569 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
4570 static float param51_init[] = {2.0f};
4571 model->setOperandValue(param51, param51_init, sizeof(float) * 1);
4572 static float param52_init[] = {2.0f};
4573 model->setOperandValue(param52, param52_init, sizeof(float) * 1);
4574 static int32_t param53_init[] = {4};
4575 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
4576 static int32_t param54_init[] = {4};
4577 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
4578 static bool8 layout_init[] = {true};
4579 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4580 static int32_t param55_init[] = {0};
4581 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
4582 static int32_t param56_init[] = {0};
4583 model->setOperandValue(param56, param56_init, sizeof(int32_t) * 1);
4584 static int32_t param57_init[] = {0};
4585 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
4586 static int32_t param58_init[] = {0};
4587 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
4588 static int32_t param59_init[] = {1};
4589 model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
4590 static int32_t param60_init[] = {1};
4591 model->setOperandValue(param60, param60_init, sizeof(int32_t) * 1);
4592 static int32_t param61_init[] = {2};
4593 model->setOperandValue(param61, param61_init, sizeof(int32_t) * 1);
4594 static int32_t param62_init[] = {2};
4595 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
4596 static int32_t param63_init[] = {0};
4597 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
4598 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param42, param43, param44, param45, param46, param47, param48}, {scoresOut, roiOut, classesOut, batchSplitOut});
4599 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param49, param50, param51, param52, param53, param54, layout}, {featureMap});
4600 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap, param55, param56, param57, param58, param59, param60, param61, param62, param63, layout}, {out});
4601 // Phase 3, inputs and outputs
4602 model->identifyInputsAndOutputs(
4603 {in},
4604 {scoresOut, classesOut, out});
4605 assert(model->isValid());
4606 }
4607
is_ignored_zero_sized_nchw(int i)4608 inline bool is_ignored_zero_sized_nchw(int i) {
4609 static std::set<int> ignore = {};
4610 return ignore.find(i) != ignore.end();
4611 }
4612
CreateModel_zero_sized_nchw_relaxed(Model * model)4613 void CreateModel_zero_sized_nchw_relaxed(Model *model) {
4614 OperandType type0(Type::BOOL, {});
4615 OperandType type10(Type::TENSOR_FLOAT32, {1, 8});
4616 OperandType type11(Type::TENSOR_FLOAT32, {0});
4617 OperandType type12(Type::TENSOR_INT32, {0});
4618 OperandType type13(Type::TENSOR_FLOAT32, {0, 4});
4619 OperandType type14(Type::TENSOR_INT32, {1});
4620 OperandType type15(Type::FLOAT32, {});
4621 OperandType type16(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
4622 OperandType type18(Type::TENSOR_FLOAT32, {0, 1, 1, 1});
4623 OperandType type2(Type::INT32, {});
4624 OperandType type73(Type::TENSOR_FLOAT32, {0, 1, 2, 2});
4625 OperandType type9(Type::TENSOR_FLOAT32, {1, 2});
4626 // Phase 1, operands
4627 auto scores = model->addOperand(&type9);
4628 auto roi = model->addOperand(&type10);
4629 auto param42 = model->addOperand(&type14);
4630 auto param43 = model->addOperand(&type15);
4631 auto param44 = model->addOperand(&type2);
4632 auto param45 = model->addOperand(&type2);
4633 auto param46 = model->addOperand(&type15);
4634 auto param47 = model->addOperand(&type15);
4635 auto param48 = model->addOperand(&type15);
4636 auto scoresOut = model->addOperand(&type11);
4637 auto roiOut = model->addOperand(&type13);
4638 auto classesOut = model->addOperand(&type12);
4639 auto batchSplitOut = model->addOperand(&type12);
4640 auto in = model->addOperand(&type16);
4641 auto param49 = model->addOperand(&type2);
4642 auto param50 = model->addOperand(&type2);
4643 auto param51 = model->addOperand(&type15);
4644 auto param52 = model->addOperand(&type15);
4645 auto param53 = model->addOperand(&type2);
4646 auto param54 = model->addOperand(&type2);
4647 auto layout = model->addOperand(&type0);
4648 auto featureMap = model->addOperand(&type73);
4649 auto param55 = model->addOperand(&type2);
4650 auto param56 = model->addOperand(&type2);
4651 auto param57 = model->addOperand(&type2);
4652 auto param58 = model->addOperand(&type2);
4653 auto param59 = model->addOperand(&type2);
4654 auto param60 = model->addOperand(&type2);
4655 auto param61 = model->addOperand(&type2);
4656 auto param62 = model->addOperand(&type2);
4657 auto param63 = model->addOperand(&type2);
4658 auto out = model->addOperand(&type18);
4659 // Phase 2, operations
4660 static float scores_init[] = {0.9f, 0.1f};
4661 model->setOperandValue(scores, scores_init, sizeof(float) * 2);
4662 static float roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
4663 model->setOperandValue(roi, roi_init, sizeof(float) * 8);
4664 static int32_t param42_init[] = {0};
4665 model->setOperandValue(param42, param42_init, sizeof(int32_t) * 1);
4666 static float param43_init[] = {0.3f};
4667 model->setOperandValue(param43, param43_init, sizeof(float) * 1);
4668 static int32_t param44_init[] = {-1};
4669 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
4670 static int32_t param45_init[] = {0};
4671 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
4672 static float param46_init[] = {0.4f};
4673 model->setOperandValue(param46, param46_init, sizeof(float) * 1);
4674 static float param47_init[] = {1.0f};
4675 model->setOperandValue(param47, param47_init, sizeof(float) * 1);
4676 static float param48_init[] = {0.3f};
4677 model->setOperandValue(param48, param48_init, sizeof(float) * 1);
4678 static int32_t param49_init[] = {2};
4679 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
4680 static int32_t param50_init[] = {2};
4681 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
4682 static float param51_init[] = {2.0f};
4683 model->setOperandValue(param51, param51_init, sizeof(float) * 1);
4684 static float param52_init[] = {2.0f};
4685 model->setOperandValue(param52, param52_init, sizeof(float) * 1);
4686 static int32_t param53_init[] = {4};
4687 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
4688 static int32_t param54_init[] = {4};
4689 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
4690 static bool8 layout_init[] = {true};
4691 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4692 static int32_t param55_init[] = {0};
4693 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
4694 static int32_t param56_init[] = {0};
4695 model->setOperandValue(param56, param56_init, sizeof(int32_t) * 1);
4696 static int32_t param57_init[] = {0};
4697 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
4698 static int32_t param58_init[] = {0};
4699 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
4700 static int32_t param59_init[] = {1};
4701 model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
4702 static int32_t param60_init[] = {1};
4703 model->setOperandValue(param60, param60_init, sizeof(int32_t) * 1);
4704 static int32_t param61_init[] = {2};
4705 model->setOperandValue(param61, param61_init, sizeof(int32_t) * 1);
4706 static int32_t param62_init[] = {2};
4707 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
4708 static int32_t param63_init[] = {0};
4709 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
4710 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param42, param43, param44, param45, param46, param47, param48}, {scoresOut, roiOut, classesOut, batchSplitOut});
4711 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param49, param50, param51, param52, param53, param54, layout}, {featureMap});
4712 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap, param55, param56, param57, param58, param59, param60, param61, param62, param63, layout}, {out});
4713 // Phase 3, inputs and outputs
4714 model->identifyInputsAndOutputs(
4715 {in},
4716 {scoresOut, classesOut, out});
4717 // Phase 4: set relaxed execution
4718 model->relaxComputationFloat32toFloat16(true);
4719 assert(model->isValid());
4720 }
4721
is_ignored_zero_sized_nchw_relaxed(int i)4722 inline bool is_ignored_zero_sized_nchw_relaxed(int i) {
4723 static std::set<int> ignore = {};
4724 return ignore.find(i) != ignore.end();
4725 }
4726
CreateModel_zero_sized_nchw_quant8(Model * model)4727 void CreateModel_zero_sized_nchw_quant8(Model *model) {
4728 OperandType type0(Type::BOOL, {});
4729 OperandType type12(Type::TENSOR_INT32, {0});
4730 OperandType type14(Type::TENSOR_INT32, {1});
4731 OperandType type15(Type::FLOAT32, {});
4732 OperandType type2(Type::INT32, {});
4733 OperandType type59(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 1}, 0.1f, 128);
4734 OperandType type60(Type::TENSOR_QUANT8_ASYMM, {0, 1, 1, 1}, 0.1f, 128);
4735 OperandType type61(Type::TENSOR_QUANT16_ASYMM, {1, 8}, 0.125f, 0);
4736 OperandType type62(Type::TENSOR_QUANT16_ASYMM, {0, 4}, 0.125f, 0);
4737 OperandType type63(Type::TENSOR_QUANT8_ASYMM, {1, 2}, 0.1f, 128);
4738 OperandType type64(Type::TENSOR_QUANT8_ASYMM, {0}, 0.1f, 128);
4739 OperandType type74(Type::TENSOR_QUANT8_ASYMM, {0, 1, 2, 2}, 0.1f, 128);
4740 // Phase 1, operands
4741 auto scores = model->addOperand(&type63);
4742 auto roi = model->addOperand(&type61);
4743 auto param42 = model->addOperand(&type14);
4744 auto param43 = model->addOperand(&type15);
4745 auto param44 = model->addOperand(&type2);
4746 auto param45 = model->addOperand(&type2);
4747 auto param46 = model->addOperand(&type15);
4748 auto param47 = model->addOperand(&type15);
4749 auto param48 = model->addOperand(&type15);
4750 auto scoresOut = model->addOperand(&type64);
4751 auto roiOut = model->addOperand(&type62);
4752 auto classesOut = model->addOperand(&type12);
4753 auto batchSplitOut = model->addOperand(&type12);
4754 auto in = model->addOperand(&type59);
4755 auto param49 = model->addOperand(&type2);
4756 auto param50 = model->addOperand(&type2);
4757 auto param51 = model->addOperand(&type15);
4758 auto param52 = model->addOperand(&type15);
4759 auto param53 = model->addOperand(&type2);
4760 auto param54 = model->addOperand(&type2);
4761 auto layout = model->addOperand(&type0);
4762 auto featureMap = model->addOperand(&type74);
4763 auto param55 = model->addOperand(&type2);
4764 auto param56 = model->addOperand(&type2);
4765 auto param57 = model->addOperand(&type2);
4766 auto param58 = model->addOperand(&type2);
4767 auto param59 = model->addOperand(&type2);
4768 auto param60 = model->addOperand(&type2);
4769 auto param61 = model->addOperand(&type2);
4770 auto param62 = model->addOperand(&type2);
4771 auto param63 = model->addOperand(&type2);
4772 auto out = model->addOperand(&type60);
4773 // Phase 2, operations
4774 static uint8_t scores_init[] = {137, 129};
4775 model->setOperandValue(scores, scores_init, sizeof(uint8_t) * 2);
4776 static uint16_t roi_init[] = {8, 8, 80, 80, 0, 0, 80, 80};
4777 model->setOperandValue(roi, roi_init, sizeof(uint16_t) * 8);
4778 static int32_t param42_init[] = {0};
4779 model->setOperandValue(param42, param42_init, sizeof(int32_t) * 1);
4780 static float param43_init[] = {0.3f};
4781 model->setOperandValue(param43, param43_init, sizeof(float) * 1);
4782 static int32_t param44_init[] = {-1};
4783 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
4784 static int32_t param45_init[] = {0};
4785 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
4786 static float param46_init[] = {0.4f};
4787 model->setOperandValue(param46, param46_init, sizeof(float) * 1);
4788 static float param47_init[] = {1.0f};
4789 model->setOperandValue(param47, param47_init, sizeof(float) * 1);
4790 static float param48_init[] = {0.3f};
4791 model->setOperandValue(param48, param48_init, sizeof(float) * 1);
4792 static int32_t param49_init[] = {2};
4793 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
4794 static int32_t param50_init[] = {2};
4795 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
4796 static float param51_init[] = {2.0f};
4797 model->setOperandValue(param51, param51_init, sizeof(float) * 1);
4798 static float param52_init[] = {2.0f};
4799 model->setOperandValue(param52, param52_init, sizeof(float) * 1);
4800 static int32_t param53_init[] = {4};
4801 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
4802 static int32_t param54_init[] = {4};
4803 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
4804 static bool8 layout_init[] = {true};
4805 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4806 static int32_t param55_init[] = {0};
4807 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
4808 static int32_t param56_init[] = {0};
4809 model->setOperandValue(param56, param56_init, sizeof(int32_t) * 1);
4810 static int32_t param57_init[] = {0};
4811 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
4812 static int32_t param58_init[] = {0};
4813 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
4814 static int32_t param59_init[] = {1};
4815 model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
4816 static int32_t param60_init[] = {1};
4817 model->setOperandValue(param60, param60_init, sizeof(int32_t) * 1);
4818 static int32_t param61_init[] = {2};
4819 model->setOperandValue(param61, param61_init, sizeof(int32_t) * 1);
4820 static int32_t param62_init[] = {2};
4821 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
4822 static int32_t param63_init[] = {0};
4823 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
4824 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param42, param43, param44, param45, param46, param47, param48}, {scoresOut, roiOut, classesOut, batchSplitOut});
4825 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param49, param50, param51, param52, param53, param54, layout}, {featureMap});
4826 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap, param55, param56, param57, param58, param59, param60, param61, param62, param63, layout}, {out});
4827 // Phase 3, inputs and outputs
4828 model->identifyInputsAndOutputs(
4829 {in},
4830 {scoresOut, classesOut, out});
4831 assert(model->isValid());
4832 }
4833
is_ignored_zero_sized_nchw_quant8(int i)4834 inline bool is_ignored_zero_sized_nchw_quant8(int i) {
4835 static std::set<int> ignore = {};
4836 return ignore.find(i) != ignore.end();
4837 }
4838
CreateModel_zero_sized_nchw_float16(Model * model)4839 void CreateModel_zero_sized_nchw_float16(Model *model) {
4840 OperandType type0(Type::BOOL, {});
4841 OperandType type12(Type::TENSOR_INT32, {0});
4842 OperandType type14(Type::TENSOR_INT32, {1});
4843 OperandType type2(Type::INT32, {});
4844 OperandType type66(Type::TENSOR_FLOAT16, {1, 1, 1, 1});
4845 OperandType type67(Type::TENSOR_FLOAT16, {0, 1, 1, 1});
4846 OperandType type68(Type::FLOAT16, {});
4847 OperandType type69(Type::TENSOR_FLOAT16, {1, 8});
4848 OperandType type70(Type::TENSOR_FLOAT16, {0, 4});
4849 OperandType type71(Type::TENSOR_FLOAT16, {1, 2});
4850 OperandType type72(Type::TENSOR_FLOAT16, {0});
4851 OperandType type75(Type::TENSOR_FLOAT16, {0, 1, 2, 2});
4852 // Phase 1, operands
4853 auto scores = model->addOperand(&type71);
4854 auto roi = model->addOperand(&type69);
4855 auto param42 = model->addOperand(&type14);
4856 auto param43 = model->addOperand(&type68);
4857 auto param44 = model->addOperand(&type2);
4858 auto param45 = model->addOperand(&type2);
4859 auto param46 = model->addOperand(&type68);
4860 auto param47 = model->addOperand(&type68);
4861 auto param48 = model->addOperand(&type68);
4862 auto scoresOut = model->addOperand(&type72);
4863 auto roiOut = model->addOperand(&type70);
4864 auto classesOut = model->addOperand(&type12);
4865 auto batchSplitOut = model->addOperand(&type12);
4866 auto in = model->addOperand(&type66);
4867 auto param49 = model->addOperand(&type2);
4868 auto param50 = model->addOperand(&type2);
4869 auto param51 = model->addOperand(&type68);
4870 auto param52 = model->addOperand(&type68);
4871 auto param53 = model->addOperand(&type2);
4872 auto param54 = model->addOperand(&type2);
4873 auto layout = model->addOperand(&type0);
4874 auto featureMap = model->addOperand(&type75);
4875 auto param55 = model->addOperand(&type2);
4876 auto param56 = model->addOperand(&type2);
4877 auto param57 = model->addOperand(&type2);
4878 auto param58 = model->addOperand(&type2);
4879 auto param59 = model->addOperand(&type2);
4880 auto param60 = model->addOperand(&type2);
4881 auto param61 = model->addOperand(&type2);
4882 auto param62 = model->addOperand(&type2);
4883 auto param63 = model->addOperand(&type2);
4884 auto out = model->addOperand(&type67);
4885 // Phase 2, operations
4886 static _Float16 scores_init[] = {0.8999999761581421f, 0.10000000149011612f};
4887 model->setOperandValue(scores, scores_init, sizeof(_Float16) * 2);
4888 static _Float16 roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
4889 model->setOperandValue(roi, roi_init, sizeof(_Float16) * 8);
4890 static int32_t param42_init[] = {0};
4891 model->setOperandValue(param42, param42_init, sizeof(int32_t) * 1);
4892 static _Float16 param43_init[] = {0.30000001192092896f};
4893 model->setOperandValue(param43, param43_init, sizeof(_Float16) * 1);
4894 static int32_t param44_init[] = {-1};
4895 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
4896 static int32_t param45_init[] = {0};
4897 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
4898 static _Float16 param46_init[] = {0.4000000059604645f};
4899 model->setOperandValue(param46, param46_init, sizeof(_Float16) * 1);
4900 static _Float16 param47_init[] = {1.0f};
4901 model->setOperandValue(param47, param47_init, sizeof(_Float16) * 1);
4902 static _Float16 param48_init[] = {0.30000001192092896f};
4903 model->setOperandValue(param48, param48_init, sizeof(_Float16) * 1);
4904 static int32_t param49_init[] = {2};
4905 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
4906 static int32_t param50_init[] = {2};
4907 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
4908 static _Float16 param51_init[] = {2.0f};
4909 model->setOperandValue(param51, param51_init, sizeof(_Float16) * 1);
4910 static _Float16 param52_init[] = {2.0f};
4911 model->setOperandValue(param52, param52_init, sizeof(_Float16) * 1);
4912 static int32_t param53_init[] = {4};
4913 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
4914 static int32_t param54_init[] = {4};
4915 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
4916 static bool8 layout_init[] = {true};
4917 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4918 static int32_t param55_init[] = {0};
4919 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
4920 static int32_t param56_init[] = {0};
4921 model->setOperandValue(param56, param56_init, sizeof(int32_t) * 1);
4922 static int32_t param57_init[] = {0};
4923 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
4924 static int32_t param58_init[] = {0};
4925 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
4926 static int32_t param59_init[] = {1};
4927 model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
4928 static int32_t param60_init[] = {1};
4929 model->setOperandValue(param60, param60_init, sizeof(int32_t) * 1);
4930 static int32_t param61_init[] = {2};
4931 model->setOperandValue(param61, param61_init, sizeof(int32_t) * 1);
4932 static int32_t param62_init[] = {2};
4933 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
4934 static int32_t param63_init[] = {0};
4935 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
4936 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param42, param43, param44, param45, param46, param47, param48}, {scoresOut, roiOut, classesOut, batchSplitOut});
4937 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param49, param50, param51, param52, param53, param54, layout}, {featureMap});
4938 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap, param55, param56, param57, param58, param59, param60, param61, param62, param63, layout}, {out});
4939 // Phase 3, inputs and outputs
4940 model->identifyInputsAndOutputs(
4941 {in},
4942 {scoresOut, classesOut, out});
4943 assert(model->isValid());
4944 }
4945
is_ignored_zero_sized_nchw_float16(int i)4946 inline bool is_ignored_zero_sized_nchw_float16(int i) {
4947 static std::set<int> ignore = {};
4948 return ignore.find(i) != ignore.end();
4949 }
4950
CreateModel_zero_sized_dynamic_output_shape_nhwc(Model * model)4951 void CreateModel_zero_sized_dynamic_output_shape_nhwc(Model *model) {
4952 OperandType type0(Type::BOOL, {});
4953 OperandType type10(Type::TENSOR_FLOAT32, {1, 8});
4954 OperandType type11(Type::TENSOR_FLOAT32, {0});
4955 OperandType type12(Type::TENSOR_INT32, {0});
4956 OperandType type13(Type::TENSOR_FLOAT32, {0, 4});
4957 OperandType type14(Type::TENSOR_INT32, {1});
4958 OperandType type15(Type::FLOAT32, {});
4959 OperandType type16(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
4960 OperandType type17(Type::TENSOR_FLOAT32, {0, 2, 2, 1});
4961 OperandType type2(Type::INT32, {});
4962 OperandType type24(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
4963 OperandType type9(Type::TENSOR_FLOAT32, {1, 2});
4964 // Phase 1, operands
4965 auto scores = model->addOperand(&type9);
4966 auto roi = model->addOperand(&type10);
4967 auto param42 = model->addOperand(&type14);
4968 auto param43 = model->addOperand(&type15);
4969 auto param44 = model->addOperand(&type2);
4970 auto param45 = model->addOperand(&type2);
4971 auto param46 = model->addOperand(&type15);
4972 auto param47 = model->addOperand(&type15);
4973 auto param48 = model->addOperand(&type15);
4974 auto scoresOut = model->addOperand(&type11);
4975 auto roiOut = model->addOperand(&type13);
4976 auto classesOut = model->addOperand(&type12);
4977 auto batchSplitOut = model->addOperand(&type12);
4978 auto in = model->addOperand(&type16);
4979 auto param49 = model->addOperand(&type2);
4980 auto param50 = model->addOperand(&type2);
4981 auto param51 = model->addOperand(&type15);
4982 auto param52 = model->addOperand(&type15);
4983 auto param53 = model->addOperand(&type2);
4984 auto param54 = model->addOperand(&type2);
4985 auto layout = model->addOperand(&type0);
4986 auto featureMap = model->addOperand(&type17);
4987 auto param55 = model->addOperand(&type2);
4988 auto param56 = model->addOperand(&type2);
4989 auto param57 = model->addOperand(&type2);
4990 auto param58 = model->addOperand(&type2);
4991 auto param59 = model->addOperand(&type2);
4992 auto param60 = model->addOperand(&type2);
4993 auto param61 = model->addOperand(&type2);
4994 auto param62 = model->addOperand(&type2);
4995 auto param63 = model->addOperand(&type2);
4996 auto out = model->addOperand(&type24);
4997 // Phase 2, operations
4998 static float scores_init[] = {0.9f, 0.1f};
4999 model->setOperandValue(scores, scores_init, sizeof(float) * 2);
5000 static float roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
5001 model->setOperandValue(roi, roi_init, sizeof(float) * 8);
5002 static int32_t param42_init[] = {0};
5003 model->setOperandValue(param42, param42_init, sizeof(int32_t) * 1);
5004 static float param43_init[] = {0.3f};
5005 model->setOperandValue(param43, param43_init, sizeof(float) * 1);
5006 static int32_t param44_init[] = {-1};
5007 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
5008 static int32_t param45_init[] = {0};
5009 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
5010 static float param46_init[] = {0.4f};
5011 model->setOperandValue(param46, param46_init, sizeof(float) * 1);
5012 static float param47_init[] = {1.0f};
5013 model->setOperandValue(param47, param47_init, sizeof(float) * 1);
5014 static float param48_init[] = {0.3f};
5015 model->setOperandValue(param48, param48_init, sizeof(float) * 1);
5016 static int32_t param49_init[] = {2};
5017 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
5018 static int32_t param50_init[] = {2};
5019 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
5020 static float param51_init[] = {2.0f};
5021 model->setOperandValue(param51, param51_init, sizeof(float) * 1);
5022 static float param52_init[] = {2.0f};
5023 model->setOperandValue(param52, param52_init, sizeof(float) * 1);
5024 static int32_t param53_init[] = {4};
5025 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
5026 static int32_t param54_init[] = {4};
5027 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
5028 static bool8 layout_init[] = {false};
5029 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5030 static int32_t param55_init[] = {0};
5031 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
5032 static int32_t param56_init[] = {0};
5033 model->setOperandValue(param56, param56_init, sizeof(int32_t) * 1);
5034 static int32_t param57_init[] = {0};
5035 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
5036 static int32_t param58_init[] = {0};
5037 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
5038 static int32_t param59_init[] = {1};
5039 model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
5040 static int32_t param60_init[] = {1};
5041 model->setOperandValue(param60, param60_init, sizeof(int32_t) * 1);
5042 static int32_t param61_init[] = {2};
5043 model->setOperandValue(param61, param61_init, sizeof(int32_t) * 1);
5044 static int32_t param62_init[] = {2};
5045 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
5046 static int32_t param63_init[] = {0};
5047 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
5048 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param42, param43, param44, param45, param46, param47, param48}, {scoresOut, roiOut, classesOut, batchSplitOut});
5049 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param49, param50, param51, param52, param53, param54, layout}, {featureMap});
5050 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap, param55, param56, param57, param58, param59, param60, param61, param62, param63, layout}, {out});
5051 // Phase 3, inputs and outputs
5052 model->identifyInputsAndOutputs(
5053 {in},
5054 {scoresOut, classesOut, out});
5055 assert(model->isValid());
5056 }
5057
is_ignored_zero_sized_dynamic_output_shape_nhwc(int i)5058 inline bool is_ignored_zero_sized_dynamic_output_shape_nhwc(int i) {
5059 static std::set<int> ignore = {};
5060 return ignore.find(i) != ignore.end();
5061 }
5062
CreateModel_zero_sized_dynamic_output_shape_nhwc_relaxed(Model * model)5063 void CreateModel_zero_sized_dynamic_output_shape_nhwc_relaxed(Model *model) {
5064 OperandType type0(Type::BOOL, {});
5065 OperandType type10(Type::TENSOR_FLOAT32, {1, 8});
5066 OperandType type11(Type::TENSOR_FLOAT32, {0});
5067 OperandType type12(Type::TENSOR_INT32, {0});
5068 OperandType type13(Type::TENSOR_FLOAT32, {0, 4});
5069 OperandType type14(Type::TENSOR_INT32, {1});
5070 OperandType type15(Type::FLOAT32, {});
5071 OperandType type16(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
5072 OperandType type17(Type::TENSOR_FLOAT32, {0, 2, 2, 1});
5073 OperandType type2(Type::INT32, {});
5074 OperandType type24(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
5075 OperandType type9(Type::TENSOR_FLOAT32, {1, 2});
5076 // Phase 1, operands
5077 auto scores = model->addOperand(&type9);
5078 auto roi = model->addOperand(&type10);
5079 auto param42 = model->addOperand(&type14);
5080 auto param43 = model->addOperand(&type15);
5081 auto param44 = model->addOperand(&type2);
5082 auto param45 = model->addOperand(&type2);
5083 auto param46 = model->addOperand(&type15);
5084 auto param47 = model->addOperand(&type15);
5085 auto param48 = model->addOperand(&type15);
5086 auto scoresOut = model->addOperand(&type11);
5087 auto roiOut = model->addOperand(&type13);
5088 auto classesOut = model->addOperand(&type12);
5089 auto batchSplitOut = model->addOperand(&type12);
5090 auto in = model->addOperand(&type16);
5091 auto param49 = model->addOperand(&type2);
5092 auto param50 = model->addOperand(&type2);
5093 auto param51 = model->addOperand(&type15);
5094 auto param52 = model->addOperand(&type15);
5095 auto param53 = model->addOperand(&type2);
5096 auto param54 = model->addOperand(&type2);
5097 auto layout = model->addOperand(&type0);
5098 auto featureMap = model->addOperand(&type17);
5099 auto param55 = model->addOperand(&type2);
5100 auto param56 = model->addOperand(&type2);
5101 auto param57 = model->addOperand(&type2);
5102 auto param58 = model->addOperand(&type2);
5103 auto param59 = model->addOperand(&type2);
5104 auto param60 = model->addOperand(&type2);
5105 auto param61 = model->addOperand(&type2);
5106 auto param62 = model->addOperand(&type2);
5107 auto param63 = model->addOperand(&type2);
5108 auto out = model->addOperand(&type24);
5109 // Phase 2, operations
5110 static float scores_init[] = {0.9f, 0.1f};
5111 model->setOperandValue(scores, scores_init, sizeof(float) * 2);
5112 static float roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
5113 model->setOperandValue(roi, roi_init, sizeof(float) * 8);
5114 static int32_t param42_init[] = {0};
5115 model->setOperandValue(param42, param42_init, sizeof(int32_t) * 1);
5116 static float param43_init[] = {0.3f};
5117 model->setOperandValue(param43, param43_init, sizeof(float) * 1);
5118 static int32_t param44_init[] = {-1};
5119 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
5120 static int32_t param45_init[] = {0};
5121 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
5122 static float param46_init[] = {0.4f};
5123 model->setOperandValue(param46, param46_init, sizeof(float) * 1);
5124 static float param47_init[] = {1.0f};
5125 model->setOperandValue(param47, param47_init, sizeof(float) * 1);
5126 static float param48_init[] = {0.3f};
5127 model->setOperandValue(param48, param48_init, sizeof(float) * 1);
5128 static int32_t param49_init[] = {2};
5129 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
5130 static int32_t param50_init[] = {2};
5131 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
5132 static float param51_init[] = {2.0f};
5133 model->setOperandValue(param51, param51_init, sizeof(float) * 1);
5134 static float param52_init[] = {2.0f};
5135 model->setOperandValue(param52, param52_init, sizeof(float) * 1);
5136 static int32_t param53_init[] = {4};
5137 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
5138 static int32_t param54_init[] = {4};
5139 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
5140 static bool8 layout_init[] = {false};
5141 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5142 static int32_t param55_init[] = {0};
5143 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
5144 static int32_t param56_init[] = {0};
5145 model->setOperandValue(param56, param56_init, sizeof(int32_t) * 1);
5146 static int32_t param57_init[] = {0};
5147 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
5148 static int32_t param58_init[] = {0};
5149 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
5150 static int32_t param59_init[] = {1};
5151 model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
5152 static int32_t param60_init[] = {1};
5153 model->setOperandValue(param60, param60_init, sizeof(int32_t) * 1);
5154 static int32_t param61_init[] = {2};
5155 model->setOperandValue(param61, param61_init, sizeof(int32_t) * 1);
5156 static int32_t param62_init[] = {2};
5157 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
5158 static int32_t param63_init[] = {0};
5159 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
5160 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param42, param43, param44, param45, param46, param47, param48}, {scoresOut, roiOut, classesOut, batchSplitOut});
5161 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param49, param50, param51, param52, param53, param54, layout}, {featureMap});
5162 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap, param55, param56, param57, param58, param59, param60, param61, param62, param63, layout}, {out});
5163 // Phase 3, inputs and outputs
5164 model->identifyInputsAndOutputs(
5165 {in},
5166 {scoresOut, classesOut, out});
5167 // Phase 4: set relaxed execution
5168 model->relaxComputationFloat32toFloat16(true);
5169 assert(model->isValid());
5170 }
5171
is_ignored_zero_sized_dynamic_output_shape_nhwc_relaxed(int i)5172 inline bool is_ignored_zero_sized_dynamic_output_shape_nhwc_relaxed(int i) {
5173 static std::set<int> ignore = {};
5174 return ignore.find(i) != ignore.end();
5175 }
5176
CreateModel_zero_sized_dynamic_output_shape_nhwc_quant8(Model * model)5177 void CreateModel_zero_sized_dynamic_output_shape_nhwc_quant8(Model *model) {
5178 OperandType type0(Type::BOOL, {});
5179 OperandType type12(Type::TENSOR_INT32, {0});
5180 OperandType type14(Type::TENSOR_INT32, {1});
5181 OperandType type15(Type::FLOAT32, {});
5182 OperandType type2(Type::INT32, {});
5183 OperandType type58(Type::TENSOR_QUANT8_ASYMM, {0, 2, 2, 1}, 0.1f, 128);
5184 OperandType type59(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 1}, 0.1f, 128);
5185 OperandType type61(Type::TENSOR_QUANT16_ASYMM, {1, 8}, 0.125f, 0);
5186 OperandType type62(Type::TENSOR_QUANT16_ASYMM, {0, 4}, 0.125f, 0);
5187 OperandType type63(Type::TENSOR_QUANT8_ASYMM, {1, 2}, 0.1f, 128);
5188 OperandType type64(Type::TENSOR_QUANT8_ASYMM, {0}, 0.1f, 128);
5189 OperandType type76(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.1f, 128);
5190 // Phase 1, operands
5191 auto scores = model->addOperand(&type63);
5192 auto roi = model->addOperand(&type61);
5193 auto param42 = model->addOperand(&type14);
5194 auto param43 = model->addOperand(&type15);
5195 auto param44 = model->addOperand(&type2);
5196 auto param45 = model->addOperand(&type2);
5197 auto param46 = model->addOperand(&type15);
5198 auto param47 = model->addOperand(&type15);
5199 auto param48 = model->addOperand(&type15);
5200 auto scoresOut = model->addOperand(&type64);
5201 auto roiOut = model->addOperand(&type62);
5202 auto classesOut = model->addOperand(&type12);
5203 auto batchSplitOut = model->addOperand(&type12);
5204 auto in = model->addOperand(&type59);
5205 auto param49 = model->addOperand(&type2);
5206 auto param50 = model->addOperand(&type2);
5207 auto param51 = model->addOperand(&type15);
5208 auto param52 = model->addOperand(&type15);
5209 auto param53 = model->addOperand(&type2);
5210 auto param54 = model->addOperand(&type2);
5211 auto layout = model->addOperand(&type0);
5212 auto featureMap = model->addOperand(&type58);
5213 auto param55 = model->addOperand(&type2);
5214 auto param56 = model->addOperand(&type2);
5215 auto param57 = model->addOperand(&type2);
5216 auto param58 = model->addOperand(&type2);
5217 auto param59 = model->addOperand(&type2);
5218 auto param60 = model->addOperand(&type2);
5219 auto param61 = model->addOperand(&type2);
5220 auto param62 = model->addOperand(&type2);
5221 auto param63 = model->addOperand(&type2);
5222 auto out = model->addOperand(&type76);
5223 // Phase 2, operations
5224 static uint8_t scores_init[] = {137, 129};
5225 model->setOperandValue(scores, scores_init, sizeof(uint8_t) * 2);
5226 static uint16_t roi_init[] = {8, 8, 80, 80, 0, 0, 80, 80};
5227 model->setOperandValue(roi, roi_init, sizeof(uint16_t) * 8);
5228 static int32_t param42_init[] = {0};
5229 model->setOperandValue(param42, param42_init, sizeof(int32_t) * 1);
5230 static float param43_init[] = {0.3f};
5231 model->setOperandValue(param43, param43_init, sizeof(float) * 1);
5232 static int32_t param44_init[] = {-1};
5233 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
5234 static int32_t param45_init[] = {0};
5235 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
5236 static float param46_init[] = {0.4f};
5237 model->setOperandValue(param46, param46_init, sizeof(float) * 1);
5238 static float param47_init[] = {1.0f};
5239 model->setOperandValue(param47, param47_init, sizeof(float) * 1);
5240 static float param48_init[] = {0.3f};
5241 model->setOperandValue(param48, param48_init, sizeof(float) * 1);
5242 static int32_t param49_init[] = {2};
5243 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
5244 static int32_t param50_init[] = {2};
5245 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
5246 static float param51_init[] = {2.0f};
5247 model->setOperandValue(param51, param51_init, sizeof(float) * 1);
5248 static float param52_init[] = {2.0f};
5249 model->setOperandValue(param52, param52_init, sizeof(float) * 1);
5250 static int32_t param53_init[] = {4};
5251 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
5252 static int32_t param54_init[] = {4};
5253 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
5254 static bool8 layout_init[] = {false};
5255 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5256 static int32_t param55_init[] = {0};
5257 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
5258 static int32_t param56_init[] = {0};
5259 model->setOperandValue(param56, param56_init, sizeof(int32_t) * 1);
5260 static int32_t param57_init[] = {0};
5261 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
5262 static int32_t param58_init[] = {0};
5263 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
5264 static int32_t param59_init[] = {1};
5265 model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
5266 static int32_t param60_init[] = {1};
5267 model->setOperandValue(param60, param60_init, sizeof(int32_t) * 1);
5268 static int32_t param61_init[] = {2};
5269 model->setOperandValue(param61, param61_init, sizeof(int32_t) * 1);
5270 static int32_t param62_init[] = {2};
5271 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
5272 static int32_t param63_init[] = {0};
5273 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
5274 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param42, param43, param44, param45, param46, param47, param48}, {scoresOut, roiOut, classesOut, batchSplitOut});
5275 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param49, param50, param51, param52, param53, param54, layout}, {featureMap});
5276 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap, param55, param56, param57, param58, param59, param60, param61, param62, param63, layout}, {out});
5277 // Phase 3, inputs and outputs
5278 model->identifyInputsAndOutputs(
5279 {in},
5280 {scoresOut, classesOut, out});
5281 assert(model->isValid());
5282 }
5283
is_ignored_zero_sized_dynamic_output_shape_nhwc_quant8(int i)5284 inline bool is_ignored_zero_sized_dynamic_output_shape_nhwc_quant8(int i) {
5285 static std::set<int> ignore = {};
5286 return ignore.find(i) != ignore.end();
5287 }
5288
CreateModel_zero_sized_dynamic_output_shape_nhwc_float16(Model * model)5289 void CreateModel_zero_sized_dynamic_output_shape_nhwc_float16(Model *model) {
5290 OperandType type0(Type::BOOL, {});
5291 OperandType type12(Type::TENSOR_INT32, {0});
5292 OperandType type14(Type::TENSOR_INT32, {1});
5293 OperandType type2(Type::INT32, {});
5294 OperandType type25(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
5295 OperandType type65(Type::TENSOR_FLOAT16, {0, 2, 2, 1});
5296 OperandType type66(Type::TENSOR_FLOAT16, {1, 1, 1, 1});
5297 OperandType type68(Type::FLOAT16, {});
5298 OperandType type69(Type::TENSOR_FLOAT16, {1, 8});
5299 OperandType type70(Type::TENSOR_FLOAT16, {0, 4});
5300 OperandType type71(Type::TENSOR_FLOAT16, {1, 2});
5301 OperandType type77(Type::TENSOR_FLOAT16, {0});
5302 // Phase 1, operands
5303 auto scores = model->addOperand(&type71);
5304 auto roi = model->addOperand(&type69);
5305 auto param42 = model->addOperand(&type14);
5306 auto param43 = model->addOperand(&type68);
5307 auto param44 = model->addOperand(&type2);
5308 auto param45 = model->addOperand(&type2);
5309 auto param46 = model->addOperand(&type68);
5310 auto param47 = model->addOperand(&type68);
5311 auto param48 = model->addOperand(&type68);
5312 auto scoresOut = model->addOperand(&type77);
5313 auto roiOut = model->addOperand(&type70);
5314 auto classesOut = model->addOperand(&type12);
5315 auto batchSplitOut = model->addOperand(&type12);
5316 auto in = model->addOperand(&type66);
5317 auto param49 = model->addOperand(&type2);
5318 auto param50 = model->addOperand(&type2);
5319 auto param51 = model->addOperand(&type68);
5320 auto param52 = model->addOperand(&type68);
5321 auto param53 = model->addOperand(&type2);
5322 auto param54 = model->addOperand(&type2);
5323 auto layout = model->addOperand(&type0);
5324 auto featureMap = model->addOperand(&type65);
5325 auto param55 = model->addOperand(&type2);
5326 auto param56 = model->addOperand(&type2);
5327 auto param57 = model->addOperand(&type2);
5328 auto param58 = model->addOperand(&type2);
5329 auto param59 = model->addOperand(&type2);
5330 auto param60 = model->addOperand(&type2);
5331 auto param61 = model->addOperand(&type2);
5332 auto param62 = model->addOperand(&type2);
5333 auto param63 = model->addOperand(&type2);
5334 auto out = model->addOperand(&type25);
5335 // Phase 2, operations
5336 static _Float16 scores_init[] = {0.8999999761581421f, 0.10000000149011612f};
5337 model->setOperandValue(scores, scores_init, sizeof(_Float16) * 2);
5338 static _Float16 roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
5339 model->setOperandValue(roi, roi_init, sizeof(_Float16) * 8);
5340 static int32_t param42_init[] = {0};
5341 model->setOperandValue(param42, param42_init, sizeof(int32_t) * 1);
5342 static _Float16 param43_init[] = {0.30000001192092896f};
5343 model->setOperandValue(param43, param43_init, sizeof(_Float16) * 1);
5344 static int32_t param44_init[] = {-1};
5345 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
5346 static int32_t param45_init[] = {0};
5347 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
5348 static _Float16 param46_init[] = {0.4000000059604645f};
5349 model->setOperandValue(param46, param46_init, sizeof(_Float16) * 1);
5350 static _Float16 param47_init[] = {1.0f};
5351 model->setOperandValue(param47, param47_init, sizeof(_Float16) * 1);
5352 static _Float16 param48_init[] = {0.30000001192092896f};
5353 model->setOperandValue(param48, param48_init, sizeof(_Float16) * 1);
5354 static int32_t param49_init[] = {2};
5355 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
5356 static int32_t param50_init[] = {2};
5357 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
5358 static _Float16 param51_init[] = {2.0f};
5359 model->setOperandValue(param51, param51_init, sizeof(_Float16) * 1);
5360 static _Float16 param52_init[] = {2.0f};
5361 model->setOperandValue(param52, param52_init, sizeof(_Float16) * 1);
5362 static int32_t param53_init[] = {4};
5363 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
5364 static int32_t param54_init[] = {4};
5365 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
5366 static bool8 layout_init[] = {false};
5367 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5368 static int32_t param55_init[] = {0};
5369 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
5370 static int32_t param56_init[] = {0};
5371 model->setOperandValue(param56, param56_init, sizeof(int32_t) * 1);
5372 static int32_t param57_init[] = {0};
5373 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
5374 static int32_t param58_init[] = {0};
5375 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
5376 static int32_t param59_init[] = {1};
5377 model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
5378 static int32_t param60_init[] = {1};
5379 model->setOperandValue(param60, param60_init, sizeof(int32_t) * 1);
5380 static int32_t param61_init[] = {2};
5381 model->setOperandValue(param61, param61_init, sizeof(int32_t) * 1);
5382 static int32_t param62_init[] = {2};
5383 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
5384 static int32_t param63_init[] = {0};
5385 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
5386 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param42, param43, param44, param45, param46, param47, param48}, {scoresOut, roiOut, classesOut, batchSplitOut});
5387 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param49, param50, param51, param52, param53, param54, layout}, {featureMap});
5388 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap, param55, param56, param57, param58, param59, param60, param61, param62, param63, layout}, {out});
5389 // Phase 3, inputs and outputs
5390 model->identifyInputsAndOutputs(
5391 {in},
5392 {scoresOut, classesOut, out});
5393 assert(model->isValid());
5394 }
5395
is_ignored_zero_sized_dynamic_output_shape_nhwc_float16(int i)5396 inline bool is_ignored_zero_sized_dynamic_output_shape_nhwc_float16(int i) {
5397 static std::set<int> ignore = {};
5398 return ignore.find(i) != ignore.end();
5399 }
5400
CreateModel_zero_sized_dynamic_output_shape_nchw(Model * model)5401 void CreateModel_zero_sized_dynamic_output_shape_nchw(Model *model) {
5402 OperandType type0(Type::BOOL, {});
5403 OperandType type10(Type::TENSOR_FLOAT32, {1, 8});
5404 OperandType type11(Type::TENSOR_FLOAT32, {0});
5405 OperandType type12(Type::TENSOR_INT32, {0});
5406 OperandType type13(Type::TENSOR_FLOAT32, {0, 4});
5407 OperandType type14(Type::TENSOR_INT32, {1});
5408 OperandType type15(Type::FLOAT32, {});
5409 OperandType type16(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
5410 OperandType type2(Type::INT32, {});
5411 OperandType type24(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
5412 OperandType type73(Type::TENSOR_FLOAT32, {0, 1, 2, 2});
5413 OperandType type9(Type::TENSOR_FLOAT32, {1, 2});
5414 // Phase 1, operands
5415 auto scores = model->addOperand(&type9);
5416 auto roi = model->addOperand(&type10);
5417 auto param42 = model->addOperand(&type14);
5418 auto param43 = model->addOperand(&type15);
5419 auto param44 = model->addOperand(&type2);
5420 auto param45 = model->addOperand(&type2);
5421 auto param46 = model->addOperand(&type15);
5422 auto param47 = model->addOperand(&type15);
5423 auto param48 = model->addOperand(&type15);
5424 auto scoresOut = model->addOperand(&type11);
5425 auto roiOut = model->addOperand(&type13);
5426 auto classesOut = model->addOperand(&type12);
5427 auto batchSplitOut = model->addOperand(&type12);
5428 auto in = model->addOperand(&type16);
5429 auto param49 = model->addOperand(&type2);
5430 auto param50 = model->addOperand(&type2);
5431 auto param51 = model->addOperand(&type15);
5432 auto param52 = model->addOperand(&type15);
5433 auto param53 = model->addOperand(&type2);
5434 auto param54 = model->addOperand(&type2);
5435 auto layout = model->addOperand(&type0);
5436 auto featureMap = model->addOperand(&type73);
5437 auto param55 = model->addOperand(&type2);
5438 auto param56 = model->addOperand(&type2);
5439 auto param57 = model->addOperand(&type2);
5440 auto param58 = model->addOperand(&type2);
5441 auto param59 = model->addOperand(&type2);
5442 auto param60 = model->addOperand(&type2);
5443 auto param61 = model->addOperand(&type2);
5444 auto param62 = model->addOperand(&type2);
5445 auto param63 = model->addOperand(&type2);
5446 auto out = model->addOperand(&type24);
5447 // Phase 2, operations
5448 static float scores_init[] = {0.9f, 0.1f};
5449 model->setOperandValue(scores, scores_init, sizeof(float) * 2);
5450 static float roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
5451 model->setOperandValue(roi, roi_init, sizeof(float) * 8);
5452 static int32_t param42_init[] = {0};
5453 model->setOperandValue(param42, param42_init, sizeof(int32_t) * 1);
5454 static float param43_init[] = {0.3f};
5455 model->setOperandValue(param43, param43_init, sizeof(float) * 1);
5456 static int32_t param44_init[] = {-1};
5457 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
5458 static int32_t param45_init[] = {0};
5459 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
5460 static float param46_init[] = {0.4f};
5461 model->setOperandValue(param46, param46_init, sizeof(float) * 1);
5462 static float param47_init[] = {1.0f};
5463 model->setOperandValue(param47, param47_init, sizeof(float) * 1);
5464 static float param48_init[] = {0.3f};
5465 model->setOperandValue(param48, param48_init, sizeof(float) * 1);
5466 static int32_t param49_init[] = {2};
5467 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
5468 static int32_t param50_init[] = {2};
5469 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
5470 static float param51_init[] = {2.0f};
5471 model->setOperandValue(param51, param51_init, sizeof(float) * 1);
5472 static float param52_init[] = {2.0f};
5473 model->setOperandValue(param52, param52_init, sizeof(float) * 1);
5474 static int32_t param53_init[] = {4};
5475 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
5476 static int32_t param54_init[] = {4};
5477 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
5478 static bool8 layout_init[] = {true};
5479 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5480 static int32_t param55_init[] = {0};
5481 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
5482 static int32_t param56_init[] = {0};
5483 model->setOperandValue(param56, param56_init, sizeof(int32_t) * 1);
5484 static int32_t param57_init[] = {0};
5485 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
5486 static int32_t param58_init[] = {0};
5487 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
5488 static int32_t param59_init[] = {1};
5489 model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
5490 static int32_t param60_init[] = {1};
5491 model->setOperandValue(param60, param60_init, sizeof(int32_t) * 1);
5492 static int32_t param61_init[] = {2};
5493 model->setOperandValue(param61, param61_init, sizeof(int32_t) * 1);
5494 static int32_t param62_init[] = {2};
5495 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
5496 static int32_t param63_init[] = {0};
5497 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
5498 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param42, param43, param44, param45, param46, param47, param48}, {scoresOut, roiOut, classesOut, batchSplitOut});
5499 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param49, param50, param51, param52, param53, param54, layout}, {featureMap});
5500 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap, param55, param56, param57, param58, param59, param60, param61, param62, param63, layout}, {out});
5501 // Phase 3, inputs and outputs
5502 model->identifyInputsAndOutputs(
5503 {in},
5504 {scoresOut, classesOut, out});
5505 assert(model->isValid());
5506 }
5507
is_ignored_zero_sized_dynamic_output_shape_nchw(int i)5508 inline bool is_ignored_zero_sized_dynamic_output_shape_nchw(int i) {
5509 static std::set<int> ignore = {};
5510 return ignore.find(i) != ignore.end();
5511 }
5512
CreateModel_zero_sized_dynamic_output_shape_nchw_relaxed(Model * model)5513 void CreateModel_zero_sized_dynamic_output_shape_nchw_relaxed(Model *model) {
5514 OperandType type0(Type::BOOL, {});
5515 OperandType type10(Type::TENSOR_FLOAT32, {1, 8});
5516 OperandType type11(Type::TENSOR_FLOAT32, {0});
5517 OperandType type12(Type::TENSOR_INT32, {0});
5518 OperandType type13(Type::TENSOR_FLOAT32, {0, 4});
5519 OperandType type14(Type::TENSOR_INT32, {1});
5520 OperandType type15(Type::FLOAT32, {});
5521 OperandType type16(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
5522 OperandType type2(Type::INT32, {});
5523 OperandType type24(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
5524 OperandType type73(Type::TENSOR_FLOAT32, {0, 1, 2, 2});
5525 OperandType type9(Type::TENSOR_FLOAT32, {1, 2});
5526 // Phase 1, operands
5527 auto scores = model->addOperand(&type9);
5528 auto roi = model->addOperand(&type10);
5529 auto param42 = model->addOperand(&type14);
5530 auto param43 = model->addOperand(&type15);
5531 auto param44 = model->addOperand(&type2);
5532 auto param45 = model->addOperand(&type2);
5533 auto param46 = model->addOperand(&type15);
5534 auto param47 = model->addOperand(&type15);
5535 auto param48 = model->addOperand(&type15);
5536 auto scoresOut = model->addOperand(&type11);
5537 auto roiOut = model->addOperand(&type13);
5538 auto classesOut = model->addOperand(&type12);
5539 auto batchSplitOut = model->addOperand(&type12);
5540 auto in = model->addOperand(&type16);
5541 auto param49 = model->addOperand(&type2);
5542 auto param50 = model->addOperand(&type2);
5543 auto param51 = model->addOperand(&type15);
5544 auto param52 = model->addOperand(&type15);
5545 auto param53 = model->addOperand(&type2);
5546 auto param54 = model->addOperand(&type2);
5547 auto layout = model->addOperand(&type0);
5548 auto featureMap = model->addOperand(&type73);
5549 auto param55 = model->addOperand(&type2);
5550 auto param56 = model->addOperand(&type2);
5551 auto param57 = model->addOperand(&type2);
5552 auto param58 = model->addOperand(&type2);
5553 auto param59 = model->addOperand(&type2);
5554 auto param60 = model->addOperand(&type2);
5555 auto param61 = model->addOperand(&type2);
5556 auto param62 = model->addOperand(&type2);
5557 auto param63 = model->addOperand(&type2);
5558 auto out = model->addOperand(&type24);
5559 // Phase 2, operations
5560 static float scores_init[] = {0.9f, 0.1f};
5561 model->setOperandValue(scores, scores_init, sizeof(float) * 2);
5562 static float roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
5563 model->setOperandValue(roi, roi_init, sizeof(float) * 8);
5564 static int32_t param42_init[] = {0};
5565 model->setOperandValue(param42, param42_init, sizeof(int32_t) * 1);
5566 static float param43_init[] = {0.3f};
5567 model->setOperandValue(param43, param43_init, sizeof(float) * 1);
5568 static int32_t param44_init[] = {-1};
5569 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
5570 static int32_t param45_init[] = {0};
5571 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
5572 static float param46_init[] = {0.4f};
5573 model->setOperandValue(param46, param46_init, sizeof(float) * 1);
5574 static float param47_init[] = {1.0f};
5575 model->setOperandValue(param47, param47_init, sizeof(float) * 1);
5576 static float param48_init[] = {0.3f};
5577 model->setOperandValue(param48, param48_init, sizeof(float) * 1);
5578 static int32_t param49_init[] = {2};
5579 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
5580 static int32_t param50_init[] = {2};
5581 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
5582 static float param51_init[] = {2.0f};
5583 model->setOperandValue(param51, param51_init, sizeof(float) * 1);
5584 static float param52_init[] = {2.0f};
5585 model->setOperandValue(param52, param52_init, sizeof(float) * 1);
5586 static int32_t param53_init[] = {4};
5587 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
5588 static int32_t param54_init[] = {4};
5589 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
5590 static bool8 layout_init[] = {true};
5591 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5592 static int32_t param55_init[] = {0};
5593 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
5594 static int32_t param56_init[] = {0};
5595 model->setOperandValue(param56, param56_init, sizeof(int32_t) * 1);
5596 static int32_t param57_init[] = {0};
5597 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
5598 static int32_t param58_init[] = {0};
5599 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
5600 static int32_t param59_init[] = {1};
5601 model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
5602 static int32_t param60_init[] = {1};
5603 model->setOperandValue(param60, param60_init, sizeof(int32_t) * 1);
5604 static int32_t param61_init[] = {2};
5605 model->setOperandValue(param61, param61_init, sizeof(int32_t) * 1);
5606 static int32_t param62_init[] = {2};
5607 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
5608 static int32_t param63_init[] = {0};
5609 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
5610 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param42, param43, param44, param45, param46, param47, param48}, {scoresOut, roiOut, classesOut, batchSplitOut});
5611 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param49, param50, param51, param52, param53, param54, layout}, {featureMap});
5612 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap, param55, param56, param57, param58, param59, param60, param61, param62, param63, layout}, {out});
5613 // Phase 3, inputs and outputs
5614 model->identifyInputsAndOutputs(
5615 {in},
5616 {scoresOut, classesOut, out});
5617 // Phase 4: set relaxed execution
5618 model->relaxComputationFloat32toFloat16(true);
5619 assert(model->isValid());
5620 }
5621
is_ignored_zero_sized_dynamic_output_shape_nchw_relaxed(int i)5622 inline bool is_ignored_zero_sized_dynamic_output_shape_nchw_relaxed(int i) {
5623 static std::set<int> ignore = {};
5624 return ignore.find(i) != ignore.end();
5625 }
5626
CreateModel_zero_sized_dynamic_output_shape_nchw_quant8(Model * model)5627 void CreateModel_zero_sized_dynamic_output_shape_nchw_quant8(Model *model) {
5628 OperandType type0(Type::BOOL, {});
5629 OperandType type12(Type::TENSOR_INT32, {0});
5630 OperandType type14(Type::TENSOR_INT32, {1});
5631 OperandType type15(Type::FLOAT32, {});
5632 OperandType type2(Type::INT32, {});
5633 OperandType type59(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 1}, 0.1f, 128);
5634 OperandType type61(Type::TENSOR_QUANT16_ASYMM, {1, 8}, 0.125f, 0);
5635 OperandType type62(Type::TENSOR_QUANT16_ASYMM, {0, 4}, 0.125f, 0);
5636 OperandType type63(Type::TENSOR_QUANT8_ASYMM, {1, 2}, 0.1f, 128);
5637 OperandType type64(Type::TENSOR_QUANT8_ASYMM, {0}, 0.1f, 128);
5638 OperandType type74(Type::TENSOR_QUANT8_ASYMM, {0, 1, 2, 2}, 0.1f, 128);
5639 OperandType type76(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.1f, 128);
5640 // Phase 1, operands
5641 auto scores = model->addOperand(&type63);
5642 auto roi = model->addOperand(&type61);
5643 auto param42 = model->addOperand(&type14);
5644 auto param43 = model->addOperand(&type15);
5645 auto param44 = model->addOperand(&type2);
5646 auto param45 = model->addOperand(&type2);
5647 auto param46 = model->addOperand(&type15);
5648 auto param47 = model->addOperand(&type15);
5649 auto param48 = model->addOperand(&type15);
5650 auto scoresOut = model->addOperand(&type64);
5651 auto roiOut = model->addOperand(&type62);
5652 auto classesOut = model->addOperand(&type12);
5653 auto batchSplitOut = model->addOperand(&type12);
5654 auto in = model->addOperand(&type59);
5655 auto param49 = model->addOperand(&type2);
5656 auto param50 = model->addOperand(&type2);
5657 auto param51 = model->addOperand(&type15);
5658 auto param52 = model->addOperand(&type15);
5659 auto param53 = model->addOperand(&type2);
5660 auto param54 = model->addOperand(&type2);
5661 auto layout = model->addOperand(&type0);
5662 auto featureMap = model->addOperand(&type74);
5663 auto param55 = model->addOperand(&type2);
5664 auto param56 = model->addOperand(&type2);
5665 auto param57 = model->addOperand(&type2);
5666 auto param58 = model->addOperand(&type2);
5667 auto param59 = model->addOperand(&type2);
5668 auto param60 = model->addOperand(&type2);
5669 auto param61 = model->addOperand(&type2);
5670 auto param62 = model->addOperand(&type2);
5671 auto param63 = model->addOperand(&type2);
5672 auto out = model->addOperand(&type76);
5673 // Phase 2, operations
5674 static uint8_t scores_init[] = {137, 129};
5675 model->setOperandValue(scores, scores_init, sizeof(uint8_t) * 2);
5676 static uint16_t roi_init[] = {8, 8, 80, 80, 0, 0, 80, 80};
5677 model->setOperandValue(roi, roi_init, sizeof(uint16_t) * 8);
5678 static int32_t param42_init[] = {0};
5679 model->setOperandValue(param42, param42_init, sizeof(int32_t) * 1);
5680 static float param43_init[] = {0.3f};
5681 model->setOperandValue(param43, param43_init, sizeof(float) * 1);
5682 static int32_t param44_init[] = {-1};
5683 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
5684 static int32_t param45_init[] = {0};
5685 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
5686 static float param46_init[] = {0.4f};
5687 model->setOperandValue(param46, param46_init, sizeof(float) * 1);
5688 static float param47_init[] = {1.0f};
5689 model->setOperandValue(param47, param47_init, sizeof(float) * 1);
5690 static float param48_init[] = {0.3f};
5691 model->setOperandValue(param48, param48_init, sizeof(float) * 1);
5692 static int32_t param49_init[] = {2};
5693 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
5694 static int32_t param50_init[] = {2};
5695 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
5696 static float param51_init[] = {2.0f};
5697 model->setOperandValue(param51, param51_init, sizeof(float) * 1);
5698 static float param52_init[] = {2.0f};
5699 model->setOperandValue(param52, param52_init, sizeof(float) * 1);
5700 static int32_t param53_init[] = {4};
5701 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
5702 static int32_t param54_init[] = {4};
5703 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
5704 static bool8 layout_init[] = {true};
5705 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5706 static int32_t param55_init[] = {0};
5707 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
5708 static int32_t param56_init[] = {0};
5709 model->setOperandValue(param56, param56_init, sizeof(int32_t) * 1);
5710 static int32_t param57_init[] = {0};
5711 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
5712 static int32_t param58_init[] = {0};
5713 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
5714 static int32_t param59_init[] = {1};
5715 model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
5716 static int32_t param60_init[] = {1};
5717 model->setOperandValue(param60, param60_init, sizeof(int32_t) * 1);
5718 static int32_t param61_init[] = {2};
5719 model->setOperandValue(param61, param61_init, sizeof(int32_t) * 1);
5720 static int32_t param62_init[] = {2};
5721 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
5722 static int32_t param63_init[] = {0};
5723 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
5724 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param42, param43, param44, param45, param46, param47, param48}, {scoresOut, roiOut, classesOut, batchSplitOut});
5725 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param49, param50, param51, param52, param53, param54, layout}, {featureMap});
5726 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap, param55, param56, param57, param58, param59, param60, param61, param62, param63, layout}, {out});
5727 // Phase 3, inputs and outputs
5728 model->identifyInputsAndOutputs(
5729 {in},
5730 {scoresOut, classesOut, out});
5731 assert(model->isValid());
5732 }
5733
is_ignored_zero_sized_dynamic_output_shape_nchw_quant8(int i)5734 inline bool is_ignored_zero_sized_dynamic_output_shape_nchw_quant8(int i) {
5735 static std::set<int> ignore = {};
5736 return ignore.find(i) != ignore.end();
5737 }
5738
CreateModel_zero_sized_dynamic_output_shape_nchw_float16(Model * model)5739 void CreateModel_zero_sized_dynamic_output_shape_nchw_float16(Model *model) {
5740 OperandType type0(Type::BOOL, {});
5741 OperandType type12(Type::TENSOR_INT32, {0});
5742 OperandType type14(Type::TENSOR_INT32, {1});
5743 OperandType type2(Type::INT32, {});
5744 OperandType type25(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
5745 OperandType type66(Type::TENSOR_FLOAT16, {1, 1, 1, 1});
5746 OperandType type68(Type::FLOAT16, {});
5747 OperandType type69(Type::TENSOR_FLOAT16, {1, 8});
5748 OperandType type70(Type::TENSOR_FLOAT16, {0, 4});
5749 OperandType type71(Type::TENSOR_FLOAT16, {1, 2});
5750 OperandType type75(Type::TENSOR_FLOAT16, {0, 1, 2, 2});
5751 OperandType type77(Type::TENSOR_FLOAT16, {0});
5752 // Phase 1, operands
5753 auto scores = model->addOperand(&type71);
5754 auto roi = model->addOperand(&type69);
5755 auto param42 = model->addOperand(&type14);
5756 auto param43 = model->addOperand(&type68);
5757 auto param44 = model->addOperand(&type2);
5758 auto param45 = model->addOperand(&type2);
5759 auto param46 = model->addOperand(&type68);
5760 auto param47 = model->addOperand(&type68);
5761 auto param48 = model->addOperand(&type68);
5762 auto scoresOut = model->addOperand(&type77);
5763 auto roiOut = model->addOperand(&type70);
5764 auto classesOut = model->addOperand(&type12);
5765 auto batchSplitOut = model->addOperand(&type12);
5766 auto in = model->addOperand(&type66);
5767 auto param49 = model->addOperand(&type2);
5768 auto param50 = model->addOperand(&type2);
5769 auto param51 = model->addOperand(&type68);
5770 auto param52 = model->addOperand(&type68);
5771 auto param53 = model->addOperand(&type2);
5772 auto param54 = model->addOperand(&type2);
5773 auto layout = model->addOperand(&type0);
5774 auto featureMap = model->addOperand(&type75);
5775 auto param55 = model->addOperand(&type2);
5776 auto param56 = model->addOperand(&type2);
5777 auto param57 = model->addOperand(&type2);
5778 auto param58 = model->addOperand(&type2);
5779 auto param59 = model->addOperand(&type2);
5780 auto param60 = model->addOperand(&type2);
5781 auto param61 = model->addOperand(&type2);
5782 auto param62 = model->addOperand(&type2);
5783 auto param63 = model->addOperand(&type2);
5784 auto out = model->addOperand(&type25);
5785 // Phase 2, operations
5786 static _Float16 scores_init[] = {0.8999999761581421f, 0.10000000149011612f};
5787 model->setOperandValue(scores, scores_init, sizeof(_Float16) * 2);
5788 static _Float16 roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
5789 model->setOperandValue(roi, roi_init, sizeof(_Float16) * 8);
5790 static int32_t param42_init[] = {0};
5791 model->setOperandValue(param42, param42_init, sizeof(int32_t) * 1);
5792 static _Float16 param43_init[] = {0.30000001192092896f};
5793 model->setOperandValue(param43, param43_init, sizeof(_Float16) * 1);
5794 static int32_t param44_init[] = {-1};
5795 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
5796 static int32_t param45_init[] = {0};
5797 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
5798 static _Float16 param46_init[] = {0.4000000059604645f};
5799 model->setOperandValue(param46, param46_init, sizeof(_Float16) * 1);
5800 static _Float16 param47_init[] = {1.0f};
5801 model->setOperandValue(param47, param47_init, sizeof(_Float16) * 1);
5802 static _Float16 param48_init[] = {0.30000001192092896f};
5803 model->setOperandValue(param48, param48_init, sizeof(_Float16) * 1);
5804 static int32_t param49_init[] = {2};
5805 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
5806 static int32_t param50_init[] = {2};
5807 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
5808 static _Float16 param51_init[] = {2.0f};
5809 model->setOperandValue(param51, param51_init, sizeof(_Float16) * 1);
5810 static _Float16 param52_init[] = {2.0f};
5811 model->setOperandValue(param52, param52_init, sizeof(_Float16) * 1);
5812 static int32_t param53_init[] = {4};
5813 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
5814 static int32_t param54_init[] = {4};
5815 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
5816 static bool8 layout_init[] = {true};
5817 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5818 static int32_t param55_init[] = {0};
5819 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
5820 static int32_t param56_init[] = {0};
5821 model->setOperandValue(param56, param56_init, sizeof(int32_t) * 1);
5822 static int32_t param57_init[] = {0};
5823 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
5824 static int32_t param58_init[] = {0};
5825 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
5826 static int32_t param59_init[] = {1};
5827 model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
5828 static int32_t param60_init[] = {1};
5829 model->setOperandValue(param60, param60_init, sizeof(int32_t) * 1);
5830 static int32_t param61_init[] = {2};
5831 model->setOperandValue(param61, param61_init, sizeof(int32_t) * 1);
5832 static int32_t param62_init[] = {2};
5833 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
5834 static int32_t param63_init[] = {0};
5835 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
5836 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param42, param43, param44, param45, param46, param47, param48}, {scoresOut, roiOut, classesOut, batchSplitOut});
5837 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param49, param50, param51, param52, param53, param54, layout}, {featureMap});
5838 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap, param55, param56, param57, param58, param59, param60, param61, param62, param63, layout}, {out});
5839 // Phase 3, inputs and outputs
5840 model->identifyInputsAndOutputs(
5841 {in},
5842 {scoresOut, classesOut, out});
5843 assert(model->isValid());
5844 }
5845
is_ignored_zero_sized_dynamic_output_shape_nchw_float16(int i)5846 inline bool is_ignored_zero_sized_dynamic_output_shape_nchw_float16(int i) {
5847 static std::set<int> ignore = {};
5848 return ignore.find(i) != ignore.end();
5849 }
5850
CreateModel_zero_sized_nhwc_2(Model * model)5851 void CreateModel_zero_sized_nhwc_2(Model *model) {
5852 OperandType type0(Type::BOOL, {});
5853 OperandType type10(Type::TENSOR_FLOAT32, {1, 8});
5854 OperandType type11(Type::TENSOR_FLOAT32, {0});
5855 OperandType type12(Type::TENSOR_INT32, {0});
5856 OperandType type13(Type::TENSOR_FLOAT32, {0, 4});
5857 OperandType type14(Type::TENSOR_INT32, {1});
5858 OperandType type15(Type::FLOAT32, {});
5859 OperandType type16(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
5860 OperandType type17(Type::TENSOR_FLOAT32, {0, 2, 2, 1});
5861 OperandType type2(Type::INT32, {});
5862 OperandType type9(Type::TENSOR_FLOAT32, {1, 2});
5863 // Phase 1, operands
5864 auto scores1 = model->addOperand(&type9);
5865 auto roi1 = model->addOperand(&type10);
5866 auto param64 = model->addOperand(&type14);
5867 auto param65 = model->addOperand(&type15);
5868 auto param66 = model->addOperand(&type2);
5869 auto param67 = model->addOperand(&type2);
5870 auto param68 = model->addOperand(&type15);
5871 auto param69 = model->addOperand(&type15);
5872 auto param70 = model->addOperand(&type15);
5873 auto scoresOut1 = model->addOperand(&type11);
5874 auto roiOut1 = model->addOperand(&type13);
5875 auto classesOut1 = model->addOperand(&type12);
5876 auto batchSplitOut1 = model->addOperand(&type12);
5877 auto in1 = model->addOperand(&type16);
5878 auto param71 = model->addOperand(&type2);
5879 auto param72 = model->addOperand(&type2);
5880 auto param73 = model->addOperand(&type15);
5881 auto param74 = model->addOperand(&type15);
5882 auto param75 = model->addOperand(&type2);
5883 auto param76 = model->addOperand(&type2);
5884 auto layout = model->addOperand(&type0);
5885 auto featureMap1 = model->addOperand(&type17);
5886 auto param77 = model->addOperand(&type2);
5887 auto param78 = model->addOperand(&type2);
5888 auto param79 = model->addOperand(&type2);
5889 auto param80 = model->addOperand(&type2);
5890 auto param81 = model->addOperand(&type2);
5891 auto param82 = model->addOperand(&type2);
5892 auto out1 = model->addOperand(&type17);
5893 // Phase 2, operations
5894 static float scores1_init[] = {0.9f, 0.1f};
5895 model->setOperandValue(scores1, scores1_init, sizeof(float) * 2);
5896 static float roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
5897 model->setOperandValue(roi1, roi1_init, sizeof(float) * 8);
5898 static int32_t param64_init[] = {0};
5899 model->setOperandValue(param64, param64_init, sizeof(int32_t) * 1);
5900 static float param65_init[] = {0.3f};
5901 model->setOperandValue(param65, param65_init, sizeof(float) * 1);
5902 static int32_t param66_init[] = {-1};
5903 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
5904 static int32_t param67_init[] = {0};
5905 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
5906 static float param68_init[] = {0.4f};
5907 model->setOperandValue(param68, param68_init, sizeof(float) * 1);
5908 static float param69_init[] = {1.0f};
5909 model->setOperandValue(param69, param69_init, sizeof(float) * 1);
5910 static float param70_init[] = {0.3f};
5911 model->setOperandValue(param70, param70_init, sizeof(float) * 1);
5912 static int32_t param71_init[] = {2};
5913 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
5914 static int32_t param72_init[] = {2};
5915 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
5916 static float param73_init[] = {2.0f};
5917 model->setOperandValue(param73, param73_init, sizeof(float) * 1);
5918 static float param74_init[] = {2.0f};
5919 model->setOperandValue(param74, param74_init, sizeof(float) * 1);
5920 static int32_t param75_init[] = {4};
5921 model->setOperandValue(param75, param75_init, sizeof(int32_t) * 1);
5922 static int32_t param76_init[] = {4};
5923 model->setOperandValue(param76, param76_init, sizeof(int32_t) * 1);
5924 static bool8 layout_init[] = {false};
5925 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5926 static int32_t param77_init[] = {1};
5927 model->setOperandValue(param77, param77_init, sizeof(int32_t) * 1);
5928 static int32_t param78_init[] = {1};
5929 model->setOperandValue(param78, param78_init, sizeof(int32_t) * 1);
5930 static int32_t param79_init[] = {1};
5931 model->setOperandValue(param79, param79_init, sizeof(int32_t) * 1);
5932 static int32_t param80_init[] = {2};
5933 model->setOperandValue(param80, param80_init, sizeof(int32_t) * 1);
5934 static int32_t param81_init[] = {2};
5935 model->setOperandValue(param81, param81_init, sizeof(int32_t) * 1);
5936 static int32_t param82_init[] = {0};
5937 model->setOperandValue(param82, param82_init, sizeof(int32_t) * 1);
5938 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param64, param65, param66, param67, param68, param69, param70}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
5939 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param71, param72, param73, param74, param75, param76, layout}, {featureMap1});
5940 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap1, param77, param78, param79, param80, param81, param82, layout}, {out1});
5941 // Phase 3, inputs and outputs
5942 model->identifyInputsAndOutputs(
5943 {in1},
5944 {scoresOut1, classesOut1, out1});
5945 assert(model->isValid());
5946 }
5947
is_ignored_zero_sized_nhwc_2(int i)5948 inline bool is_ignored_zero_sized_nhwc_2(int i) {
5949 static std::set<int> ignore = {};
5950 return ignore.find(i) != ignore.end();
5951 }
5952
CreateModel_zero_sized_nhwc_relaxed_2(Model * model)5953 void CreateModel_zero_sized_nhwc_relaxed_2(Model *model) {
5954 OperandType type0(Type::BOOL, {});
5955 OperandType type10(Type::TENSOR_FLOAT32, {1, 8});
5956 OperandType type11(Type::TENSOR_FLOAT32, {0});
5957 OperandType type12(Type::TENSOR_INT32, {0});
5958 OperandType type13(Type::TENSOR_FLOAT32, {0, 4});
5959 OperandType type14(Type::TENSOR_INT32, {1});
5960 OperandType type15(Type::FLOAT32, {});
5961 OperandType type16(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
5962 OperandType type17(Type::TENSOR_FLOAT32, {0, 2, 2, 1});
5963 OperandType type2(Type::INT32, {});
5964 OperandType type9(Type::TENSOR_FLOAT32, {1, 2});
5965 // Phase 1, operands
5966 auto scores1 = model->addOperand(&type9);
5967 auto roi1 = model->addOperand(&type10);
5968 auto param64 = model->addOperand(&type14);
5969 auto param65 = model->addOperand(&type15);
5970 auto param66 = model->addOperand(&type2);
5971 auto param67 = model->addOperand(&type2);
5972 auto param68 = model->addOperand(&type15);
5973 auto param69 = model->addOperand(&type15);
5974 auto param70 = model->addOperand(&type15);
5975 auto scoresOut1 = model->addOperand(&type11);
5976 auto roiOut1 = model->addOperand(&type13);
5977 auto classesOut1 = model->addOperand(&type12);
5978 auto batchSplitOut1 = model->addOperand(&type12);
5979 auto in1 = model->addOperand(&type16);
5980 auto param71 = model->addOperand(&type2);
5981 auto param72 = model->addOperand(&type2);
5982 auto param73 = model->addOperand(&type15);
5983 auto param74 = model->addOperand(&type15);
5984 auto param75 = model->addOperand(&type2);
5985 auto param76 = model->addOperand(&type2);
5986 auto layout = model->addOperand(&type0);
5987 auto featureMap1 = model->addOperand(&type17);
5988 auto param77 = model->addOperand(&type2);
5989 auto param78 = model->addOperand(&type2);
5990 auto param79 = model->addOperand(&type2);
5991 auto param80 = model->addOperand(&type2);
5992 auto param81 = model->addOperand(&type2);
5993 auto param82 = model->addOperand(&type2);
5994 auto out1 = model->addOperand(&type17);
5995 // Phase 2, operations
5996 static float scores1_init[] = {0.9f, 0.1f};
5997 model->setOperandValue(scores1, scores1_init, sizeof(float) * 2);
5998 static float roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
5999 model->setOperandValue(roi1, roi1_init, sizeof(float) * 8);
6000 static int32_t param64_init[] = {0};
6001 model->setOperandValue(param64, param64_init, sizeof(int32_t) * 1);
6002 static float param65_init[] = {0.3f};
6003 model->setOperandValue(param65, param65_init, sizeof(float) * 1);
6004 static int32_t param66_init[] = {-1};
6005 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
6006 static int32_t param67_init[] = {0};
6007 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
6008 static float param68_init[] = {0.4f};
6009 model->setOperandValue(param68, param68_init, sizeof(float) * 1);
6010 static float param69_init[] = {1.0f};
6011 model->setOperandValue(param69, param69_init, sizeof(float) * 1);
6012 static float param70_init[] = {0.3f};
6013 model->setOperandValue(param70, param70_init, sizeof(float) * 1);
6014 static int32_t param71_init[] = {2};
6015 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
6016 static int32_t param72_init[] = {2};
6017 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
6018 static float param73_init[] = {2.0f};
6019 model->setOperandValue(param73, param73_init, sizeof(float) * 1);
6020 static float param74_init[] = {2.0f};
6021 model->setOperandValue(param74, param74_init, sizeof(float) * 1);
6022 static int32_t param75_init[] = {4};
6023 model->setOperandValue(param75, param75_init, sizeof(int32_t) * 1);
6024 static int32_t param76_init[] = {4};
6025 model->setOperandValue(param76, param76_init, sizeof(int32_t) * 1);
6026 static bool8 layout_init[] = {false};
6027 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6028 static int32_t param77_init[] = {1};
6029 model->setOperandValue(param77, param77_init, sizeof(int32_t) * 1);
6030 static int32_t param78_init[] = {1};
6031 model->setOperandValue(param78, param78_init, sizeof(int32_t) * 1);
6032 static int32_t param79_init[] = {1};
6033 model->setOperandValue(param79, param79_init, sizeof(int32_t) * 1);
6034 static int32_t param80_init[] = {2};
6035 model->setOperandValue(param80, param80_init, sizeof(int32_t) * 1);
6036 static int32_t param81_init[] = {2};
6037 model->setOperandValue(param81, param81_init, sizeof(int32_t) * 1);
6038 static int32_t param82_init[] = {0};
6039 model->setOperandValue(param82, param82_init, sizeof(int32_t) * 1);
6040 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param64, param65, param66, param67, param68, param69, param70}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
6041 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param71, param72, param73, param74, param75, param76, layout}, {featureMap1});
6042 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap1, param77, param78, param79, param80, param81, param82, layout}, {out1});
6043 // Phase 3, inputs and outputs
6044 model->identifyInputsAndOutputs(
6045 {in1},
6046 {scoresOut1, classesOut1, out1});
6047 // Phase 4: set relaxed execution
6048 model->relaxComputationFloat32toFloat16(true);
6049 assert(model->isValid());
6050 }
6051
is_ignored_zero_sized_nhwc_relaxed_2(int i)6052 inline bool is_ignored_zero_sized_nhwc_relaxed_2(int i) {
6053 static std::set<int> ignore = {};
6054 return ignore.find(i) != ignore.end();
6055 }
6056
CreateModel_zero_sized_nhwc_quant8_2(Model * model)6057 void CreateModel_zero_sized_nhwc_quant8_2(Model *model) {
6058 OperandType type0(Type::BOOL, {});
6059 OperandType type12(Type::TENSOR_INT32, {0});
6060 OperandType type14(Type::TENSOR_INT32, {1});
6061 OperandType type15(Type::FLOAT32, {});
6062 OperandType type2(Type::INT32, {});
6063 OperandType type58(Type::TENSOR_QUANT8_ASYMM, {0, 2, 2, 1}, 0.1f, 128);
6064 OperandType type59(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 1}, 0.1f, 128);
6065 OperandType type61(Type::TENSOR_QUANT16_ASYMM, {1, 8}, 0.125f, 0);
6066 OperandType type62(Type::TENSOR_QUANT16_ASYMM, {0, 4}, 0.125f, 0);
6067 OperandType type63(Type::TENSOR_QUANT8_ASYMM, {1, 2}, 0.1f, 128);
6068 OperandType type64(Type::TENSOR_QUANT8_ASYMM, {0}, 0.1f, 128);
6069 // Phase 1, operands
6070 auto scores1 = model->addOperand(&type63);
6071 auto roi1 = model->addOperand(&type61);
6072 auto param64 = model->addOperand(&type14);
6073 auto param65 = model->addOperand(&type15);
6074 auto param66 = model->addOperand(&type2);
6075 auto param67 = model->addOperand(&type2);
6076 auto param68 = model->addOperand(&type15);
6077 auto param69 = model->addOperand(&type15);
6078 auto param70 = model->addOperand(&type15);
6079 auto scoresOut1 = model->addOperand(&type64);
6080 auto roiOut1 = model->addOperand(&type62);
6081 auto classesOut1 = model->addOperand(&type12);
6082 auto batchSplitOut1 = model->addOperand(&type12);
6083 auto in1 = model->addOperand(&type59);
6084 auto param71 = model->addOperand(&type2);
6085 auto param72 = model->addOperand(&type2);
6086 auto param73 = model->addOperand(&type15);
6087 auto param74 = model->addOperand(&type15);
6088 auto param75 = model->addOperand(&type2);
6089 auto param76 = model->addOperand(&type2);
6090 auto layout = model->addOperand(&type0);
6091 auto featureMap1 = model->addOperand(&type58);
6092 auto param77 = model->addOperand(&type2);
6093 auto param78 = model->addOperand(&type2);
6094 auto param79 = model->addOperand(&type2);
6095 auto param80 = model->addOperand(&type2);
6096 auto param81 = model->addOperand(&type2);
6097 auto param82 = model->addOperand(&type2);
6098 auto out1 = model->addOperand(&type58);
6099 // Phase 2, operations
6100 static uint8_t scores1_init[] = {137, 129};
6101 model->setOperandValue(scores1, scores1_init, sizeof(uint8_t) * 2);
6102 static uint16_t roi1_init[] = {8, 8, 80, 80, 0, 0, 80, 80};
6103 model->setOperandValue(roi1, roi1_init, sizeof(uint16_t) * 8);
6104 static int32_t param64_init[] = {0};
6105 model->setOperandValue(param64, param64_init, sizeof(int32_t) * 1);
6106 static float param65_init[] = {0.3f};
6107 model->setOperandValue(param65, param65_init, sizeof(float) * 1);
6108 static int32_t param66_init[] = {-1};
6109 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
6110 static int32_t param67_init[] = {0};
6111 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
6112 static float param68_init[] = {0.4f};
6113 model->setOperandValue(param68, param68_init, sizeof(float) * 1);
6114 static float param69_init[] = {1.0f};
6115 model->setOperandValue(param69, param69_init, sizeof(float) * 1);
6116 static float param70_init[] = {0.3f};
6117 model->setOperandValue(param70, param70_init, sizeof(float) * 1);
6118 static int32_t param71_init[] = {2};
6119 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
6120 static int32_t param72_init[] = {2};
6121 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
6122 static float param73_init[] = {2.0f};
6123 model->setOperandValue(param73, param73_init, sizeof(float) * 1);
6124 static float param74_init[] = {2.0f};
6125 model->setOperandValue(param74, param74_init, sizeof(float) * 1);
6126 static int32_t param75_init[] = {4};
6127 model->setOperandValue(param75, param75_init, sizeof(int32_t) * 1);
6128 static int32_t param76_init[] = {4};
6129 model->setOperandValue(param76, param76_init, sizeof(int32_t) * 1);
6130 static bool8 layout_init[] = {false};
6131 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6132 static int32_t param77_init[] = {1};
6133 model->setOperandValue(param77, param77_init, sizeof(int32_t) * 1);
6134 static int32_t param78_init[] = {1};
6135 model->setOperandValue(param78, param78_init, sizeof(int32_t) * 1);
6136 static int32_t param79_init[] = {1};
6137 model->setOperandValue(param79, param79_init, sizeof(int32_t) * 1);
6138 static int32_t param80_init[] = {2};
6139 model->setOperandValue(param80, param80_init, sizeof(int32_t) * 1);
6140 static int32_t param81_init[] = {2};
6141 model->setOperandValue(param81, param81_init, sizeof(int32_t) * 1);
6142 static int32_t param82_init[] = {0};
6143 model->setOperandValue(param82, param82_init, sizeof(int32_t) * 1);
6144 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param64, param65, param66, param67, param68, param69, param70}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
6145 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param71, param72, param73, param74, param75, param76, layout}, {featureMap1});
6146 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap1, param77, param78, param79, param80, param81, param82, layout}, {out1});
6147 // Phase 3, inputs and outputs
6148 model->identifyInputsAndOutputs(
6149 {in1},
6150 {scoresOut1, classesOut1, out1});
6151 assert(model->isValid());
6152 }
6153
is_ignored_zero_sized_nhwc_quant8_2(int i)6154 inline bool is_ignored_zero_sized_nhwc_quant8_2(int i) {
6155 static std::set<int> ignore = {};
6156 return ignore.find(i) != ignore.end();
6157 }
6158
CreateModel_zero_sized_nhwc_float16_2(Model * model)6159 void CreateModel_zero_sized_nhwc_float16_2(Model *model) {
6160 OperandType type0(Type::BOOL, {});
6161 OperandType type12(Type::TENSOR_INT32, {0});
6162 OperandType type14(Type::TENSOR_INT32, {1});
6163 OperandType type2(Type::INT32, {});
6164 OperandType type65(Type::TENSOR_FLOAT16, {0, 2, 2, 1});
6165 OperandType type66(Type::TENSOR_FLOAT16, {1, 1, 1, 1});
6166 OperandType type68(Type::FLOAT16, {});
6167 OperandType type69(Type::TENSOR_FLOAT16, {1, 8});
6168 OperandType type70(Type::TENSOR_FLOAT16, {0, 4});
6169 OperandType type71(Type::TENSOR_FLOAT16, {1, 2});
6170 OperandType type72(Type::TENSOR_FLOAT16, {0});
6171 // Phase 1, operands
6172 auto scores1 = model->addOperand(&type71);
6173 auto roi1 = model->addOperand(&type69);
6174 auto param64 = model->addOperand(&type14);
6175 auto param65 = model->addOperand(&type68);
6176 auto param66 = model->addOperand(&type2);
6177 auto param67 = model->addOperand(&type2);
6178 auto param68 = model->addOperand(&type68);
6179 auto param69 = model->addOperand(&type68);
6180 auto param70 = model->addOperand(&type68);
6181 auto scoresOut1 = model->addOperand(&type72);
6182 auto roiOut1 = model->addOperand(&type70);
6183 auto classesOut1 = model->addOperand(&type12);
6184 auto batchSplitOut1 = model->addOperand(&type12);
6185 auto in1 = model->addOperand(&type66);
6186 auto param71 = model->addOperand(&type2);
6187 auto param72 = model->addOperand(&type2);
6188 auto param73 = model->addOperand(&type68);
6189 auto param74 = model->addOperand(&type68);
6190 auto param75 = model->addOperand(&type2);
6191 auto param76 = model->addOperand(&type2);
6192 auto layout = model->addOperand(&type0);
6193 auto featureMap1 = model->addOperand(&type65);
6194 auto param77 = model->addOperand(&type2);
6195 auto param78 = model->addOperand(&type2);
6196 auto param79 = model->addOperand(&type2);
6197 auto param80 = model->addOperand(&type2);
6198 auto param81 = model->addOperand(&type2);
6199 auto param82 = model->addOperand(&type2);
6200 auto out1 = model->addOperand(&type65);
6201 // Phase 2, operations
6202 static _Float16 scores1_init[] = {0.8999999761581421f, 0.10000000149011612f};
6203 model->setOperandValue(scores1, scores1_init, sizeof(_Float16) * 2);
6204 static _Float16 roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
6205 model->setOperandValue(roi1, roi1_init, sizeof(_Float16) * 8);
6206 static int32_t param64_init[] = {0};
6207 model->setOperandValue(param64, param64_init, sizeof(int32_t) * 1);
6208 static _Float16 param65_init[] = {0.30000001192092896f};
6209 model->setOperandValue(param65, param65_init, sizeof(_Float16) * 1);
6210 static int32_t param66_init[] = {-1};
6211 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
6212 static int32_t param67_init[] = {0};
6213 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
6214 static _Float16 param68_init[] = {0.4000000059604645f};
6215 model->setOperandValue(param68, param68_init, sizeof(_Float16) * 1);
6216 static _Float16 param69_init[] = {1.0f};
6217 model->setOperandValue(param69, param69_init, sizeof(_Float16) * 1);
6218 static _Float16 param70_init[] = {0.30000001192092896f};
6219 model->setOperandValue(param70, param70_init, sizeof(_Float16) * 1);
6220 static int32_t param71_init[] = {2};
6221 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
6222 static int32_t param72_init[] = {2};
6223 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
6224 static _Float16 param73_init[] = {2.0f};
6225 model->setOperandValue(param73, param73_init, sizeof(_Float16) * 1);
6226 static _Float16 param74_init[] = {2.0f};
6227 model->setOperandValue(param74, param74_init, sizeof(_Float16) * 1);
6228 static int32_t param75_init[] = {4};
6229 model->setOperandValue(param75, param75_init, sizeof(int32_t) * 1);
6230 static int32_t param76_init[] = {4};
6231 model->setOperandValue(param76, param76_init, sizeof(int32_t) * 1);
6232 static bool8 layout_init[] = {false};
6233 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6234 static int32_t param77_init[] = {1};
6235 model->setOperandValue(param77, param77_init, sizeof(int32_t) * 1);
6236 static int32_t param78_init[] = {1};
6237 model->setOperandValue(param78, param78_init, sizeof(int32_t) * 1);
6238 static int32_t param79_init[] = {1};
6239 model->setOperandValue(param79, param79_init, sizeof(int32_t) * 1);
6240 static int32_t param80_init[] = {2};
6241 model->setOperandValue(param80, param80_init, sizeof(int32_t) * 1);
6242 static int32_t param81_init[] = {2};
6243 model->setOperandValue(param81, param81_init, sizeof(int32_t) * 1);
6244 static int32_t param82_init[] = {0};
6245 model->setOperandValue(param82, param82_init, sizeof(int32_t) * 1);
6246 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param64, param65, param66, param67, param68, param69, param70}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
6247 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param71, param72, param73, param74, param75, param76, layout}, {featureMap1});
6248 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap1, param77, param78, param79, param80, param81, param82, layout}, {out1});
6249 // Phase 3, inputs and outputs
6250 model->identifyInputsAndOutputs(
6251 {in1},
6252 {scoresOut1, classesOut1, out1});
6253 assert(model->isValid());
6254 }
6255
is_ignored_zero_sized_nhwc_float16_2(int i)6256 inline bool is_ignored_zero_sized_nhwc_float16_2(int i) {
6257 static std::set<int> ignore = {};
6258 return ignore.find(i) != ignore.end();
6259 }
6260
CreateModel_zero_sized_nchw_2(Model * model)6261 void CreateModel_zero_sized_nchw_2(Model *model) {
6262 OperandType type0(Type::BOOL, {});
6263 OperandType type10(Type::TENSOR_FLOAT32, {1, 8});
6264 OperandType type11(Type::TENSOR_FLOAT32, {0});
6265 OperandType type12(Type::TENSOR_INT32, {0});
6266 OperandType type13(Type::TENSOR_FLOAT32, {0, 4});
6267 OperandType type14(Type::TENSOR_INT32, {1});
6268 OperandType type15(Type::FLOAT32, {});
6269 OperandType type16(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
6270 OperandType type2(Type::INT32, {});
6271 OperandType type73(Type::TENSOR_FLOAT32, {0, 1, 2, 2});
6272 OperandType type9(Type::TENSOR_FLOAT32, {1, 2});
6273 // Phase 1, operands
6274 auto scores1 = model->addOperand(&type9);
6275 auto roi1 = model->addOperand(&type10);
6276 auto param64 = model->addOperand(&type14);
6277 auto param65 = model->addOperand(&type15);
6278 auto param66 = model->addOperand(&type2);
6279 auto param67 = model->addOperand(&type2);
6280 auto param68 = model->addOperand(&type15);
6281 auto param69 = model->addOperand(&type15);
6282 auto param70 = model->addOperand(&type15);
6283 auto scoresOut1 = model->addOperand(&type11);
6284 auto roiOut1 = model->addOperand(&type13);
6285 auto classesOut1 = model->addOperand(&type12);
6286 auto batchSplitOut1 = model->addOperand(&type12);
6287 auto in1 = model->addOperand(&type16);
6288 auto param71 = model->addOperand(&type2);
6289 auto param72 = model->addOperand(&type2);
6290 auto param73 = model->addOperand(&type15);
6291 auto param74 = model->addOperand(&type15);
6292 auto param75 = model->addOperand(&type2);
6293 auto param76 = model->addOperand(&type2);
6294 auto layout = model->addOperand(&type0);
6295 auto featureMap1 = model->addOperand(&type73);
6296 auto param77 = model->addOperand(&type2);
6297 auto param78 = model->addOperand(&type2);
6298 auto param79 = model->addOperand(&type2);
6299 auto param80 = model->addOperand(&type2);
6300 auto param81 = model->addOperand(&type2);
6301 auto param82 = model->addOperand(&type2);
6302 auto out1 = model->addOperand(&type73);
6303 // Phase 2, operations
6304 static float scores1_init[] = {0.9f, 0.1f};
6305 model->setOperandValue(scores1, scores1_init, sizeof(float) * 2);
6306 static float roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
6307 model->setOperandValue(roi1, roi1_init, sizeof(float) * 8);
6308 static int32_t param64_init[] = {0};
6309 model->setOperandValue(param64, param64_init, sizeof(int32_t) * 1);
6310 static float param65_init[] = {0.3f};
6311 model->setOperandValue(param65, param65_init, sizeof(float) * 1);
6312 static int32_t param66_init[] = {-1};
6313 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
6314 static int32_t param67_init[] = {0};
6315 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
6316 static float param68_init[] = {0.4f};
6317 model->setOperandValue(param68, param68_init, sizeof(float) * 1);
6318 static float param69_init[] = {1.0f};
6319 model->setOperandValue(param69, param69_init, sizeof(float) * 1);
6320 static float param70_init[] = {0.3f};
6321 model->setOperandValue(param70, param70_init, sizeof(float) * 1);
6322 static int32_t param71_init[] = {2};
6323 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
6324 static int32_t param72_init[] = {2};
6325 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
6326 static float param73_init[] = {2.0f};
6327 model->setOperandValue(param73, param73_init, sizeof(float) * 1);
6328 static float param74_init[] = {2.0f};
6329 model->setOperandValue(param74, param74_init, sizeof(float) * 1);
6330 static int32_t param75_init[] = {4};
6331 model->setOperandValue(param75, param75_init, sizeof(int32_t) * 1);
6332 static int32_t param76_init[] = {4};
6333 model->setOperandValue(param76, param76_init, sizeof(int32_t) * 1);
6334 static bool8 layout_init[] = {true};
6335 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6336 static int32_t param77_init[] = {1};
6337 model->setOperandValue(param77, param77_init, sizeof(int32_t) * 1);
6338 static int32_t param78_init[] = {1};
6339 model->setOperandValue(param78, param78_init, sizeof(int32_t) * 1);
6340 static int32_t param79_init[] = {1};
6341 model->setOperandValue(param79, param79_init, sizeof(int32_t) * 1);
6342 static int32_t param80_init[] = {2};
6343 model->setOperandValue(param80, param80_init, sizeof(int32_t) * 1);
6344 static int32_t param81_init[] = {2};
6345 model->setOperandValue(param81, param81_init, sizeof(int32_t) * 1);
6346 static int32_t param82_init[] = {0};
6347 model->setOperandValue(param82, param82_init, sizeof(int32_t) * 1);
6348 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param64, param65, param66, param67, param68, param69, param70}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
6349 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param71, param72, param73, param74, param75, param76, layout}, {featureMap1});
6350 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap1, param77, param78, param79, param80, param81, param82, layout}, {out1});
6351 // Phase 3, inputs and outputs
6352 model->identifyInputsAndOutputs(
6353 {in1},
6354 {scoresOut1, classesOut1, out1});
6355 assert(model->isValid());
6356 }
6357
is_ignored_zero_sized_nchw_2(int i)6358 inline bool is_ignored_zero_sized_nchw_2(int i) {
6359 static std::set<int> ignore = {};
6360 return ignore.find(i) != ignore.end();
6361 }
6362
CreateModel_zero_sized_nchw_relaxed_2(Model * model)6363 void CreateModel_zero_sized_nchw_relaxed_2(Model *model) {
6364 OperandType type0(Type::BOOL, {});
6365 OperandType type10(Type::TENSOR_FLOAT32, {1, 8});
6366 OperandType type11(Type::TENSOR_FLOAT32, {0});
6367 OperandType type12(Type::TENSOR_INT32, {0});
6368 OperandType type13(Type::TENSOR_FLOAT32, {0, 4});
6369 OperandType type14(Type::TENSOR_INT32, {1});
6370 OperandType type15(Type::FLOAT32, {});
6371 OperandType type16(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
6372 OperandType type2(Type::INT32, {});
6373 OperandType type73(Type::TENSOR_FLOAT32, {0, 1, 2, 2});
6374 OperandType type9(Type::TENSOR_FLOAT32, {1, 2});
6375 // Phase 1, operands
6376 auto scores1 = model->addOperand(&type9);
6377 auto roi1 = model->addOperand(&type10);
6378 auto param64 = model->addOperand(&type14);
6379 auto param65 = model->addOperand(&type15);
6380 auto param66 = model->addOperand(&type2);
6381 auto param67 = model->addOperand(&type2);
6382 auto param68 = model->addOperand(&type15);
6383 auto param69 = model->addOperand(&type15);
6384 auto param70 = model->addOperand(&type15);
6385 auto scoresOut1 = model->addOperand(&type11);
6386 auto roiOut1 = model->addOperand(&type13);
6387 auto classesOut1 = model->addOperand(&type12);
6388 auto batchSplitOut1 = model->addOperand(&type12);
6389 auto in1 = model->addOperand(&type16);
6390 auto param71 = model->addOperand(&type2);
6391 auto param72 = model->addOperand(&type2);
6392 auto param73 = model->addOperand(&type15);
6393 auto param74 = model->addOperand(&type15);
6394 auto param75 = model->addOperand(&type2);
6395 auto param76 = model->addOperand(&type2);
6396 auto layout = model->addOperand(&type0);
6397 auto featureMap1 = model->addOperand(&type73);
6398 auto param77 = model->addOperand(&type2);
6399 auto param78 = model->addOperand(&type2);
6400 auto param79 = model->addOperand(&type2);
6401 auto param80 = model->addOperand(&type2);
6402 auto param81 = model->addOperand(&type2);
6403 auto param82 = model->addOperand(&type2);
6404 auto out1 = model->addOperand(&type73);
6405 // Phase 2, operations
6406 static float scores1_init[] = {0.9f, 0.1f};
6407 model->setOperandValue(scores1, scores1_init, sizeof(float) * 2);
6408 static float roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
6409 model->setOperandValue(roi1, roi1_init, sizeof(float) * 8);
6410 static int32_t param64_init[] = {0};
6411 model->setOperandValue(param64, param64_init, sizeof(int32_t) * 1);
6412 static float param65_init[] = {0.3f};
6413 model->setOperandValue(param65, param65_init, sizeof(float) * 1);
6414 static int32_t param66_init[] = {-1};
6415 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
6416 static int32_t param67_init[] = {0};
6417 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
6418 static float param68_init[] = {0.4f};
6419 model->setOperandValue(param68, param68_init, sizeof(float) * 1);
6420 static float param69_init[] = {1.0f};
6421 model->setOperandValue(param69, param69_init, sizeof(float) * 1);
6422 static float param70_init[] = {0.3f};
6423 model->setOperandValue(param70, param70_init, sizeof(float) * 1);
6424 static int32_t param71_init[] = {2};
6425 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
6426 static int32_t param72_init[] = {2};
6427 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
6428 static float param73_init[] = {2.0f};
6429 model->setOperandValue(param73, param73_init, sizeof(float) * 1);
6430 static float param74_init[] = {2.0f};
6431 model->setOperandValue(param74, param74_init, sizeof(float) * 1);
6432 static int32_t param75_init[] = {4};
6433 model->setOperandValue(param75, param75_init, sizeof(int32_t) * 1);
6434 static int32_t param76_init[] = {4};
6435 model->setOperandValue(param76, param76_init, sizeof(int32_t) * 1);
6436 static bool8 layout_init[] = {true};
6437 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6438 static int32_t param77_init[] = {1};
6439 model->setOperandValue(param77, param77_init, sizeof(int32_t) * 1);
6440 static int32_t param78_init[] = {1};
6441 model->setOperandValue(param78, param78_init, sizeof(int32_t) * 1);
6442 static int32_t param79_init[] = {1};
6443 model->setOperandValue(param79, param79_init, sizeof(int32_t) * 1);
6444 static int32_t param80_init[] = {2};
6445 model->setOperandValue(param80, param80_init, sizeof(int32_t) * 1);
6446 static int32_t param81_init[] = {2};
6447 model->setOperandValue(param81, param81_init, sizeof(int32_t) * 1);
6448 static int32_t param82_init[] = {0};
6449 model->setOperandValue(param82, param82_init, sizeof(int32_t) * 1);
6450 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param64, param65, param66, param67, param68, param69, param70}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
6451 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param71, param72, param73, param74, param75, param76, layout}, {featureMap1});
6452 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap1, param77, param78, param79, param80, param81, param82, layout}, {out1});
6453 // Phase 3, inputs and outputs
6454 model->identifyInputsAndOutputs(
6455 {in1},
6456 {scoresOut1, classesOut1, out1});
6457 // Phase 4: set relaxed execution
6458 model->relaxComputationFloat32toFloat16(true);
6459 assert(model->isValid());
6460 }
6461
is_ignored_zero_sized_nchw_relaxed_2(int i)6462 inline bool is_ignored_zero_sized_nchw_relaxed_2(int i) {
6463 static std::set<int> ignore = {};
6464 return ignore.find(i) != ignore.end();
6465 }
6466
CreateModel_zero_sized_nchw_quant8_2(Model * model)6467 void CreateModel_zero_sized_nchw_quant8_2(Model *model) {
6468 OperandType type0(Type::BOOL, {});
6469 OperandType type12(Type::TENSOR_INT32, {0});
6470 OperandType type14(Type::TENSOR_INT32, {1});
6471 OperandType type15(Type::FLOAT32, {});
6472 OperandType type2(Type::INT32, {});
6473 OperandType type59(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 1}, 0.1f, 128);
6474 OperandType type61(Type::TENSOR_QUANT16_ASYMM, {1, 8}, 0.125f, 0);
6475 OperandType type62(Type::TENSOR_QUANT16_ASYMM, {0, 4}, 0.125f, 0);
6476 OperandType type63(Type::TENSOR_QUANT8_ASYMM, {1, 2}, 0.1f, 128);
6477 OperandType type64(Type::TENSOR_QUANT8_ASYMM, {0}, 0.1f, 128);
6478 OperandType type74(Type::TENSOR_QUANT8_ASYMM, {0, 1, 2, 2}, 0.1f, 128);
6479 // Phase 1, operands
6480 auto scores1 = model->addOperand(&type63);
6481 auto roi1 = model->addOperand(&type61);
6482 auto param64 = model->addOperand(&type14);
6483 auto param65 = model->addOperand(&type15);
6484 auto param66 = model->addOperand(&type2);
6485 auto param67 = model->addOperand(&type2);
6486 auto param68 = model->addOperand(&type15);
6487 auto param69 = model->addOperand(&type15);
6488 auto param70 = model->addOperand(&type15);
6489 auto scoresOut1 = model->addOperand(&type64);
6490 auto roiOut1 = model->addOperand(&type62);
6491 auto classesOut1 = model->addOperand(&type12);
6492 auto batchSplitOut1 = model->addOperand(&type12);
6493 auto in1 = model->addOperand(&type59);
6494 auto param71 = model->addOperand(&type2);
6495 auto param72 = model->addOperand(&type2);
6496 auto param73 = model->addOperand(&type15);
6497 auto param74 = model->addOperand(&type15);
6498 auto param75 = model->addOperand(&type2);
6499 auto param76 = model->addOperand(&type2);
6500 auto layout = model->addOperand(&type0);
6501 auto featureMap1 = model->addOperand(&type74);
6502 auto param77 = model->addOperand(&type2);
6503 auto param78 = model->addOperand(&type2);
6504 auto param79 = model->addOperand(&type2);
6505 auto param80 = model->addOperand(&type2);
6506 auto param81 = model->addOperand(&type2);
6507 auto param82 = model->addOperand(&type2);
6508 auto out1 = model->addOperand(&type74);
6509 // Phase 2, operations
6510 static uint8_t scores1_init[] = {137, 129};
6511 model->setOperandValue(scores1, scores1_init, sizeof(uint8_t) * 2);
6512 static uint16_t roi1_init[] = {8, 8, 80, 80, 0, 0, 80, 80};
6513 model->setOperandValue(roi1, roi1_init, sizeof(uint16_t) * 8);
6514 static int32_t param64_init[] = {0};
6515 model->setOperandValue(param64, param64_init, sizeof(int32_t) * 1);
6516 static float param65_init[] = {0.3f};
6517 model->setOperandValue(param65, param65_init, sizeof(float) * 1);
6518 static int32_t param66_init[] = {-1};
6519 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
6520 static int32_t param67_init[] = {0};
6521 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
6522 static float param68_init[] = {0.4f};
6523 model->setOperandValue(param68, param68_init, sizeof(float) * 1);
6524 static float param69_init[] = {1.0f};
6525 model->setOperandValue(param69, param69_init, sizeof(float) * 1);
6526 static float param70_init[] = {0.3f};
6527 model->setOperandValue(param70, param70_init, sizeof(float) * 1);
6528 static int32_t param71_init[] = {2};
6529 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
6530 static int32_t param72_init[] = {2};
6531 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
6532 static float param73_init[] = {2.0f};
6533 model->setOperandValue(param73, param73_init, sizeof(float) * 1);
6534 static float param74_init[] = {2.0f};
6535 model->setOperandValue(param74, param74_init, sizeof(float) * 1);
6536 static int32_t param75_init[] = {4};
6537 model->setOperandValue(param75, param75_init, sizeof(int32_t) * 1);
6538 static int32_t param76_init[] = {4};
6539 model->setOperandValue(param76, param76_init, sizeof(int32_t) * 1);
6540 static bool8 layout_init[] = {true};
6541 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6542 static int32_t param77_init[] = {1};
6543 model->setOperandValue(param77, param77_init, sizeof(int32_t) * 1);
6544 static int32_t param78_init[] = {1};
6545 model->setOperandValue(param78, param78_init, sizeof(int32_t) * 1);
6546 static int32_t param79_init[] = {1};
6547 model->setOperandValue(param79, param79_init, sizeof(int32_t) * 1);
6548 static int32_t param80_init[] = {2};
6549 model->setOperandValue(param80, param80_init, sizeof(int32_t) * 1);
6550 static int32_t param81_init[] = {2};
6551 model->setOperandValue(param81, param81_init, sizeof(int32_t) * 1);
6552 static int32_t param82_init[] = {0};
6553 model->setOperandValue(param82, param82_init, sizeof(int32_t) * 1);
6554 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param64, param65, param66, param67, param68, param69, param70}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
6555 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param71, param72, param73, param74, param75, param76, layout}, {featureMap1});
6556 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap1, param77, param78, param79, param80, param81, param82, layout}, {out1});
6557 // Phase 3, inputs and outputs
6558 model->identifyInputsAndOutputs(
6559 {in1},
6560 {scoresOut1, classesOut1, out1});
6561 assert(model->isValid());
6562 }
6563
is_ignored_zero_sized_nchw_quant8_2(int i)6564 inline bool is_ignored_zero_sized_nchw_quant8_2(int i) {
6565 static std::set<int> ignore = {};
6566 return ignore.find(i) != ignore.end();
6567 }
6568
CreateModel_zero_sized_nchw_float16_2(Model * model)6569 void CreateModel_zero_sized_nchw_float16_2(Model *model) {
6570 OperandType type0(Type::BOOL, {});
6571 OperandType type12(Type::TENSOR_INT32, {0});
6572 OperandType type14(Type::TENSOR_INT32, {1});
6573 OperandType type2(Type::INT32, {});
6574 OperandType type66(Type::TENSOR_FLOAT16, {1, 1, 1, 1});
6575 OperandType type68(Type::FLOAT16, {});
6576 OperandType type69(Type::TENSOR_FLOAT16, {1, 8});
6577 OperandType type70(Type::TENSOR_FLOAT16, {0, 4});
6578 OperandType type71(Type::TENSOR_FLOAT16, {1, 2});
6579 OperandType type72(Type::TENSOR_FLOAT16, {0});
6580 OperandType type75(Type::TENSOR_FLOAT16, {0, 1, 2, 2});
6581 // Phase 1, operands
6582 auto scores1 = model->addOperand(&type71);
6583 auto roi1 = model->addOperand(&type69);
6584 auto param64 = model->addOperand(&type14);
6585 auto param65 = model->addOperand(&type68);
6586 auto param66 = model->addOperand(&type2);
6587 auto param67 = model->addOperand(&type2);
6588 auto param68 = model->addOperand(&type68);
6589 auto param69 = model->addOperand(&type68);
6590 auto param70 = model->addOperand(&type68);
6591 auto scoresOut1 = model->addOperand(&type72);
6592 auto roiOut1 = model->addOperand(&type70);
6593 auto classesOut1 = model->addOperand(&type12);
6594 auto batchSplitOut1 = model->addOperand(&type12);
6595 auto in1 = model->addOperand(&type66);
6596 auto param71 = model->addOperand(&type2);
6597 auto param72 = model->addOperand(&type2);
6598 auto param73 = model->addOperand(&type68);
6599 auto param74 = model->addOperand(&type68);
6600 auto param75 = model->addOperand(&type2);
6601 auto param76 = model->addOperand(&type2);
6602 auto layout = model->addOperand(&type0);
6603 auto featureMap1 = model->addOperand(&type75);
6604 auto param77 = model->addOperand(&type2);
6605 auto param78 = model->addOperand(&type2);
6606 auto param79 = model->addOperand(&type2);
6607 auto param80 = model->addOperand(&type2);
6608 auto param81 = model->addOperand(&type2);
6609 auto param82 = model->addOperand(&type2);
6610 auto out1 = model->addOperand(&type75);
6611 // Phase 2, operations
6612 static _Float16 scores1_init[] = {0.8999999761581421f, 0.10000000149011612f};
6613 model->setOperandValue(scores1, scores1_init, sizeof(_Float16) * 2);
6614 static _Float16 roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
6615 model->setOperandValue(roi1, roi1_init, sizeof(_Float16) * 8);
6616 static int32_t param64_init[] = {0};
6617 model->setOperandValue(param64, param64_init, sizeof(int32_t) * 1);
6618 static _Float16 param65_init[] = {0.30000001192092896f};
6619 model->setOperandValue(param65, param65_init, sizeof(_Float16) * 1);
6620 static int32_t param66_init[] = {-1};
6621 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
6622 static int32_t param67_init[] = {0};
6623 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
6624 static _Float16 param68_init[] = {0.4000000059604645f};
6625 model->setOperandValue(param68, param68_init, sizeof(_Float16) * 1);
6626 static _Float16 param69_init[] = {1.0f};
6627 model->setOperandValue(param69, param69_init, sizeof(_Float16) * 1);
6628 static _Float16 param70_init[] = {0.30000001192092896f};
6629 model->setOperandValue(param70, param70_init, sizeof(_Float16) * 1);
6630 static int32_t param71_init[] = {2};
6631 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
6632 static int32_t param72_init[] = {2};
6633 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
6634 static _Float16 param73_init[] = {2.0f};
6635 model->setOperandValue(param73, param73_init, sizeof(_Float16) * 1);
6636 static _Float16 param74_init[] = {2.0f};
6637 model->setOperandValue(param74, param74_init, sizeof(_Float16) * 1);
6638 static int32_t param75_init[] = {4};
6639 model->setOperandValue(param75, param75_init, sizeof(int32_t) * 1);
6640 static int32_t param76_init[] = {4};
6641 model->setOperandValue(param76, param76_init, sizeof(int32_t) * 1);
6642 static bool8 layout_init[] = {true};
6643 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6644 static int32_t param77_init[] = {1};
6645 model->setOperandValue(param77, param77_init, sizeof(int32_t) * 1);
6646 static int32_t param78_init[] = {1};
6647 model->setOperandValue(param78, param78_init, sizeof(int32_t) * 1);
6648 static int32_t param79_init[] = {1};
6649 model->setOperandValue(param79, param79_init, sizeof(int32_t) * 1);
6650 static int32_t param80_init[] = {2};
6651 model->setOperandValue(param80, param80_init, sizeof(int32_t) * 1);
6652 static int32_t param81_init[] = {2};
6653 model->setOperandValue(param81, param81_init, sizeof(int32_t) * 1);
6654 static int32_t param82_init[] = {0};
6655 model->setOperandValue(param82, param82_init, sizeof(int32_t) * 1);
6656 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param64, param65, param66, param67, param68, param69, param70}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
6657 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param71, param72, param73, param74, param75, param76, layout}, {featureMap1});
6658 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap1, param77, param78, param79, param80, param81, param82, layout}, {out1});
6659 // Phase 3, inputs and outputs
6660 model->identifyInputsAndOutputs(
6661 {in1},
6662 {scoresOut1, classesOut1, out1});
6663 assert(model->isValid());
6664 }
6665
is_ignored_zero_sized_nchw_float16_2(int i)6666 inline bool is_ignored_zero_sized_nchw_float16_2(int i) {
6667 static std::set<int> ignore = {};
6668 return ignore.find(i) != ignore.end();
6669 }
6670
CreateModel_zero_sized_dynamic_output_shape_nhwc_2(Model * model)6671 void CreateModel_zero_sized_dynamic_output_shape_nhwc_2(Model *model) {
6672 OperandType type0(Type::BOOL, {});
6673 OperandType type10(Type::TENSOR_FLOAT32, {1, 8});
6674 OperandType type11(Type::TENSOR_FLOAT32, {0});
6675 OperandType type12(Type::TENSOR_INT32, {0});
6676 OperandType type13(Type::TENSOR_FLOAT32, {0, 4});
6677 OperandType type14(Type::TENSOR_INT32, {1});
6678 OperandType type15(Type::FLOAT32, {});
6679 OperandType type16(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
6680 OperandType type17(Type::TENSOR_FLOAT32, {0, 2, 2, 1});
6681 OperandType type2(Type::INT32, {});
6682 OperandType type24(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
6683 OperandType type9(Type::TENSOR_FLOAT32, {1, 2});
6684 // Phase 1, operands
6685 auto scores1 = model->addOperand(&type9);
6686 auto roi1 = model->addOperand(&type10);
6687 auto param64 = model->addOperand(&type14);
6688 auto param65 = model->addOperand(&type15);
6689 auto param66 = model->addOperand(&type2);
6690 auto param67 = model->addOperand(&type2);
6691 auto param68 = model->addOperand(&type15);
6692 auto param69 = model->addOperand(&type15);
6693 auto param70 = model->addOperand(&type15);
6694 auto scoresOut1 = model->addOperand(&type11);
6695 auto roiOut1 = model->addOperand(&type13);
6696 auto classesOut1 = model->addOperand(&type12);
6697 auto batchSplitOut1 = model->addOperand(&type12);
6698 auto in1 = model->addOperand(&type16);
6699 auto param71 = model->addOperand(&type2);
6700 auto param72 = model->addOperand(&type2);
6701 auto param73 = model->addOperand(&type15);
6702 auto param74 = model->addOperand(&type15);
6703 auto param75 = model->addOperand(&type2);
6704 auto param76 = model->addOperand(&type2);
6705 auto layout = model->addOperand(&type0);
6706 auto featureMap1 = model->addOperand(&type17);
6707 auto param77 = model->addOperand(&type2);
6708 auto param78 = model->addOperand(&type2);
6709 auto param79 = model->addOperand(&type2);
6710 auto param80 = model->addOperand(&type2);
6711 auto param81 = model->addOperand(&type2);
6712 auto param82 = model->addOperand(&type2);
6713 auto out1 = model->addOperand(&type24);
6714 // Phase 2, operations
6715 static float scores1_init[] = {0.9f, 0.1f};
6716 model->setOperandValue(scores1, scores1_init, sizeof(float) * 2);
6717 static float roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
6718 model->setOperandValue(roi1, roi1_init, sizeof(float) * 8);
6719 static int32_t param64_init[] = {0};
6720 model->setOperandValue(param64, param64_init, sizeof(int32_t) * 1);
6721 static float param65_init[] = {0.3f};
6722 model->setOperandValue(param65, param65_init, sizeof(float) * 1);
6723 static int32_t param66_init[] = {-1};
6724 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
6725 static int32_t param67_init[] = {0};
6726 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
6727 static float param68_init[] = {0.4f};
6728 model->setOperandValue(param68, param68_init, sizeof(float) * 1);
6729 static float param69_init[] = {1.0f};
6730 model->setOperandValue(param69, param69_init, sizeof(float) * 1);
6731 static float param70_init[] = {0.3f};
6732 model->setOperandValue(param70, param70_init, sizeof(float) * 1);
6733 static int32_t param71_init[] = {2};
6734 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
6735 static int32_t param72_init[] = {2};
6736 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
6737 static float param73_init[] = {2.0f};
6738 model->setOperandValue(param73, param73_init, sizeof(float) * 1);
6739 static float param74_init[] = {2.0f};
6740 model->setOperandValue(param74, param74_init, sizeof(float) * 1);
6741 static int32_t param75_init[] = {4};
6742 model->setOperandValue(param75, param75_init, sizeof(int32_t) * 1);
6743 static int32_t param76_init[] = {4};
6744 model->setOperandValue(param76, param76_init, sizeof(int32_t) * 1);
6745 static bool8 layout_init[] = {false};
6746 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6747 static int32_t param77_init[] = {1};
6748 model->setOperandValue(param77, param77_init, sizeof(int32_t) * 1);
6749 static int32_t param78_init[] = {1};
6750 model->setOperandValue(param78, param78_init, sizeof(int32_t) * 1);
6751 static int32_t param79_init[] = {1};
6752 model->setOperandValue(param79, param79_init, sizeof(int32_t) * 1);
6753 static int32_t param80_init[] = {2};
6754 model->setOperandValue(param80, param80_init, sizeof(int32_t) * 1);
6755 static int32_t param81_init[] = {2};
6756 model->setOperandValue(param81, param81_init, sizeof(int32_t) * 1);
6757 static int32_t param82_init[] = {0};
6758 model->setOperandValue(param82, param82_init, sizeof(int32_t) * 1);
6759 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param64, param65, param66, param67, param68, param69, param70}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
6760 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param71, param72, param73, param74, param75, param76, layout}, {featureMap1});
6761 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap1, param77, param78, param79, param80, param81, param82, layout}, {out1});
6762 // Phase 3, inputs and outputs
6763 model->identifyInputsAndOutputs(
6764 {in1},
6765 {scoresOut1, classesOut1, out1});
6766 assert(model->isValid());
6767 }
6768
is_ignored_zero_sized_dynamic_output_shape_nhwc_2(int i)6769 inline bool is_ignored_zero_sized_dynamic_output_shape_nhwc_2(int i) {
6770 static std::set<int> ignore = {};
6771 return ignore.find(i) != ignore.end();
6772 }
6773
CreateModel_zero_sized_dynamic_output_shape_nhwc_relaxed_2(Model * model)6774 void CreateModel_zero_sized_dynamic_output_shape_nhwc_relaxed_2(Model *model) {
6775 OperandType type0(Type::BOOL, {});
6776 OperandType type10(Type::TENSOR_FLOAT32, {1, 8});
6777 OperandType type11(Type::TENSOR_FLOAT32, {0});
6778 OperandType type12(Type::TENSOR_INT32, {0});
6779 OperandType type13(Type::TENSOR_FLOAT32, {0, 4});
6780 OperandType type14(Type::TENSOR_INT32, {1});
6781 OperandType type15(Type::FLOAT32, {});
6782 OperandType type16(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
6783 OperandType type17(Type::TENSOR_FLOAT32, {0, 2, 2, 1});
6784 OperandType type2(Type::INT32, {});
6785 OperandType type24(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
6786 OperandType type9(Type::TENSOR_FLOAT32, {1, 2});
6787 // Phase 1, operands
6788 auto scores1 = model->addOperand(&type9);
6789 auto roi1 = model->addOperand(&type10);
6790 auto param64 = model->addOperand(&type14);
6791 auto param65 = model->addOperand(&type15);
6792 auto param66 = model->addOperand(&type2);
6793 auto param67 = model->addOperand(&type2);
6794 auto param68 = model->addOperand(&type15);
6795 auto param69 = model->addOperand(&type15);
6796 auto param70 = model->addOperand(&type15);
6797 auto scoresOut1 = model->addOperand(&type11);
6798 auto roiOut1 = model->addOperand(&type13);
6799 auto classesOut1 = model->addOperand(&type12);
6800 auto batchSplitOut1 = model->addOperand(&type12);
6801 auto in1 = model->addOperand(&type16);
6802 auto param71 = model->addOperand(&type2);
6803 auto param72 = model->addOperand(&type2);
6804 auto param73 = model->addOperand(&type15);
6805 auto param74 = model->addOperand(&type15);
6806 auto param75 = model->addOperand(&type2);
6807 auto param76 = model->addOperand(&type2);
6808 auto layout = model->addOperand(&type0);
6809 auto featureMap1 = model->addOperand(&type17);
6810 auto param77 = model->addOperand(&type2);
6811 auto param78 = model->addOperand(&type2);
6812 auto param79 = model->addOperand(&type2);
6813 auto param80 = model->addOperand(&type2);
6814 auto param81 = model->addOperand(&type2);
6815 auto param82 = model->addOperand(&type2);
6816 auto out1 = model->addOperand(&type24);
6817 // Phase 2, operations
6818 static float scores1_init[] = {0.9f, 0.1f};
6819 model->setOperandValue(scores1, scores1_init, sizeof(float) * 2);
6820 static float roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
6821 model->setOperandValue(roi1, roi1_init, sizeof(float) * 8);
6822 static int32_t param64_init[] = {0};
6823 model->setOperandValue(param64, param64_init, sizeof(int32_t) * 1);
6824 static float param65_init[] = {0.3f};
6825 model->setOperandValue(param65, param65_init, sizeof(float) * 1);
6826 static int32_t param66_init[] = {-1};
6827 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
6828 static int32_t param67_init[] = {0};
6829 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
6830 static float param68_init[] = {0.4f};
6831 model->setOperandValue(param68, param68_init, sizeof(float) * 1);
6832 static float param69_init[] = {1.0f};
6833 model->setOperandValue(param69, param69_init, sizeof(float) * 1);
6834 static float param70_init[] = {0.3f};
6835 model->setOperandValue(param70, param70_init, sizeof(float) * 1);
6836 static int32_t param71_init[] = {2};
6837 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
6838 static int32_t param72_init[] = {2};
6839 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
6840 static float param73_init[] = {2.0f};
6841 model->setOperandValue(param73, param73_init, sizeof(float) * 1);
6842 static float param74_init[] = {2.0f};
6843 model->setOperandValue(param74, param74_init, sizeof(float) * 1);
6844 static int32_t param75_init[] = {4};
6845 model->setOperandValue(param75, param75_init, sizeof(int32_t) * 1);
6846 static int32_t param76_init[] = {4};
6847 model->setOperandValue(param76, param76_init, sizeof(int32_t) * 1);
6848 static bool8 layout_init[] = {false};
6849 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6850 static int32_t param77_init[] = {1};
6851 model->setOperandValue(param77, param77_init, sizeof(int32_t) * 1);
6852 static int32_t param78_init[] = {1};
6853 model->setOperandValue(param78, param78_init, sizeof(int32_t) * 1);
6854 static int32_t param79_init[] = {1};
6855 model->setOperandValue(param79, param79_init, sizeof(int32_t) * 1);
6856 static int32_t param80_init[] = {2};
6857 model->setOperandValue(param80, param80_init, sizeof(int32_t) * 1);
6858 static int32_t param81_init[] = {2};
6859 model->setOperandValue(param81, param81_init, sizeof(int32_t) * 1);
6860 static int32_t param82_init[] = {0};
6861 model->setOperandValue(param82, param82_init, sizeof(int32_t) * 1);
6862 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param64, param65, param66, param67, param68, param69, param70}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
6863 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param71, param72, param73, param74, param75, param76, layout}, {featureMap1});
6864 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap1, param77, param78, param79, param80, param81, param82, layout}, {out1});
6865 // Phase 3, inputs and outputs
6866 model->identifyInputsAndOutputs(
6867 {in1},
6868 {scoresOut1, classesOut1, out1});
6869 // Phase 4: set relaxed execution
6870 model->relaxComputationFloat32toFloat16(true);
6871 assert(model->isValid());
6872 }
6873
is_ignored_zero_sized_dynamic_output_shape_nhwc_relaxed_2(int i)6874 inline bool is_ignored_zero_sized_dynamic_output_shape_nhwc_relaxed_2(int i) {
6875 static std::set<int> ignore = {};
6876 return ignore.find(i) != ignore.end();
6877 }
6878
CreateModel_zero_sized_dynamic_output_shape_nhwc_quant8_2(Model * model)6879 void CreateModel_zero_sized_dynamic_output_shape_nhwc_quant8_2(Model *model) {
6880 OperandType type0(Type::BOOL, {});
6881 OperandType type12(Type::TENSOR_INT32, {0});
6882 OperandType type14(Type::TENSOR_INT32, {1});
6883 OperandType type15(Type::FLOAT32, {});
6884 OperandType type2(Type::INT32, {});
6885 OperandType type58(Type::TENSOR_QUANT8_ASYMM, {0, 2, 2, 1}, 0.1f, 128);
6886 OperandType type59(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 1}, 0.1f, 128);
6887 OperandType type61(Type::TENSOR_QUANT16_ASYMM, {1, 8}, 0.125f, 0);
6888 OperandType type62(Type::TENSOR_QUANT16_ASYMM, {0, 4}, 0.125f, 0);
6889 OperandType type63(Type::TENSOR_QUANT8_ASYMM, {1, 2}, 0.1f, 128);
6890 OperandType type64(Type::TENSOR_QUANT8_ASYMM, {0}, 0.1f, 128);
6891 OperandType type76(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.1f, 128);
6892 // Phase 1, operands
6893 auto scores1 = model->addOperand(&type63);
6894 auto roi1 = model->addOperand(&type61);
6895 auto param64 = model->addOperand(&type14);
6896 auto param65 = model->addOperand(&type15);
6897 auto param66 = model->addOperand(&type2);
6898 auto param67 = model->addOperand(&type2);
6899 auto param68 = model->addOperand(&type15);
6900 auto param69 = model->addOperand(&type15);
6901 auto param70 = model->addOperand(&type15);
6902 auto scoresOut1 = model->addOperand(&type64);
6903 auto roiOut1 = model->addOperand(&type62);
6904 auto classesOut1 = model->addOperand(&type12);
6905 auto batchSplitOut1 = model->addOperand(&type12);
6906 auto in1 = model->addOperand(&type59);
6907 auto param71 = model->addOperand(&type2);
6908 auto param72 = model->addOperand(&type2);
6909 auto param73 = model->addOperand(&type15);
6910 auto param74 = model->addOperand(&type15);
6911 auto param75 = model->addOperand(&type2);
6912 auto param76 = model->addOperand(&type2);
6913 auto layout = model->addOperand(&type0);
6914 auto featureMap1 = model->addOperand(&type58);
6915 auto param77 = model->addOperand(&type2);
6916 auto param78 = model->addOperand(&type2);
6917 auto param79 = model->addOperand(&type2);
6918 auto param80 = model->addOperand(&type2);
6919 auto param81 = model->addOperand(&type2);
6920 auto param82 = model->addOperand(&type2);
6921 auto out1 = model->addOperand(&type76);
6922 // Phase 2, operations
6923 static uint8_t scores1_init[] = {137, 129};
6924 model->setOperandValue(scores1, scores1_init, sizeof(uint8_t) * 2);
6925 static uint16_t roi1_init[] = {8, 8, 80, 80, 0, 0, 80, 80};
6926 model->setOperandValue(roi1, roi1_init, sizeof(uint16_t) * 8);
6927 static int32_t param64_init[] = {0};
6928 model->setOperandValue(param64, param64_init, sizeof(int32_t) * 1);
6929 static float param65_init[] = {0.3f};
6930 model->setOperandValue(param65, param65_init, sizeof(float) * 1);
6931 static int32_t param66_init[] = {-1};
6932 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
6933 static int32_t param67_init[] = {0};
6934 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
6935 static float param68_init[] = {0.4f};
6936 model->setOperandValue(param68, param68_init, sizeof(float) * 1);
6937 static float param69_init[] = {1.0f};
6938 model->setOperandValue(param69, param69_init, sizeof(float) * 1);
6939 static float param70_init[] = {0.3f};
6940 model->setOperandValue(param70, param70_init, sizeof(float) * 1);
6941 static int32_t param71_init[] = {2};
6942 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
6943 static int32_t param72_init[] = {2};
6944 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
6945 static float param73_init[] = {2.0f};
6946 model->setOperandValue(param73, param73_init, sizeof(float) * 1);
6947 static float param74_init[] = {2.0f};
6948 model->setOperandValue(param74, param74_init, sizeof(float) * 1);
6949 static int32_t param75_init[] = {4};
6950 model->setOperandValue(param75, param75_init, sizeof(int32_t) * 1);
6951 static int32_t param76_init[] = {4};
6952 model->setOperandValue(param76, param76_init, sizeof(int32_t) * 1);
6953 static bool8 layout_init[] = {false};
6954 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6955 static int32_t param77_init[] = {1};
6956 model->setOperandValue(param77, param77_init, sizeof(int32_t) * 1);
6957 static int32_t param78_init[] = {1};
6958 model->setOperandValue(param78, param78_init, sizeof(int32_t) * 1);
6959 static int32_t param79_init[] = {1};
6960 model->setOperandValue(param79, param79_init, sizeof(int32_t) * 1);
6961 static int32_t param80_init[] = {2};
6962 model->setOperandValue(param80, param80_init, sizeof(int32_t) * 1);
6963 static int32_t param81_init[] = {2};
6964 model->setOperandValue(param81, param81_init, sizeof(int32_t) * 1);
6965 static int32_t param82_init[] = {0};
6966 model->setOperandValue(param82, param82_init, sizeof(int32_t) * 1);
6967 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param64, param65, param66, param67, param68, param69, param70}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
6968 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param71, param72, param73, param74, param75, param76, layout}, {featureMap1});
6969 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap1, param77, param78, param79, param80, param81, param82, layout}, {out1});
6970 // Phase 3, inputs and outputs
6971 model->identifyInputsAndOutputs(
6972 {in1},
6973 {scoresOut1, classesOut1, out1});
6974 assert(model->isValid());
6975 }
6976
is_ignored_zero_sized_dynamic_output_shape_nhwc_quant8_2(int i)6977 inline bool is_ignored_zero_sized_dynamic_output_shape_nhwc_quant8_2(int i) {
6978 static std::set<int> ignore = {};
6979 return ignore.find(i) != ignore.end();
6980 }
6981
CreateModel_zero_sized_dynamic_output_shape_nhwc_float16_2(Model * model)6982 void CreateModel_zero_sized_dynamic_output_shape_nhwc_float16_2(Model *model) {
6983 OperandType type0(Type::BOOL, {});
6984 OperandType type12(Type::TENSOR_INT32, {0});
6985 OperandType type14(Type::TENSOR_INT32, {1});
6986 OperandType type2(Type::INT32, {});
6987 OperandType type25(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
6988 OperandType type65(Type::TENSOR_FLOAT16, {0, 2, 2, 1});
6989 OperandType type66(Type::TENSOR_FLOAT16, {1, 1, 1, 1});
6990 OperandType type68(Type::FLOAT16, {});
6991 OperandType type69(Type::TENSOR_FLOAT16, {1, 8});
6992 OperandType type70(Type::TENSOR_FLOAT16, {0, 4});
6993 OperandType type71(Type::TENSOR_FLOAT16, {1, 2});
6994 OperandType type77(Type::TENSOR_FLOAT16, {0});
6995 // Phase 1, operands
6996 auto scores1 = model->addOperand(&type71);
6997 auto roi1 = model->addOperand(&type69);
6998 auto param64 = model->addOperand(&type14);
6999 auto param65 = model->addOperand(&type68);
7000 auto param66 = model->addOperand(&type2);
7001 auto param67 = model->addOperand(&type2);
7002 auto param68 = model->addOperand(&type68);
7003 auto param69 = model->addOperand(&type68);
7004 auto param70 = model->addOperand(&type68);
7005 auto scoresOut1 = model->addOperand(&type77);
7006 auto roiOut1 = model->addOperand(&type70);
7007 auto classesOut1 = model->addOperand(&type12);
7008 auto batchSplitOut1 = model->addOperand(&type12);
7009 auto in1 = model->addOperand(&type66);
7010 auto param71 = model->addOperand(&type2);
7011 auto param72 = model->addOperand(&type2);
7012 auto param73 = model->addOperand(&type68);
7013 auto param74 = model->addOperand(&type68);
7014 auto param75 = model->addOperand(&type2);
7015 auto param76 = model->addOperand(&type2);
7016 auto layout = model->addOperand(&type0);
7017 auto featureMap1 = model->addOperand(&type65);
7018 auto param77 = model->addOperand(&type2);
7019 auto param78 = model->addOperand(&type2);
7020 auto param79 = model->addOperand(&type2);
7021 auto param80 = model->addOperand(&type2);
7022 auto param81 = model->addOperand(&type2);
7023 auto param82 = model->addOperand(&type2);
7024 auto out1 = model->addOperand(&type25);
7025 // Phase 2, operations
7026 static _Float16 scores1_init[] = {0.8999999761581421f, 0.10000000149011612f};
7027 model->setOperandValue(scores1, scores1_init, sizeof(_Float16) * 2);
7028 static _Float16 roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
7029 model->setOperandValue(roi1, roi1_init, sizeof(_Float16) * 8);
7030 static int32_t param64_init[] = {0};
7031 model->setOperandValue(param64, param64_init, sizeof(int32_t) * 1);
7032 static _Float16 param65_init[] = {0.30000001192092896f};
7033 model->setOperandValue(param65, param65_init, sizeof(_Float16) * 1);
7034 static int32_t param66_init[] = {-1};
7035 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
7036 static int32_t param67_init[] = {0};
7037 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
7038 static _Float16 param68_init[] = {0.4000000059604645f};
7039 model->setOperandValue(param68, param68_init, sizeof(_Float16) * 1);
7040 static _Float16 param69_init[] = {1.0f};
7041 model->setOperandValue(param69, param69_init, sizeof(_Float16) * 1);
7042 static _Float16 param70_init[] = {0.30000001192092896f};
7043 model->setOperandValue(param70, param70_init, sizeof(_Float16) * 1);
7044 static int32_t param71_init[] = {2};
7045 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
7046 static int32_t param72_init[] = {2};
7047 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
7048 static _Float16 param73_init[] = {2.0f};
7049 model->setOperandValue(param73, param73_init, sizeof(_Float16) * 1);
7050 static _Float16 param74_init[] = {2.0f};
7051 model->setOperandValue(param74, param74_init, sizeof(_Float16) * 1);
7052 static int32_t param75_init[] = {4};
7053 model->setOperandValue(param75, param75_init, sizeof(int32_t) * 1);
7054 static int32_t param76_init[] = {4};
7055 model->setOperandValue(param76, param76_init, sizeof(int32_t) * 1);
7056 static bool8 layout_init[] = {false};
7057 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7058 static int32_t param77_init[] = {1};
7059 model->setOperandValue(param77, param77_init, sizeof(int32_t) * 1);
7060 static int32_t param78_init[] = {1};
7061 model->setOperandValue(param78, param78_init, sizeof(int32_t) * 1);
7062 static int32_t param79_init[] = {1};
7063 model->setOperandValue(param79, param79_init, sizeof(int32_t) * 1);
7064 static int32_t param80_init[] = {2};
7065 model->setOperandValue(param80, param80_init, sizeof(int32_t) * 1);
7066 static int32_t param81_init[] = {2};
7067 model->setOperandValue(param81, param81_init, sizeof(int32_t) * 1);
7068 static int32_t param82_init[] = {0};
7069 model->setOperandValue(param82, param82_init, sizeof(int32_t) * 1);
7070 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param64, param65, param66, param67, param68, param69, param70}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
7071 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param71, param72, param73, param74, param75, param76, layout}, {featureMap1});
7072 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap1, param77, param78, param79, param80, param81, param82, layout}, {out1});
7073 // Phase 3, inputs and outputs
7074 model->identifyInputsAndOutputs(
7075 {in1},
7076 {scoresOut1, classesOut1, out1});
7077 assert(model->isValid());
7078 }
7079
is_ignored_zero_sized_dynamic_output_shape_nhwc_float16_2(int i)7080 inline bool is_ignored_zero_sized_dynamic_output_shape_nhwc_float16_2(int i) {
7081 static std::set<int> ignore = {};
7082 return ignore.find(i) != ignore.end();
7083 }
7084
CreateModel_zero_sized_dynamic_output_shape_nchw_2(Model * model)7085 void CreateModel_zero_sized_dynamic_output_shape_nchw_2(Model *model) {
7086 OperandType type0(Type::BOOL, {});
7087 OperandType type10(Type::TENSOR_FLOAT32, {1, 8});
7088 OperandType type11(Type::TENSOR_FLOAT32, {0});
7089 OperandType type12(Type::TENSOR_INT32, {0});
7090 OperandType type13(Type::TENSOR_FLOAT32, {0, 4});
7091 OperandType type14(Type::TENSOR_INT32, {1});
7092 OperandType type15(Type::FLOAT32, {});
7093 OperandType type16(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
7094 OperandType type2(Type::INT32, {});
7095 OperandType type24(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
7096 OperandType type73(Type::TENSOR_FLOAT32, {0, 1, 2, 2});
7097 OperandType type9(Type::TENSOR_FLOAT32, {1, 2});
7098 // Phase 1, operands
7099 auto scores1 = model->addOperand(&type9);
7100 auto roi1 = model->addOperand(&type10);
7101 auto param64 = model->addOperand(&type14);
7102 auto param65 = model->addOperand(&type15);
7103 auto param66 = model->addOperand(&type2);
7104 auto param67 = model->addOperand(&type2);
7105 auto param68 = model->addOperand(&type15);
7106 auto param69 = model->addOperand(&type15);
7107 auto param70 = model->addOperand(&type15);
7108 auto scoresOut1 = model->addOperand(&type11);
7109 auto roiOut1 = model->addOperand(&type13);
7110 auto classesOut1 = model->addOperand(&type12);
7111 auto batchSplitOut1 = model->addOperand(&type12);
7112 auto in1 = model->addOperand(&type16);
7113 auto param71 = model->addOperand(&type2);
7114 auto param72 = model->addOperand(&type2);
7115 auto param73 = model->addOperand(&type15);
7116 auto param74 = model->addOperand(&type15);
7117 auto param75 = model->addOperand(&type2);
7118 auto param76 = model->addOperand(&type2);
7119 auto layout = model->addOperand(&type0);
7120 auto featureMap1 = model->addOperand(&type73);
7121 auto param77 = model->addOperand(&type2);
7122 auto param78 = model->addOperand(&type2);
7123 auto param79 = model->addOperand(&type2);
7124 auto param80 = model->addOperand(&type2);
7125 auto param81 = model->addOperand(&type2);
7126 auto param82 = model->addOperand(&type2);
7127 auto out1 = model->addOperand(&type24);
7128 // Phase 2, operations
7129 static float scores1_init[] = {0.9f, 0.1f};
7130 model->setOperandValue(scores1, scores1_init, sizeof(float) * 2);
7131 static float roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
7132 model->setOperandValue(roi1, roi1_init, sizeof(float) * 8);
7133 static int32_t param64_init[] = {0};
7134 model->setOperandValue(param64, param64_init, sizeof(int32_t) * 1);
7135 static float param65_init[] = {0.3f};
7136 model->setOperandValue(param65, param65_init, sizeof(float) * 1);
7137 static int32_t param66_init[] = {-1};
7138 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
7139 static int32_t param67_init[] = {0};
7140 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
7141 static float param68_init[] = {0.4f};
7142 model->setOperandValue(param68, param68_init, sizeof(float) * 1);
7143 static float param69_init[] = {1.0f};
7144 model->setOperandValue(param69, param69_init, sizeof(float) * 1);
7145 static float param70_init[] = {0.3f};
7146 model->setOperandValue(param70, param70_init, sizeof(float) * 1);
7147 static int32_t param71_init[] = {2};
7148 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
7149 static int32_t param72_init[] = {2};
7150 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
7151 static float param73_init[] = {2.0f};
7152 model->setOperandValue(param73, param73_init, sizeof(float) * 1);
7153 static float param74_init[] = {2.0f};
7154 model->setOperandValue(param74, param74_init, sizeof(float) * 1);
7155 static int32_t param75_init[] = {4};
7156 model->setOperandValue(param75, param75_init, sizeof(int32_t) * 1);
7157 static int32_t param76_init[] = {4};
7158 model->setOperandValue(param76, param76_init, sizeof(int32_t) * 1);
7159 static bool8 layout_init[] = {true};
7160 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7161 static int32_t param77_init[] = {1};
7162 model->setOperandValue(param77, param77_init, sizeof(int32_t) * 1);
7163 static int32_t param78_init[] = {1};
7164 model->setOperandValue(param78, param78_init, sizeof(int32_t) * 1);
7165 static int32_t param79_init[] = {1};
7166 model->setOperandValue(param79, param79_init, sizeof(int32_t) * 1);
7167 static int32_t param80_init[] = {2};
7168 model->setOperandValue(param80, param80_init, sizeof(int32_t) * 1);
7169 static int32_t param81_init[] = {2};
7170 model->setOperandValue(param81, param81_init, sizeof(int32_t) * 1);
7171 static int32_t param82_init[] = {0};
7172 model->setOperandValue(param82, param82_init, sizeof(int32_t) * 1);
7173 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param64, param65, param66, param67, param68, param69, param70}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
7174 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param71, param72, param73, param74, param75, param76, layout}, {featureMap1});
7175 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap1, param77, param78, param79, param80, param81, param82, layout}, {out1});
7176 // Phase 3, inputs and outputs
7177 model->identifyInputsAndOutputs(
7178 {in1},
7179 {scoresOut1, classesOut1, out1});
7180 assert(model->isValid());
7181 }
7182
is_ignored_zero_sized_dynamic_output_shape_nchw_2(int i)7183 inline bool is_ignored_zero_sized_dynamic_output_shape_nchw_2(int i) {
7184 static std::set<int> ignore = {};
7185 return ignore.find(i) != ignore.end();
7186 }
7187
CreateModel_zero_sized_dynamic_output_shape_nchw_relaxed_2(Model * model)7188 void CreateModel_zero_sized_dynamic_output_shape_nchw_relaxed_2(Model *model) {
7189 OperandType type0(Type::BOOL, {});
7190 OperandType type10(Type::TENSOR_FLOAT32, {1, 8});
7191 OperandType type11(Type::TENSOR_FLOAT32, {0});
7192 OperandType type12(Type::TENSOR_INT32, {0});
7193 OperandType type13(Type::TENSOR_FLOAT32, {0, 4});
7194 OperandType type14(Type::TENSOR_INT32, {1});
7195 OperandType type15(Type::FLOAT32, {});
7196 OperandType type16(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
7197 OperandType type2(Type::INT32, {});
7198 OperandType type24(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
7199 OperandType type73(Type::TENSOR_FLOAT32, {0, 1, 2, 2});
7200 OperandType type9(Type::TENSOR_FLOAT32, {1, 2});
7201 // Phase 1, operands
7202 auto scores1 = model->addOperand(&type9);
7203 auto roi1 = model->addOperand(&type10);
7204 auto param64 = model->addOperand(&type14);
7205 auto param65 = model->addOperand(&type15);
7206 auto param66 = model->addOperand(&type2);
7207 auto param67 = model->addOperand(&type2);
7208 auto param68 = model->addOperand(&type15);
7209 auto param69 = model->addOperand(&type15);
7210 auto param70 = model->addOperand(&type15);
7211 auto scoresOut1 = model->addOperand(&type11);
7212 auto roiOut1 = model->addOperand(&type13);
7213 auto classesOut1 = model->addOperand(&type12);
7214 auto batchSplitOut1 = model->addOperand(&type12);
7215 auto in1 = model->addOperand(&type16);
7216 auto param71 = model->addOperand(&type2);
7217 auto param72 = model->addOperand(&type2);
7218 auto param73 = model->addOperand(&type15);
7219 auto param74 = model->addOperand(&type15);
7220 auto param75 = model->addOperand(&type2);
7221 auto param76 = model->addOperand(&type2);
7222 auto layout = model->addOperand(&type0);
7223 auto featureMap1 = model->addOperand(&type73);
7224 auto param77 = model->addOperand(&type2);
7225 auto param78 = model->addOperand(&type2);
7226 auto param79 = model->addOperand(&type2);
7227 auto param80 = model->addOperand(&type2);
7228 auto param81 = model->addOperand(&type2);
7229 auto param82 = model->addOperand(&type2);
7230 auto out1 = model->addOperand(&type24);
7231 // Phase 2, operations
7232 static float scores1_init[] = {0.9f, 0.1f};
7233 model->setOperandValue(scores1, scores1_init, sizeof(float) * 2);
7234 static float roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
7235 model->setOperandValue(roi1, roi1_init, sizeof(float) * 8);
7236 static int32_t param64_init[] = {0};
7237 model->setOperandValue(param64, param64_init, sizeof(int32_t) * 1);
7238 static float param65_init[] = {0.3f};
7239 model->setOperandValue(param65, param65_init, sizeof(float) * 1);
7240 static int32_t param66_init[] = {-1};
7241 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
7242 static int32_t param67_init[] = {0};
7243 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
7244 static float param68_init[] = {0.4f};
7245 model->setOperandValue(param68, param68_init, sizeof(float) * 1);
7246 static float param69_init[] = {1.0f};
7247 model->setOperandValue(param69, param69_init, sizeof(float) * 1);
7248 static float param70_init[] = {0.3f};
7249 model->setOperandValue(param70, param70_init, sizeof(float) * 1);
7250 static int32_t param71_init[] = {2};
7251 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
7252 static int32_t param72_init[] = {2};
7253 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
7254 static float param73_init[] = {2.0f};
7255 model->setOperandValue(param73, param73_init, sizeof(float) * 1);
7256 static float param74_init[] = {2.0f};
7257 model->setOperandValue(param74, param74_init, sizeof(float) * 1);
7258 static int32_t param75_init[] = {4};
7259 model->setOperandValue(param75, param75_init, sizeof(int32_t) * 1);
7260 static int32_t param76_init[] = {4};
7261 model->setOperandValue(param76, param76_init, sizeof(int32_t) * 1);
7262 static bool8 layout_init[] = {true};
7263 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7264 static int32_t param77_init[] = {1};
7265 model->setOperandValue(param77, param77_init, sizeof(int32_t) * 1);
7266 static int32_t param78_init[] = {1};
7267 model->setOperandValue(param78, param78_init, sizeof(int32_t) * 1);
7268 static int32_t param79_init[] = {1};
7269 model->setOperandValue(param79, param79_init, sizeof(int32_t) * 1);
7270 static int32_t param80_init[] = {2};
7271 model->setOperandValue(param80, param80_init, sizeof(int32_t) * 1);
7272 static int32_t param81_init[] = {2};
7273 model->setOperandValue(param81, param81_init, sizeof(int32_t) * 1);
7274 static int32_t param82_init[] = {0};
7275 model->setOperandValue(param82, param82_init, sizeof(int32_t) * 1);
7276 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param64, param65, param66, param67, param68, param69, param70}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
7277 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param71, param72, param73, param74, param75, param76, layout}, {featureMap1});
7278 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap1, param77, param78, param79, param80, param81, param82, layout}, {out1});
7279 // Phase 3, inputs and outputs
7280 model->identifyInputsAndOutputs(
7281 {in1},
7282 {scoresOut1, classesOut1, out1});
7283 // Phase 4: set relaxed execution
7284 model->relaxComputationFloat32toFloat16(true);
7285 assert(model->isValid());
7286 }
7287
is_ignored_zero_sized_dynamic_output_shape_nchw_relaxed_2(int i)7288 inline bool is_ignored_zero_sized_dynamic_output_shape_nchw_relaxed_2(int i) {
7289 static std::set<int> ignore = {};
7290 return ignore.find(i) != ignore.end();
7291 }
7292
CreateModel_zero_sized_dynamic_output_shape_nchw_quant8_2(Model * model)7293 void CreateModel_zero_sized_dynamic_output_shape_nchw_quant8_2(Model *model) {
7294 OperandType type0(Type::BOOL, {});
7295 OperandType type12(Type::TENSOR_INT32, {0});
7296 OperandType type14(Type::TENSOR_INT32, {1});
7297 OperandType type15(Type::FLOAT32, {});
7298 OperandType type2(Type::INT32, {});
7299 OperandType type59(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 1}, 0.1f, 128);
7300 OperandType type61(Type::TENSOR_QUANT16_ASYMM, {1, 8}, 0.125f, 0);
7301 OperandType type62(Type::TENSOR_QUANT16_ASYMM, {0, 4}, 0.125f, 0);
7302 OperandType type63(Type::TENSOR_QUANT8_ASYMM, {1, 2}, 0.1f, 128);
7303 OperandType type64(Type::TENSOR_QUANT8_ASYMM, {0}, 0.1f, 128);
7304 OperandType type74(Type::TENSOR_QUANT8_ASYMM, {0, 1, 2, 2}, 0.1f, 128);
7305 OperandType type76(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.1f, 128);
7306 // Phase 1, operands
7307 auto scores1 = model->addOperand(&type63);
7308 auto roi1 = model->addOperand(&type61);
7309 auto param64 = model->addOperand(&type14);
7310 auto param65 = model->addOperand(&type15);
7311 auto param66 = model->addOperand(&type2);
7312 auto param67 = model->addOperand(&type2);
7313 auto param68 = model->addOperand(&type15);
7314 auto param69 = model->addOperand(&type15);
7315 auto param70 = model->addOperand(&type15);
7316 auto scoresOut1 = model->addOperand(&type64);
7317 auto roiOut1 = model->addOperand(&type62);
7318 auto classesOut1 = model->addOperand(&type12);
7319 auto batchSplitOut1 = model->addOperand(&type12);
7320 auto in1 = model->addOperand(&type59);
7321 auto param71 = model->addOperand(&type2);
7322 auto param72 = model->addOperand(&type2);
7323 auto param73 = model->addOperand(&type15);
7324 auto param74 = model->addOperand(&type15);
7325 auto param75 = model->addOperand(&type2);
7326 auto param76 = model->addOperand(&type2);
7327 auto layout = model->addOperand(&type0);
7328 auto featureMap1 = model->addOperand(&type74);
7329 auto param77 = model->addOperand(&type2);
7330 auto param78 = model->addOperand(&type2);
7331 auto param79 = model->addOperand(&type2);
7332 auto param80 = model->addOperand(&type2);
7333 auto param81 = model->addOperand(&type2);
7334 auto param82 = model->addOperand(&type2);
7335 auto out1 = model->addOperand(&type76);
7336 // Phase 2, operations
7337 static uint8_t scores1_init[] = {137, 129};
7338 model->setOperandValue(scores1, scores1_init, sizeof(uint8_t) * 2);
7339 static uint16_t roi1_init[] = {8, 8, 80, 80, 0, 0, 80, 80};
7340 model->setOperandValue(roi1, roi1_init, sizeof(uint16_t) * 8);
7341 static int32_t param64_init[] = {0};
7342 model->setOperandValue(param64, param64_init, sizeof(int32_t) * 1);
7343 static float param65_init[] = {0.3f};
7344 model->setOperandValue(param65, param65_init, sizeof(float) * 1);
7345 static int32_t param66_init[] = {-1};
7346 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
7347 static int32_t param67_init[] = {0};
7348 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
7349 static float param68_init[] = {0.4f};
7350 model->setOperandValue(param68, param68_init, sizeof(float) * 1);
7351 static float param69_init[] = {1.0f};
7352 model->setOperandValue(param69, param69_init, sizeof(float) * 1);
7353 static float param70_init[] = {0.3f};
7354 model->setOperandValue(param70, param70_init, sizeof(float) * 1);
7355 static int32_t param71_init[] = {2};
7356 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
7357 static int32_t param72_init[] = {2};
7358 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
7359 static float param73_init[] = {2.0f};
7360 model->setOperandValue(param73, param73_init, sizeof(float) * 1);
7361 static float param74_init[] = {2.0f};
7362 model->setOperandValue(param74, param74_init, sizeof(float) * 1);
7363 static int32_t param75_init[] = {4};
7364 model->setOperandValue(param75, param75_init, sizeof(int32_t) * 1);
7365 static int32_t param76_init[] = {4};
7366 model->setOperandValue(param76, param76_init, sizeof(int32_t) * 1);
7367 static bool8 layout_init[] = {true};
7368 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7369 static int32_t param77_init[] = {1};
7370 model->setOperandValue(param77, param77_init, sizeof(int32_t) * 1);
7371 static int32_t param78_init[] = {1};
7372 model->setOperandValue(param78, param78_init, sizeof(int32_t) * 1);
7373 static int32_t param79_init[] = {1};
7374 model->setOperandValue(param79, param79_init, sizeof(int32_t) * 1);
7375 static int32_t param80_init[] = {2};
7376 model->setOperandValue(param80, param80_init, sizeof(int32_t) * 1);
7377 static int32_t param81_init[] = {2};
7378 model->setOperandValue(param81, param81_init, sizeof(int32_t) * 1);
7379 static int32_t param82_init[] = {0};
7380 model->setOperandValue(param82, param82_init, sizeof(int32_t) * 1);
7381 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param64, param65, param66, param67, param68, param69, param70}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
7382 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param71, param72, param73, param74, param75, param76, layout}, {featureMap1});
7383 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap1, param77, param78, param79, param80, param81, param82, layout}, {out1});
7384 // Phase 3, inputs and outputs
7385 model->identifyInputsAndOutputs(
7386 {in1},
7387 {scoresOut1, classesOut1, out1});
7388 assert(model->isValid());
7389 }
7390
is_ignored_zero_sized_dynamic_output_shape_nchw_quant8_2(int i)7391 inline bool is_ignored_zero_sized_dynamic_output_shape_nchw_quant8_2(int i) {
7392 static std::set<int> ignore = {};
7393 return ignore.find(i) != ignore.end();
7394 }
7395
CreateModel_zero_sized_dynamic_output_shape_nchw_float16_2(Model * model)7396 void CreateModel_zero_sized_dynamic_output_shape_nchw_float16_2(Model *model) {
7397 OperandType type0(Type::BOOL, {});
7398 OperandType type12(Type::TENSOR_INT32, {0});
7399 OperandType type14(Type::TENSOR_INT32, {1});
7400 OperandType type2(Type::INT32, {});
7401 OperandType type25(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
7402 OperandType type66(Type::TENSOR_FLOAT16, {1, 1, 1, 1});
7403 OperandType type68(Type::FLOAT16, {});
7404 OperandType type69(Type::TENSOR_FLOAT16, {1, 8});
7405 OperandType type70(Type::TENSOR_FLOAT16, {0, 4});
7406 OperandType type71(Type::TENSOR_FLOAT16, {1, 2});
7407 OperandType type75(Type::TENSOR_FLOAT16, {0, 1, 2, 2});
7408 OperandType type77(Type::TENSOR_FLOAT16, {0});
7409 // Phase 1, operands
7410 auto scores1 = model->addOperand(&type71);
7411 auto roi1 = model->addOperand(&type69);
7412 auto param64 = model->addOperand(&type14);
7413 auto param65 = model->addOperand(&type68);
7414 auto param66 = model->addOperand(&type2);
7415 auto param67 = model->addOperand(&type2);
7416 auto param68 = model->addOperand(&type68);
7417 auto param69 = model->addOperand(&type68);
7418 auto param70 = model->addOperand(&type68);
7419 auto scoresOut1 = model->addOperand(&type77);
7420 auto roiOut1 = model->addOperand(&type70);
7421 auto classesOut1 = model->addOperand(&type12);
7422 auto batchSplitOut1 = model->addOperand(&type12);
7423 auto in1 = model->addOperand(&type66);
7424 auto param71 = model->addOperand(&type2);
7425 auto param72 = model->addOperand(&type2);
7426 auto param73 = model->addOperand(&type68);
7427 auto param74 = model->addOperand(&type68);
7428 auto param75 = model->addOperand(&type2);
7429 auto param76 = model->addOperand(&type2);
7430 auto layout = model->addOperand(&type0);
7431 auto featureMap1 = model->addOperand(&type75);
7432 auto param77 = model->addOperand(&type2);
7433 auto param78 = model->addOperand(&type2);
7434 auto param79 = model->addOperand(&type2);
7435 auto param80 = model->addOperand(&type2);
7436 auto param81 = model->addOperand(&type2);
7437 auto param82 = model->addOperand(&type2);
7438 auto out1 = model->addOperand(&type25);
7439 // Phase 2, operations
7440 static _Float16 scores1_init[] = {0.8999999761581421f, 0.10000000149011612f};
7441 model->setOperandValue(scores1, scores1_init, sizeof(_Float16) * 2);
7442 static _Float16 roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
7443 model->setOperandValue(roi1, roi1_init, sizeof(_Float16) * 8);
7444 static int32_t param64_init[] = {0};
7445 model->setOperandValue(param64, param64_init, sizeof(int32_t) * 1);
7446 static _Float16 param65_init[] = {0.30000001192092896f};
7447 model->setOperandValue(param65, param65_init, sizeof(_Float16) * 1);
7448 static int32_t param66_init[] = {-1};
7449 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
7450 static int32_t param67_init[] = {0};
7451 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
7452 static _Float16 param68_init[] = {0.4000000059604645f};
7453 model->setOperandValue(param68, param68_init, sizeof(_Float16) * 1);
7454 static _Float16 param69_init[] = {1.0f};
7455 model->setOperandValue(param69, param69_init, sizeof(_Float16) * 1);
7456 static _Float16 param70_init[] = {0.30000001192092896f};
7457 model->setOperandValue(param70, param70_init, sizeof(_Float16) * 1);
7458 static int32_t param71_init[] = {2};
7459 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
7460 static int32_t param72_init[] = {2};
7461 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
7462 static _Float16 param73_init[] = {2.0f};
7463 model->setOperandValue(param73, param73_init, sizeof(_Float16) * 1);
7464 static _Float16 param74_init[] = {2.0f};
7465 model->setOperandValue(param74, param74_init, sizeof(_Float16) * 1);
7466 static int32_t param75_init[] = {4};
7467 model->setOperandValue(param75, param75_init, sizeof(int32_t) * 1);
7468 static int32_t param76_init[] = {4};
7469 model->setOperandValue(param76, param76_init, sizeof(int32_t) * 1);
7470 static bool8 layout_init[] = {true};
7471 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7472 static int32_t param77_init[] = {1};
7473 model->setOperandValue(param77, param77_init, sizeof(int32_t) * 1);
7474 static int32_t param78_init[] = {1};
7475 model->setOperandValue(param78, param78_init, sizeof(int32_t) * 1);
7476 static int32_t param79_init[] = {1};
7477 model->setOperandValue(param79, param79_init, sizeof(int32_t) * 1);
7478 static int32_t param80_init[] = {2};
7479 model->setOperandValue(param80, param80_init, sizeof(int32_t) * 1);
7480 static int32_t param81_init[] = {2};
7481 model->setOperandValue(param81, param81_init, sizeof(int32_t) * 1);
7482 static int32_t param82_init[] = {0};
7483 model->setOperandValue(param82, param82_init, sizeof(int32_t) * 1);
7484 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param64, param65, param66, param67, param68, param69, param70}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
7485 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param71, param72, param73, param74, param75, param76, layout}, {featureMap1});
7486 model->addOperation(ANEURALNETWORKS_AVERAGE_POOL_2D, {featureMap1, param77, param78, param79, param80, param81, param82, layout}, {out1});
7487 // Phase 3, inputs and outputs
7488 model->identifyInputsAndOutputs(
7489 {in1},
7490 {scoresOut1, classesOut1, out1});
7491 assert(model->isValid());
7492 }
7493
is_ignored_zero_sized_dynamic_output_shape_nchw_float16_2(int i)7494 inline bool is_ignored_zero_sized_dynamic_output_shape_nchw_float16_2(int i) {
7495 static std::set<int> ignore = {};
7496 return ignore.find(i) != ignore.end();
7497 }
7498
7499