1 // clang-format off
2 // Generated file (from: max_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_MAX_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_MAX_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_quant8(Model * model)107 void CreateModel_nhwc_quant8(Model *model) {
108 OperandType type0(Type::BOOL, {});
109 OperandType type17(Type::TENSOR_QUANT8_ASYMM, {1, 2, 2, 1}, 0.5f, 0);
110 OperandType type2(Type::INT32, {});
111 // Phase 1, operands
112 auto op1 = model->addOperand(&type17);
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(&type17);
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_MAX_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_quant8(int i)153 inline bool is_ignored_nhwc_quant8(int i) {
154 static std::set<int> ignore = {};
155 return ignore.find(i) != ignore.end();
156 }
157
CreateModel_nhwc_float16(Model * model)158 void CreateModel_nhwc_float16(Model *model) {
159 OperandType type0(Type::BOOL, {});
160 OperandType type18(Type::TENSOR_FLOAT16, {1, 2, 2, 1});
161 OperandType type2(Type::INT32, {});
162 // Phase 1, operands
163 auto op1 = model->addOperand(&type18);
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(&type18);
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_MAX_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_float16(int i)204 inline bool is_ignored_nhwc_float16(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 type19(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
212 OperandType type2(Type::INT32, {});
213 // Phase 1, operands
214 auto op1 = model->addOperand(&type19);
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(&type19);
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_MAX_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 type19(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
263 OperandType type2(Type::INT32, {});
264 // Phase 1, operands
265 auto op1 = model->addOperand(&type19);
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(&type19);
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_MAX_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_quant8(Model * model)313 void CreateModel_nchw_quant8(Model *model) {
314 OperandType type0(Type::BOOL, {});
315 OperandType type2(Type::INT32, {});
316 OperandType type20(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 2}, 0.5f, 0);
317 // Phase 1, operands
318 auto op1 = model->addOperand(&type20);
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(&type20);
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_MAX_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_quant8(int i)359 inline bool is_ignored_nchw_quant8(int i) {
360 static std::set<int> ignore = {};
361 return ignore.find(i) != ignore.end();
362 }
363
CreateModel_nchw_float16(Model * model)364 void CreateModel_nchw_float16(Model *model) {
365 OperandType type0(Type::BOOL, {});
366 OperandType type2(Type::INT32, {});
367 OperandType type21(Type::TENSOR_FLOAT16, {1, 1, 2, 2});
368 // Phase 1, operands
369 auto op1 = model->addOperand(&type21);
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(&type21);
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_MAX_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_float16(int i)410 inline bool is_ignored_nchw_float16(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 type22(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(&type22);
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_MAX_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 type22(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(&type22);
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_MAX_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_quant8(Model * model)521 void CreateModel_dynamic_output_shape_nhwc_quant8(Model *model) {
522 OperandType type0(Type::BOOL, {});
523 OperandType type17(Type::TENSOR_QUANT8_ASYMM, {1, 2, 2, 1}, 0.5f, 0);
524 OperandType type2(Type::INT32, {});
525 OperandType type23(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.5f, 0);
526 // Phase 1, operands
527 auto op1 = model->addOperand(&type17);
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(&type23);
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_MAX_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_quant8(int i)568 inline bool is_ignored_dynamic_output_shape_nhwc_quant8(int i) {
569 static std::set<int> ignore = {};
570 return ignore.find(i) != ignore.end();
571 }
572
CreateModel_dynamic_output_shape_nhwc_float16(Model * model)573 void CreateModel_dynamic_output_shape_nhwc_float16(Model *model) {
574 OperandType type0(Type::BOOL, {});
575 OperandType type18(Type::TENSOR_FLOAT16, {1, 2, 2, 1});
576 OperandType type2(Type::INT32, {});
577 OperandType type24(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
578 // Phase 1, operands
579 auto op1 = model->addOperand(&type18);
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(&type24);
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_MAX_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_float16(int i)620 inline bool is_ignored_dynamic_output_shape_nhwc_float16(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 type19(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
628 OperandType type2(Type::INT32, {});
629 OperandType type22(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
630 // Phase 1, operands
631 auto op1 = model->addOperand(&type19);
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(&type22);
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_MAX_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 type19(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
680 OperandType type2(Type::INT32, {});
681 OperandType type22(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
682 // Phase 1, operands
683 auto op1 = model->addOperand(&type19);
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(&type22);
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_MAX_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_quant8(Model * model)731 void CreateModel_dynamic_output_shape_nchw_quant8(Model *model) {
732 OperandType type0(Type::BOOL, {});
733 OperandType type2(Type::INT32, {});
734 OperandType type20(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 2}, 0.5f, 0);
735 OperandType type23(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.5f, 0);
736 // Phase 1, operands
737 auto op1 = model->addOperand(&type20);
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(&type23);
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_MAX_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_quant8(int i)778 inline bool is_ignored_dynamic_output_shape_nchw_quant8(int i) {
779 static std::set<int> ignore = {};
780 return ignore.find(i) != ignore.end();
781 }
782
CreateModel_dynamic_output_shape_nchw_float16(Model * model)783 void CreateModel_dynamic_output_shape_nchw_float16(Model *model) {
784 OperandType type0(Type::BOOL, {});
785 OperandType type2(Type::INT32, {});
786 OperandType type21(Type::TENSOR_FLOAT16, {1, 1, 2, 2});
787 OperandType type24(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
788 // Phase 1, operands
789 auto op1 = model->addOperand(&type21);
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(&type24);
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_MAX_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_float16(int i)830 inline bool is_ignored_dynamic_output_shape_nchw_float16(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, 50, 70, 3});
839 OperandType type4(Type::TENSOR_FLOAT32, {5, 2, 3, 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[] = {0};
855 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
856 static int32_t param10_init[] = {0};
857 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
858 static int32_t param11_init[] = {0};
859 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
860 static int32_t param12_init[] = {0};
861 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
862 static int32_t param13_init[] = {20};
863 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
864 static int32_t param14_init[] = {20};
865 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
866 static int32_t param15_init[] = {20};
867 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
868 static int32_t param16_init[] = {20};
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_MAX_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, 50, 70, 3});
891 OperandType type4(Type::TENSOR_FLOAT32, {5, 2, 3, 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[] = {0};
907 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
908 static int32_t param10_init[] = {0};
909 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
910 static int32_t param11_init[] = {0};
911 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
912 static int32_t param12_init[] = {0};
913 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
914 static int32_t param13_init[] = {20};
915 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
916 static int32_t param14_init[] = {20};
917 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
918 static int32_t param15_init[] = {20};
919 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
920 static int32_t param16_init[] = {20};
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_MAX_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_quant8_2(Model * model)941 void CreateModel_nhwc_quant8_2(Model *model) {
942 OperandType type0(Type::BOOL, {});
943 OperandType type2(Type::INT32, {});
944 OperandType type25(Type::TENSOR_QUANT8_ASYMM, {5, 50, 70, 3}, 0.5f, 0);
945 OperandType type26(Type::TENSOR_QUANT8_ASYMM, {5, 2, 3, 3}, 0.5f, 0);
946 // Phase 1, operands
947 auto op11 = model->addOperand(&type25);
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(&type26);
959 // Phase 2, operations
960 static int32_t param9_init[] = {0};
961 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
962 static int32_t param10_init[] = {0};
963 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
964 static int32_t param11_init[] = {0};
965 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
966 static int32_t param12_init[] = {0};
967 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
968 static int32_t param13_init[] = {20};
969 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
970 static int32_t param14_init[] = {20};
971 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
972 static int32_t param15_init[] = {20};
973 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
974 static int32_t param16_init[] = {20};
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_MAX_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_quant8_2(int i)988 inline bool is_ignored_nhwc_quant8_2(int i) {
989 static std::set<int> ignore = {};
990 return ignore.find(i) != ignore.end();
991 }
992
CreateModel_nhwc_float16_2(Model * model)993 void CreateModel_nhwc_float16_2(Model *model) {
994 OperandType type0(Type::BOOL, {});
995 OperandType type2(Type::INT32, {});
996 OperandType type27(Type::TENSOR_FLOAT16, {5, 50, 70, 3});
997 OperandType type28(Type::TENSOR_FLOAT16, {5, 2, 3, 3});
998 // Phase 1, operands
999 auto op11 = model->addOperand(&type27);
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(&type28);
1011 // Phase 2, operations
1012 static int32_t param9_init[] = {0};
1013 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
1014 static int32_t param10_init[] = {0};
1015 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
1016 static int32_t param11_init[] = {0};
1017 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
1018 static int32_t param12_init[] = {0};
1019 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
1020 static int32_t param13_init[] = {20};
1021 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
1022 static int32_t param14_init[] = {20};
1023 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
1024 static int32_t param15_init[] = {20};
1025 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
1026 static int32_t param16_init[] = {20};
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_MAX_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_float16_2(int i)1040 inline bool is_ignored_nhwc_float16_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 type29(Type::TENSOR_FLOAT32, {5, 3, 50, 70});
1049 OperandType type30(Type::TENSOR_FLOAT32, {5, 3, 2, 3});
1050 // Phase 1, operands
1051 auto op11 = model->addOperand(&type29);
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(&type30);
1063 // Phase 2, operations
1064 static int32_t param9_init[] = {0};
1065 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
1066 static int32_t param10_init[] = {0};
1067 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
1068 static int32_t param11_init[] = {0};
1069 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
1070 static int32_t param12_init[] = {0};
1071 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
1072 static int32_t param13_init[] = {20};
1073 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
1074 static int32_t param14_init[] = {20};
1075 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
1076 static int32_t param15_init[] = {20};
1077 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
1078 static int32_t param16_init[] = {20};
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_MAX_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 type29(Type::TENSOR_FLOAT32, {5, 3, 50, 70});
1101 OperandType type30(Type::TENSOR_FLOAT32, {5, 3, 2, 3});
1102 // Phase 1, operands
1103 auto op11 = model->addOperand(&type29);
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(&type30);
1115 // Phase 2, operations
1116 static int32_t param9_init[] = {0};
1117 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
1118 static int32_t param10_init[] = {0};
1119 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
1120 static int32_t param11_init[] = {0};
1121 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
1122 static int32_t param12_init[] = {0};
1123 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
1124 static int32_t param13_init[] = {20};
1125 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
1126 static int32_t param14_init[] = {20};
1127 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
1128 static int32_t param15_init[] = {20};
1129 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
1130 static int32_t param16_init[] = {20};
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_MAX_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_quant8_2(Model * model)1151 void CreateModel_nchw_quant8_2(Model *model) {
1152 OperandType type0(Type::BOOL, {});
1153 OperandType type2(Type::INT32, {});
1154 OperandType type31(Type::TENSOR_QUANT8_ASYMM, {5, 3, 50, 70}, 0.5f, 0);
1155 OperandType type32(Type::TENSOR_QUANT8_ASYMM, {5, 3, 2, 3}, 0.5f, 0);
1156 // Phase 1, operands
1157 auto op11 = model->addOperand(&type31);
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(&type32);
1169 // Phase 2, operations
1170 static int32_t param9_init[] = {0};
1171 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
1172 static int32_t param10_init[] = {0};
1173 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
1174 static int32_t param11_init[] = {0};
1175 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
1176 static int32_t param12_init[] = {0};
1177 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
1178 static int32_t param13_init[] = {20};
1179 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
1180 static int32_t param14_init[] = {20};
1181 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
1182 static int32_t param15_init[] = {20};
1183 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
1184 static int32_t param16_init[] = {20};
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_MAX_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_quant8_2(int i)1198 inline bool is_ignored_nchw_quant8_2(int i) {
1199 static std::set<int> ignore = {};
1200 return ignore.find(i) != ignore.end();
1201 }
1202
CreateModel_nchw_float16_2(Model * model)1203 void CreateModel_nchw_float16_2(Model *model) {
1204 OperandType type0(Type::BOOL, {});
1205 OperandType type2(Type::INT32, {});
1206 OperandType type33(Type::TENSOR_FLOAT16, {5, 3, 50, 70});
1207 OperandType type34(Type::TENSOR_FLOAT16, {5, 3, 2, 3});
1208 // Phase 1, operands
1209 auto op11 = model->addOperand(&type33);
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(&type34);
1221 // Phase 2, operations
1222 static int32_t param9_init[] = {0};
1223 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
1224 static int32_t param10_init[] = {0};
1225 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
1226 static int32_t param11_init[] = {0};
1227 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
1228 static int32_t param12_init[] = {0};
1229 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
1230 static int32_t param13_init[] = {20};
1231 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
1232 static int32_t param14_init[] = {20};
1233 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
1234 static int32_t param15_init[] = {20};
1235 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
1236 static int32_t param16_init[] = {20};
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_MAX_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_float16_2(int i)1250 inline bool is_ignored_nchw_float16_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 type22(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
1259 OperandType type3(Type::TENSOR_FLOAT32, {5, 50, 70, 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(&type22);
1273 // Phase 2, operations
1274 static int32_t param9_init[] = {0};
1275 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
1276 static int32_t param10_init[] = {0};
1277 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
1278 static int32_t param11_init[] = {0};
1279 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
1280 static int32_t param12_init[] = {0};
1281 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
1282 static int32_t param13_init[] = {20};
1283 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
1284 static int32_t param14_init[] = {20};
1285 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
1286 static int32_t param15_init[] = {20};
1287 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
1288 static int32_t param16_init[] = {20};
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_MAX_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 type22(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
1311 OperandType type3(Type::TENSOR_FLOAT32, {5, 50, 70, 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(&type22);
1325 // Phase 2, operations
1326 static int32_t param9_init[] = {0};
1327 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
1328 static int32_t param10_init[] = {0};
1329 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
1330 static int32_t param11_init[] = {0};
1331 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
1332 static int32_t param12_init[] = {0};
1333 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
1334 static int32_t param13_init[] = {20};
1335 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
1336 static int32_t param14_init[] = {20};
1337 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
1338 static int32_t param15_init[] = {20};
1339 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
1340 static int32_t param16_init[] = {20};
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_MAX_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_quant8_2(Model * model)1361 void CreateModel_dynamic_output_shape_nhwc_quant8_2(Model *model) {
1362 OperandType type0(Type::BOOL, {});
1363 OperandType type2(Type::INT32, {});
1364 OperandType type23(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.5f, 0);
1365 OperandType type25(Type::TENSOR_QUANT8_ASYMM, {5, 50, 70, 3}, 0.5f, 0);
1366 // Phase 1, operands
1367 auto op11 = model->addOperand(&type25);
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(&type23);
1379 // Phase 2, operations
1380 static int32_t param9_init[] = {0};
1381 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
1382 static int32_t param10_init[] = {0};
1383 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
1384 static int32_t param11_init[] = {0};
1385 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
1386 static int32_t param12_init[] = {0};
1387 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
1388 static int32_t param13_init[] = {20};
1389 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
1390 static int32_t param14_init[] = {20};
1391 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
1392 static int32_t param15_init[] = {20};
1393 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
1394 static int32_t param16_init[] = {20};
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_MAX_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_quant8_2(int i)1408 inline bool is_ignored_dynamic_output_shape_nhwc_quant8_2(int i) {
1409 static std::set<int> ignore = {};
1410 return ignore.find(i) != ignore.end();
1411 }
1412
CreateModel_dynamic_output_shape_nhwc_float16_2(Model * model)1413 void CreateModel_dynamic_output_shape_nhwc_float16_2(Model *model) {
1414 OperandType type0(Type::BOOL, {});
1415 OperandType type2(Type::INT32, {});
1416 OperandType type24(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
1417 OperandType type27(Type::TENSOR_FLOAT16, {5, 50, 70, 3});
1418 // Phase 1, operands
1419 auto op11 = model->addOperand(&type27);
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(&type24);
1431 // Phase 2, operations
1432 static int32_t param9_init[] = {0};
1433 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
1434 static int32_t param10_init[] = {0};
1435 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
1436 static int32_t param11_init[] = {0};
1437 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
1438 static int32_t param12_init[] = {0};
1439 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
1440 static int32_t param13_init[] = {20};
1441 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
1442 static int32_t param14_init[] = {20};
1443 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
1444 static int32_t param15_init[] = {20};
1445 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
1446 static int32_t param16_init[] = {20};
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_MAX_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_float16_2(int i)1460 inline bool is_ignored_dynamic_output_shape_nhwc_float16_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 type22(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
1469 OperandType type29(Type::TENSOR_FLOAT32, {5, 3, 50, 70});
1470 // Phase 1, operands
1471 auto op11 = model->addOperand(&type29);
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(&type22);
1483 // Phase 2, operations
1484 static int32_t param9_init[] = {0};
1485 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
1486 static int32_t param10_init[] = {0};
1487 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
1488 static int32_t param11_init[] = {0};
1489 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
1490 static int32_t param12_init[] = {0};
1491 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
1492 static int32_t param13_init[] = {20};
1493 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
1494 static int32_t param14_init[] = {20};
1495 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
1496 static int32_t param15_init[] = {20};
1497 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
1498 static int32_t param16_init[] = {20};
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_MAX_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 type22(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
1521 OperandType type29(Type::TENSOR_FLOAT32, {5, 3, 50, 70});
1522 // Phase 1, operands
1523 auto op11 = model->addOperand(&type29);
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(&type22);
1535 // Phase 2, operations
1536 static int32_t param9_init[] = {0};
1537 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
1538 static int32_t param10_init[] = {0};
1539 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
1540 static int32_t param11_init[] = {0};
1541 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
1542 static int32_t param12_init[] = {0};
1543 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
1544 static int32_t param13_init[] = {20};
1545 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
1546 static int32_t param14_init[] = {20};
1547 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
1548 static int32_t param15_init[] = {20};
1549 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
1550 static int32_t param16_init[] = {20};
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_MAX_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_quant8_2(Model * model)1571 void CreateModel_dynamic_output_shape_nchw_quant8_2(Model *model) {
1572 OperandType type0(Type::BOOL, {});
1573 OperandType type2(Type::INT32, {});
1574 OperandType type23(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.5f, 0);
1575 OperandType type31(Type::TENSOR_QUANT8_ASYMM, {5, 3, 50, 70}, 0.5f, 0);
1576 // Phase 1, operands
1577 auto op11 = model->addOperand(&type31);
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(&type23);
1589 // Phase 2, operations
1590 static int32_t param9_init[] = {0};
1591 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
1592 static int32_t param10_init[] = {0};
1593 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
1594 static int32_t param11_init[] = {0};
1595 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
1596 static int32_t param12_init[] = {0};
1597 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
1598 static int32_t param13_init[] = {20};
1599 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
1600 static int32_t param14_init[] = {20};
1601 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
1602 static int32_t param15_init[] = {20};
1603 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
1604 static int32_t param16_init[] = {20};
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_MAX_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_quant8_2(int i)1618 inline bool is_ignored_dynamic_output_shape_nchw_quant8_2(int i) {
1619 static std::set<int> ignore = {};
1620 return ignore.find(i) != ignore.end();
1621 }
1622
CreateModel_dynamic_output_shape_nchw_float16_2(Model * model)1623 void CreateModel_dynamic_output_shape_nchw_float16_2(Model *model) {
1624 OperandType type0(Type::BOOL, {});
1625 OperandType type2(Type::INT32, {});
1626 OperandType type24(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
1627 OperandType type33(Type::TENSOR_FLOAT16, {5, 3, 50, 70});
1628 // Phase 1, operands
1629 auto op11 = model->addOperand(&type33);
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(&type24);
1641 // Phase 2, operations
1642 static int32_t param9_init[] = {0};
1643 model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
1644 static int32_t param10_init[] = {0};
1645 model->setOperandValue(param10, param10_init, sizeof(int32_t) * 1);
1646 static int32_t param11_init[] = {0};
1647 model->setOperandValue(param11, param11_init, sizeof(int32_t) * 1);
1648 static int32_t param12_init[] = {0};
1649 model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
1650 static int32_t param13_init[] = {20};
1651 model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
1652 static int32_t param14_init[] = {20};
1653 model->setOperandValue(param14, param14_init, sizeof(int32_t) * 1);
1654 static int32_t param15_init[] = {20};
1655 model->setOperandValue(param15, param15_init, sizeof(int32_t) * 1);
1656 static int32_t param16_init[] = {20};
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_MAX_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_float16_2(int i)1670 inline bool is_ignored_dynamic_output_shape_nchw_float16_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 type3(Type::TENSOR_FLOAT32, {5, 50, 70, 3});
1679 OperandType type4(Type::TENSOR_FLOAT32, {5, 2, 3, 3});
1680 // Phase 1, operands
1681 auto op12 = model->addOperand(&type3);
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(&type4);
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[] = {20};
1703 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
1704 static int32_t param23_init[] = {20};
1705 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
1706 static int32_t param24_init[] = {20};
1707 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
1708 static int32_t param25_init[] = {20};
1709 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
1710 static int32_t param26_init[] = {3};
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_MAX_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 type3(Type::TENSOR_FLOAT32, {5, 50, 70, 3});
1731 OperandType type4(Type::TENSOR_FLOAT32, {5, 2, 3, 3});
1732 // Phase 1, operands
1733 auto op12 = model->addOperand(&type3);
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(&type4);
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[] = {20};
1755 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
1756 static int32_t param23_init[] = {20};
1757 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
1758 static int32_t param24_init[] = {20};
1759 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
1760 static int32_t param25_init[] = {20};
1761 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
1762 static int32_t param26_init[] = {3};
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_MAX_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_quant8_3(Model * model)1781 void CreateModel_nhwc_quant8_3(Model *model) {
1782 OperandType type0(Type::BOOL, {});
1783 OperandType type2(Type::INT32, {});
1784 OperandType type35(Type::TENSOR_QUANT8_ASYMM, {5, 50, 70, 3}, 0.25f, 0);
1785 OperandType type36(Type::TENSOR_QUANT8_ASYMM, {5, 2, 3, 3}, 0.25f, 0);
1786 // Phase 1, operands
1787 auto op12 = model->addOperand(&type35);
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(&type36);
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[] = {20};
1809 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
1810 static int32_t param23_init[] = {20};
1811 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
1812 static int32_t param24_init[] = {20};
1813 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
1814 static int32_t param25_init[] = {20};
1815 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
1816 static int32_t param26_init[] = {3};
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_MAX_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_quant8_3(int i)1828 inline bool is_ignored_nhwc_quant8_3(int i) {
1829 static std::set<int> ignore = {};
1830 return ignore.find(i) != ignore.end();
1831 }
1832
CreateModel_nhwc_float16_3(Model * model)1833 void CreateModel_nhwc_float16_3(Model *model) {
1834 OperandType type0(Type::BOOL, {});
1835 OperandType type2(Type::INT32, {});
1836 OperandType type27(Type::TENSOR_FLOAT16, {5, 50, 70, 3});
1837 OperandType type28(Type::TENSOR_FLOAT16, {5, 2, 3, 3});
1838 // Phase 1, operands
1839 auto op12 = model->addOperand(&type27);
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(&type28);
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[] = {20};
1861 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
1862 static int32_t param23_init[] = {20};
1863 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
1864 static int32_t param24_init[] = {20};
1865 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
1866 static int32_t param25_init[] = {20};
1867 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
1868 static int32_t param26_init[] = {3};
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_MAX_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_float16_3(int i)1880 inline bool is_ignored_nhwc_float16_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 type29(Type::TENSOR_FLOAT32, {5, 3, 50, 70});
1889 OperandType type30(Type::TENSOR_FLOAT32, {5, 3, 2, 3});
1890 // Phase 1, operands
1891 auto op12 = model->addOperand(&type29);
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(&type30);
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[] = {20};
1913 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
1914 static int32_t param23_init[] = {20};
1915 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
1916 static int32_t param24_init[] = {20};
1917 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
1918 static int32_t param25_init[] = {20};
1919 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
1920 static int32_t param26_init[] = {3};
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_MAX_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 type29(Type::TENSOR_FLOAT32, {5, 3, 50, 70});
1941 OperandType type30(Type::TENSOR_FLOAT32, {5, 3, 2, 3});
1942 // Phase 1, operands
1943 auto op12 = model->addOperand(&type29);
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(&type30);
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[] = {20};
1965 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
1966 static int32_t param23_init[] = {20};
1967 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
1968 static int32_t param24_init[] = {20};
1969 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
1970 static int32_t param25_init[] = {20};
1971 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
1972 static int32_t param26_init[] = {3};
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_MAX_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_quant8_3(Model * model)1991 void CreateModel_nchw_quant8_3(Model *model) {
1992 OperandType type0(Type::BOOL, {});
1993 OperandType type2(Type::INT32, {});
1994 OperandType type37(Type::TENSOR_QUANT8_ASYMM, {5, 3, 50, 70}, 0.25f, 0);
1995 OperandType type38(Type::TENSOR_QUANT8_ASYMM, {5, 3, 2, 3}, 0.25f, 0);
1996 // Phase 1, operands
1997 auto op12 = model->addOperand(&type37);
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(&type38);
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[] = {20};
2019 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
2020 static int32_t param23_init[] = {20};
2021 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
2022 static int32_t param24_init[] = {20};
2023 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
2024 static int32_t param25_init[] = {20};
2025 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
2026 static int32_t param26_init[] = {3};
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_MAX_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_quant8_3(int i)2038 inline bool is_ignored_nchw_quant8_3(int i) {
2039 static std::set<int> ignore = {};
2040 return ignore.find(i) != ignore.end();
2041 }
2042
CreateModel_nchw_float16_3(Model * model)2043 void CreateModel_nchw_float16_3(Model *model) {
2044 OperandType type0(Type::BOOL, {});
2045 OperandType type2(Type::INT32, {});
2046 OperandType type33(Type::TENSOR_FLOAT16, {5, 3, 50, 70});
2047 OperandType type34(Type::TENSOR_FLOAT16, {5, 3, 2, 3});
2048 // Phase 1, operands
2049 auto op12 = model->addOperand(&type33);
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(&type34);
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[] = {20};
2071 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
2072 static int32_t param23_init[] = {20};
2073 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
2074 static int32_t param24_init[] = {20};
2075 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
2076 static int32_t param25_init[] = {20};
2077 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
2078 static int32_t param26_init[] = {3};
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_MAX_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_float16_3(int i)2090 inline bool is_ignored_nchw_float16_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 type22(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
2099 OperandType type3(Type::TENSOR_FLOAT32, {5, 50, 70, 3});
2100 // Phase 1, operands
2101 auto op12 = model->addOperand(&type3);
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(&type22);
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[] = {20};
2123 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
2124 static int32_t param23_init[] = {20};
2125 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
2126 static int32_t param24_init[] = {20};
2127 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
2128 static int32_t param25_init[] = {20};
2129 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
2130 static int32_t param26_init[] = {3};
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_MAX_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 type22(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
2151 OperandType type3(Type::TENSOR_FLOAT32, {5, 50, 70, 3});
2152 // Phase 1, operands
2153 auto op12 = model->addOperand(&type3);
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(&type22);
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[] = {20};
2175 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
2176 static int32_t param23_init[] = {20};
2177 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
2178 static int32_t param24_init[] = {20};
2179 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
2180 static int32_t param25_init[] = {20};
2181 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
2182 static int32_t param26_init[] = {3};
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_MAX_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_quant8_3(Model * model)2201 void CreateModel_dynamic_output_shape_nhwc_quant8_3(Model *model) {
2202 OperandType type0(Type::BOOL, {});
2203 OperandType type2(Type::INT32, {});
2204 OperandType type35(Type::TENSOR_QUANT8_ASYMM, {5, 50, 70, 3}, 0.25f, 0);
2205 OperandType type39(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 0);
2206 // Phase 1, operands
2207 auto op12 = model->addOperand(&type35);
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(&type39);
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[] = {20};
2229 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
2230 static int32_t param23_init[] = {20};
2231 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
2232 static int32_t param24_init[] = {20};
2233 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
2234 static int32_t param25_init[] = {20};
2235 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
2236 static int32_t param26_init[] = {3};
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_MAX_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_quant8_3(int i)2248 inline bool is_ignored_dynamic_output_shape_nhwc_quant8_3(int i) {
2249 static std::set<int> ignore = {};
2250 return ignore.find(i) != ignore.end();
2251 }
2252
CreateModel_dynamic_output_shape_nhwc_float16_3(Model * model)2253 void CreateModel_dynamic_output_shape_nhwc_float16_3(Model *model) {
2254 OperandType type0(Type::BOOL, {});
2255 OperandType type2(Type::INT32, {});
2256 OperandType type24(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
2257 OperandType type27(Type::TENSOR_FLOAT16, {5, 50, 70, 3});
2258 // Phase 1, operands
2259 auto op12 = model->addOperand(&type27);
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(&type24);
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[] = {20};
2281 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
2282 static int32_t param23_init[] = {20};
2283 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
2284 static int32_t param24_init[] = {20};
2285 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
2286 static int32_t param25_init[] = {20};
2287 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
2288 static int32_t param26_init[] = {3};
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_MAX_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_float16_3(int i)2300 inline bool is_ignored_dynamic_output_shape_nhwc_float16_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 type22(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
2309 OperandType type29(Type::TENSOR_FLOAT32, {5, 3, 50, 70});
2310 // Phase 1, operands
2311 auto op12 = model->addOperand(&type29);
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(&type22);
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[] = {20};
2333 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
2334 static int32_t param23_init[] = {20};
2335 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
2336 static int32_t param24_init[] = {20};
2337 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
2338 static int32_t param25_init[] = {20};
2339 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
2340 static int32_t param26_init[] = {3};
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_MAX_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 type22(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
2361 OperandType type29(Type::TENSOR_FLOAT32, {5, 3, 50, 70});
2362 // Phase 1, operands
2363 auto op12 = model->addOperand(&type29);
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(&type22);
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[] = {20};
2385 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
2386 static int32_t param23_init[] = {20};
2387 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
2388 static int32_t param24_init[] = {20};
2389 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
2390 static int32_t param25_init[] = {20};
2391 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
2392 static int32_t param26_init[] = {3};
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_MAX_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_quant8_3(Model * model)2411 void CreateModel_dynamic_output_shape_nchw_quant8_3(Model *model) {
2412 OperandType type0(Type::BOOL, {});
2413 OperandType type2(Type::INT32, {});
2414 OperandType type37(Type::TENSOR_QUANT8_ASYMM, {5, 3, 50, 70}, 0.25f, 0);
2415 OperandType type39(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 0);
2416 // Phase 1, operands
2417 auto op12 = model->addOperand(&type37);
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(&type39);
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[] = {20};
2439 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
2440 static int32_t param23_init[] = {20};
2441 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
2442 static int32_t param24_init[] = {20};
2443 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
2444 static int32_t param25_init[] = {20};
2445 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
2446 static int32_t param26_init[] = {3};
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_MAX_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_quant8_3(int i)2458 inline bool is_ignored_dynamic_output_shape_nchw_quant8_3(int i) {
2459 static std::set<int> ignore = {};
2460 return ignore.find(i) != ignore.end();
2461 }
2462
CreateModel_dynamic_output_shape_nchw_float16_3(Model * model)2463 void CreateModel_dynamic_output_shape_nchw_float16_3(Model *model) {
2464 OperandType type0(Type::BOOL, {});
2465 OperandType type2(Type::INT32, {});
2466 OperandType type24(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
2467 OperandType type33(Type::TENSOR_FLOAT16, {5, 3, 50, 70});
2468 // Phase 1, operands
2469 auto op12 = model->addOperand(&type33);
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(&type24);
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[] = {20};
2491 model->setOperandValue(param22, param22_init, sizeof(int32_t) * 1);
2492 static int32_t param23_init[] = {20};
2493 model->setOperandValue(param23, param23_init, sizeof(int32_t) * 1);
2494 static int32_t param24_init[] = {20};
2495 model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
2496 static int32_t param25_init[] = {20};
2497 model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
2498 static int32_t param26_init[] = {3};
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_MAX_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_float16_3(int i)2510 inline bool is_ignored_dynamic_output_shape_nchw_float16_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 type5(Type::TENSOR_FLOAT32, {1, 2, 4, 1});
2519 OperandType type6(Type::TENSOR_FLOAT32, {1, 1, 2, 1});
2520 // Phase 1, operands
2521 auto op13 = model->addOperand(&type5);
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 layout = model->addOperand(&type0);
2529 auto op43 = model->addOperand(&type6);
2530 // Phase 2, operations
2531 static int32_t param27_init[] = {1};
2532 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
2533 static int32_t param28_init[] = {2};
2534 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
2535 static int32_t param29_init[] = {2};
2536 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
2537 static int32_t param30_init[] = {2};
2538 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
2539 static int32_t param31_init[] = {2};
2540 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
2541 static int32_t param32_init[] = {0};
2542 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
2543 static bool8 layout_init[] = {false};
2544 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2545 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, layout}, {op43});
2546 // Phase 3, inputs and outputs
2547 model->identifyInputsAndOutputs(
2548 {op13},
2549 {op43});
2550 assert(model->isValid());
2551 }
2552
is_ignored_nhwc_4(int i)2553 inline bool is_ignored_nhwc_4(int i) {
2554 static std::set<int> ignore = {};
2555 return ignore.find(i) != ignore.end();
2556 }
2557
CreateModel_nhwc_relaxed_4(Model * model)2558 void CreateModel_nhwc_relaxed_4(Model *model) {
2559 OperandType type0(Type::BOOL, {});
2560 OperandType type2(Type::INT32, {});
2561 OperandType type5(Type::TENSOR_FLOAT32, {1, 2, 4, 1});
2562 OperandType type6(Type::TENSOR_FLOAT32, {1, 1, 2, 1});
2563 // Phase 1, operands
2564 auto op13 = model->addOperand(&type5);
2565 auto param27 = model->addOperand(&type2);
2566 auto param28 = model->addOperand(&type2);
2567 auto param29 = model->addOperand(&type2);
2568 auto param30 = model->addOperand(&type2);
2569 auto param31 = model->addOperand(&type2);
2570 auto param32 = model->addOperand(&type2);
2571 auto layout = model->addOperand(&type0);
2572 auto op43 = model->addOperand(&type6);
2573 // Phase 2, operations
2574 static int32_t param27_init[] = {1};
2575 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
2576 static int32_t param28_init[] = {2};
2577 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
2578 static int32_t param29_init[] = {2};
2579 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
2580 static int32_t param30_init[] = {2};
2581 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
2582 static int32_t param31_init[] = {2};
2583 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
2584 static int32_t param32_init[] = {0};
2585 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
2586 static bool8 layout_init[] = {false};
2587 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2588 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, layout}, {op43});
2589 // Phase 3, inputs and outputs
2590 model->identifyInputsAndOutputs(
2591 {op13},
2592 {op43});
2593 // Phase 4: set relaxed execution
2594 model->relaxComputationFloat32toFloat16(true);
2595 assert(model->isValid());
2596 }
2597
is_ignored_nhwc_relaxed_4(int i)2598 inline bool is_ignored_nhwc_relaxed_4(int i) {
2599 static std::set<int> ignore = {};
2600 return ignore.find(i) != ignore.end();
2601 }
2602
CreateModel_nhwc_quant8_4(Model * model)2603 void CreateModel_nhwc_quant8_4(Model *model) {
2604 OperandType type0(Type::BOOL, {});
2605 OperandType type2(Type::INT32, {});
2606 OperandType type40(Type::TENSOR_QUANT8_ASYMM, {1, 2, 4, 1}, 0.25f, 0);
2607 OperandType type41(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 1}, 0.25f, 0);
2608 // Phase 1, operands
2609 auto op13 = model->addOperand(&type40);
2610 auto param27 = model->addOperand(&type2);
2611 auto param28 = model->addOperand(&type2);
2612 auto param29 = model->addOperand(&type2);
2613 auto param30 = model->addOperand(&type2);
2614 auto param31 = model->addOperand(&type2);
2615 auto param32 = model->addOperand(&type2);
2616 auto layout = model->addOperand(&type0);
2617 auto op43 = model->addOperand(&type41);
2618 // Phase 2, operations
2619 static int32_t param27_init[] = {1};
2620 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
2621 static int32_t param28_init[] = {2};
2622 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
2623 static int32_t param29_init[] = {2};
2624 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
2625 static int32_t param30_init[] = {2};
2626 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
2627 static int32_t param31_init[] = {2};
2628 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
2629 static int32_t param32_init[] = {0};
2630 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
2631 static bool8 layout_init[] = {false};
2632 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2633 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, layout}, {op43});
2634 // Phase 3, inputs and outputs
2635 model->identifyInputsAndOutputs(
2636 {op13},
2637 {op43});
2638 assert(model->isValid());
2639 }
2640
is_ignored_nhwc_quant8_4(int i)2641 inline bool is_ignored_nhwc_quant8_4(int i) {
2642 static std::set<int> ignore = {};
2643 return ignore.find(i) != ignore.end();
2644 }
2645
CreateModel_nhwc_float16_4(Model * model)2646 void CreateModel_nhwc_float16_4(Model *model) {
2647 OperandType type0(Type::BOOL, {});
2648 OperandType type2(Type::INT32, {});
2649 OperandType type42(Type::TENSOR_FLOAT16, {1, 2, 4, 1});
2650 OperandType type43(Type::TENSOR_FLOAT16, {1, 1, 2, 1});
2651 // Phase 1, operands
2652 auto op13 = model->addOperand(&type42);
2653 auto param27 = model->addOperand(&type2);
2654 auto param28 = model->addOperand(&type2);
2655 auto param29 = model->addOperand(&type2);
2656 auto param30 = model->addOperand(&type2);
2657 auto param31 = model->addOperand(&type2);
2658 auto param32 = model->addOperand(&type2);
2659 auto layout = model->addOperand(&type0);
2660 auto op43 = model->addOperand(&type43);
2661 // Phase 2, operations
2662 static int32_t param27_init[] = {1};
2663 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
2664 static int32_t param28_init[] = {2};
2665 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
2666 static int32_t param29_init[] = {2};
2667 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
2668 static int32_t param30_init[] = {2};
2669 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
2670 static int32_t param31_init[] = {2};
2671 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
2672 static int32_t param32_init[] = {0};
2673 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
2674 static bool8 layout_init[] = {false};
2675 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2676 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, layout}, {op43});
2677 // Phase 3, inputs and outputs
2678 model->identifyInputsAndOutputs(
2679 {op13},
2680 {op43});
2681 assert(model->isValid());
2682 }
2683
is_ignored_nhwc_float16_4(int i)2684 inline bool is_ignored_nhwc_float16_4(int i) {
2685 static std::set<int> ignore = {};
2686 return ignore.find(i) != ignore.end();
2687 }
2688
CreateModel_nchw_4(Model * model)2689 void CreateModel_nchw_4(Model *model) {
2690 OperandType type0(Type::BOOL, {});
2691 OperandType type2(Type::INT32, {});
2692 OperandType type44(Type::TENSOR_FLOAT32, {1, 1, 2, 4});
2693 OperandType type45(Type::TENSOR_FLOAT32, {1, 1, 1, 2});
2694 // Phase 1, operands
2695 auto op13 = model->addOperand(&type44);
2696 auto param27 = model->addOperand(&type2);
2697 auto param28 = model->addOperand(&type2);
2698 auto param29 = model->addOperand(&type2);
2699 auto param30 = model->addOperand(&type2);
2700 auto param31 = model->addOperand(&type2);
2701 auto param32 = model->addOperand(&type2);
2702 auto layout = model->addOperand(&type0);
2703 auto op43 = model->addOperand(&type45);
2704 // Phase 2, operations
2705 static int32_t param27_init[] = {1};
2706 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
2707 static int32_t param28_init[] = {2};
2708 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
2709 static int32_t param29_init[] = {2};
2710 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
2711 static int32_t param30_init[] = {2};
2712 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
2713 static int32_t param31_init[] = {2};
2714 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
2715 static int32_t param32_init[] = {0};
2716 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
2717 static bool8 layout_init[] = {true};
2718 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2719 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, layout}, {op43});
2720 // Phase 3, inputs and outputs
2721 model->identifyInputsAndOutputs(
2722 {op13},
2723 {op43});
2724 assert(model->isValid());
2725 }
2726
is_ignored_nchw_4(int i)2727 inline bool is_ignored_nchw_4(int i) {
2728 static std::set<int> ignore = {};
2729 return ignore.find(i) != ignore.end();
2730 }
2731
CreateModel_nchw_relaxed_4(Model * model)2732 void CreateModel_nchw_relaxed_4(Model *model) {
2733 OperandType type0(Type::BOOL, {});
2734 OperandType type2(Type::INT32, {});
2735 OperandType type44(Type::TENSOR_FLOAT32, {1, 1, 2, 4});
2736 OperandType type45(Type::TENSOR_FLOAT32, {1, 1, 1, 2});
2737 // Phase 1, operands
2738 auto op13 = model->addOperand(&type44);
2739 auto param27 = model->addOperand(&type2);
2740 auto param28 = model->addOperand(&type2);
2741 auto param29 = model->addOperand(&type2);
2742 auto param30 = model->addOperand(&type2);
2743 auto param31 = model->addOperand(&type2);
2744 auto param32 = model->addOperand(&type2);
2745 auto layout = model->addOperand(&type0);
2746 auto op43 = model->addOperand(&type45);
2747 // Phase 2, operations
2748 static int32_t param27_init[] = {1};
2749 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
2750 static int32_t param28_init[] = {2};
2751 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
2752 static int32_t param29_init[] = {2};
2753 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
2754 static int32_t param30_init[] = {2};
2755 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
2756 static int32_t param31_init[] = {2};
2757 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
2758 static int32_t param32_init[] = {0};
2759 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
2760 static bool8 layout_init[] = {true};
2761 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2762 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, layout}, {op43});
2763 // Phase 3, inputs and outputs
2764 model->identifyInputsAndOutputs(
2765 {op13},
2766 {op43});
2767 // Phase 4: set relaxed execution
2768 model->relaxComputationFloat32toFloat16(true);
2769 assert(model->isValid());
2770 }
2771
is_ignored_nchw_relaxed_4(int i)2772 inline bool is_ignored_nchw_relaxed_4(int i) {
2773 static std::set<int> ignore = {};
2774 return ignore.find(i) != ignore.end();
2775 }
2776
CreateModel_nchw_quant8_4(Model * model)2777 void CreateModel_nchw_quant8_4(Model *model) {
2778 OperandType type0(Type::BOOL, {});
2779 OperandType type2(Type::INT32, {});
2780 OperandType type46(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 4}, 0.25f, 0);
2781 OperandType type47(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 2}, 0.25f, 0);
2782 // Phase 1, operands
2783 auto op13 = model->addOperand(&type46);
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 layout = model->addOperand(&type0);
2791 auto op43 = model->addOperand(&type47);
2792 // Phase 2, operations
2793 static int32_t param27_init[] = {1};
2794 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
2795 static int32_t param28_init[] = {2};
2796 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
2797 static int32_t param29_init[] = {2};
2798 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
2799 static int32_t param30_init[] = {2};
2800 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
2801 static int32_t param31_init[] = {2};
2802 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
2803 static int32_t param32_init[] = {0};
2804 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
2805 static bool8 layout_init[] = {true};
2806 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2807 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, layout}, {op43});
2808 // Phase 3, inputs and outputs
2809 model->identifyInputsAndOutputs(
2810 {op13},
2811 {op43});
2812 assert(model->isValid());
2813 }
2814
is_ignored_nchw_quant8_4(int i)2815 inline bool is_ignored_nchw_quant8_4(int i) {
2816 static std::set<int> ignore = {};
2817 return ignore.find(i) != ignore.end();
2818 }
2819
CreateModel_nchw_float16_4(Model * model)2820 void CreateModel_nchw_float16_4(Model *model) {
2821 OperandType type0(Type::BOOL, {});
2822 OperandType type2(Type::INT32, {});
2823 OperandType type48(Type::TENSOR_FLOAT16, {1, 1, 2, 4});
2824 OperandType type49(Type::TENSOR_FLOAT16, {1, 1, 1, 2});
2825 // Phase 1, operands
2826 auto op13 = model->addOperand(&type48);
2827 auto param27 = model->addOperand(&type2);
2828 auto param28 = model->addOperand(&type2);
2829 auto param29 = model->addOperand(&type2);
2830 auto param30 = model->addOperand(&type2);
2831 auto param31 = model->addOperand(&type2);
2832 auto param32 = model->addOperand(&type2);
2833 auto layout = model->addOperand(&type0);
2834 auto op43 = model->addOperand(&type49);
2835 // Phase 2, operations
2836 static int32_t param27_init[] = {1};
2837 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
2838 static int32_t param28_init[] = {2};
2839 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
2840 static int32_t param29_init[] = {2};
2841 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
2842 static int32_t param30_init[] = {2};
2843 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
2844 static int32_t param31_init[] = {2};
2845 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
2846 static int32_t param32_init[] = {0};
2847 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
2848 static bool8 layout_init[] = {true};
2849 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2850 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, layout}, {op43});
2851 // Phase 3, inputs and outputs
2852 model->identifyInputsAndOutputs(
2853 {op13},
2854 {op43});
2855 assert(model->isValid());
2856 }
2857
is_ignored_nchw_float16_4(int i)2858 inline bool is_ignored_nchw_float16_4(int i) {
2859 static std::set<int> ignore = {};
2860 return ignore.find(i) != ignore.end();
2861 }
2862
CreateModel_dynamic_output_shape_nhwc_4(Model * model)2863 void CreateModel_dynamic_output_shape_nhwc_4(Model *model) {
2864 OperandType type0(Type::BOOL, {});
2865 OperandType type2(Type::INT32, {});
2866 OperandType type22(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
2867 OperandType type5(Type::TENSOR_FLOAT32, {1, 2, 4, 1});
2868 // Phase 1, operands
2869 auto op13 = model->addOperand(&type5);
2870 auto param27 = model->addOperand(&type2);
2871 auto param28 = model->addOperand(&type2);
2872 auto param29 = model->addOperand(&type2);
2873 auto param30 = model->addOperand(&type2);
2874 auto param31 = model->addOperand(&type2);
2875 auto param32 = model->addOperand(&type2);
2876 auto layout = model->addOperand(&type0);
2877 auto op43 = model->addOperand(&type22);
2878 // Phase 2, operations
2879 static int32_t param27_init[] = {1};
2880 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
2881 static int32_t param28_init[] = {2};
2882 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
2883 static int32_t param29_init[] = {2};
2884 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
2885 static int32_t param30_init[] = {2};
2886 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
2887 static int32_t param31_init[] = {2};
2888 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
2889 static int32_t param32_init[] = {0};
2890 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
2891 static bool8 layout_init[] = {false};
2892 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2893 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, layout}, {op43});
2894 // Phase 3, inputs and outputs
2895 model->identifyInputsAndOutputs(
2896 {op13},
2897 {op43});
2898 assert(model->isValid());
2899 }
2900
is_ignored_dynamic_output_shape_nhwc_4(int i)2901 inline bool is_ignored_dynamic_output_shape_nhwc_4(int i) {
2902 static std::set<int> ignore = {};
2903 return ignore.find(i) != ignore.end();
2904 }
2905
CreateModel_dynamic_output_shape_nhwc_relaxed_4(Model * model)2906 void CreateModel_dynamic_output_shape_nhwc_relaxed_4(Model *model) {
2907 OperandType type0(Type::BOOL, {});
2908 OperandType type2(Type::INT32, {});
2909 OperandType type22(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
2910 OperandType type5(Type::TENSOR_FLOAT32, {1, 2, 4, 1});
2911 // Phase 1, operands
2912 auto op13 = model->addOperand(&type5);
2913 auto param27 = model->addOperand(&type2);
2914 auto param28 = model->addOperand(&type2);
2915 auto param29 = model->addOperand(&type2);
2916 auto param30 = model->addOperand(&type2);
2917 auto param31 = model->addOperand(&type2);
2918 auto param32 = model->addOperand(&type2);
2919 auto layout = model->addOperand(&type0);
2920 auto op43 = model->addOperand(&type22);
2921 // Phase 2, operations
2922 static int32_t param27_init[] = {1};
2923 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
2924 static int32_t param28_init[] = {2};
2925 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
2926 static int32_t param29_init[] = {2};
2927 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
2928 static int32_t param30_init[] = {2};
2929 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
2930 static int32_t param31_init[] = {2};
2931 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
2932 static int32_t param32_init[] = {0};
2933 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
2934 static bool8 layout_init[] = {false};
2935 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2936 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, layout}, {op43});
2937 // Phase 3, inputs and outputs
2938 model->identifyInputsAndOutputs(
2939 {op13},
2940 {op43});
2941 // Phase 4: set relaxed execution
2942 model->relaxComputationFloat32toFloat16(true);
2943 assert(model->isValid());
2944 }
2945
is_ignored_dynamic_output_shape_nhwc_relaxed_4(int i)2946 inline bool is_ignored_dynamic_output_shape_nhwc_relaxed_4(int i) {
2947 static std::set<int> ignore = {};
2948 return ignore.find(i) != ignore.end();
2949 }
2950
CreateModel_dynamic_output_shape_nhwc_quant8_4(Model * model)2951 void CreateModel_dynamic_output_shape_nhwc_quant8_4(Model *model) {
2952 OperandType type0(Type::BOOL, {});
2953 OperandType type2(Type::INT32, {});
2954 OperandType type39(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 0);
2955 OperandType type40(Type::TENSOR_QUANT8_ASYMM, {1, 2, 4, 1}, 0.25f, 0);
2956 // Phase 1, operands
2957 auto op13 = model->addOperand(&type40);
2958 auto param27 = model->addOperand(&type2);
2959 auto param28 = model->addOperand(&type2);
2960 auto param29 = model->addOperand(&type2);
2961 auto param30 = model->addOperand(&type2);
2962 auto param31 = model->addOperand(&type2);
2963 auto param32 = model->addOperand(&type2);
2964 auto layout = model->addOperand(&type0);
2965 auto op43 = model->addOperand(&type39);
2966 // Phase 2, operations
2967 static int32_t param27_init[] = {1};
2968 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
2969 static int32_t param28_init[] = {2};
2970 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
2971 static int32_t param29_init[] = {2};
2972 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
2973 static int32_t param30_init[] = {2};
2974 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
2975 static int32_t param31_init[] = {2};
2976 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
2977 static int32_t param32_init[] = {0};
2978 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
2979 static bool8 layout_init[] = {false};
2980 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2981 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, layout}, {op43});
2982 // Phase 3, inputs and outputs
2983 model->identifyInputsAndOutputs(
2984 {op13},
2985 {op43});
2986 assert(model->isValid());
2987 }
2988
is_ignored_dynamic_output_shape_nhwc_quant8_4(int i)2989 inline bool is_ignored_dynamic_output_shape_nhwc_quant8_4(int i) {
2990 static std::set<int> ignore = {};
2991 return ignore.find(i) != ignore.end();
2992 }
2993
CreateModel_dynamic_output_shape_nhwc_float16_4(Model * model)2994 void CreateModel_dynamic_output_shape_nhwc_float16_4(Model *model) {
2995 OperandType type0(Type::BOOL, {});
2996 OperandType type2(Type::INT32, {});
2997 OperandType type24(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
2998 OperandType type42(Type::TENSOR_FLOAT16, {1, 2, 4, 1});
2999 // Phase 1, operands
3000 auto op13 = model->addOperand(&type42);
3001 auto param27 = model->addOperand(&type2);
3002 auto param28 = model->addOperand(&type2);
3003 auto param29 = model->addOperand(&type2);
3004 auto param30 = model->addOperand(&type2);
3005 auto param31 = model->addOperand(&type2);
3006 auto param32 = model->addOperand(&type2);
3007 auto layout = model->addOperand(&type0);
3008 auto op43 = model->addOperand(&type24);
3009 // Phase 2, operations
3010 static int32_t param27_init[] = {1};
3011 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
3012 static int32_t param28_init[] = {2};
3013 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
3014 static int32_t param29_init[] = {2};
3015 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
3016 static int32_t param30_init[] = {2};
3017 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
3018 static int32_t param31_init[] = {2};
3019 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
3020 static int32_t param32_init[] = {0};
3021 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
3022 static bool8 layout_init[] = {false};
3023 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3024 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, layout}, {op43});
3025 // Phase 3, inputs and outputs
3026 model->identifyInputsAndOutputs(
3027 {op13},
3028 {op43});
3029 assert(model->isValid());
3030 }
3031
is_ignored_dynamic_output_shape_nhwc_float16_4(int i)3032 inline bool is_ignored_dynamic_output_shape_nhwc_float16_4(int i) {
3033 static std::set<int> ignore = {};
3034 return ignore.find(i) != ignore.end();
3035 }
3036
CreateModel_dynamic_output_shape_nchw_4(Model * model)3037 void CreateModel_dynamic_output_shape_nchw_4(Model *model) {
3038 OperandType type0(Type::BOOL, {});
3039 OperandType type2(Type::INT32, {});
3040 OperandType type22(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
3041 OperandType type44(Type::TENSOR_FLOAT32, {1, 1, 2, 4});
3042 // Phase 1, operands
3043 auto op13 = model->addOperand(&type44);
3044 auto param27 = model->addOperand(&type2);
3045 auto param28 = model->addOperand(&type2);
3046 auto param29 = model->addOperand(&type2);
3047 auto param30 = model->addOperand(&type2);
3048 auto param31 = model->addOperand(&type2);
3049 auto param32 = model->addOperand(&type2);
3050 auto layout = model->addOperand(&type0);
3051 auto op43 = model->addOperand(&type22);
3052 // Phase 2, operations
3053 static int32_t param27_init[] = {1};
3054 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
3055 static int32_t param28_init[] = {2};
3056 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
3057 static int32_t param29_init[] = {2};
3058 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
3059 static int32_t param30_init[] = {2};
3060 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
3061 static int32_t param31_init[] = {2};
3062 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
3063 static int32_t param32_init[] = {0};
3064 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
3065 static bool8 layout_init[] = {true};
3066 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3067 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, layout}, {op43});
3068 // Phase 3, inputs and outputs
3069 model->identifyInputsAndOutputs(
3070 {op13},
3071 {op43});
3072 assert(model->isValid());
3073 }
3074
is_ignored_dynamic_output_shape_nchw_4(int i)3075 inline bool is_ignored_dynamic_output_shape_nchw_4(int i) {
3076 static std::set<int> ignore = {};
3077 return ignore.find(i) != ignore.end();
3078 }
3079
CreateModel_dynamic_output_shape_nchw_relaxed_4(Model * model)3080 void CreateModel_dynamic_output_shape_nchw_relaxed_4(Model *model) {
3081 OperandType type0(Type::BOOL, {});
3082 OperandType type2(Type::INT32, {});
3083 OperandType type22(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
3084 OperandType type44(Type::TENSOR_FLOAT32, {1, 1, 2, 4});
3085 // Phase 1, operands
3086 auto op13 = model->addOperand(&type44);
3087 auto param27 = model->addOperand(&type2);
3088 auto param28 = model->addOperand(&type2);
3089 auto param29 = model->addOperand(&type2);
3090 auto param30 = model->addOperand(&type2);
3091 auto param31 = model->addOperand(&type2);
3092 auto param32 = model->addOperand(&type2);
3093 auto layout = model->addOperand(&type0);
3094 auto op43 = model->addOperand(&type22);
3095 // Phase 2, operations
3096 static int32_t param27_init[] = {1};
3097 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
3098 static int32_t param28_init[] = {2};
3099 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
3100 static int32_t param29_init[] = {2};
3101 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
3102 static int32_t param30_init[] = {2};
3103 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
3104 static int32_t param31_init[] = {2};
3105 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
3106 static int32_t param32_init[] = {0};
3107 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
3108 static bool8 layout_init[] = {true};
3109 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3110 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, layout}, {op43});
3111 // Phase 3, inputs and outputs
3112 model->identifyInputsAndOutputs(
3113 {op13},
3114 {op43});
3115 // Phase 4: set relaxed execution
3116 model->relaxComputationFloat32toFloat16(true);
3117 assert(model->isValid());
3118 }
3119
is_ignored_dynamic_output_shape_nchw_relaxed_4(int i)3120 inline bool is_ignored_dynamic_output_shape_nchw_relaxed_4(int i) {
3121 static std::set<int> ignore = {};
3122 return ignore.find(i) != ignore.end();
3123 }
3124
CreateModel_dynamic_output_shape_nchw_quant8_4(Model * model)3125 void CreateModel_dynamic_output_shape_nchw_quant8_4(Model *model) {
3126 OperandType type0(Type::BOOL, {});
3127 OperandType type2(Type::INT32, {});
3128 OperandType type39(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 0);
3129 OperandType type46(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 4}, 0.25f, 0);
3130 // Phase 1, operands
3131 auto op13 = model->addOperand(&type46);
3132 auto param27 = model->addOperand(&type2);
3133 auto param28 = model->addOperand(&type2);
3134 auto param29 = model->addOperand(&type2);
3135 auto param30 = model->addOperand(&type2);
3136 auto param31 = model->addOperand(&type2);
3137 auto param32 = model->addOperand(&type2);
3138 auto layout = model->addOperand(&type0);
3139 auto op43 = model->addOperand(&type39);
3140 // Phase 2, operations
3141 static int32_t param27_init[] = {1};
3142 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
3143 static int32_t param28_init[] = {2};
3144 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
3145 static int32_t param29_init[] = {2};
3146 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
3147 static int32_t param30_init[] = {2};
3148 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
3149 static int32_t param31_init[] = {2};
3150 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
3151 static int32_t param32_init[] = {0};
3152 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
3153 static bool8 layout_init[] = {true};
3154 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3155 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, layout}, {op43});
3156 // Phase 3, inputs and outputs
3157 model->identifyInputsAndOutputs(
3158 {op13},
3159 {op43});
3160 assert(model->isValid());
3161 }
3162
is_ignored_dynamic_output_shape_nchw_quant8_4(int i)3163 inline bool is_ignored_dynamic_output_shape_nchw_quant8_4(int i) {
3164 static std::set<int> ignore = {};
3165 return ignore.find(i) != ignore.end();
3166 }
3167
CreateModel_dynamic_output_shape_nchw_float16_4(Model * model)3168 void CreateModel_dynamic_output_shape_nchw_float16_4(Model *model) {
3169 OperandType type0(Type::BOOL, {});
3170 OperandType type2(Type::INT32, {});
3171 OperandType type24(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
3172 OperandType type48(Type::TENSOR_FLOAT16, {1, 1, 2, 4});
3173 // Phase 1, operands
3174 auto op13 = model->addOperand(&type48);
3175 auto param27 = model->addOperand(&type2);
3176 auto param28 = model->addOperand(&type2);
3177 auto param29 = model->addOperand(&type2);
3178 auto param30 = model->addOperand(&type2);
3179 auto param31 = model->addOperand(&type2);
3180 auto param32 = model->addOperand(&type2);
3181 auto layout = model->addOperand(&type0);
3182 auto op43 = model->addOperand(&type24);
3183 // Phase 2, operations
3184 static int32_t param27_init[] = {1};
3185 model->setOperandValue(param27, param27_init, sizeof(int32_t) * 1);
3186 static int32_t param28_init[] = {2};
3187 model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
3188 static int32_t param29_init[] = {2};
3189 model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
3190 static int32_t param30_init[] = {2};
3191 model->setOperandValue(param30, param30_init, sizeof(int32_t) * 1);
3192 static int32_t param31_init[] = {2};
3193 model->setOperandValue(param31, param31_init, sizeof(int32_t) * 1);
3194 static int32_t param32_init[] = {0};
3195 model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
3196 static bool8 layout_init[] = {true};
3197 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3198 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {op13, param27, param28, param29, param30, param31, param32, layout}, {op43});
3199 // Phase 3, inputs and outputs
3200 model->identifyInputsAndOutputs(
3201 {op13},
3202 {op43});
3203 assert(model->isValid());
3204 }
3205
is_ignored_dynamic_output_shape_nchw_float16_4(int i)3206 inline bool is_ignored_dynamic_output_shape_nchw_float16_4(int i) {
3207 static std::set<int> ignore = {};
3208 return ignore.find(i) != ignore.end();
3209 }
3210
CreateModel_zero_sized_nhwc(Model * model)3211 void CreateModel_zero_sized_nhwc(Model *model) {
3212 OperandType type0(Type::BOOL, {});
3213 OperandType type10(Type::TENSOR_INT32, {0});
3214 OperandType type11(Type::TENSOR_FLOAT32, {0, 4});
3215 OperandType type12(Type::TENSOR_INT32, {1});
3216 OperandType type13(Type::FLOAT32, {});
3217 OperandType type14(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
3218 OperandType type15(Type::TENSOR_FLOAT32, {0, 2, 2, 1});
3219 OperandType type16(Type::TENSOR_FLOAT32, {0, 1, 1, 1});
3220 OperandType type2(Type::INT32, {});
3221 OperandType type7(Type::TENSOR_FLOAT32, {1, 2});
3222 OperandType type8(Type::TENSOR_FLOAT32, {1, 8});
3223 OperandType type9(Type::TENSOR_FLOAT32, {0});
3224 // Phase 1, operands
3225 auto scores = model->addOperand(&type7);
3226 auto roi = model->addOperand(&type8);
3227 auto param33 = model->addOperand(&type12);
3228 auto param34 = model->addOperand(&type13);
3229 auto param35 = model->addOperand(&type2);
3230 auto param36 = model->addOperand(&type2);
3231 auto param37 = model->addOperand(&type13);
3232 auto param38 = model->addOperand(&type13);
3233 auto param39 = model->addOperand(&type13);
3234 auto scoresOut = model->addOperand(&type9);
3235 auto roiOut = model->addOperand(&type11);
3236 auto classesOut = model->addOperand(&type10);
3237 auto batchSplitOut = model->addOperand(&type10);
3238 auto in = model->addOperand(&type14);
3239 auto param40 = model->addOperand(&type2);
3240 auto param41 = model->addOperand(&type2);
3241 auto param42 = model->addOperand(&type13);
3242 auto param43 = model->addOperand(&type13);
3243 auto param44 = model->addOperand(&type2);
3244 auto param45 = model->addOperand(&type2);
3245 auto layout = model->addOperand(&type0);
3246 auto featureMap = model->addOperand(&type15);
3247 auto param46 = model->addOperand(&type2);
3248 auto param47 = model->addOperand(&type2);
3249 auto param48 = model->addOperand(&type2);
3250 auto param49 = model->addOperand(&type2);
3251 auto param50 = model->addOperand(&type2);
3252 auto param51 = model->addOperand(&type2);
3253 auto param52 = model->addOperand(&type2);
3254 auto param53 = model->addOperand(&type2);
3255 auto param54 = model->addOperand(&type2);
3256 auto out = model->addOperand(&type16);
3257 // Phase 2, operations
3258 static float scores_init[] = {0.9f, 0.1f};
3259 model->setOperandValue(scores, scores_init, sizeof(float) * 2);
3260 static float roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
3261 model->setOperandValue(roi, roi_init, sizeof(float) * 8);
3262 static int32_t param33_init[] = {0};
3263 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
3264 static float param34_init[] = {0.3f};
3265 model->setOperandValue(param34, param34_init, sizeof(float) * 1);
3266 static int32_t param35_init[] = {-1};
3267 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
3268 static int32_t param36_init[] = {0};
3269 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
3270 static float param37_init[] = {0.4f};
3271 model->setOperandValue(param37, param37_init, sizeof(float) * 1);
3272 static float param38_init[] = {1.0f};
3273 model->setOperandValue(param38, param38_init, sizeof(float) * 1);
3274 static float param39_init[] = {0.3f};
3275 model->setOperandValue(param39, param39_init, sizeof(float) * 1);
3276 static int32_t param40_init[] = {2};
3277 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
3278 static int32_t param41_init[] = {2};
3279 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
3280 static float param42_init[] = {2.0f};
3281 model->setOperandValue(param42, param42_init, sizeof(float) * 1);
3282 static float param43_init[] = {2.0f};
3283 model->setOperandValue(param43, param43_init, sizeof(float) * 1);
3284 static int32_t param44_init[] = {4};
3285 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
3286 static int32_t param45_init[] = {4};
3287 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
3288 static bool8 layout_init[] = {false};
3289 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3290 static int32_t param46_init[] = {0};
3291 model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
3292 static int32_t param47_init[] = {0};
3293 model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
3294 static int32_t param48_init[] = {0};
3295 model->setOperandValue(param48, param48_init, sizeof(int32_t) * 1);
3296 static int32_t param49_init[] = {0};
3297 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
3298 static int32_t param50_init[] = {1};
3299 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
3300 static int32_t param51_init[] = {1};
3301 model->setOperandValue(param51, param51_init, sizeof(int32_t) * 1);
3302 static int32_t param52_init[] = {2};
3303 model->setOperandValue(param52, param52_init, sizeof(int32_t) * 1);
3304 static int32_t param53_init[] = {2};
3305 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
3306 static int32_t param54_init[] = {0};
3307 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
3308 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param33, param34, param35, param36, param37, param38, param39}, {scoresOut, roiOut, classesOut, batchSplitOut});
3309 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param40, param41, param42, param43, param44, param45, layout}, {featureMap});
3310 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap, param46, param47, param48, param49, param50, param51, param52, param53, param54, layout}, {out});
3311 // Phase 3, inputs and outputs
3312 model->identifyInputsAndOutputs(
3313 {in},
3314 {scoresOut, classesOut, out});
3315 assert(model->isValid());
3316 }
3317
is_ignored_zero_sized_nhwc(int i)3318 inline bool is_ignored_zero_sized_nhwc(int i) {
3319 static std::set<int> ignore = {};
3320 return ignore.find(i) != ignore.end();
3321 }
3322
CreateModel_zero_sized_nhwc_relaxed(Model * model)3323 void CreateModel_zero_sized_nhwc_relaxed(Model *model) {
3324 OperandType type0(Type::BOOL, {});
3325 OperandType type10(Type::TENSOR_INT32, {0});
3326 OperandType type11(Type::TENSOR_FLOAT32, {0, 4});
3327 OperandType type12(Type::TENSOR_INT32, {1});
3328 OperandType type13(Type::FLOAT32, {});
3329 OperandType type14(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
3330 OperandType type15(Type::TENSOR_FLOAT32, {0, 2, 2, 1});
3331 OperandType type16(Type::TENSOR_FLOAT32, {0, 1, 1, 1});
3332 OperandType type2(Type::INT32, {});
3333 OperandType type7(Type::TENSOR_FLOAT32, {1, 2});
3334 OperandType type8(Type::TENSOR_FLOAT32, {1, 8});
3335 OperandType type9(Type::TENSOR_FLOAT32, {0});
3336 // Phase 1, operands
3337 auto scores = model->addOperand(&type7);
3338 auto roi = model->addOperand(&type8);
3339 auto param33 = model->addOperand(&type12);
3340 auto param34 = model->addOperand(&type13);
3341 auto param35 = model->addOperand(&type2);
3342 auto param36 = model->addOperand(&type2);
3343 auto param37 = model->addOperand(&type13);
3344 auto param38 = model->addOperand(&type13);
3345 auto param39 = model->addOperand(&type13);
3346 auto scoresOut = model->addOperand(&type9);
3347 auto roiOut = model->addOperand(&type11);
3348 auto classesOut = model->addOperand(&type10);
3349 auto batchSplitOut = model->addOperand(&type10);
3350 auto in = model->addOperand(&type14);
3351 auto param40 = model->addOperand(&type2);
3352 auto param41 = model->addOperand(&type2);
3353 auto param42 = model->addOperand(&type13);
3354 auto param43 = model->addOperand(&type13);
3355 auto param44 = model->addOperand(&type2);
3356 auto param45 = model->addOperand(&type2);
3357 auto layout = model->addOperand(&type0);
3358 auto featureMap = model->addOperand(&type15);
3359 auto param46 = model->addOperand(&type2);
3360 auto param47 = model->addOperand(&type2);
3361 auto param48 = model->addOperand(&type2);
3362 auto param49 = model->addOperand(&type2);
3363 auto param50 = model->addOperand(&type2);
3364 auto param51 = model->addOperand(&type2);
3365 auto param52 = model->addOperand(&type2);
3366 auto param53 = model->addOperand(&type2);
3367 auto param54 = model->addOperand(&type2);
3368 auto out = model->addOperand(&type16);
3369 // Phase 2, operations
3370 static float scores_init[] = {0.9f, 0.1f};
3371 model->setOperandValue(scores, scores_init, sizeof(float) * 2);
3372 static float roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
3373 model->setOperandValue(roi, roi_init, sizeof(float) * 8);
3374 static int32_t param33_init[] = {0};
3375 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
3376 static float param34_init[] = {0.3f};
3377 model->setOperandValue(param34, param34_init, sizeof(float) * 1);
3378 static int32_t param35_init[] = {-1};
3379 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
3380 static int32_t param36_init[] = {0};
3381 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
3382 static float param37_init[] = {0.4f};
3383 model->setOperandValue(param37, param37_init, sizeof(float) * 1);
3384 static float param38_init[] = {1.0f};
3385 model->setOperandValue(param38, param38_init, sizeof(float) * 1);
3386 static float param39_init[] = {0.3f};
3387 model->setOperandValue(param39, param39_init, sizeof(float) * 1);
3388 static int32_t param40_init[] = {2};
3389 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
3390 static int32_t param41_init[] = {2};
3391 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
3392 static float param42_init[] = {2.0f};
3393 model->setOperandValue(param42, param42_init, sizeof(float) * 1);
3394 static float param43_init[] = {2.0f};
3395 model->setOperandValue(param43, param43_init, sizeof(float) * 1);
3396 static int32_t param44_init[] = {4};
3397 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
3398 static int32_t param45_init[] = {4};
3399 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
3400 static bool8 layout_init[] = {false};
3401 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3402 static int32_t param46_init[] = {0};
3403 model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
3404 static int32_t param47_init[] = {0};
3405 model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
3406 static int32_t param48_init[] = {0};
3407 model->setOperandValue(param48, param48_init, sizeof(int32_t) * 1);
3408 static int32_t param49_init[] = {0};
3409 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
3410 static int32_t param50_init[] = {1};
3411 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
3412 static int32_t param51_init[] = {1};
3413 model->setOperandValue(param51, param51_init, sizeof(int32_t) * 1);
3414 static int32_t param52_init[] = {2};
3415 model->setOperandValue(param52, param52_init, sizeof(int32_t) * 1);
3416 static int32_t param53_init[] = {2};
3417 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
3418 static int32_t param54_init[] = {0};
3419 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
3420 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param33, param34, param35, param36, param37, param38, param39}, {scoresOut, roiOut, classesOut, batchSplitOut});
3421 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param40, param41, param42, param43, param44, param45, layout}, {featureMap});
3422 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap, param46, param47, param48, param49, param50, param51, param52, param53, param54, layout}, {out});
3423 // Phase 3, inputs and outputs
3424 model->identifyInputsAndOutputs(
3425 {in},
3426 {scoresOut, classesOut, out});
3427 // Phase 4: set relaxed execution
3428 model->relaxComputationFloat32toFloat16(true);
3429 assert(model->isValid());
3430 }
3431
is_ignored_zero_sized_nhwc_relaxed(int i)3432 inline bool is_ignored_zero_sized_nhwc_relaxed(int i) {
3433 static std::set<int> ignore = {};
3434 return ignore.find(i) != ignore.end();
3435 }
3436
CreateModel_zero_sized_nhwc_quant8(Model * model)3437 void CreateModel_zero_sized_nhwc_quant8(Model *model) {
3438 OperandType type0(Type::BOOL, {});
3439 OperandType type10(Type::TENSOR_INT32, {0});
3440 OperandType type12(Type::TENSOR_INT32, {1});
3441 OperandType type13(Type::FLOAT32, {});
3442 OperandType type2(Type::INT32, {});
3443 OperandType type50(Type::TENSOR_QUANT8_ASYMM, {0, 2, 2, 1}, 0.1f, 128);
3444 OperandType type51(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 1}, 0.1f, 128);
3445 OperandType type52(Type::TENSOR_QUANT8_ASYMM, {0, 1, 1, 1}, 0.1f, 128);
3446 OperandType type53(Type::TENSOR_QUANT16_ASYMM, {1, 8}, 0.125f, 0);
3447 OperandType type54(Type::TENSOR_QUANT16_ASYMM, {0, 4}, 0.125f, 0);
3448 OperandType type55(Type::TENSOR_QUANT8_ASYMM, {1, 2}, 0.1f, 128);
3449 OperandType type56(Type::TENSOR_QUANT8_ASYMM, {0}, 0.1f, 128);
3450 // Phase 1, operands
3451 auto scores = model->addOperand(&type55);
3452 auto roi = model->addOperand(&type53);
3453 auto param33 = model->addOperand(&type12);
3454 auto param34 = model->addOperand(&type13);
3455 auto param35 = model->addOperand(&type2);
3456 auto param36 = model->addOperand(&type2);
3457 auto param37 = model->addOperand(&type13);
3458 auto param38 = model->addOperand(&type13);
3459 auto param39 = model->addOperand(&type13);
3460 auto scoresOut = model->addOperand(&type56);
3461 auto roiOut = model->addOperand(&type54);
3462 auto classesOut = model->addOperand(&type10);
3463 auto batchSplitOut = model->addOperand(&type10);
3464 auto in = model->addOperand(&type51);
3465 auto param40 = model->addOperand(&type2);
3466 auto param41 = model->addOperand(&type2);
3467 auto param42 = model->addOperand(&type13);
3468 auto param43 = model->addOperand(&type13);
3469 auto param44 = model->addOperand(&type2);
3470 auto param45 = model->addOperand(&type2);
3471 auto layout = model->addOperand(&type0);
3472 auto featureMap = model->addOperand(&type50);
3473 auto param46 = model->addOperand(&type2);
3474 auto param47 = model->addOperand(&type2);
3475 auto param48 = model->addOperand(&type2);
3476 auto param49 = model->addOperand(&type2);
3477 auto param50 = model->addOperand(&type2);
3478 auto param51 = model->addOperand(&type2);
3479 auto param52 = model->addOperand(&type2);
3480 auto param53 = model->addOperand(&type2);
3481 auto param54 = model->addOperand(&type2);
3482 auto out = model->addOperand(&type52);
3483 // Phase 2, operations
3484 static uint8_t scores_init[] = {137, 129};
3485 model->setOperandValue(scores, scores_init, sizeof(uint8_t) * 2);
3486 static uint16_t roi_init[] = {8, 8, 80, 80, 0, 0, 80, 80};
3487 model->setOperandValue(roi, roi_init, sizeof(uint16_t) * 8);
3488 static int32_t param33_init[] = {0};
3489 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
3490 static float param34_init[] = {0.3f};
3491 model->setOperandValue(param34, param34_init, sizeof(float) * 1);
3492 static int32_t param35_init[] = {-1};
3493 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
3494 static int32_t param36_init[] = {0};
3495 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
3496 static float param37_init[] = {0.4f};
3497 model->setOperandValue(param37, param37_init, sizeof(float) * 1);
3498 static float param38_init[] = {1.0f};
3499 model->setOperandValue(param38, param38_init, sizeof(float) * 1);
3500 static float param39_init[] = {0.3f};
3501 model->setOperandValue(param39, param39_init, sizeof(float) * 1);
3502 static int32_t param40_init[] = {2};
3503 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
3504 static int32_t param41_init[] = {2};
3505 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
3506 static float param42_init[] = {2.0f};
3507 model->setOperandValue(param42, param42_init, sizeof(float) * 1);
3508 static float param43_init[] = {2.0f};
3509 model->setOperandValue(param43, param43_init, sizeof(float) * 1);
3510 static int32_t param44_init[] = {4};
3511 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
3512 static int32_t param45_init[] = {4};
3513 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
3514 static bool8 layout_init[] = {false};
3515 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3516 static int32_t param46_init[] = {0};
3517 model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
3518 static int32_t param47_init[] = {0};
3519 model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
3520 static int32_t param48_init[] = {0};
3521 model->setOperandValue(param48, param48_init, sizeof(int32_t) * 1);
3522 static int32_t param49_init[] = {0};
3523 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
3524 static int32_t param50_init[] = {1};
3525 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
3526 static int32_t param51_init[] = {1};
3527 model->setOperandValue(param51, param51_init, sizeof(int32_t) * 1);
3528 static int32_t param52_init[] = {2};
3529 model->setOperandValue(param52, param52_init, sizeof(int32_t) * 1);
3530 static int32_t param53_init[] = {2};
3531 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
3532 static int32_t param54_init[] = {0};
3533 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
3534 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param33, param34, param35, param36, param37, param38, param39}, {scoresOut, roiOut, classesOut, batchSplitOut});
3535 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param40, param41, param42, param43, param44, param45, layout}, {featureMap});
3536 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap, param46, param47, param48, param49, param50, param51, param52, param53, param54, layout}, {out});
3537 // Phase 3, inputs and outputs
3538 model->identifyInputsAndOutputs(
3539 {in},
3540 {scoresOut, classesOut, out});
3541 assert(model->isValid());
3542 }
3543
is_ignored_zero_sized_nhwc_quant8(int i)3544 inline bool is_ignored_zero_sized_nhwc_quant8(int i) {
3545 static std::set<int> ignore = {};
3546 return ignore.find(i) != ignore.end();
3547 }
3548
CreateModel_zero_sized_nhwc_float16(Model * model)3549 void CreateModel_zero_sized_nhwc_float16(Model *model) {
3550 OperandType type0(Type::BOOL, {});
3551 OperandType type10(Type::TENSOR_INT32, {0});
3552 OperandType type12(Type::TENSOR_INT32, {1});
3553 OperandType type2(Type::INT32, {});
3554 OperandType type57(Type::TENSOR_FLOAT16, {0, 2, 2, 1});
3555 OperandType type58(Type::TENSOR_FLOAT16, {1, 1, 1, 1});
3556 OperandType type59(Type::TENSOR_FLOAT16, {0, 1, 1, 1});
3557 OperandType type60(Type::FLOAT16, {});
3558 OperandType type61(Type::TENSOR_FLOAT16, {1, 8});
3559 OperandType type62(Type::TENSOR_FLOAT16, {0, 4});
3560 OperandType type63(Type::TENSOR_FLOAT16, {1, 2});
3561 OperandType type64(Type::TENSOR_FLOAT16, {0});
3562 // Phase 1, operands
3563 auto scores = model->addOperand(&type63);
3564 auto roi = model->addOperand(&type61);
3565 auto param33 = model->addOperand(&type12);
3566 auto param34 = model->addOperand(&type60);
3567 auto param35 = model->addOperand(&type2);
3568 auto param36 = model->addOperand(&type2);
3569 auto param37 = model->addOperand(&type60);
3570 auto param38 = model->addOperand(&type60);
3571 auto param39 = model->addOperand(&type60);
3572 auto scoresOut = model->addOperand(&type64);
3573 auto roiOut = model->addOperand(&type62);
3574 auto classesOut = model->addOperand(&type10);
3575 auto batchSplitOut = model->addOperand(&type10);
3576 auto in = model->addOperand(&type58);
3577 auto param40 = model->addOperand(&type2);
3578 auto param41 = model->addOperand(&type2);
3579 auto param42 = model->addOperand(&type60);
3580 auto param43 = model->addOperand(&type60);
3581 auto param44 = model->addOperand(&type2);
3582 auto param45 = model->addOperand(&type2);
3583 auto layout = model->addOperand(&type0);
3584 auto featureMap = model->addOperand(&type57);
3585 auto param46 = model->addOperand(&type2);
3586 auto param47 = model->addOperand(&type2);
3587 auto param48 = model->addOperand(&type2);
3588 auto param49 = model->addOperand(&type2);
3589 auto param50 = model->addOperand(&type2);
3590 auto param51 = model->addOperand(&type2);
3591 auto param52 = model->addOperand(&type2);
3592 auto param53 = model->addOperand(&type2);
3593 auto param54 = model->addOperand(&type2);
3594 auto out = model->addOperand(&type59);
3595 // Phase 2, operations
3596 static _Float16 scores_init[] = {0.8999999761581421f, 0.10000000149011612f};
3597 model->setOperandValue(scores, scores_init, sizeof(_Float16) * 2);
3598 static _Float16 roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
3599 model->setOperandValue(roi, roi_init, sizeof(_Float16) * 8);
3600 static int32_t param33_init[] = {0};
3601 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
3602 static _Float16 param34_init[] = {0.30000001192092896f};
3603 model->setOperandValue(param34, param34_init, sizeof(_Float16) * 1);
3604 static int32_t param35_init[] = {-1};
3605 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
3606 static int32_t param36_init[] = {0};
3607 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
3608 static _Float16 param37_init[] = {0.4000000059604645f};
3609 model->setOperandValue(param37, param37_init, sizeof(_Float16) * 1);
3610 static _Float16 param38_init[] = {1.0f};
3611 model->setOperandValue(param38, param38_init, sizeof(_Float16) * 1);
3612 static _Float16 param39_init[] = {0.30000001192092896f};
3613 model->setOperandValue(param39, param39_init, sizeof(_Float16) * 1);
3614 static int32_t param40_init[] = {2};
3615 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
3616 static int32_t param41_init[] = {2};
3617 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
3618 static _Float16 param42_init[] = {2.0f};
3619 model->setOperandValue(param42, param42_init, sizeof(_Float16) * 1);
3620 static _Float16 param43_init[] = {2.0f};
3621 model->setOperandValue(param43, param43_init, sizeof(_Float16) * 1);
3622 static int32_t param44_init[] = {4};
3623 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
3624 static int32_t param45_init[] = {4};
3625 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
3626 static bool8 layout_init[] = {false};
3627 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3628 static int32_t param46_init[] = {0};
3629 model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
3630 static int32_t param47_init[] = {0};
3631 model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
3632 static int32_t param48_init[] = {0};
3633 model->setOperandValue(param48, param48_init, sizeof(int32_t) * 1);
3634 static int32_t param49_init[] = {0};
3635 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
3636 static int32_t param50_init[] = {1};
3637 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
3638 static int32_t param51_init[] = {1};
3639 model->setOperandValue(param51, param51_init, sizeof(int32_t) * 1);
3640 static int32_t param52_init[] = {2};
3641 model->setOperandValue(param52, param52_init, sizeof(int32_t) * 1);
3642 static int32_t param53_init[] = {2};
3643 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
3644 static int32_t param54_init[] = {0};
3645 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
3646 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param33, param34, param35, param36, param37, param38, param39}, {scoresOut, roiOut, classesOut, batchSplitOut});
3647 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param40, param41, param42, param43, param44, param45, layout}, {featureMap});
3648 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap, param46, param47, param48, param49, param50, param51, param52, param53, param54, layout}, {out});
3649 // Phase 3, inputs and outputs
3650 model->identifyInputsAndOutputs(
3651 {in},
3652 {scoresOut, classesOut, out});
3653 assert(model->isValid());
3654 }
3655
is_ignored_zero_sized_nhwc_float16(int i)3656 inline bool is_ignored_zero_sized_nhwc_float16(int i) {
3657 static std::set<int> ignore = {};
3658 return ignore.find(i) != ignore.end();
3659 }
3660
CreateModel_zero_sized_nchw(Model * model)3661 void CreateModel_zero_sized_nchw(Model *model) {
3662 OperandType type0(Type::BOOL, {});
3663 OperandType type10(Type::TENSOR_INT32, {0});
3664 OperandType type11(Type::TENSOR_FLOAT32, {0, 4});
3665 OperandType type12(Type::TENSOR_INT32, {1});
3666 OperandType type13(Type::FLOAT32, {});
3667 OperandType type14(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
3668 OperandType type16(Type::TENSOR_FLOAT32, {0, 1, 1, 1});
3669 OperandType type2(Type::INT32, {});
3670 OperandType type65(Type::TENSOR_FLOAT32, {0, 1, 2, 2});
3671 OperandType type7(Type::TENSOR_FLOAT32, {1, 2});
3672 OperandType type8(Type::TENSOR_FLOAT32, {1, 8});
3673 OperandType type9(Type::TENSOR_FLOAT32, {0});
3674 // Phase 1, operands
3675 auto scores = model->addOperand(&type7);
3676 auto roi = model->addOperand(&type8);
3677 auto param33 = model->addOperand(&type12);
3678 auto param34 = model->addOperand(&type13);
3679 auto param35 = model->addOperand(&type2);
3680 auto param36 = model->addOperand(&type2);
3681 auto param37 = model->addOperand(&type13);
3682 auto param38 = model->addOperand(&type13);
3683 auto param39 = model->addOperand(&type13);
3684 auto scoresOut = model->addOperand(&type9);
3685 auto roiOut = model->addOperand(&type11);
3686 auto classesOut = model->addOperand(&type10);
3687 auto batchSplitOut = model->addOperand(&type10);
3688 auto in = model->addOperand(&type14);
3689 auto param40 = model->addOperand(&type2);
3690 auto param41 = model->addOperand(&type2);
3691 auto param42 = model->addOperand(&type13);
3692 auto param43 = model->addOperand(&type13);
3693 auto param44 = model->addOperand(&type2);
3694 auto param45 = model->addOperand(&type2);
3695 auto layout = model->addOperand(&type0);
3696 auto featureMap = model->addOperand(&type65);
3697 auto param46 = model->addOperand(&type2);
3698 auto param47 = model->addOperand(&type2);
3699 auto param48 = model->addOperand(&type2);
3700 auto param49 = model->addOperand(&type2);
3701 auto param50 = model->addOperand(&type2);
3702 auto param51 = model->addOperand(&type2);
3703 auto param52 = model->addOperand(&type2);
3704 auto param53 = model->addOperand(&type2);
3705 auto param54 = model->addOperand(&type2);
3706 auto out = model->addOperand(&type16);
3707 // Phase 2, operations
3708 static float scores_init[] = {0.9f, 0.1f};
3709 model->setOperandValue(scores, scores_init, sizeof(float) * 2);
3710 static float roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
3711 model->setOperandValue(roi, roi_init, sizeof(float) * 8);
3712 static int32_t param33_init[] = {0};
3713 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
3714 static float param34_init[] = {0.3f};
3715 model->setOperandValue(param34, param34_init, sizeof(float) * 1);
3716 static int32_t param35_init[] = {-1};
3717 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
3718 static int32_t param36_init[] = {0};
3719 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
3720 static float param37_init[] = {0.4f};
3721 model->setOperandValue(param37, param37_init, sizeof(float) * 1);
3722 static float param38_init[] = {1.0f};
3723 model->setOperandValue(param38, param38_init, sizeof(float) * 1);
3724 static float param39_init[] = {0.3f};
3725 model->setOperandValue(param39, param39_init, sizeof(float) * 1);
3726 static int32_t param40_init[] = {2};
3727 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
3728 static int32_t param41_init[] = {2};
3729 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
3730 static float param42_init[] = {2.0f};
3731 model->setOperandValue(param42, param42_init, sizeof(float) * 1);
3732 static float param43_init[] = {2.0f};
3733 model->setOperandValue(param43, param43_init, sizeof(float) * 1);
3734 static int32_t param44_init[] = {4};
3735 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
3736 static int32_t param45_init[] = {4};
3737 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
3738 static bool8 layout_init[] = {true};
3739 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3740 static int32_t param46_init[] = {0};
3741 model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
3742 static int32_t param47_init[] = {0};
3743 model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
3744 static int32_t param48_init[] = {0};
3745 model->setOperandValue(param48, param48_init, sizeof(int32_t) * 1);
3746 static int32_t param49_init[] = {0};
3747 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
3748 static int32_t param50_init[] = {1};
3749 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
3750 static int32_t param51_init[] = {1};
3751 model->setOperandValue(param51, param51_init, sizeof(int32_t) * 1);
3752 static int32_t param52_init[] = {2};
3753 model->setOperandValue(param52, param52_init, sizeof(int32_t) * 1);
3754 static int32_t param53_init[] = {2};
3755 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
3756 static int32_t param54_init[] = {0};
3757 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
3758 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param33, param34, param35, param36, param37, param38, param39}, {scoresOut, roiOut, classesOut, batchSplitOut});
3759 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param40, param41, param42, param43, param44, param45, layout}, {featureMap});
3760 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap, param46, param47, param48, param49, param50, param51, param52, param53, param54, layout}, {out});
3761 // Phase 3, inputs and outputs
3762 model->identifyInputsAndOutputs(
3763 {in},
3764 {scoresOut, classesOut, out});
3765 assert(model->isValid());
3766 }
3767
is_ignored_zero_sized_nchw(int i)3768 inline bool is_ignored_zero_sized_nchw(int i) {
3769 static std::set<int> ignore = {};
3770 return ignore.find(i) != ignore.end();
3771 }
3772
CreateModel_zero_sized_nchw_relaxed(Model * model)3773 void CreateModel_zero_sized_nchw_relaxed(Model *model) {
3774 OperandType type0(Type::BOOL, {});
3775 OperandType type10(Type::TENSOR_INT32, {0});
3776 OperandType type11(Type::TENSOR_FLOAT32, {0, 4});
3777 OperandType type12(Type::TENSOR_INT32, {1});
3778 OperandType type13(Type::FLOAT32, {});
3779 OperandType type14(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
3780 OperandType type16(Type::TENSOR_FLOAT32, {0, 1, 1, 1});
3781 OperandType type2(Type::INT32, {});
3782 OperandType type65(Type::TENSOR_FLOAT32, {0, 1, 2, 2});
3783 OperandType type7(Type::TENSOR_FLOAT32, {1, 2});
3784 OperandType type8(Type::TENSOR_FLOAT32, {1, 8});
3785 OperandType type9(Type::TENSOR_FLOAT32, {0});
3786 // Phase 1, operands
3787 auto scores = model->addOperand(&type7);
3788 auto roi = model->addOperand(&type8);
3789 auto param33 = model->addOperand(&type12);
3790 auto param34 = model->addOperand(&type13);
3791 auto param35 = model->addOperand(&type2);
3792 auto param36 = model->addOperand(&type2);
3793 auto param37 = model->addOperand(&type13);
3794 auto param38 = model->addOperand(&type13);
3795 auto param39 = model->addOperand(&type13);
3796 auto scoresOut = model->addOperand(&type9);
3797 auto roiOut = model->addOperand(&type11);
3798 auto classesOut = model->addOperand(&type10);
3799 auto batchSplitOut = model->addOperand(&type10);
3800 auto in = model->addOperand(&type14);
3801 auto param40 = model->addOperand(&type2);
3802 auto param41 = model->addOperand(&type2);
3803 auto param42 = model->addOperand(&type13);
3804 auto param43 = model->addOperand(&type13);
3805 auto param44 = model->addOperand(&type2);
3806 auto param45 = model->addOperand(&type2);
3807 auto layout = model->addOperand(&type0);
3808 auto featureMap = model->addOperand(&type65);
3809 auto param46 = model->addOperand(&type2);
3810 auto param47 = model->addOperand(&type2);
3811 auto param48 = model->addOperand(&type2);
3812 auto param49 = model->addOperand(&type2);
3813 auto param50 = model->addOperand(&type2);
3814 auto param51 = model->addOperand(&type2);
3815 auto param52 = model->addOperand(&type2);
3816 auto param53 = model->addOperand(&type2);
3817 auto param54 = model->addOperand(&type2);
3818 auto out = model->addOperand(&type16);
3819 // Phase 2, operations
3820 static float scores_init[] = {0.9f, 0.1f};
3821 model->setOperandValue(scores, scores_init, sizeof(float) * 2);
3822 static float roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
3823 model->setOperandValue(roi, roi_init, sizeof(float) * 8);
3824 static int32_t param33_init[] = {0};
3825 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
3826 static float param34_init[] = {0.3f};
3827 model->setOperandValue(param34, param34_init, sizeof(float) * 1);
3828 static int32_t param35_init[] = {-1};
3829 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
3830 static int32_t param36_init[] = {0};
3831 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
3832 static float param37_init[] = {0.4f};
3833 model->setOperandValue(param37, param37_init, sizeof(float) * 1);
3834 static float param38_init[] = {1.0f};
3835 model->setOperandValue(param38, param38_init, sizeof(float) * 1);
3836 static float param39_init[] = {0.3f};
3837 model->setOperandValue(param39, param39_init, sizeof(float) * 1);
3838 static int32_t param40_init[] = {2};
3839 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
3840 static int32_t param41_init[] = {2};
3841 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
3842 static float param42_init[] = {2.0f};
3843 model->setOperandValue(param42, param42_init, sizeof(float) * 1);
3844 static float param43_init[] = {2.0f};
3845 model->setOperandValue(param43, param43_init, sizeof(float) * 1);
3846 static int32_t param44_init[] = {4};
3847 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
3848 static int32_t param45_init[] = {4};
3849 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
3850 static bool8 layout_init[] = {true};
3851 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3852 static int32_t param46_init[] = {0};
3853 model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
3854 static int32_t param47_init[] = {0};
3855 model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
3856 static int32_t param48_init[] = {0};
3857 model->setOperandValue(param48, param48_init, sizeof(int32_t) * 1);
3858 static int32_t param49_init[] = {0};
3859 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
3860 static int32_t param50_init[] = {1};
3861 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
3862 static int32_t param51_init[] = {1};
3863 model->setOperandValue(param51, param51_init, sizeof(int32_t) * 1);
3864 static int32_t param52_init[] = {2};
3865 model->setOperandValue(param52, param52_init, sizeof(int32_t) * 1);
3866 static int32_t param53_init[] = {2};
3867 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
3868 static int32_t param54_init[] = {0};
3869 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
3870 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param33, param34, param35, param36, param37, param38, param39}, {scoresOut, roiOut, classesOut, batchSplitOut});
3871 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param40, param41, param42, param43, param44, param45, layout}, {featureMap});
3872 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap, param46, param47, param48, param49, param50, param51, param52, param53, param54, layout}, {out});
3873 // Phase 3, inputs and outputs
3874 model->identifyInputsAndOutputs(
3875 {in},
3876 {scoresOut, classesOut, out});
3877 // Phase 4: set relaxed execution
3878 model->relaxComputationFloat32toFloat16(true);
3879 assert(model->isValid());
3880 }
3881
is_ignored_zero_sized_nchw_relaxed(int i)3882 inline bool is_ignored_zero_sized_nchw_relaxed(int i) {
3883 static std::set<int> ignore = {};
3884 return ignore.find(i) != ignore.end();
3885 }
3886
CreateModel_zero_sized_nchw_quant8(Model * model)3887 void CreateModel_zero_sized_nchw_quant8(Model *model) {
3888 OperandType type0(Type::BOOL, {});
3889 OperandType type10(Type::TENSOR_INT32, {0});
3890 OperandType type12(Type::TENSOR_INT32, {1});
3891 OperandType type13(Type::FLOAT32, {});
3892 OperandType type2(Type::INT32, {});
3893 OperandType type51(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 1}, 0.1f, 128);
3894 OperandType type52(Type::TENSOR_QUANT8_ASYMM, {0, 1, 1, 1}, 0.1f, 128);
3895 OperandType type53(Type::TENSOR_QUANT16_ASYMM, {1, 8}, 0.125f, 0);
3896 OperandType type54(Type::TENSOR_QUANT16_ASYMM, {0, 4}, 0.125f, 0);
3897 OperandType type55(Type::TENSOR_QUANT8_ASYMM, {1, 2}, 0.1f, 128);
3898 OperandType type56(Type::TENSOR_QUANT8_ASYMM, {0}, 0.1f, 128);
3899 OperandType type66(Type::TENSOR_QUANT8_ASYMM, {0, 1, 2, 2}, 0.1f, 128);
3900 // Phase 1, operands
3901 auto scores = model->addOperand(&type55);
3902 auto roi = model->addOperand(&type53);
3903 auto param33 = model->addOperand(&type12);
3904 auto param34 = model->addOperand(&type13);
3905 auto param35 = model->addOperand(&type2);
3906 auto param36 = model->addOperand(&type2);
3907 auto param37 = model->addOperand(&type13);
3908 auto param38 = model->addOperand(&type13);
3909 auto param39 = model->addOperand(&type13);
3910 auto scoresOut = model->addOperand(&type56);
3911 auto roiOut = model->addOperand(&type54);
3912 auto classesOut = model->addOperand(&type10);
3913 auto batchSplitOut = model->addOperand(&type10);
3914 auto in = model->addOperand(&type51);
3915 auto param40 = model->addOperand(&type2);
3916 auto param41 = model->addOperand(&type2);
3917 auto param42 = model->addOperand(&type13);
3918 auto param43 = model->addOperand(&type13);
3919 auto param44 = model->addOperand(&type2);
3920 auto param45 = model->addOperand(&type2);
3921 auto layout = model->addOperand(&type0);
3922 auto featureMap = model->addOperand(&type66);
3923 auto param46 = model->addOperand(&type2);
3924 auto param47 = model->addOperand(&type2);
3925 auto param48 = model->addOperand(&type2);
3926 auto param49 = model->addOperand(&type2);
3927 auto param50 = model->addOperand(&type2);
3928 auto param51 = model->addOperand(&type2);
3929 auto param52 = model->addOperand(&type2);
3930 auto param53 = model->addOperand(&type2);
3931 auto param54 = model->addOperand(&type2);
3932 auto out = model->addOperand(&type52);
3933 // Phase 2, operations
3934 static uint8_t scores_init[] = {137, 129};
3935 model->setOperandValue(scores, scores_init, sizeof(uint8_t) * 2);
3936 static uint16_t roi_init[] = {8, 8, 80, 80, 0, 0, 80, 80};
3937 model->setOperandValue(roi, roi_init, sizeof(uint16_t) * 8);
3938 static int32_t param33_init[] = {0};
3939 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
3940 static float param34_init[] = {0.3f};
3941 model->setOperandValue(param34, param34_init, sizeof(float) * 1);
3942 static int32_t param35_init[] = {-1};
3943 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
3944 static int32_t param36_init[] = {0};
3945 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
3946 static float param37_init[] = {0.4f};
3947 model->setOperandValue(param37, param37_init, sizeof(float) * 1);
3948 static float param38_init[] = {1.0f};
3949 model->setOperandValue(param38, param38_init, sizeof(float) * 1);
3950 static float param39_init[] = {0.3f};
3951 model->setOperandValue(param39, param39_init, sizeof(float) * 1);
3952 static int32_t param40_init[] = {2};
3953 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
3954 static int32_t param41_init[] = {2};
3955 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
3956 static float param42_init[] = {2.0f};
3957 model->setOperandValue(param42, param42_init, sizeof(float) * 1);
3958 static float param43_init[] = {2.0f};
3959 model->setOperandValue(param43, param43_init, sizeof(float) * 1);
3960 static int32_t param44_init[] = {4};
3961 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
3962 static int32_t param45_init[] = {4};
3963 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
3964 static bool8 layout_init[] = {true};
3965 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3966 static int32_t param46_init[] = {0};
3967 model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
3968 static int32_t param47_init[] = {0};
3969 model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
3970 static int32_t param48_init[] = {0};
3971 model->setOperandValue(param48, param48_init, sizeof(int32_t) * 1);
3972 static int32_t param49_init[] = {0};
3973 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
3974 static int32_t param50_init[] = {1};
3975 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
3976 static int32_t param51_init[] = {1};
3977 model->setOperandValue(param51, param51_init, sizeof(int32_t) * 1);
3978 static int32_t param52_init[] = {2};
3979 model->setOperandValue(param52, param52_init, sizeof(int32_t) * 1);
3980 static int32_t param53_init[] = {2};
3981 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
3982 static int32_t param54_init[] = {0};
3983 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
3984 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param33, param34, param35, param36, param37, param38, param39}, {scoresOut, roiOut, classesOut, batchSplitOut});
3985 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param40, param41, param42, param43, param44, param45, layout}, {featureMap});
3986 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap, param46, param47, param48, param49, param50, param51, param52, param53, param54, layout}, {out});
3987 // Phase 3, inputs and outputs
3988 model->identifyInputsAndOutputs(
3989 {in},
3990 {scoresOut, classesOut, out});
3991 assert(model->isValid());
3992 }
3993
is_ignored_zero_sized_nchw_quant8(int i)3994 inline bool is_ignored_zero_sized_nchw_quant8(int i) {
3995 static std::set<int> ignore = {};
3996 return ignore.find(i) != ignore.end();
3997 }
3998
CreateModel_zero_sized_nchw_float16(Model * model)3999 void CreateModel_zero_sized_nchw_float16(Model *model) {
4000 OperandType type0(Type::BOOL, {});
4001 OperandType type10(Type::TENSOR_INT32, {0});
4002 OperandType type12(Type::TENSOR_INT32, {1});
4003 OperandType type2(Type::INT32, {});
4004 OperandType type58(Type::TENSOR_FLOAT16, {1, 1, 1, 1});
4005 OperandType type59(Type::TENSOR_FLOAT16, {0, 1, 1, 1});
4006 OperandType type60(Type::FLOAT16, {});
4007 OperandType type61(Type::TENSOR_FLOAT16, {1, 8});
4008 OperandType type62(Type::TENSOR_FLOAT16, {0, 4});
4009 OperandType type63(Type::TENSOR_FLOAT16, {1, 2});
4010 OperandType type64(Type::TENSOR_FLOAT16, {0});
4011 OperandType type67(Type::TENSOR_FLOAT16, {0, 1, 2, 2});
4012 // Phase 1, operands
4013 auto scores = model->addOperand(&type63);
4014 auto roi = model->addOperand(&type61);
4015 auto param33 = model->addOperand(&type12);
4016 auto param34 = model->addOperand(&type60);
4017 auto param35 = model->addOperand(&type2);
4018 auto param36 = model->addOperand(&type2);
4019 auto param37 = model->addOperand(&type60);
4020 auto param38 = model->addOperand(&type60);
4021 auto param39 = model->addOperand(&type60);
4022 auto scoresOut = model->addOperand(&type64);
4023 auto roiOut = model->addOperand(&type62);
4024 auto classesOut = model->addOperand(&type10);
4025 auto batchSplitOut = model->addOperand(&type10);
4026 auto in = model->addOperand(&type58);
4027 auto param40 = model->addOperand(&type2);
4028 auto param41 = model->addOperand(&type2);
4029 auto param42 = model->addOperand(&type60);
4030 auto param43 = model->addOperand(&type60);
4031 auto param44 = model->addOperand(&type2);
4032 auto param45 = model->addOperand(&type2);
4033 auto layout = model->addOperand(&type0);
4034 auto featureMap = model->addOperand(&type67);
4035 auto param46 = model->addOperand(&type2);
4036 auto param47 = model->addOperand(&type2);
4037 auto param48 = model->addOperand(&type2);
4038 auto param49 = model->addOperand(&type2);
4039 auto param50 = model->addOperand(&type2);
4040 auto param51 = model->addOperand(&type2);
4041 auto param52 = model->addOperand(&type2);
4042 auto param53 = model->addOperand(&type2);
4043 auto param54 = model->addOperand(&type2);
4044 auto out = model->addOperand(&type59);
4045 // Phase 2, operations
4046 static _Float16 scores_init[] = {0.8999999761581421f, 0.10000000149011612f};
4047 model->setOperandValue(scores, scores_init, sizeof(_Float16) * 2);
4048 static _Float16 roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
4049 model->setOperandValue(roi, roi_init, sizeof(_Float16) * 8);
4050 static int32_t param33_init[] = {0};
4051 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
4052 static _Float16 param34_init[] = {0.30000001192092896f};
4053 model->setOperandValue(param34, param34_init, sizeof(_Float16) * 1);
4054 static int32_t param35_init[] = {-1};
4055 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
4056 static int32_t param36_init[] = {0};
4057 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
4058 static _Float16 param37_init[] = {0.4000000059604645f};
4059 model->setOperandValue(param37, param37_init, sizeof(_Float16) * 1);
4060 static _Float16 param38_init[] = {1.0f};
4061 model->setOperandValue(param38, param38_init, sizeof(_Float16) * 1);
4062 static _Float16 param39_init[] = {0.30000001192092896f};
4063 model->setOperandValue(param39, param39_init, sizeof(_Float16) * 1);
4064 static int32_t param40_init[] = {2};
4065 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
4066 static int32_t param41_init[] = {2};
4067 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
4068 static _Float16 param42_init[] = {2.0f};
4069 model->setOperandValue(param42, param42_init, sizeof(_Float16) * 1);
4070 static _Float16 param43_init[] = {2.0f};
4071 model->setOperandValue(param43, param43_init, sizeof(_Float16) * 1);
4072 static int32_t param44_init[] = {4};
4073 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
4074 static int32_t param45_init[] = {4};
4075 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
4076 static bool8 layout_init[] = {true};
4077 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4078 static int32_t param46_init[] = {0};
4079 model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
4080 static int32_t param47_init[] = {0};
4081 model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
4082 static int32_t param48_init[] = {0};
4083 model->setOperandValue(param48, param48_init, sizeof(int32_t) * 1);
4084 static int32_t param49_init[] = {0};
4085 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
4086 static int32_t param50_init[] = {1};
4087 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
4088 static int32_t param51_init[] = {1};
4089 model->setOperandValue(param51, param51_init, sizeof(int32_t) * 1);
4090 static int32_t param52_init[] = {2};
4091 model->setOperandValue(param52, param52_init, sizeof(int32_t) * 1);
4092 static int32_t param53_init[] = {2};
4093 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
4094 static int32_t param54_init[] = {0};
4095 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
4096 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param33, param34, param35, param36, param37, param38, param39}, {scoresOut, roiOut, classesOut, batchSplitOut});
4097 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param40, param41, param42, param43, param44, param45, layout}, {featureMap});
4098 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap, param46, param47, param48, param49, param50, param51, param52, param53, param54, layout}, {out});
4099 // Phase 3, inputs and outputs
4100 model->identifyInputsAndOutputs(
4101 {in},
4102 {scoresOut, classesOut, out});
4103 assert(model->isValid());
4104 }
4105
is_ignored_zero_sized_nchw_float16(int i)4106 inline bool is_ignored_zero_sized_nchw_float16(int i) {
4107 static std::set<int> ignore = {};
4108 return ignore.find(i) != ignore.end();
4109 }
4110
CreateModel_zero_sized_dynamic_output_shape_nhwc(Model * model)4111 void CreateModel_zero_sized_dynamic_output_shape_nhwc(Model *model) {
4112 OperandType type0(Type::BOOL, {});
4113 OperandType type10(Type::TENSOR_INT32, {0});
4114 OperandType type11(Type::TENSOR_FLOAT32, {0, 4});
4115 OperandType type12(Type::TENSOR_INT32, {1});
4116 OperandType type13(Type::FLOAT32, {});
4117 OperandType type14(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
4118 OperandType type15(Type::TENSOR_FLOAT32, {0, 2, 2, 1});
4119 OperandType type2(Type::INT32, {});
4120 OperandType type22(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
4121 OperandType type7(Type::TENSOR_FLOAT32, {1, 2});
4122 OperandType type8(Type::TENSOR_FLOAT32, {1, 8});
4123 OperandType type9(Type::TENSOR_FLOAT32, {0});
4124 // Phase 1, operands
4125 auto scores = model->addOperand(&type7);
4126 auto roi = model->addOperand(&type8);
4127 auto param33 = model->addOperand(&type12);
4128 auto param34 = model->addOperand(&type13);
4129 auto param35 = model->addOperand(&type2);
4130 auto param36 = model->addOperand(&type2);
4131 auto param37 = model->addOperand(&type13);
4132 auto param38 = model->addOperand(&type13);
4133 auto param39 = model->addOperand(&type13);
4134 auto scoresOut = model->addOperand(&type9);
4135 auto roiOut = model->addOperand(&type11);
4136 auto classesOut = model->addOperand(&type10);
4137 auto batchSplitOut = model->addOperand(&type10);
4138 auto in = model->addOperand(&type14);
4139 auto param40 = model->addOperand(&type2);
4140 auto param41 = model->addOperand(&type2);
4141 auto param42 = model->addOperand(&type13);
4142 auto param43 = model->addOperand(&type13);
4143 auto param44 = model->addOperand(&type2);
4144 auto param45 = model->addOperand(&type2);
4145 auto layout = model->addOperand(&type0);
4146 auto featureMap = model->addOperand(&type15);
4147 auto param46 = model->addOperand(&type2);
4148 auto param47 = model->addOperand(&type2);
4149 auto param48 = model->addOperand(&type2);
4150 auto param49 = model->addOperand(&type2);
4151 auto param50 = model->addOperand(&type2);
4152 auto param51 = model->addOperand(&type2);
4153 auto param52 = model->addOperand(&type2);
4154 auto param53 = model->addOperand(&type2);
4155 auto param54 = model->addOperand(&type2);
4156 auto out = model->addOperand(&type22);
4157 // Phase 2, operations
4158 static float scores_init[] = {0.9f, 0.1f};
4159 model->setOperandValue(scores, scores_init, sizeof(float) * 2);
4160 static float roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
4161 model->setOperandValue(roi, roi_init, sizeof(float) * 8);
4162 static int32_t param33_init[] = {0};
4163 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
4164 static float param34_init[] = {0.3f};
4165 model->setOperandValue(param34, param34_init, sizeof(float) * 1);
4166 static int32_t param35_init[] = {-1};
4167 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
4168 static int32_t param36_init[] = {0};
4169 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
4170 static float param37_init[] = {0.4f};
4171 model->setOperandValue(param37, param37_init, sizeof(float) * 1);
4172 static float param38_init[] = {1.0f};
4173 model->setOperandValue(param38, param38_init, sizeof(float) * 1);
4174 static float param39_init[] = {0.3f};
4175 model->setOperandValue(param39, param39_init, sizeof(float) * 1);
4176 static int32_t param40_init[] = {2};
4177 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
4178 static int32_t param41_init[] = {2};
4179 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
4180 static float param42_init[] = {2.0f};
4181 model->setOperandValue(param42, param42_init, sizeof(float) * 1);
4182 static float param43_init[] = {2.0f};
4183 model->setOperandValue(param43, param43_init, sizeof(float) * 1);
4184 static int32_t param44_init[] = {4};
4185 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
4186 static int32_t param45_init[] = {4};
4187 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
4188 static bool8 layout_init[] = {false};
4189 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4190 static int32_t param46_init[] = {0};
4191 model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
4192 static int32_t param47_init[] = {0};
4193 model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
4194 static int32_t param48_init[] = {0};
4195 model->setOperandValue(param48, param48_init, sizeof(int32_t) * 1);
4196 static int32_t param49_init[] = {0};
4197 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
4198 static int32_t param50_init[] = {1};
4199 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
4200 static int32_t param51_init[] = {1};
4201 model->setOperandValue(param51, param51_init, sizeof(int32_t) * 1);
4202 static int32_t param52_init[] = {2};
4203 model->setOperandValue(param52, param52_init, sizeof(int32_t) * 1);
4204 static int32_t param53_init[] = {2};
4205 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
4206 static int32_t param54_init[] = {0};
4207 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
4208 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param33, param34, param35, param36, param37, param38, param39}, {scoresOut, roiOut, classesOut, batchSplitOut});
4209 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param40, param41, param42, param43, param44, param45, layout}, {featureMap});
4210 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap, param46, param47, param48, param49, param50, param51, param52, param53, param54, layout}, {out});
4211 // Phase 3, inputs and outputs
4212 model->identifyInputsAndOutputs(
4213 {in},
4214 {scoresOut, classesOut, out});
4215 assert(model->isValid());
4216 }
4217
is_ignored_zero_sized_dynamic_output_shape_nhwc(int i)4218 inline bool is_ignored_zero_sized_dynamic_output_shape_nhwc(int i) {
4219 static std::set<int> ignore = {};
4220 return ignore.find(i) != ignore.end();
4221 }
4222
CreateModel_zero_sized_dynamic_output_shape_nhwc_relaxed(Model * model)4223 void CreateModel_zero_sized_dynamic_output_shape_nhwc_relaxed(Model *model) {
4224 OperandType type0(Type::BOOL, {});
4225 OperandType type10(Type::TENSOR_INT32, {0});
4226 OperandType type11(Type::TENSOR_FLOAT32, {0, 4});
4227 OperandType type12(Type::TENSOR_INT32, {1});
4228 OperandType type13(Type::FLOAT32, {});
4229 OperandType type14(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
4230 OperandType type15(Type::TENSOR_FLOAT32, {0, 2, 2, 1});
4231 OperandType type2(Type::INT32, {});
4232 OperandType type22(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
4233 OperandType type7(Type::TENSOR_FLOAT32, {1, 2});
4234 OperandType type8(Type::TENSOR_FLOAT32, {1, 8});
4235 OperandType type9(Type::TENSOR_FLOAT32, {0});
4236 // Phase 1, operands
4237 auto scores = model->addOperand(&type7);
4238 auto roi = model->addOperand(&type8);
4239 auto param33 = model->addOperand(&type12);
4240 auto param34 = model->addOperand(&type13);
4241 auto param35 = model->addOperand(&type2);
4242 auto param36 = model->addOperand(&type2);
4243 auto param37 = model->addOperand(&type13);
4244 auto param38 = model->addOperand(&type13);
4245 auto param39 = model->addOperand(&type13);
4246 auto scoresOut = model->addOperand(&type9);
4247 auto roiOut = model->addOperand(&type11);
4248 auto classesOut = model->addOperand(&type10);
4249 auto batchSplitOut = model->addOperand(&type10);
4250 auto in = model->addOperand(&type14);
4251 auto param40 = model->addOperand(&type2);
4252 auto param41 = model->addOperand(&type2);
4253 auto param42 = model->addOperand(&type13);
4254 auto param43 = model->addOperand(&type13);
4255 auto param44 = model->addOperand(&type2);
4256 auto param45 = model->addOperand(&type2);
4257 auto layout = model->addOperand(&type0);
4258 auto featureMap = model->addOperand(&type15);
4259 auto param46 = model->addOperand(&type2);
4260 auto param47 = model->addOperand(&type2);
4261 auto param48 = model->addOperand(&type2);
4262 auto param49 = model->addOperand(&type2);
4263 auto param50 = model->addOperand(&type2);
4264 auto param51 = model->addOperand(&type2);
4265 auto param52 = model->addOperand(&type2);
4266 auto param53 = model->addOperand(&type2);
4267 auto param54 = model->addOperand(&type2);
4268 auto out = model->addOperand(&type22);
4269 // Phase 2, operations
4270 static float scores_init[] = {0.9f, 0.1f};
4271 model->setOperandValue(scores, scores_init, sizeof(float) * 2);
4272 static float roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
4273 model->setOperandValue(roi, roi_init, sizeof(float) * 8);
4274 static int32_t param33_init[] = {0};
4275 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
4276 static float param34_init[] = {0.3f};
4277 model->setOperandValue(param34, param34_init, sizeof(float) * 1);
4278 static int32_t param35_init[] = {-1};
4279 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
4280 static int32_t param36_init[] = {0};
4281 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
4282 static float param37_init[] = {0.4f};
4283 model->setOperandValue(param37, param37_init, sizeof(float) * 1);
4284 static float param38_init[] = {1.0f};
4285 model->setOperandValue(param38, param38_init, sizeof(float) * 1);
4286 static float param39_init[] = {0.3f};
4287 model->setOperandValue(param39, param39_init, sizeof(float) * 1);
4288 static int32_t param40_init[] = {2};
4289 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
4290 static int32_t param41_init[] = {2};
4291 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
4292 static float param42_init[] = {2.0f};
4293 model->setOperandValue(param42, param42_init, sizeof(float) * 1);
4294 static float param43_init[] = {2.0f};
4295 model->setOperandValue(param43, param43_init, sizeof(float) * 1);
4296 static int32_t param44_init[] = {4};
4297 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
4298 static int32_t param45_init[] = {4};
4299 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
4300 static bool8 layout_init[] = {false};
4301 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4302 static int32_t param46_init[] = {0};
4303 model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
4304 static int32_t param47_init[] = {0};
4305 model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
4306 static int32_t param48_init[] = {0};
4307 model->setOperandValue(param48, param48_init, sizeof(int32_t) * 1);
4308 static int32_t param49_init[] = {0};
4309 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
4310 static int32_t param50_init[] = {1};
4311 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
4312 static int32_t param51_init[] = {1};
4313 model->setOperandValue(param51, param51_init, sizeof(int32_t) * 1);
4314 static int32_t param52_init[] = {2};
4315 model->setOperandValue(param52, param52_init, sizeof(int32_t) * 1);
4316 static int32_t param53_init[] = {2};
4317 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
4318 static int32_t param54_init[] = {0};
4319 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
4320 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param33, param34, param35, param36, param37, param38, param39}, {scoresOut, roiOut, classesOut, batchSplitOut});
4321 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param40, param41, param42, param43, param44, param45, layout}, {featureMap});
4322 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap, param46, param47, param48, param49, param50, param51, param52, param53, param54, layout}, {out});
4323 // Phase 3, inputs and outputs
4324 model->identifyInputsAndOutputs(
4325 {in},
4326 {scoresOut, classesOut, out});
4327 // Phase 4: set relaxed execution
4328 model->relaxComputationFloat32toFloat16(true);
4329 assert(model->isValid());
4330 }
4331
is_ignored_zero_sized_dynamic_output_shape_nhwc_relaxed(int i)4332 inline bool is_ignored_zero_sized_dynamic_output_shape_nhwc_relaxed(int i) {
4333 static std::set<int> ignore = {};
4334 return ignore.find(i) != ignore.end();
4335 }
4336
CreateModel_zero_sized_dynamic_output_shape_nhwc_quant8(Model * model)4337 void CreateModel_zero_sized_dynamic_output_shape_nhwc_quant8(Model *model) {
4338 OperandType type0(Type::BOOL, {});
4339 OperandType type10(Type::TENSOR_INT32, {0});
4340 OperandType type12(Type::TENSOR_INT32, {1});
4341 OperandType type13(Type::FLOAT32, {});
4342 OperandType type2(Type::INT32, {});
4343 OperandType type50(Type::TENSOR_QUANT8_ASYMM, {0, 2, 2, 1}, 0.1f, 128);
4344 OperandType type51(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 1}, 0.1f, 128);
4345 OperandType type53(Type::TENSOR_QUANT16_ASYMM, {1, 8}, 0.125f, 0);
4346 OperandType type54(Type::TENSOR_QUANT16_ASYMM, {0, 4}, 0.125f, 0);
4347 OperandType type55(Type::TENSOR_QUANT8_ASYMM, {1, 2}, 0.1f, 128);
4348 OperandType type56(Type::TENSOR_QUANT8_ASYMM, {0}, 0.1f, 128);
4349 OperandType type68(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.1f, 128);
4350 // Phase 1, operands
4351 auto scores = model->addOperand(&type55);
4352 auto roi = model->addOperand(&type53);
4353 auto param33 = model->addOperand(&type12);
4354 auto param34 = model->addOperand(&type13);
4355 auto param35 = model->addOperand(&type2);
4356 auto param36 = model->addOperand(&type2);
4357 auto param37 = model->addOperand(&type13);
4358 auto param38 = model->addOperand(&type13);
4359 auto param39 = model->addOperand(&type13);
4360 auto scoresOut = model->addOperand(&type56);
4361 auto roiOut = model->addOperand(&type54);
4362 auto classesOut = model->addOperand(&type10);
4363 auto batchSplitOut = model->addOperand(&type10);
4364 auto in = model->addOperand(&type51);
4365 auto param40 = model->addOperand(&type2);
4366 auto param41 = model->addOperand(&type2);
4367 auto param42 = model->addOperand(&type13);
4368 auto param43 = model->addOperand(&type13);
4369 auto param44 = model->addOperand(&type2);
4370 auto param45 = model->addOperand(&type2);
4371 auto layout = model->addOperand(&type0);
4372 auto featureMap = model->addOperand(&type50);
4373 auto param46 = model->addOperand(&type2);
4374 auto param47 = model->addOperand(&type2);
4375 auto param48 = model->addOperand(&type2);
4376 auto param49 = model->addOperand(&type2);
4377 auto param50 = model->addOperand(&type2);
4378 auto param51 = model->addOperand(&type2);
4379 auto param52 = model->addOperand(&type2);
4380 auto param53 = model->addOperand(&type2);
4381 auto param54 = model->addOperand(&type2);
4382 auto out = model->addOperand(&type68);
4383 // Phase 2, operations
4384 static uint8_t scores_init[] = {137, 129};
4385 model->setOperandValue(scores, scores_init, sizeof(uint8_t) * 2);
4386 static uint16_t roi_init[] = {8, 8, 80, 80, 0, 0, 80, 80};
4387 model->setOperandValue(roi, roi_init, sizeof(uint16_t) * 8);
4388 static int32_t param33_init[] = {0};
4389 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
4390 static float param34_init[] = {0.3f};
4391 model->setOperandValue(param34, param34_init, sizeof(float) * 1);
4392 static int32_t param35_init[] = {-1};
4393 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
4394 static int32_t param36_init[] = {0};
4395 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
4396 static float param37_init[] = {0.4f};
4397 model->setOperandValue(param37, param37_init, sizeof(float) * 1);
4398 static float param38_init[] = {1.0f};
4399 model->setOperandValue(param38, param38_init, sizeof(float) * 1);
4400 static float param39_init[] = {0.3f};
4401 model->setOperandValue(param39, param39_init, sizeof(float) * 1);
4402 static int32_t param40_init[] = {2};
4403 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
4404 static int32_t param41_init[] = {2};
4405 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
4406 static float param42_init[] = {2.0f};
4407 model->setOperandValue(param42, param42_init, sizeof(float) * 1);
4408 static float param43_init[] = {2.0f};
4409 model->setOperandValue(param43, param43_init, sizeof(float) * 1);
4410 static int32_t param44_init[] = {4};
4411 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
4412 static int32_t param45_init[] = {4};
4413 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
4414 static bool8 layout_init[] = {false};
4415 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4416 static int32_t param46_init[] = {0};
4417 model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
4418 static int32_t param47_init[] = {0};
4419 model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
4420 static int32_t param48_init[] = {0};
4421 model->setOperandValue(param48, param48_init, sizeof(int32_t) * 1);
4422 static int32_t param49_init[] = {0};
4423 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
4424 static int32_t param50_init[] = {1};
4425 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
4426 static int32_t param51_init[] = {1};
4427 model->setOperandValue(param51, param51_init, sizeof(int32_t) * 1);
4428 static int32_t param52_init[] = {2};
4429 model->setOperandValue(param52, param52_init, sizeof(int32_t) * 1);
4430 static int32_t param53_init[] = {2};
4431 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
4432 static int32_t param54_init[] = {0};
4433 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
4434 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param33, param34, param35, param36, param37, param38, param39}, {scoresOut, roiOut, classesOut, batchSplitOut});
4435 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param40, param41, param42, param43, param44, param45, layout}, {featureMap});
4436 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap, param46, param47, param48, param49, param50, param51, param52, param53, param54, layout}, {out});
4437 // Phase 3, inputs and outputs
4438 model->identifyInputsAndOutputs(
4439 {in},
4440 {scoresOut, classesOut, out});
4441 assert(model->isValid());
4442 }
4443
is_ignored_zero_sized_dynamic_output_shape_nhwc_quant8(int i)4444 inline bool is_ignored_zero_sized_dynamic_output_shape_nhwc_quant8(int i) {
4445 static std::set<int> ignore = {};
4446 return ignore.find(i) != ignore.end();
4447 }
4448
CreateModel_zero_sized_dynamic_output_shape_nhwc_float16(Model * model)4449 void CreateModel_zero_sized_dynamic_output_shape_nhwc_float16(Model *model) {
4450 OperandType type0(Type::BOOL, {});
4451 OperandType type10(Type::TENSOR_INT32, {0});
4452 OperandType type12(Type::TENSOR_INT32, {1});
4453 OperandType type2(Type::INT32, {});
4454 OperandType type24(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
4455 OperandType type57(Type::TENSOR_FLOAT16, {0, 2, 2, 1});
4456 OperandType type58(Type::TENSOR_FLOAT16, {1, 1, 1, 1});
4457 OperandType type60(Type::FLOAT16, {});
4458 OperandType type61(Type::TENSOR_FLOAT16, {1, 8});
4459 OperandType type62(Type::TENSOR_FLOAT16, {0, 4});
4460 OperandType type63(Type::TENSOR_FLOAT16, {1, 2});
4461 OperandType type69(Type::TENSOR_FLOAT16, {0});
4462 // Phase 1, operands
4463 auto scores = model->addOperand(&type63);
4464 auto roi = model->addOperand(&type61);
4465 auto param33 = model->addOperand(&type12);
4466 auto param34 = model->addOperand(&type60);
4467 auto param35 = model->addOperand(&type2);
4468 auto param36 = model->addOperand(&type2);
4469 auto param37 = model->addOperand(&type60);
4470 auto param38 = model->addOperand(&type60);
4471 auto param39 = model->addOperand(&type60);
4472 auto scoresOut = model->addOperand(&type69);
4473 auto roiOut = model->addOperand(&type62);
4474 auto classesOut = model->addOperand(&type10);
4475 auto batchSplitOut = model->addOperand(&type10);
4476 auto in = model->addOperand(&type58);
4477 auto param40 = model->addOperand(&type2);
4478 auto param41 = model->addOperand(&type2);
4479 auto param42 = model->addOperand(&type60);
4480 auto param43 = model->addOperand(&type60);
4481 auto param44 = model->addOperand(&type2);
4482 auto param45 = model->addOperand(&type2);
4483 auto layout = model->addOperand(&type0);
4484 auto featureMap = model->addOperand(&type57);
4485 auto param46 = model->addOperand(&type2);
4486 auto param47 = model->addOperand(&type2);
4487 auto param48 = model->addOperand(&type2);
4488 auto param49 = model->addOperand(&type2);
4489 auto param50 = model->addOperand(&type2);
4490 auto param51 = model->addOperand(&type2);
4491 auto param52 = model->addOperand(&type2);
4492 auto param53 = model->addOperand(&type2);
4493 auto param54 = model->addOperand(&type2);
4494 auto out = model->addOperand(&type24);
4495 // Phase 2, operations
4496 static _Float16 scores_init[] = {0.8999999761581421f, 0.10000000149011612f};
4497 model->setOperandValue(scores, scores_init, sizeof(_Float16) * 2);
4498 static _Float16 roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
4499 model->setOperandValue(roi, roi_init, sizeof(_Float16) * 8);
4500 static int32_t param33_init[] = {0};
4501 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
4502 static _Float16 param34_init[] = {0.30000001192092896f};
4503 model->setOperandValue(param34, param34_init, sizeof(_Float16) * 1);
4504 static int32_t param35_init[] = {-1};
4505 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
4506 static int32_t param36_init[] = {0};
4507 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
4508 static _Float16 param37_init[] = {0.4000000059604645f};
4509 model->setOperandValue(param37, param37_init, sizeof(_Float16) * 1);
4510 static _Float16 param38_init[] = {1.0f};
4511 model->setOperandValue(param38, param38_init, sizeof(_Float16) * 1);
4512 static _Float16 param39_init[] = {0.30000001192092896f};
4513 model->setOperandValue(param39, param39_init, sizeof(_Float16) * 1);
4514 static int32_t param40_init[] = {2};
4515 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
4516 static int32_t param41_init[] = {2};
4517 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
4518 static _Float16 param42_init[] = {2.0f};
4519 model->setOperandValue(param42, param42_init, sizeof(_Float16) * 1);
4520 static _Float16 param43_init[] = {2.0f};
4521 model->setOperandValue(param43, param43_init, sizeof(_Float16) * 1);
4522 static int32_t param44_init[] = {4};
4523 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
4524 static int32_t param45_init[] = {4};
4525 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
4526 static bool8 layout_init[] = {false};
4527 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4528 static int32_t param46_init[] = {0};
4529 model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
4530 static int32_t param47_init[] = {0};
4531 model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
4532 static int32_t param48_init[] = {0};
4533 model->setOperandValue(param48, param48_init, sizeof(int32_t) * 1);
4534 static int32_t param49_init[] = {0};
4535 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
4536 static int32_t param50_init[] = {1};
4537 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
4538 static int32_t param51_init[] = {1};
4539 model->setOperandValue(param51, param51_init, sizeof(int32_t) * 1);
4540 static int32_t param52_init[] = {2};
4541 model->setOperandValue(param52, param52_init, sizeof(int32_t) * 1);
4542 static int32_t param53_init[] = {2};
4543 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
4544 static int32_t param54_init[] = {0};
4545 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
4546 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param33, param34, param35, param36, param37, param38, param39}, {scoresOut, roiOut, classesOut, batchSplitOut});
4547 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param40, param41, param42, param43, param44, param45, layout}, {featureMap});
4548 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap, param46, param47, param48, param49, param50, param51, param52, param53, param54, layout}, {out});
4549 // Phase 3, inputs and outputs
4550 model->identifyInputsAndOutputs(
4551 {in},
4552 {scoresOut, classesOut, out});
4553 assert(model->isValid());
4554 }
4555
is_ignored_zero_sized_dynamic_output_shape_nhwc_float16(int i)4556 inline bool is_ignored_zero_sized_dynamic_output_shape_nhwc_float16(int i) {
4557 static std::set<int> ignore = {};
4558 return ignore.find(i) != ignore.end();
4559 }
4560
CreateModel_zero_sized_dynamic_output_shape_nchw(Model * model)4561 void CreateModel_zero_sized_dynamic_output_shape_nchw(Model *model) {
4562 OperandType type0(Type::BOOL, {});
4563 OperandType type10(Type::TENSOR_INT32, {0});
4564 OperandType type11(Type::TENSOR_FLOAT32, {0, 4});
4565 OperandType type12(Type::TENSOR_INT32, {1});
4566 OperandType type13(Type::FLOAT32, {});
4567 OperandType type14(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
4568 OperandType type2(Type::INT32, {});
4569 OperandType type22(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
4570 OperandType type65(Type::TENSOR_FLOAT32, {0, 1, 2, 2});
4571 OperandType type7(Type::TENSOR_FLOAT32, {1, 2});
4572 OperandType type8(Type::TENSOR_FLOAT32, {1, 8});
4573 OperandType type9(Type::TENSOR_FLOAT32, {0});
4574 // Phase 1, operands
4575 auto scores = model->addOperand(&type7);
4576 auto roi = model->addOperand(&type8);
4577 auto param33 = model->addOperand(&type12);
4578 auto param34 = model->addOperand(&type13);
4579 auto param35 = model->addOperand(&type2);
4580 auto param36 = model->addOperand(&type2);
4581 auto param37 = model->addOperand(&type13);
4582 auto param38 = model->addOperand(&type13);
4583 auto param39 = model->addOperand(&type13);
4584 auto scoresOut = model->addOperand(&type9);
4585 auto roiOut = model->addOperand(&type11);
4586 auto classesOut = model->addOperand(&type10);
4587 auto batchSplitOut = model->addOperand(&type10);
4588 auto in = model->addOperand(&type14);
4589 auto param40 = model->addOperand(&type2);
4590 auto param41 = model->addOperand(&type2);
4591 auto param42 = model->addOperand(&type13);
4592 auto param43 = model->addOperand(&type13);
4593 auto param44 = model->addOperand(&type2);
4594 auto param45 = model->addOperand(&type2);
4595 auto layout = model->addOperand(&type0);
4596 auto featureMap = model->addOperand(&type65);
4597 auto param46 = model->addOperand(&type2);
4598 auto param47 = model->addOperand(&type2);
4599 auto param48 = model->addOperand(&type2);
4600 auto param49 = model->addOperand(&type2);
4601 auto param50 = model->addOperand(&type2);
4602 auto param51 = model->addOperand(&type2);
4603 auto param52 = model->addOperand(&type2);
4604 auto param53 = model->addOperand(&type2);
4605 auto param54 = model->addOperand(&type2);
4606 auto out = model->addOperand(&type22);
4607 // Phase 2, operations
4608 static float scores_init[] = {0.9f, 0.1f};
4609 model->setOperandValue(scores, scores_init, sizeof(float) * 2);
4610 static float roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
4611 model->setOperandValue(roi, roi_init, sizeof(float) * 8);
4612 static int32_t param33_init[] = {0};
4613 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
4614 static float param34_init[] = {0.3f};
4615 model->setOperandValue(param34, param34_init, sizeof(float) * 1);
4616 static int32_t param35_init[] = {-1};
4617 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
4618 static int32_t param36_init[] = {0};
4619 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
4620 static float param37_init[] = {0.4f};
4621 model->setOperandValue(param37, param37_init, sizeof(float) * 1);
4622 static float param38_init[] = {1.0f};
4623 model->setOperandValue(param38, param38_init, sizeof(float) * 1);
4624 static float param39_init[] = {0.3f};
4625 model->setOperandValue(param39, param39_init, sizeof(float) * 1);
4626 static int32_t param40_init[] = {2};
4627 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
4628 static int32_t param41_init[] = {2};
4629 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
4630 static float param42_init[] = {2.0f};
4631 model->setOperandValue(param42, param42_init, sizeof(float) * 1);
4632 static float param43_init[] = {2.0f};
4633 model->setOperandValue(param43, param43_init, sizeof(float) * 1);
4634 static int32_t param44_init[] = {4};
4635 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
4636 static int32_t param45_init[] = {4};
4637 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
4638 static bool8 layout_init[] = {true};
4639 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4640 static int32_t param46_init[] = {0};
4641 model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
4642 static int32_t param47_init[] = {0};
4643 model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
4644 static int32_t param48_init[] = {0};
4645 model->setOperandValue(param48, param48_init, sizeof(int32_t) * 1);
4646 static int32_t param49_init[] = {0};
4647 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
4648 static int32_t param50_init[] = {1};
4649 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
4650 static int32_t param51_init[] = {1};
4651 model->setOperandValue(param51, param51_init, sizeof(int32_t) * 1);
4652 static int32_t param52_init[] = {2};
4653 model->setOperandValue(param52, param52_init, sizeof(int32_t) * 1);
4654 static int32_t param53_init[] = {2};
4655 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
4656 static int32_t param54_init[] = {0};
4657 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
4658 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param33, param34, param35, param36, param37, param38, param39}, {scoresOut, roiOut, classesOut, batchSplitOut});
4659 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param40, param41, param42, param43, param44, param45, layout}, {featureMap});
4660 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap, param46, param47, param48, param49, param50, param51, param52, param53, param54, layout}, {out});
4661 // Phase 3, inputs and outputs
4662 model->identifyInputsAndOutputs(
4663 {in},
4664 {scoresOut, classesOut, out});
4665 assert(model->isValid());
4666 }
4667
is_ignored_zero_sized_dynamic_output_shape_nchw(int i)4668 inline bool is_ignored_zero_sized_dynamic_output_shape_nchw(int i) {
4669 static std::set<int> ignore = {};
4670 return ignore.find(i) != ignore.end();
4671 }
4672
CreateModel_zero_sized_dynamic_output_shape_nchw_relaxed(Model * model)4673 void CreateModel_zero_sized_dynamic_output_shape_nchw_relaxed(Model *model) {
4674 OperandType type0(Type::BOOL, {});
4675 OperandType type10(Type::TENSOR_INT32, {0});
4676 OperandType type11(Type::TENSOR_FLOAT32, {0, 4});
4677 OperandType type12(Type::TENSOR_INT32, {1});
4678 OperandType type13(Type::FLOAT32, {});
4679 OperandType type14(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
4680 OperandType type2(Type::INT32, {});
4681 OperandType type22(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
4682 OperandType type65(Type::TENSOR_FLOAT32, {0, 1, 2, 2});
4683 OperandType type7(Type::TENSOR_FLOAT32, {1, 2});
4684 OperandType type8(Type::TENSOR_FLOAT32, {1, 8});
4685 OperandType type9(Type::TENSOR_FLOAT32, {0});
4686 // Phase 1, operands
4687 auto scores = model->addOperand(&type7);
4688 auto roi = model->addOperand(&type8);
4689 auto param33 = model->addOperand(&type12);
4690 auto param34 = model->addOperand(&type13);
4691 auto param35 = model->addOperand(&type2);
4692 auto param36 = model->addOperand(&type2);
4693 auto param37 = model->addOperand(&type13);
4694 auto param38 = model->addOperand(&type13);
4695 auto param39 = model->addOperand(&type13);
4696 auto scoresOut = model->addOperand(&type9);
4697 auto roiOut = model->addOperand(&type11);
4698 auto classesOut = model->addOperand(&type10);
4699 auto batchSplitOut = model->addOperand(&type10);
4700 auto in = model->addOperand(&type14);
4701 auto param40 = model->addOperand(&type2);
4702 auto param41 = model->addOperand(&type2);
4703 auto param42 = model->addOperand(&type13);
4704 auto param43 = model->addOperand(&type13);
4705 auto param44 = model->addOperand(&type2);
4706 auto param45 = model->addOperand(&type2);
4707 auto layout = model->addOperand(&type0);
4708 auto featureMap = model->addOperand(&type65);
4709 auto param46 = model->addOperand(&type2);
4710 auto param47 = model->addOperand(&type2);
4711 auto param48 = model->addOperand(&type2);
4712 auto param49 = model->addOperand(&type2);
4713 auto param50 = model->addOperand(&type2);
4714 auto param51 = model->addOperand(&type2);
4715 auto param52 = model->addOperand(&type2);
4716 auto param53 = model->addOperand(&type2);
4717 auto param54 = model->addOperand(&type2);
4718 auto out = model->addOperand(&type22);
4719 // Phase 2, operations
4720 static float scores_init[] = {0.9f, 0.1f};
4721 model->setOperandValue(scores, scores_init, sizeof(float) * 2);
4722 static float roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
4723 model->setOperandValue(roi, roi_init, sizeof(float) * 8);
4724 static int32_t param33_init[] = {0};
4725 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
4726 static float param34_init[] = {0.3f};
4727 model->setOperandValue(param34, param34_init, sizeof(float) * 1);
4728 static int32_t param35_init[] = {-1};
4729 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
4730 static int32_t param36_init[] = {0};
4731 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
4732 static float param37_init[] = {0.4f};
4733 model->setOperandValue(param37, param37_init, sizeof(float) * 1);
4734 static float param38_init[] = {1.0f};
4735 model->setOperandValue(param38, param38_init, sizeof(float) * 1);
4736 static float param39_init[] = {0.3f};
4737 model->setOperandValue(param39, param39_init, sizeof(float) * 1);
4738 static int32_t param40_init[] = {2};
4739 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
4740 static int32_t param41_init[] = {2};
4741 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
4742 static float param42_init[] = {2.0f};
4743 model->setOperandValue(param42, param42_init, sizeof(float) * 1);
4744 static float param43_init[] = {2.0f};
4745 model->setOperandValue(param43, param43_init, sizeof(float) * 1);
4746 static int32_t param44_init[] = {4};
4747 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
4748 static int32_t param45_init[] = {4};
4749 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
4750 static bool8 layout_init[] = {true};
4751 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4752 static int32_t param46_init[] = {0};
4753 model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
4754 static int32_t param47_init[] = {0};
4755 model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
4756 static int32_t param48_init[] = {0};
4757 model->setOperandValue(param48, param48_init, sizeof(int32_t) * 1);
4758 static int32_t param49_init[] = {0};
4759 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
4760 static int32_t param50_init[] = {1};
4761 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
4762 static int32_t param51_init[] = {1};
4763 model->setOperandValue(param51, param51_init, sizeof(int32_t) * 1);
4764 static int32_t param52_init[] = {2};
4765 model->setOperandValue(param52, param52_init, sizeof(int32_t) * 1);
4766 static int32_t param53_init[] = {2};
4767 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
4768 static int32_t param54_init[] = {0};
4769 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
4770 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param33, param34, param35, param36, param37, param38, param39}, {scoresOut, roiOut, classesOut, batchSplitOut});
4771 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param40, param41, param42, param43, param44, param45, layout}, {featureMap});
4772 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap, param46, param47, param48, param49, param50, param51, param52, param53, param54, layout}, {out});
4773 // Phase 3, inputs and outputs
4774 model->identifyInputsAndOutputs(
4775 {in},
4776 {scoresOut, classesOut, out});
4777 // Phase 4: set relaxed execution
4778 model->relaxComputationFloat32toFloat16(true);
4779 assert(model->isValid());
4780 }
4781
is_ignored_zero_sized_dynamic_output_shape_nchw_relaxed(int i)4782 inline bool is_ignored_zero_sized_dynamic_output_shape_nchw_relaxed(int i) {
4783 static std::set<int> ignore = {};
4784 return ignore.find(i) != ignore.end();
4785 }
4786
CreateModel_zero_sized_dynamic_output_shape_nchw_quant8(Model * model)4787 void CreateModel_zero_sized_dynamic_output_shape_nchw_quant8(Model *model) {
4788 OperandType type0(Type::BOOL, {});
4789 OperandType type10(Type::TENSOR_INT32, {0});
4790 OperandType type12(Type::TENSOR_INT32, {1});
4791 OperandType type13(Type::FLOAT32, {});
4792 OperandType type2(Type::INT32, {});
4793 OperandType type51(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 1}, 0.1f, 128);
4794 OperandType type53(Type::TENSOR_QUANT16_ASYMM, {1, 8}, 0.125f, 0);
4795 OperandType type54(Type::TENSOR_QUANT16_ASYMM, {0, 4}, 0.125f, 0);
4796 OperandType type55(Type::TENSOR_QUANT8_ASYMM, {1, 2}, 0.1f, 128);
4797 OperandType type56(Type::TENSOR_QUANT8_ASYMM, {0}, 0.1f, 128);
4798 OperandType type66(Type::TENSOR_QUANT8_ASYMM, {0, 1, 2, 2}, 0.1f, 128);
4799 OperandType type68(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.1f, 128);
4800 // Phase 1, operands
4801 auto scores = model->addOperand(&type55);
4802 auto roi = model->addOperand(&type53);
4803 auto param33 = model->addOperand(&type12);
4804 auto param34 = model->addOperand(&type13);
4805 auto param35 = model->addOperand(&type2);
4806 auto param36 = model->addOperand(&type2);
4807 auto param37 = model->addOperand(&type13);
4808 auto param38 = model->addOperand(&type13);
4809 auto param39 = model->addOperand(&type13);
4810 auto scoresOut = model->addOperand(&type56);
4811 auto roiOut = model->addOperand(&type54);
4812 auto classesOut = model->addOperand(&type10);
4813 auto batchSplitOut = model->addOperand(&type10);
4814 auto in = model->addOperand(&type51);
4815 auto param40 = model->addOperand(&type2);
4816 auto param41 = model->addOperand(&type2);
4817 auto param42 = model->addOperand(&type13);
4818 auto param43 = model->addOperand(&type13);
4819 auto param44 = model->addOperand(&type2);
4820 auto param45 = model->addOperand(&type2);
4821 auto layout = model->addOperand(&type0);
4822 auto featureMap = model->addOperand(&type66);
4823 auto param46 = model->addOperand(&type2);
4824 auto param47 = model->addOperand(&type2);
4825 auto param48 = model->addOperand(&type2);
4826 auto param49 = model->addOperand(&type2);
4827 auto param50 = model->addOperand(&type2);
4828 auto param51 = model->addOperand(&type2);
4829 auto param52 = model->addOperand(&type2);
4830 auto param53 = model->addOperand(&type2);
4831 auto param54 = model->addOperand(&type2);
4832 auto out = model->addOperand(&type68);
4833 // Phase 2, operations
4834 static uint8_t scores_init[] = {137, 129};
4835 model->setOperandValue(scores, scores_init, sizeof(uint8_t) * 2);
4836 static uint16_t roi_init[] = {8, 8, 80, 80, 0, 0, 80, 80};
4837 model->setOperandValue(roi, roi_init, sizeof(uint16_t) * 8);
4838 static int32_t param33_init[] = {0};
4839 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
4840 static float param34_init[] = {0.3f};
4841 model->setOperandValue(param34, param34_init, sizeof(float) * 1);
4842 static int32_t param35_init[] = {-1};
4843 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
4844 static int32_t param36_init[] = {0};
4845 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
4846 static float param37_init[] = {0.4f};
4847 model->setOperandValue(param37, param37_init, sizeof(float) * 1);
4848 static float param38_init[] = {1.0f};
4849 model->setOperandValue(param38, param38_init, sizeof(float) * 1);
4850 static float param39_init[] = {0.3f};
4851 model->setOperandValue(param39, param39_init, sizeof(float) * 1);
4852 static int32_t param40_init[] = {2};
4853 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
4854 static int32_t param41_init[] = {2};
4855 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
4856 static float param42_init[] = {2.0f};
4857 model->setOperandValue(param42, param42_init, sizeof(float) * 1);
4858 static float param43_init[] = {2.0f};
4859 model->setOperandValue(param43, param43_init, sizeof(float) * 1);
4860 static int32_t param44_init[] = {4};
4861 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
4862 static int32_t param45_init[] = {4};
4863 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
4864 static bool8 layout_init[] = {true};
4865 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4866 static int32_t param46_init[] = {0};
4867 model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
4868 static int32_t param47_init[] = {0};
4869 model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
4870 static int32_t param48_init[] = {0};
4871 model->setOperandValue(param48, param48_init, sizeof(int32_t) * 1);
4872 static int32_t param49_init[] = {0};
4873 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
4874 static int32_t param50_init[] = {1};
4875 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
4876 static int32_t param51_init[] = {1};
4877 model->setOperandValue(param51, param51_init, sizeof(int32_t) * 1);
4878 static int32_t param52_init[] = {2};
4879 model->setOperandValue(param52, param52_init, sizeof(int32_t) * 1);
4880 static int32_t param53_init[] = {2};
4881 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
4882 static int32_t param54_init[] = {0};
4883 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
4884 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param33, param34, param35, param36, param37, param38, param39}, {scoresOut, roiOut, classesOut, batchSplitOut});
4885 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param40, param41, param42, param43, param44, param45, layout}, {featureMap});
4886 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap, param46, param47, param48, param49, param50, param51, param52, param53, param54, layout}, {out});
4887 // Phase 3, inputs and outputs
4888 model->identifyInputsAndOutputs(
4889 {in},
4890 {scoresOut, classesOut, out});
4891 assert(model->isValid());
4892 }
4893
is_ignored_zero_sized_dynamic_output_shape_nchw_quant8(int i)4894 inline bool is_ignored_zero_sized_dynamic_output_shape_nchw_quant8(int i) {
4895 static std::set<int> ignore = {};
4896 return ignore.find(i) != ignore.end();
4897 }
4898
CreateModel_zero_sized_dynamic_output_shape_nchw_float16(Model * model)4899 void CreateModel_zero_sized_dynamic_output_shape_nchw_float16(Model *model) {
4900 OperandType type0(Type::BOOL, {});
4901 OperandType type10(Type::TENSOR_INT32, {0});
4902 OperandType type12(Type::TENSOR_INT32, {1});
4903 OperandType type2(Type::INT32, {});
4904 OperandType type24(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
4905 OperandType type58(Type::TENSOR_FLOAT16, {1, 1, 1, 1});
4906 OperandType type60(Type::FLOAT16, {});
4907 OperandType type61(Type::TENSOR_FLOAT16, {1, 8});
4908 OperandType type62(Type::TENSOR_FLOAT16, {0, 4});
4909 OperandType type63(Type::TENSOR_FLOAT16, {1, 2});
4910 OperandType type67(Type::TENSOR_FLOAT16, {0, 1, 2, 2});
4911 OperandType type69(Type::TENSOR_FLOAT16, {0});
4912 // Phase 1, operands
4913 auto scores = model->addOperand(&type63);
4914 auto roi = model->addOperand(&type61);
4915 auto param33 = model->addOperand(&type12);
4916 auto param34 = model->addOperand(&type60);
4917 auto param35 = model->addOperand(&type2);
4918 auto param36 = model->addOperand(&type2);
4919 auto param37 = model->addOperand(&type60);
4920 auto param38 = model->addOperand(&type60);
4921 auto param39 = model->addOperand(&type60);
4922 auto scoresOut = model->addOperand(&type69);
4923 auto roiOut = model->addOperand(&type62);
4924 auto classesOut = model->addOperand(&type10);
4925 auto batchSplitOut = model->addOperand(&type10);
4926 auto in = model->addOperand(&type58);
4927 auto param40 = model->addOperand(&type2);
4928 auto param41 = model->addOperand(&type2);
4929 auto param42 = model->addOperand(&type60);
4930 auto param43 = model->addOperand(&type60);
4931 auto param44 = model->addOperand(&type2);
4932 auto param45 = model->addOperand(&type2);
4933 auto layout = model->addOperand(&type0);
4934 auto featureMap = model->addOperand(&type67);
4935 auto param46 = model->addOperand(&type2);
4936 auto param47 = model->addOperand(&type2);
4937 auto param48 = model->addOperand(&type2);
4938 auto param49 = model->addOperand(&type2);
4939 auto param50 = model->addOperand(&type2);
4940 auto param51 = model->addOperand(&type2);
4941 auto param52 = model->addOperand(&type2);
4942 auto param53 = model->addOperand(&type2);
4943 auto param54 = model->addOperand(&type2);
4944 auto out = model->addOperand(&type24);
4945 // Phase 2, operations
4946 static _Float16 scores_init[] = {0.8999999761581421f, 0.10000000149011612f};
4947 model->setOperandValue(scores, scores_init, sizeof(_Float16) * 2);
4948 static _Float16 roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
4949 model->setOperandValue(roi, roi_init, sizeof(_Float16) * 8);
4950 static int32_t param33_init[] = {0};
4951 model->setOperandValue(param33, param33_init, sizeof(int32_t) * 1);
4952 static _Float16 param34_init[] = {0.30000001192092896f};
4953 model->setOperandValue(param34, param34_init, sizeof(_Float16) * 1);
4954 static int32_t param35_init[] = {-1};
4955 model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
4956 static int32_t param36_init[] = {0};
4957 model->setOperandValue(param36, param36_init, sizeof(int32_t) * 1);
4958 static _Float16 param37_init[] = {0.4000000059604645f};
4959 model->setOperandValue(param37, param37_init, sizeof(_Float16) * 1);
4960 static _Float16 param38_init[] = {1.0f};
4961 model->setOperandValue(param38, param38_init, sizeof(_Float16) * 1);
4962 static _Float16 param39_init[] = {0.30000001192092896f};
4963 model->setOperandValue(param39, param39_init, sizeof(_Float16) * 1);
4964 static int32_t param40_init[] = {2};
4965 model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
4966 static int32_t param41_init[] = {2};
4967 model->setOperandValue(param41, param41_init, sizeof(int32_t) * 1);
4968 static _Float16 param42_init[] = {2.0f};
4969 model->setOperandValue(param42, param42_init, sizeof(_Float16) * 1);
4970 static _Float16 param43_init[] = {2.0f};
4971 model->setOperandValue(param43, param43_init, sizeof(_Float16) * 1);
4972 static int32_t param44_init[] = {4};
4973 model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
4974 static int32_t param45_init[] = {4};
4975 model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
4976 static bool8 layout_init[] = {true};
4977 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4978 static int32_t param46_init[] = {0};
4979 model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
4980 static int32_t param47_init[] = {0};
4981 model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
4982 static int32_t param48_init[] = {0};
4983 model->setOperandValue(param48, param48_init, sizeof(int32_t) * 1);
4984 static int32_t param49_init[] = {0};
4985 model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
4986 static int32_t param50_init[] = {1};
4987 model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
4988 static int32_t param51_init[] = {1};
4989 model->setOperandValue(param51, param51_init, sizeof(int32_t) * 1);
4990 static int32_t param52_init[] = {2};
4991 model->setOperandValue(param52, param52_init, sizeof(int32_t) * 1);
4992 static int32_t param53_init[] = {2};
4993 model->setOperandValue(param53, param53_init, sizeof(int32_t) * 1);
4994 static int32_t param54_init[] = {0};
4995 model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
4996 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param33, param34, param35, param36, param37, param38, param39}, {scoresOut, roiOut, classesOut, batchSplitOut});
4997 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in, roiOut, batchSplitOut, param40, param41, param42, param43, param44, param45, layout}, {featureMap});
4998 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap, param46, param47, param48, param49, param50, param51, param52, param53, param54, layout}, {out});
4999 // Phase 3, inputs and outputs
5000 model->identifyInputsAndOutputs(
5001 {in},
5002 {scoresOut, classesOut, out});
5003 assert(model->isValid());
5004 }
5005
is_ignored_zero_sized_dynamic_output_shape_nchw_float16(int i)5006 inline bool is_ignored_zero_sized_dynamic_output_shape_nchw_float16(int i) {
5007 static std::set<int> ignore = {};
5008 return ignore.find(i) != ignore.end();
5009 }
5010
CreateModel_zero_sized_nhwc_2(Model * model)5011 void CreateModel_zero_sized_nhwc_2(Model *model) {
5012 OperandType type0(Type::BOOL, {});
5013 OperandType type10(Type::TENSOR_INT32, {0});
5014 OperandType type11(Type::TENSOR_FLOAT32, {0, 4});
5015 OperandType type12(Type::TENSOR_INT32, {1});
5016 OperandType type13(Type::FLOAT32, {});
5017 OperandType type14(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
5018 OperandType type15(Type::TENSOR_FLOAT32, {0, 2, 2, 1});
5019 OperandType type2(Type::INT32, {});
5020 OperandType type7(Type::TENSOR_FLOAT32, {1, 2});
5021 OperandType type8(Type::TENSOR_FLOAT32, {1, 8});
5022 OperandType type9(Type::TENSOR_FLOAT32, {0});
5023 // Phase 1, operands
5024 auto scores1 = model->addOperand(&type7);
5025 auto roi1 = model->addOperand(&type8);
5026 auto param55 = model->addOperand(&type12);
5027 auto param56 = model->addOperand(&type13);
5028 auto param57 = model->addOperand(&type2);
5029 auto param58 = model->addOperand(&type2);
5030 auto param59 = model->addOperand(&type13);
5031 auto param60 = model->addOperand(&type13);
5032 auto param61 = model->addOperand(&type13);
5033 auto scoresOut1 = model->addOperand(&type9);
5034 auto roiOut1 = model->addOperand(&type11);
5035 auto classesOut1 = model->addOperand(&type10);
5036 auto batchSplitOut1 = model->addOperand(&type10);
5037 auto in1 = model->addOperand(&type14);
5038 auto param62 = model->addOperand(&type2);
5039 auto param63 = model->addOperand(&type2);
5040 auto param64 = model->addOperand(&type13);
5041 auto param65 = model->addOperand(&type13);
5042 auto param66 = model->addOperand(&type2);
5043 auto param67 = model->addOperand(&type2);
5044 auto layout = model->addOperand(&type0);
5045 auto featureMap1 = model->addOperand(&type15);
5046 auto param68 = model->addOperand(&type2);
5047 auto param69 = model->addOperand(&type2);
5048 auto param70 = model->addOperand(&type2);
5049 auto param71 = model->addOperand(&type2);
5050 auto param72 = model->addOperand(&type2);
5051 auto param73 = model->addOperand(&type2);
5052 auto out1 = model->addOperand(&type15);
5053 // Phase 2, operations
5054 static float scores1_init[] = {0.9f, 0.1f};
5055 model->setOperandValue(scores1, scores1_init, sizeof(float) * 2);
5056 static float roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
5057 model->setOperandValue(roi1, roi1_init, sizeof(float) * 8);
5058 static int32_t param55_init[] = {0};
5059 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
5060 static float param56_init[] = {0.3f};
5061 model->setOperandValue(param56, param56_init, sizeof(float) * 1);
5062 static int32_t param57_init[] = {-1};
5063 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
5064 static int32_t param58_init[] = {0};
5065 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
5066 static float param59_init[] = {0.4f};
5067 model->setOperandValue(param59, param59_init, sizeof(float) * 1);
5068 static float param60_init[] = {1.0f};
5069 model->setOperandValue(param60, param60_init, sizeof(float) * 1);
5070 static float param61_init[] = {0.3f};
5071 model->setOperandValue(param61, param61_init, sizeof(float) * 1);
5072 static int32_t param62_init[] = {2};
5073 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
5074 static int32_t param63_init[] = {2};
5075 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
5076 static float param64_init[] = {2.0f};
5077 model->setOperandValue(param64, param64_init, sizeof(float) * 1);
5078 static float param65_init[] = {2.0f};
5079 model->setOperandValue(param65, param65_init, sizeof(float) * 1);
5080 static int32_t param66_init[] = {4};
5081 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
5082 static int32_t param67_init[] = {4};
5083 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
5084 static bool8 layout_init[] = {false};
5085 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5086 static int32_t param68_init[] = {1};
5087 model->setOperandValue(param68, param68_init, sizeof(int32_t) * 1);
5088 static int32_t param69_init[] = {1};
5089 model->setOperandValue(param69, param69_init, sizeof(int32_t) * 1);
5090 static int32_t param70_init[] = {1};
5091 model->setOperandValue(param70, param70_init, sizeof(int32_t) * 1);
5092 static int32_t param71_init[] = {2};
5093 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
5094 static int32_t param72_init[] = {2};
5095 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
5096 static int32_t param73_init[] = {0};
5097 model->setOperandValue(param73, param73_init, sizeof(int32_t) * 1);
5098 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param55, param56, param57, param58, param59, param60, param61}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
5099 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param62, param63, param64, param65, param66, param67, layout}, {featureMap1});
5100 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap1, param68, param69, param70, param71, param72, param73, layout}, {out1});
5101 // Phase 3, inputs and outputs
5102 model->identifyInputsAndOutputs(
5103 {in1},
5104 {scoresOut1, classesOut1, out1});
5105 assert(model->isValid());
5106 }
5107
is_ignored_zero_sized_nhwc_2(int i)5108 inline bool is_ignored_zero_sized_nhwc_2(int i) {
5109 static std::set<int> ignore = {};
5110 return ignore.find(i) != ignore.end();
5111 }
5112
CreateModel_zero_sized_nhwc_relaxed_2(Model * model)5113 void CreateModel_zero_sized_nhwc_relaxed_2(Model *model) {
5114 OperandType type0(Type::BOOL, {});
5115 OperandType type10(Type::TENSOR_INT32, {0});
5116 OperandType type11(Type::TENSOR_FLOAT32, {0, 4});
5117 OperandType type12(Type::TENSOR_INT32, {1});
5118 OperandType type13(Type::FLOAT32, {});
5119 OperandType type14(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
5120 OperandType type15(Type::TENSOR_FLOAT32, {0, 2, 2, 1});
5121 OperandType type2(Type::INT32, {});
5122 OperandType type7(Type::TENSOR_FLOAT32, {1, 2});
5123 OperandType type8(Type::TENSOR_FLOAT32, {1, 8});
5124 OperandType type9(Type::TENSOR_FLOAT32, {0});
5125 // Phase 1, operands
5126 auto scores1 = model->addOperand(&type7);
5127 auto roi1 = model->addOperand(&type8);
5128 auto param55 = model->addOperand(&type12);
5129 auto param56 = model->addOperand(&type13);
5130 auto param57 = model->addOperand(&type2);
5131 auto param58 = model->addOperand(&type2);
5132 auto param59 = model->addOperand(&type13);
5133 auto param60 = model->addOperand(&type13);
5134 auto param61 = model->addOperand(&type13);
5135 auto scoresOut1 = model->addOperand(&type9);
5136 auto roiOut1 = model->addOperand(&type11);
5137 auto classesOut1 = model->addOperand(&type10);
5138 auto batchSplitOut1 = model->addOperand(&type10);
5139 auto in1 = model->addOperand(&type14);
5140 auto param62 = model->addOperand(&type2);
5141 auto param63 = model->addOperand(&type2);
5142 auto param64 = model->addOperand(&type13);
5143 auto param65 = model->addOperand(&type13);
5144 auto param66 = model->addOperand(&type2);
5145 auto param67 = model->addOperand(&type2);
5146 auto layout = model->addOperand(&type0);
5147 auto featureMap1 = model->addOperand(&type15);
5148 auto param68 = model->addOperand(&type2);
5149 auto param69 = model->addOperand(&type2);
5150 auto param70 = model->addOperand(&type2);
5151 auto param71 = model->addOperand(&type2);
5152 auto param72 = model->addOperand(&type2);
5153 auto param73 = model->addOperand(&type2);
5154 auto out1 = model->addOperand(&type15);
5155 // Phase 2, operations
5156 static float scores1_init[] = {0.9f, 0.1f};
5157 model->setOperandValue(scores1, scores1_init, sizeof(float) * 2);
5158 static float roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
5159 model->setOperandValue(roi1, roi1_init, sizeof(float) * 8);
5160 static int32_t param55_init[] = {0};
5161 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
5162 static float param56_init[] = {0.3f};
5163 model->setOperandValue(param56, param56_init, sizeof(float) * 1);
5164 static int32_t param57_init[] = {-1};
5165 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
5166 static int32_t param58_init[] = {0};
5167 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
5168 static float param59_init[] = {0.4f};
5169 model->setOperandValue(param59, param59_init, sizeof(float) * 1);
5170 static float param60_init[] = {1.0f};
5171 model->setOperandValue(param60, param60_init, sizeof(float) * 1);
5172 static float param61_init[] = {0.3f};
5173 model->setOperandValue(param61, param61_init, sizeof(float) * 1);
5174 static int32_t param62_init[] = {2};
5175 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
5176 static int32_t param63_init[] = {2};
5177 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
5178 static float param64_init[] = {2.0f};
5179 model->setOperandValue(param64, param64_init, sizeof(float) * 1);
5180 static float param65_init[] = {2.0f};
5181 model->setOperandValue(param65, param65_init, sizeof(float) * 1);
5182 static int32_t param66_init[] = {4};
5183 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
5184 static int32_t param67_init[] = {4};
5185 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
5186 static bool8 layout_init[] = {false};
5187 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5188 static int32_t param68_init[] = {1};
5189 model->setOperandValue(param68, param68_init, sizeof(int32_t) * 1);
5190 static int32_t param69_init[] = {1};
5191 model->setOperandValue(param69, param69_init, sizeof(int32_t) * 1);
5192 static int32_t param70_init[] = {1};
5193 model->setOperandValue(param70, param70_init, sizeof(int32_t) * 1);
5194 static int32_t param71_init[] = {2};
5195 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
5196 static int32_t param72_init[] = {2};
5197 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
5198 static int32_t param73_init[] = {0};
5199 model->setOperandValue(param73, param73_init, sizeof(int32_t) * 1);
5200 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param55, param56, param57, param58, param59, param60, param61}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
5201 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param62, param63, param64, param65, param66, param67, layout}, {featureMap1});
5202 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap1, param68, param69, param70, param71, param72, param73, layout}, {out1});
5203 // Phase 3, inputs and outputs
5204 model->identifyInputsAndOutputs(
5205 {in1},
5206 {scoresOut1, classesOut1, out1});
5207 // Phase 4: set relaxed execution
5208 model->relaxComputationFloat32toFloat16(true);
5209 assert(model->isValid());
5210 }
5211
is_ignored_zero_sized_nhwc_relaxed_2(int i)5212 inline bool is_ignored_zero_sized_nhwc_relaxed_2(int i) {
5213 static std::set<int> ignore = {};
5214 return ignore.find(i) != ignore.end();
5215 }
5216
CreateModel_zero_sized_nhwc_quant8_2(Model * model)5217 void CreateModel_zero_sized_nhwc_quant8_2(Model *model) {
5218 OperandType type0(Type::BOOL, {});
5219 OperandType type10(Type::TENSOR_INT32, {0});
5220 OperandType type12(Type::TENSOR_INT32, {1});
5221 OperandType type13(Type::FLOAT32, {});
5222 OperandType type2(Type::INT32, {});
5223 OperandType type50(Type::TENSOR_QUANT8_ASYMM, {0, 2, 2, 1}, 0.1f, 128);
5224 OperandType type51(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 1}, 0.1f, 128);
5225 OperandType type53(Type::TENSOR_QUANT16_ASYMM, {1, 8}, 0.125f, 0);
5226 OperandType type54(Type::TENSOR_QUANT16_ASYMM, {0, 4}, 0.125f, 0);
5227 OperandType type55(Type::TENSOR_QUANT8_ASYMM, {1, 2}, 0.1f, 128);
5228 OperandType type56(Type::TENSOR_QUANT8_ASYMM, {0}, 0.1f, 128);
5229 // Phase 1, operands
5230 auto scores1 = model->addOperand(&type55);
5231 auto roi1 = model->addOperand(&type53);
5232 auto param55 = model->addOperand(&type12);
5233 auto param56 = model->addOperand(&type13);
5234 auto param57 = model->addOperand(&type2);
5235 auto param58 = model->addOperand(&type2);
5236 auto param59 = model->addOperand(&type13);
5237 auto param60 = model->addOperand(&type13);
5238 auto param61 = model->addOperand(&type13);
5239 auto scoresOut1 = model->addOperand(&type56);
5240 auto roiOut1 = model->addOperand(&type54);
5241 auto classesOut1 = model->addOperand(&type10);
5242 auto batchSplitOut1 = model->addOperand(&type10);
5243 auto in1 = model->addOperand(&type51);
5244 auto param62 = model->addOperand(&type2);
5245 auto param63 = model->addOperand(&type2);
5246 auto param64 = model->addOperand(&type13);
5247 auto param65 = model->addOperand(&type13);
5248 auto param66 = model->addOperand(&type2);
5249 auto param67 = model->addOperand(&type2);
5250 auto layout = model->addOperand(&type0);
5251 auto featureMap1 = model->addOperand(&type50);
5252 auto param68 = model->addOperand(&type2);
5253 auto param69 = model->addOperand(&type2);
5254 auto param70 = model->addOperand(&type2);
5255 auto param71 = model->addOperand(&type2);
5256 auto param72 = model->addOperand(&type2);
5257 auto param73 = model->addOperand(&type2);
5258 auto out1 = model->addOperand(&type50);
5259 // Phase 2, operations
5260 static uint8_t scores1_init[] = {137, 129};
5261 model->setOperandValue(scores1, scores1_init, sizeof(uint8_t) * 2);
5262 static uint16_t roi1_init[] = {8, 8, 80, 80, 0, 0, 80, 80};
5263 model->setOperandValue(roi1, roi1_init, sizeof(uint16_t) * 8);
5264 static int32_t param55_init[] = {0};
5265 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
5266 static float param56_init[] = {0.3f};
5267 model->setOperandValue(param56, param56_init, sizeof(float) * 1);
5268 static int32_t param57_init[] = {-1};
5269 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
5270 static int32_t param58_init[] = {0};
5271 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
5272 static float param59_init[] = {0.4f};
5273 model->setOperandValue(param59, param59_init, sizeof(float) * 1);
5274 static float param60_init[] = {1.0f};
5275 model->setOperandValue(param60, param60_init, sizeof(float) * 1);
5276 static float param61_init[] = {0.3f};
5277 model->setOperandValue(param61, param61_init, sizeof(float) * 1);
5278 static int32_t param62_init[] = {2};
5279 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
5280 static int32_t param63_init[] = {2};
5281 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
5282 static float param64_init[] = {2.0f};
5283 model->setOperandValue(param64, param64_init, sizeof(float) * 1);
5284 static float param65_init[] = {2.0f};
5285 model->setOperandValue(param65, param65_init, sizeof(float) * 1);
5286 static int32_t param66_init[] = {4};
5287 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
5288 static int32_t param67_init[] = {4};
5289 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
5290 static bool8 layout_init[] = {false};
5291 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5292 static int32_t param68_init[] = {1};
5293 model->setOperandValue(param68, param68_init, sizeof(int32_t) * 1);
5294 static int32_t param69_init[] = {1};
5295 model->setOperandValue(param69, param69_init, sizeof(int32_t) * 1);
5296 static int32_t param70_init[] = {1};
5297 model->setOperandValue(param70, param70_init, sizeof(int32_t) * 1);
5298 static int32_t param71_init[] = {2};
5299 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
5300 static int32_t param72_init[] = {2};
5301 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
5302 static int32_t param73_init[] = {0};
5303 model->setOperandValue(param73, param73_init, sizeof(int32_t) * 1);
5304 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param55, param56, param57, param58, param59, param60, param61}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
5305 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param62, param63, param64, param65, param66, param67, layout}, {featureMap1});
5306 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap1, param68, param69, param70, param71, param72, param73, layout}, {out1});
5307 // Phase 3, inputs and outputs
5308 model->identifyInputsAndOutputs(
5309 {in1},
5310 {scoresOut1, classesOut1, out1});
5311 assert(model->isValid());
5312 }
5313
is_ignored_zero_sized_nhwc_quant8_2(int i)5314 inline bool is_ignored_zero_sized_nhwc_quant8_2(int i) {
5315 static std::set<int> ignore = {};
5316 return ignore.find(i) != ignore.end();
5317 }
5318
CreateModel_zero_sized_nhwc_float16_2(Model * model)5319 void CreateModel_zero_sized_nhwc_float16_2(Model *model) {
5320 OperandType type0(Type::BOOL, {});
5321 OperandType type10(Type::TENSOR_INT32, {0});
5322 OperandType type12(Type::TENSOR_INT32, {1});
5323 OperandType type2(Type::INT32, {});
5324 OperandType type57(Type::TENSOR_FLOAT16, {0, 2, 2, 1});
5325 OperandType type58(Type::TENSOR_FLOAT16, {1, 1, 1, 1});
5326 OperandType type60(Type::FLOAT16, {});
5327 OperandType type61(Type::TENSOR_FLOAT16, {1, 8});
5328 OperandType type62(Type::TENSOR_FLOAT16, {0, 4});
5329 OperandType type63(Type::TENSOR_FLOAT16, {1, 2});
5330 OperandType type64(Type::TENSOR_FLOAT16, {0});
5331 // Phase 1, operands
5332 auto scores1 = model->addOperand(&type63);
5333 auto roi1 = model->addOperand(&type61);
5334 auto param55 = model->addOperand(&type12);
5335 auto param56 = model->addOperand(&type60);
5336 auto param57 = model->addOperand(&type2);
5337 auto param58 = model->addOperand(&type2);
5338 auto param59 = model->addOperand(&type60);
5339 auto param60 = model->addOperand(&type60);
5340 auto param61 = model->addOperand(&type60);
5341 auto scoresOut1 = model->addOperand(&type64);
5342 auto roiOut1 = model->addOperand(&type62);
5343 auto classesOut1 = model->addOperand(&type10);
5344 auto batchSplitOut1 = model->addOperand(&type10);
5345 auto in1 = model->addOperand(&type58);
5346 auto param62 = model->addOperand(&type2);
5347 auto param63 = model->addOperand(&type2);
5348 auto param64 = model->addOperand(&type60);
5349 auto param65 = model->addOperand(&type60);
5350 auto param66 = model->addOperand(&type2);
5351 auto param67 = model->addOperand(&type2);
5352 auto layout = model->addOperand(&type0);
5353 auto featureMap1 = model->addOperand(&type57);
5354 auto param68 = model->addOperand(&type2);
5355 auto param69 = model->addOperand(&type2);
5356 auto param70 = model->addOperand(&type2);
5357 auto param71 = model->addOperand(&type2);
5358 auto param72 = model->addOperand(&type2);
5359 auto param73 = model->addOperand(&type2);
5360 auto out1 = model->addOperand(&type57);
5361 // Phase 2, operations
5362 static _Float16 scores1_init[] = {0.8999999761581421f, 0.10000000149011612f};
5363 model->setOperandValue(scores1, scores1_init, sizeof(_Float16) * 2);
5364 static _Float16 roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
5365 model->setOperandValue(roi1, roi1_init, sizeof(_Float16) * 8);
5366 static int32_t param55_init[] = {0};
5367 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
5368 static _Float16 param56_init[] = {0.30000001192092896f};
5369 model->setOperandValue(param56, param56_init, sizeof(_Float16) * 1);
5370 static int32_t param57_init[] = {-1};
5371 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
5372 static int32_t param58_init[] = {0};
5373 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
5374 static _Float16 param59_init[] = {0.4000000059604645f};
5375 model->setOperandValue(param59, param59_init, sizeof(_Float16) * 1);
5376 static _Float16 param60_init[] = {1.0f};
5377 model->setOperandValue(param60, param60_init, sizeof(_Float16) * 1);
5378 static _Float16 param61_init[] = {0.30000001192092896f};
5379 model->setOperandValue(param61, param61_init, sizeof(_Float16) * 1);
5380 static int32_t param62_init[] = {2};
5381 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
5382 static int32_t param63_init[] = {2};
5383 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
5384 static _Float16 param64_init[] = {2.0f};
5385 model->setOperandValue(param64, param64_init, sizeof(_Float16) * 1);
5386 static _Float16 param65_init[] = {2.0f};
5387 model->setOperandValue(param65, param65_init, sizeof(_Float16) * 1);
5388 static int32_t param66_init[] = {4};
5389 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
5390 static int32_t param67_init[] = {4};
5391 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
5392 static bool8 layout_init[] = {false};
5393 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5394 static int32_t param68_init[] = {1};
5395 model->setOperandValue(param68, param68_init, sizeof(int32_t) * 1);
5396 static int32_t param69_init[] = {1};
5397 model->setOperandValue(param69, param69_init, sizeof(int32_t) * 1);
5398 static int32_t param70_init[] = {1};
5399 model->setOperandValue(param70, param70_init, sizeof(int32_t) * 1);
5400 static int32_t param71_init[] = {2};
5401 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
5402 static int32_t param72_init[] = {2};
5403 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
5404 static int32_t param73_init[] = {0};
5405 model->setOperandValue(param73, param73_init, sizeof(int32_t) * 1);
5406 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param55, param56, param57, param58, param59, param60, param61}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
5407 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param62, param63, param64, param65, param66, param67, layout}, {featureMap1});
5408 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap1, param68, param69, param70, param71, param72, param73, layout}, {out1});
5409 // Phase 3, inputs and outputs
5410 model->identifyInputsAndOutputs(
5411 {in1},
5412 {scoresOut1, classesOut1, out1});
5413 assert(model->isValid());
5414 }
5415
is_ignored_zero_sized_nhwc_float16_2(int i)5416 inline bool is_ignored_zero_sized_nhwc_float16_2(int i) {
5417 static std::set<int> ignore = {};
5418 return ignore.find(i) != ignore.end();
5419 }
5420
CreateModel_zero_sized_nchw_2(Model * model)5421 void CreateModel_zero_sized_nchw_2(Model *model) {
5422 OperandType type0(Type::BOOL, {});
5423 OperandType type10(Type::TENSOR_INT32, {0});
5424 OperandType type11(Type::TENSOR_FLOAT32, {0, 4});
5425 OperandType type12(Type::TENSOR_INT32, {1});
5426 OperandType type13(Type::FLOAT32, {});
5427 OperandType type14(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
5428 OperandType type2(Type::INT32, {});
5429 OperandType type65(Type::TENSOR_FLOAT32, {0, 1, 2, 2});
5430 OperandType type7(Type::TENSOR_FLOAT32, {1, 2});
5431 OperandType type8(Type::TENSOR_FLOAT32, {1, 8});
5432 OperandType type9(Type::TENSOR_FLOAT32, {0});
5433 // Phase 1, operands
5434 auto scores1 = model->addOperand(&type7);
5435 auto roi1 = model->addOperand(&type8);
5436 auto param55 = model->addOperand(&type12);
5437 auto param56 = model->addOperand(&type13);
5438 auto param57 = model->addOperand(&type2);
5439 auto param58 = model->addOperand(&type2);
5440 auto param59 = model->addOperand(&type13);
5441 auto param60 = model->addOperand(&type13);
5442 auto param61 = model->addOperand(&type13);
5443 auto scoresOut1 = model->addOperand(&type9);
5444 auto roiOut1 = model->addOperand(&type11);
5445 auto classesOut1 = model->addOperand(&type10);
5446 auto batchSplitOut1 = model->addOperand(&type10);
5447 auto in1 = model->addOperand(&type14);
5448 auto param62 = model->addOperand(&type2);
5449 auto param63 = model->addOperand(&type2);
5450 auto param64 = model->addOperand(&type13);
5451 auto param65 = model->addOperand(&type13);
5452 auto param66 = model->addOperand(&type2);
5453 auto param67 = model->addOperand(&type2);
5454 auto layout = model->addOperand(&type0);
5455 auto featureMap1 = model->addOperand(&type65);
5456 auto param68 = model->addOperand(&type2);
5457 auto param69 = model->addOperand(&type2);
5458 auto param70 = model->addOperand(&type2);
5459 auto param71 = model->addOperand(&type2);
5460 auto param72 = model->addOperand(&type2);
5461 auto param73 = model->addOperand(&type2);
5462 auto out1 = model->addOperand(&type65);
5463 // Phase 2, operations
5464 static float scores1_init[] = {0.9f, 0.1f};
5465 model->setOperandValue(scores1, scores1_init, sizeof(float) * 2);
5466 static float roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
5467 model->setOperandValue(roi1, roi1_init, sizeof(float) * 8);
5468 static int32_t param55_init[] = {0};
5469 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
5470 static float param56_init[] = {0.3f};
5471 model->setOperandValue(param56, param56_init, sizeof(float) * 1);
5472 static int32_t param57_init[] = {-1};
5473 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
5474 static int32_t param58_init[] = {0};
5475 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
5476 static float param59_init[] = {0.4f};
5477 model->setOperandValue(param59, param59_init, sizeof(float) * 1);
5478 static float param60_init[] = {1.0f};
5479 model->setOperandValue(param60, param60_init, sizeof(float) * 1);
5480 static float param61_init[] = {0.3f};
5481 model->setOperandValue(param61, param61_init, sizeof(float) * 1);
5482 static int32_t param62_init[] = {2};
5483 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
5484 static int32_t param63_init[] = {2};
5485 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
5486 static float param64_init[] = {2.0f};
5487 model->setOperandValue(param64, param64_init, sizeof(float) * 1);
5488 static float param65_init[] = {2.0f};
5489 model->setOperandValue(param65, param65_init, sizeof(float) * 1);
5490 static int32_t param66_init[] = {4};
5491 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
5492 static int32_t param67_init[] = {4};
5493 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
5494 static bool8 layout_init[] = {true};
5495 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5496 static int32_t param68_init[] = {1};
5497 model->setOperandValue(param68, param68_init, sizeof(int32_t) * 1);
5498 static int32_t param69_init[] = {1};
5499 model->setOperandValue(param69, param69_init, sizeof(int32_t) * 1);
5500 static int32_t param70_init[] = {1};
5501 model->setOperandValue(param70, param70_init, sizeof(int32_t) * 1);
5502 static int32_t param71_init[] = {2};
5503 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
5504 static int32_t param72_init[] = {2};
5505 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
5506 static int32_t param73_init[] = {0};
5507 model->setOperandValue(param73, param73_init, sizeof(int32_t) * 1);
5508 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param55, param56, param57, param58, param59, param60, param61}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
5509 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param62, param63, param64, param65, param66, param67, layout}, {featureMap1});
5510 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap1, param68, param69, param70, param71, param72, param73, layout}, {out1});
5511 // Phase 3, inputs and outputs
5512 model->identifyInputsAndOutputs(
5513 {in1},
5514 {scoresOut1, classesOut1, out1});
5515 assert(model->isValid());
5516 }
5517
is_ignored_zero_sized_nchw_2(int i)5518 inline bool is_ignored_zero_sized_nchw_2(int i) {
5519 static std::set<int> ignore = {};
5520 return ignore.find(i) != ignore.end();
5521 }
5522
CreateModel_zero_sized_nchw_relaxed_2(Model * model)5523 void CreateModel_zero_sized_nchw_relaxed_2(Model *model) {
5524 OperandType type0(Type::BOOL, {});
5525 OperandType type10(Type::TENSOR_INT32, {0});
5526 OperandType type11(Type::TENSOR_FLOAT32, {0, 4});
5527 OperandType type12(Type::TENSOR_INT32, {1});
5528 OperandType type13(Type::FLOAT32, {});
5529 OperandType type14(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
5530 OperandType type2(Type::INT32, {});
5531 OperandType type65(Type::TENSOR_FLOAT32, {0, 1, 2, 2});
5532 OperandType type7(Type::TENSOR_FLOAT32, {1, 2});
5533 OperandType type8(Type::TENSOR_FLOAT32, {1, 8});
5534 OperandType type9(Type::TENSOR_FLOAT32, {0});
5535 // Phase 1, operands
5536 auto scores1 = model->addOperand(&type7);
5537 auto roi1 = model->addOperand(&type8);
5538 auto param55 = model->addOperand(&type12);
5539 auto param56 = model->addOperand(&type13);
5540 auto param57 = model->addOperand(&type2);
5541 auto param58 = model->addOperand(&type2);
5542 auto param59 = model->addOperand(&type13);
5543 auto param60 = model->addOperand(&type13);
5544 auto param61 = model->addOperand(&type13);
5545 auto scoresOut1 = model->addOperand(&type9);
5546 auto roiOut1 = model->addOperand(&type11);
5547 auto classesOut1 = model->addOperand(&type10);
5548 auto batchSplitOut1 = model->addOperand(&type10);
5549 auto in1 = model->addOperand(&type14);
5550 auto param62 = model->addOperand(&type2);
5551 auto param63 = model->addOperand(&type2);
5552 auto param64 = model->addOperand(&type13);
5553 auto param65 = model->addOperand(&type13);
5554 auto param66 = model->addOperand(&type2);
5555 auto param67 = model->addOperand(&type2);
5556 auto layout = model->addOperand(&type0);
5557 auto featureMap1 = model->addOperand(&type65);
5558 auto param68 = model->addOperand(&type2);
5559 auto param69 = model->addOperand(&type2);
5560 auto param70 = model->addOperand(&type2);
5561 auto param71 = model->addOperand(&type2);
5562 auto param72 = model->addOperand(&type2);
5563 auto param73 = model->addOperand(&type2);
5564 auto out1 = model->addOperand(&type65);
5565 // Phase 2, operations
5566 static float scores1_init[] = {0.9f, 0.1f};
5567 model->setOperandValue(scores1, scores1_init, sizeof(float) * 2);
5568 static float roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
5569 model->setOperandValue(roi1, roi1_init, sizeof(float) * 8);
5570 static int32_t param55_init[] = {0};
5571 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
5572 static float param56_init[] = {0.3f};
5573 model->setOperandValue(param56, param56_init, sizeof(float) * 1);
5574 static int32_t param57_init[] = {-1};
5575 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
5576 static int32_t param58_init[] = {0};
5577 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
5578 static float param59_init[] = {0.4f};
5579 model->setOperandValue(param59, param59_init, sizeof(float) * 1);
5580 static float param60_init[] = {1.0f};
5581 model->setOperandValue(param60, param60_init, sizeof(float) * 1);
5582 static float param61_init[] = {0.3f};
5583 model->setOperandValue(param61, param61_init, sizeof(float) * 1);
5584 static int32_t param62_init[] = {2};
5585 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
5586 static int32_t param63_init[] = {2};
5587 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
5588 static float param64_init[] = {2.0f};
5589 model->setOperandValue(param64, param64_init, sizeof(float) * 1);
5590 static float param65_init[] = {2.0f};
5591 model->setOperandValue(param65, param65_init, sizeof(float) * 1);
5592 static int32_t param66_init[] = {4};
5593 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
5594 static int32_t param67_init[] = {4};
5595 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
5596 static bool8 layout_init[] = {true};
5597 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5598 static int32_t param68_init[] = {1};
5599 model->setOperandValue(param68, param68_init, sizeof(int32_t) * 1);
5600 static int32_t param69_init[] = {1};
5601 model->setOperandValue(param69, param69_init, sizeof(int32_t) * 1);
5602 static int32_t param70_init[] = {1};
5603 model->setOperandValue(param70, param70_init, sizeof(int32_t) * 1);
5604 static int32_t param71_init[] = {2};
5605 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
5606 static int32_t param72_init[] = {2};
5607 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
5608 static int32_t param73_init[] = {0};
5609 model->setOperandValue(param73, param73_init, sizeof(int32_t) * 1);
5610 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param55, param56, param57, param58, param59, param60, param61}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
5611 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param62, param63, param64, param65, param66, param67, layout}, {featureMap1});
5612 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap1, param68, param69, param70, param71, param72, param73, layout}, {out1});
5613 // Phase 3, inputs and outputs
5614 model->identifyInputsAndOutputs(
5615 {in1},
5616 {scoresOut1, classesOut1, out1});
5617 // Phase 4: set relaxed execution
5618 model->relaxComputationFloat32toFloat16(true);
5619 assert(model->isValid());
5620 }
5621
is_ignored_zero_sized_nchw_relaxed_2(int i)5622 inline bool is_ignored_zero_sized_nchw_relaxed_2(int i) {
5623 static std::set<int> ignore = {};
5624 return ignore.find(i) != ignore.end();
5625 }
5626
CreateModel_zero_sized_nchw_quant8_2(Model * model)5627 void CreateModel_zero_sized_nchw_quant8_2(Model *model) {
5628 OperandType type0(Type::BOOL, {});
5629 OperandType type10(Type::TENSOR_INT32, {0});
5630 OperandType type12(Type::TENSOR_INT32, {1});
5631 OperandType type13(Type::FLOAT32, {});
5632 OperandType type2(Type::INT32, {});
5633 OperandType type51(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 1}, 0.1f, 128);
5634 OperandType type53(Type::TENSOR_QUANT16_ASYMM, {1, 8}, 0.125f, 0);
5635 OperandType type54(Type::TENSOR_QUANT16_ASYMM, {0, 4}, 0.125f, 0);
5636 OperandType type55(Type::TENSOR_QUANT8_ASYMM, {1, 2}, 0.1f, 128);
5637 OperandType type56(Type::TENSOR_QUANT8_ASYMM, {0}, 0.1f, 128);
5638 OperandType type66(Type::TENSOR_QUANT8_ASYMM, {0, 1, 2, 2}, 0.1f, 128);
5639 // Phase 1, operands
5640 auto scores1 = model->addOperand(&type55);
5641 auto roi1 = model->addOperand(&type53);
5642 auto param55 = model->addOperand(&type12);
5643 auto param56 = model->addOperand(&type13);
5644 auto param57 = model->addOperand(&type2);
5645 auto param58 = model->addOperand(&type2);
5646 auto param59 = model->addOperand(&type13);
5647 auto param60 = model->addOperand(&type13);
5648 auto param61 = model->addOperand(&type13);
5649 auto scoresOut1 = model->addOperand(&type56);
5650 auto roiOut1 = model->addOperand(&type54);
5651 auto classesOut1 = model->addOperand(&type10);
5652 auto batchSplitOut1 = model->addOperand(&type10);
5653 auto in1 = model->addOperand(&type51);
5654 auto param62 = model->addOperand(&type2);
5655 auto param63 = model->addOperand(&type2);
5656 auto param64 = model->addOperand(&type13);
5657 auto param65 = model->addOperand(&type13);
5658 auto param66 = model->addOperand(&type2);
5659 auto param67 = model->addOperand(&type2);
5660 auto layout = model->addOperand(&type0);
5661 auto featureMap1 = model->addOperand(&type66);
5662 auto param68 = model->addOperand(&type2);
5663 auto param69 = model->addOperand(&type2);
5664 auto param70 = model->addOperand(&type2);
5665 auto param71 = model->addOperand(&type2);
5666 auto param72 = model->addOperand(&type2);
5667 auto param73 = model->addOperand(&type2);
5668 auto out1 = model->addOperand(&type66);
5669 // Phase 2, operations
5670 static uint8_t scores1_init[] = {137, 129};
5671 model->setOperandValue(scores1, scores1_init, sizeof(uint8_t) * 2);
5672 static uint16_t roi1_init[] = {8, 8, 80, 80, 0, 0, 80, 80};
5673 model->setOperandValue(roi1, roi1_init, sizeof(uint16_t) * 8);
5674 static int32_t param55_init[] = {0};
5675 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
5676 static float param56_init[] = {0.3f};
5677 model->setOperandValue(param56, param56_init, sizeof(float) * 1);
5678 static int32_t param57_init[] = {-1};
5679 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
5680 static int32_t param58_init[] = {0};
5681 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
5682 static float param59_init[] = {0.4f};
5683 model->setOperandValue(param59, param59_init, sizeof(float) * 1);
5684 static float param60_init[] = {1.0f};
5685 model->setOperandValue(param60, param60_init, sizeof(float) * 1);
5686 static float param61_init[] = {0.3f};
5687 model->setOperandValue(param61, param61_init, sizeof(float) * 1);
5688 static int32_t param62_init[] = {2};
5689 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
5690 static int32_t param63_init[] = {2};
5691 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
5692 static float param64_init[] = {2.0f};
5693 model->setOperandValue(param64, param64_init, sizeof(float) * 1);
5694 static float param65_init[] = {2.0f};
5695 model->setOperandValue(param65, param65_init, sizeof(float) * 1);
5696 static int32_t param66_init[] = {4};
5697 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
5698 static int32_t param67_init[] = {4};
5699 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
5700 static bool8 layout_init[] = {true};
5701 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5702 static int32_t param68_init[] = {1};
5703 model->setOperandValue(param68, param68_init, sizeof(int32_t) * 1);
5704 static int32_t param69_init[] = {1};
5705 model->setOperandValue(param69, param69_init, sizeof(int32_t) * 1);
5706 static int32_t param70_init[] = {1};
5707 model->setOperandValue(param70, param70_init, sizeof(int32_t) * 1);
5708 static int32_t param71_init[] = {2};
5709 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
5710 static int32_t param72_init[] = {2};
5711 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
5712 static int32_t param73_init[] = {0};
5713 model->setOperandValue(param73, param73_init, sizeof(int32_t) * 1);
5714 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param55, param56, param57, param58, param59, param60, param61}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
5715 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param62, param63, param64, param65, param66, param67, layout}, {featureMap1});
5716 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap1, param68, param69, param70, param71, param72, param73, layout}, {out1});
5717 // Phase 3, inputs and outputs
5718 model->identifyInputsAndOutputs(
5719 {in1},
5720 {scoresOut1, classesOut1, out1});
5721 assert(model->isValid());
5722 }
5723
is_ignored_zero_sized_nchw_quant8_2(int i)5724 inline bool is_ignored_zero_sized_nchw_quant8_2(int i) {
5725 static std::set<int> ignore = {};
5726 return ignore.find(i) != ignore.end();
5727 }
5728
CreateModel_zero_sized_nchw_float16_2(Model * model)5729 void CreateModel_zero_sized_nchw_float16_2(Model *model) {
5730 OperandType type0(Type::BOOL, {});
5731 OperandType type10(Type::TENSOR_INT32, {0});
5732 OperandType type12(Type::TENSOR_INT32, {1});
5733 OperandType type2(Type::INT32, {});
5734 OperandType type58(Type::TENSOR_FLOAT16, {1, 1, 1, 1});
5735 OperandType type60(Type::FLOAT16, {});
5736 OperandType type61(Type::TENSOR_FLOAT16, {1, 8});
5737 OperandType type62(Type::TENSOR_FLOAT16, {0, 4});
5738 OperandType type63(Type::TENSOR_FLOAT16, {1, 2});
5739 OperandType type64(Type::TENSOR_FLOAT16, {0});
5740 OperandType type67(Type::TENSOR_FLOAT16, {0, 1, 2, 2});
5741 // Phase 1, operands
5742 auto scores1 = model->addOperand(&type63);
5743 auto roi1 = model->addOperand(&type61);
5744 auto param55 = model->addOperand(&type12);
5745 auto param56 = model->addOperand(&type60);
5746 auto param57 = model->addOperand(&type2);
5747 auto param58 = model->addOperand(&type2);
5748 auto param59 = model->addOperand(&type60);
5749 auto param60 = model->addOperand(&type60);
5750 auto param61 = model->addOperand(&type60);
5751 auto scoresOut1 = model->addOperand(&type64);
5752 auto roiOut1 = model->addOperand(&type62);
5753 auto classesOut1 = model->addOperand(&type10);
5754 auto batchSplitOut1 = model->addOperand(&type10);
5755 auto in1 = model->addOperand(&type58);
5756 auto param62 = model->addOperand(&type2);
5757 auto param63 = model->addOperand(&type2);
5758 auto param64 = model->addOperand(&type60);
5759 auto param65 = model->addOperand(&type60);
5760 auto param66 = model->addOperand(&type2);
5761 auto param67 = model->addOperand(&type2);
5762 auto layout = model->addOperand(&type0);
5763 auto featureMap1 = model->addOperand(&type67);
5764 auto param68 = model->addOperand(&type2);
5765 auto param69 = model->addOperand(&type2);
5766 auto param70 = model->addOperand(&type2);
5767 auto param71 = model->addOperand(&type2);
5768 auto param72 = model->addOperand(&type2);
5769 auto param73 = model->addOperand(&type2);
5770 auto out1 = model->addOperand(&type67);
5771 // Phase 2, operations
5772 static _Float16 scores1_init[] = {0.8999999761581421f, 0.10000000149011612f};
5773 model->setOperandValue(scores1, scores1_init, sizeof(_Float16) * 2);
5774 static _Float16 roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
5775 model->setOperandValue(roi1, roi1_init, sizeof(_Float16) * 8);
5776 static int32_t param55_init[] = {0};
5777 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
5778 static _Float16 param56_init[] = {0.30000001192092896f};
5779 model->setOperandValue(param56, param56_init, sizeof(_Float16) * 1);
5780 static int32_t param57_init[] = {-1};
5781 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
5782 static int32_t param58_init[] = {0};
5783 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
5784 static _Float16 param59_init[] = {0.4000000059604645f};
5785 model->setOperandValue(param59, param59_init, sizeof(_Float16) * 1);
5786 static _Float16 param60_init[] = {1.0f};
5787 model->setOperandValue(param60, param60_init, sizeof(_Float16) * 1);
5788 static _Float16 param61_init[] = {0.30000001192092896f};
5789 model->setOperandValue(param61, param61_init, sizeof(_Float16) * 1);
5790 static int32_t param62_init[] = {2};
5791 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
5792 static int32_t param63_init[] = {2};
5793 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
5794 static _Float16 param64_init[] = {2.0f};
5795 model->setOperandValue(param64, param64_init, sizeof(_Float16) * 1);
5796 static _Float16 param65_init[] = {2.0f};
5797 model->setOperandValue(param65, param65_init, sizeof(_Float16) * 1);
5798 static int32_t param66_init[] = {4};
5799 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
5800 static int32_t param67_init[] = {4};
5801 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
5802 static bool8 layout_init[] = {true};
5803 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5804 static int32_t param68_init[] = {1};
5805 model->setOperandValue(param68, param68_init, sizeof(int32_t) * 1);
5806 static int32_t param69_init[] = {1};
5807 model->setOperandValue(param69, param69_init, sizeof(int32_t) * 1);
5808 static int32_t param70_init[] = {1};
5809 model->setOperandValue(param70, param70_init, sizeof(int32_t) * 1);
5810 static int32_t param71_init[] = {2};
5811 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
5812 static int32_t param72_init[] = {2};
5813 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
5814 static int32_t param73_init[] = {0};
5815 model->setOperandValue(param73, param73_init, sizeof(int32_t) * 1);
5816 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param55, param56, param57, param58, param59, param60, param61}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
5817 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param62, param63, param64, param65, param66, param67, layout}, {featureMap1});
5818 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap1, param68, param69, param70, param71, param72, param73, layout}, {out1});
5819 // Phase 3, inputs and outputs
5820 model->identifyInputsAndOutputs(
5821 {in1},
5822 {scoresOut1, classesOut1, out1});
5823 assert(model->isValid());
5824 }
5825
is_ignored_zero_sized_nchw_float16_2(int i)5826 inline bool is_ignored_zero_sized_nchw_float16_2(int i) {
5827 static std::set<int> ignore = {};
5828 return ignore.find(i) != ignore.end();
5829 }
5830
CreateModel_zero_sized_dynamic_output_shape_nhwc_2(Model * model)5831 void CreateModel_zero_sized_dynamic_output_shape_nhwc_2(Model *model) {
5832 OperandType type0(Type::BOOL, {});
5833 OperandType type10(Type::TENSOR_INT32, {0});
5834 OperandType type11(Type::TENSOR_FLOAT32, {0, 4});
5835 OperandType type12(Type::TENSOR_INT32, {1});
5836 OperandType type13(Type::FLOAT32, {});
5837 OperandType type14(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
5838 OperandType type15(Type::TENSOR_FLOAT32, {0, 2, 2, 1});
5839 OperandType type2(Type::INT32, {});
5840 OperandType type22(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
5841 OperandType type7(Type::TENSOR_FLOAT32, {1, 2});
5842 OperandType type8(Type::TENSOR_FLOAT32, {1, 8});
5843 OperandType type9(Type::TENSOR_FLOAT32, {0});
5844 // Phase 1, operands
5845 auto scores1 = model->addOperand(&type7);
5846 auto roi1 = model->addOperand(&type8);
5847 auto param55 = model->addOperand(&type12);
5848 auto param56 = model->addOperand(&type13);
5849 auto param57 = model->addOperand(&type2);
5850 auto param58 = model->addOperand(&type2);
5851 auto param59 = model->addOperand(&type13);
5852 auto param60 = model->addOperand(&type13);
5853 auto param61 = model->addOperand(&type13);
5854 auto scoresOut1 = model->addOperand(&type9);
5855 auto roiOut1 = model->addOperand(&type11);
5856 auto classesOut1 = model->addOperand(&type10);
5857 auto batchSplitOut1 = model->addOperand(&type10);
5858 auto in1 = model->addOperand(&type14);
5859 auto param62 = model->addOperand(&type2);
5860 auto param63 = model->addOperand(&type2);
5861 auto param64 = model->addOperand(&type13);
5862 auto param65 = model->addOperand(&type13);
5863 auto param66 = model->addOperand(&type2);
5864 auto param67 = model->addOperand(&type2);
5865 auto layout = model->addOperand(&type0);
5866 auto featureMap1 = model->addOperand(&type15);
5867 auto param68 = model->addOperand(&type2);
5868 auto param69 = model->addOperand(&type2);
5869 auto param70 = model->addOperand(&type2);
5870 auto param71 = model->addOperand(&type2);
5871 auto param72 = model->addOperand(&type2);
5872 auto param73 = model->addOperand(&type2);
5873 auto out1 = model->addOperand(&type22);
5874 // Phase 2, operations
5875 static float scores1_init[] = {0.9f, 0.1f};
5876 model->setOperandValue(scores1, scores1_init, sizeof(float) * 2);
5877 static float roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
5878 model->setOperandValue(roi1, roi1_init, sizeof(float) * 8);
5879 static int32_t param55_init[] = {0};
5880 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
5881 static float param56_init[] = {0.3f};
5882 model->setOperandValue(param56, param56_init, sizeof(float) * 1);
5883 static int32_t param57_init[] = {-1};
5884 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
5885 static int32_t param58_init[] = {0};
5886 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
5887 static float param59_init[] = {0.4f};
5888 model->setOperandValue(param59, param59_init, sizeof(float) * 1);
5889 static float param60_init[] = {1.0f};
5890 model->setOperandValue(param60, param60_init, sizeof(float) * 1);
5891 static float param61_init[] = {0.3f};
5892 model->setOperandValue(param61, param61_init, sizeof(float) * 1);
5893 static int32_t param62_init[] = {2};
5894 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
5895 static int32_t param63_init[] = {2};
5896 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
5897 static float param64_init[] = {2.0f};
5898 model->setOperandValue(param64, param64_init, sizeof(float) * 1);
5899 static float param65_init[] = {2.0f};
5900 model->setOperandValue(param65, param65_init, sizeof(float) * 1);
5901 static int32_t param66_init[] = {4};
5902 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
5903 static int32_t param67_init[] = {4};
5904 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
5905 static bool8 layout_init[] = {false};
5906 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5907 static int32_t param68_init[] = {1};
5908 model->setOperandValue(param68, param68_init, sizeof(int32_t) * 1);
5909 static int32_t param69_init[] = {1};
5910 model->setOperandValue(param69, param69_init, sizeof(int32_t) * 1);
5911 static int32_t param70_init[] = {1};
5912 model->setOperandValue(param70, param70_init, sizeof(int32_t) * 1);
5913 static int32_t param71_init[] = {2};
5914 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
5915 static int32_t param72_init[] = {2};
5916 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
5917 static int32_t param73_init[] = {0};
5918 model->setOperandValue(param73, param73_init, sizeof(int32_t) * 1);
5919 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param55, param56, param57, param58, param59, param60, param61}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
5920 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param62, param63, param64, param65, param66, param67, layout}, {featureMap1});
5921 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap1, param68, param69, param70, param71, param72, param73, layout}, {out1});
5922 // Phase 3, inputs and outputs
5923 model->identifyInputsAndOutputs(
5924 {in1},
5925 {scoresOut1, classesOut1, out1});
5926 assert(model->isValid());
5927 }
5928
is_ignored_zero_sized_dynamic_output_shape_nhwc_2(int i)5929 inline bool is_ignored_zero_sized_dynamic_output_shape_nhwc_2(int i) {
5930 static std::set<int> ignore = {};
5931 return ignore.find(i) != ignore.end();
5932 }
5933
CreateModel_zero_sized_dynamic_output_shape_nhwc_relaxed_2(Model * model)5934 void CreateModel_zero_sized_dynamic_output_shape_nhwc_relaxed_2(Model *model) {
5935 OperandType type0(Type::BOOL, {});
5936 OperandType type10(Type::TENSOR_INT32, {0});
5937 OperandType type11(Type::TENSOR_FLOAT32, {0, 4});
5938 OperandType type12(Type::TENSOR_INT32, {1});
5939 OperandType type13(Type::FLOAT32, {});
5940 OperandType type14(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
5941 OperandType type15(Type::TENSOR_FLOAT32, {0, 2, 2, 1});
5942 OperandType type2(Type::INT32, {});
5943 OperandType type22(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
5944 OperandType type7(Type::TENSOR_FLOAT32, {1, 2});
5945 OperandType type8(Type::TENSOR_FLOAT32, {1, 8});
5946 OperandType type9(Type::TENSOR_FLOAT32, {0});
5947 // Phase 1, operands
5948 auto scores1 = model->addOperand(&type7);
5949 auto roi1 = model->addOperand(&type8);
5950 auto param55 = model->addOperand(&type12);
5951 auto param56 = model->addOperand(&type13);
5952 auto param57 = model->addOperand(&type2);
5953 auto param58 = model->addOperand(&type2);
5954 auto param59 = model->addOperand(&type13);
5955 auto param60 = model->addOperand(&type13);
5956 auto param61 = model->addOperand(&type13);
5957 auto scoresOut1 = model->addOperand(&type9);
5958 auto roiOut1 = model->addOperand(&type11);
5959 auto classesOut1 = model->addOperand(&type10);
5960 auto batchSplitOut1 = model->addOperand(&type10);
5961 auto in1 = model->addOperand(&type14);
5962 auto param62 = model->addOperand(&type2);
5963 auto param63 = model->addOperand(&type2);
5964 auto param64 = model->addOperand(&type13);
5965 auto param65 = model->addOperand(&type13);
5966 auto param66 = model->addOperand(&type2);
5967 auto param67 = model->addOperand(&type2);
5968 auto layout = model->addOperand(&type0);
5969 auto featureMap1 = model->addOperand(&type15);
5970 auto param68 = model->addOperand(&type2);
5971 auto param69 = model->addOperand(&type2);
5972 auto param70 = model->addOperand(&type2);
5973 auto param71 = model->addOperand(&type2);
5974 auto param72 = model->addOperand(&type2);
5975 auto param73 = model->addOperand(&type2);
5976 auto out1 = model->addOperand(&type22);
5977 // Phase 2, operations
5978 static float scores1_init[] = {0.9f, 0.1f};
5979 model->setOperandValue(scores1, scores1_init, sizeof(float) * 2);
5980 static float roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
5981 model->setOperandValue(roi1, roi1_init, sizeof(float) * 8);
5982 static int32_t param55_init[] = {0};
5983 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
5984 static float param56_init[] = {0.3f};
5985 model->setOperandValue(param56, param56_init, sizeof(float) * 1);
5986 static int32_t param57_init[] = {-1};
5987 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
5988 static int32_t param58_init[] = {0};
5989 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
5990 static float param59_init[] = {0.4f};
5991 model->setOperandValue(param59, param59_init, sizeof(float) * 1);
5992 static float param60_init[] = {1.0f};
5993 model->setOperandValue(param60, param60_init, sizeof(float) * 1);
5994 static float param61_init[] = {0.3f};
5995 model->setOperandValue(param61, param61_init, sizeof(float) * 1);
5996 static int32_t param62_init[] = {2};
5997 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
5998 static int32_t param63_init[] = {2};
5999 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
6000 static float param64_init[] = {2.0f};
6001 model->setOperandValue(param64, param64_init, sizeof(float) * 1);
6002 static float param65_init[] = {2.0f};
6003 model->setOperandValue(param65, param65_init, sizeof(float) * 1);
6004 static int32_t param66_init[] = {4};
6005 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
6006 static int32_t param67_init[] = {4};
6007 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
6008 static bool8 layout_init[] = {false};
6009 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6010 static int32_t param68_init[] = {1};
6011 model->setOperandValue(param68, param68_init, sizeof(int32_t) * 1);
6012 static int32_t param69_init[] = {1};
6013 model->setOperandValue(param69, param69_init, sizeof(int32_t) * 1);
6014 static int32_t param70_init[] = {1};
6015 model->setOperandValue(param70, param70_init, sizeof(int32_t) * 1);
6016 static int32_t param71_init[] = {2};
6017 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
6018 static int32_t param72_init[] = {2};
6019 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
6020 static int32_t param73_init[] = {0};
6021 model->setOperandValue(param73, param73_init, sizeof(int32_t) * 1);
6022 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param55, param56, param57, param58, param59, param60, param61}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
6023 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param62, param63, param64, param65, param66, param67, layout}, {featureMap1});
6024 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap1, param68, param69, param70, param71, param72, param73, layout}, {out1});
6025 // Phase 3, inputs and outputs
6026 model->identifyInputsAndOutputs(
6027 {in1},
6028 {scoresOut1, classesOut1, out1});
6029 // Phase 4: set relaxed execution
6030 model->relaxComputationFloat32toFloat16(true);
6031 assert(model->isValid());
6032 }
6033
is_ignored_zero_sized_dynamic_output_shape_nhwc_relaxed_2(int i)6034 inline bool is_ignored_zero_sized_dynamic_output_shape_nhwc_relaxed_2(int i) {
6035 static std::set<int> ignore = {};
6036 return ignore.find(i) != ignore.end();
6037 }
6038
CreateModel_zero_sized_dynamic_output_shape_nhwc_quant8_2(Model * model)6039 void CreateModel_zero_sized_dynamic_output_shape_nhwc_quant8_2(Model *model) {
6040 OperandType type0(Type::BOOL, {});
6041 OperandType type10(Type::TENSOR_INT32, {0});
6042 OperandType type12(Type::TENSOR_INT32, {1});
6043 OperandType type13(Type::FLOAT32, {});
6044 OperandType type2(Type::INT32, {});
6045 OperandType type50(Type::TENSOR_QUANT8_ASYMM, {0, 2, 2, 1}, 0.1f, 128);
6046 OperandType type51(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 1}, 0.1f, 128);
6047 OperandType type53(Type::TENSOR_QUANT16_ASYMM, {1, 8}, 0.125f, 0);
6048 OperandType type54(Type::TENSOR_QUANT16_ASYMM, {0, 4}, 0.125f, 0);
6049 OperandType type55(Type::TENSOR_QUANT8_ASYMM, {1, 2}, 0.1f, 128);
6050 OperandType type56(Type::TENSOR_QUANT8_ASYMM, {0}, 0.1f, 128);
6051 OperandType type68(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.1f, 128);
6052 // Phase 1, operands
6053 auto scores1 = model->addOperand(&type55);
6054 auto roi1 = model->addOperand(&type53);
6055 auto param55 = model->addOperand(&type12);
6056 auto param56 = model->addOperand(&type13);
6057 auto param57 = model->addOperand(&type2);
6058 auto param58 = model->addOperand(&type2);
6059 auto param59 = model->addOperand(&type13);
6060 auto param60 = model->addOperand(&type13);
6061 auto param61 = model->addOperand(&type13);
6062 auto scoresOut1 = model->addOperand(&type56);
6063 auto roiOut1 = model->addOperand(&type54);
6064 auto classesOut1 = model->addOperand(&type10);
6065 auto batchSplitOut1 = model->addOperand(&type10);
6066 auto in1 = model->addOperand(&type51);
6067 auto param62 = model->addOperand(&type2);
6068 auto param63 = model->addOperand(&type2);
6069 auto param64 = model->addOperand(&type13);
6070 auto param65 = model->addOperand(&type13);
6071 auto param66 = model->addOperand(&type2);
6072 auto param67 = model->addOperand(&type2);
6073 auto layout = model->addOperand(&type0);
6074 auto featureMap1 = model->addOperand(&type50);
6075 auto param68 = model->addOperand(&type2);
6076 auto param69 = model->addOperand(&type2);
6077 auto param70 = model->addOperand(&type2);
6078 auto param71 = model->addOperand(&type2);
6079 auto param72 = model->addOperand(&type2);
6080 auto param73 = model->addOperand(&type2);
6081 auto out1 = model->addOperand(&type68);
6082 // Phase 2, operations
6083 static uint8_t scores1_init[] = {137, 129};
6084 model->setOperandValue(scores1, scores1_init, sizeof(uint8_t) * 2);
6085 static uint16_t roi1_init[] = {8, 8, 80, 80, 0, 0, 80, 80};
6086 model->setOperandValue(roi1, roi1_init, sizeof(uint16_t) * 8);
6087 static int32_t param55_init[] = {0};
6088 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
6089 static float param56_init[] = {0.3f};
6090 model->setOperandValue(param56, param56_init, sizeof(float) * 1);
6091 static int32_t param57_init[] = {-1};
6092 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
6093 static int32_t param58_init[] = {0};
6094 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
6095 static float param59_init[] = {0.4f};
6096 model->setOperandValue(param59, param59_init, sizeof(float) * 1);
6097 static float param60_init[] = {1.0f};
6098 model->setOperandValue(param60, param60_init, sizeof(float) * 1);
6099 static float param61_init[] = {0.3f};
6100 model->setOperandValue(param61, param61_init, sizeof(float) * 1);
6101 static int32_t param62_init[] = {2};
6102 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
6103 static int32_t param63_init[] = {2};
6104 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
6105 static float param64_init[] = {2.0f};
6106 model->setOperandValue(param64, param64_init, sizeof(float) * 1);
6107 static float param65_init[] = {2.0f};
6108 model->setOperandValue(param65, param65_init, sizeof(float) * 1);
6109 static int32_t param66_init[] = {4};
6110 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
6111 static int32_t param67_init[] = {4};
6112 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
6113 static bool8 layout_init[] = {false};
6114 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6115 static int32_t param68_init[] = {1};
6116 model->setOperandValue(param68, param68_init, sizeof(int32_t) * 1);
6117 static int32_t param69_init[] = {1};
6118 model->setOperandValue(param69, param69_init, sizeof(int32_t) * 1);
6119 static int32_t param70_init[] = {1};
6120 model->setOperandValue(param70, param70_init, sizeof(int32_t) * 1);
6121 static int32_t param71_init[] = {2};
6122 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
6123 static int32_t param72_init[] = {2};
6124 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
6125 static int32_t param73_init[] = {0};
6126 model->setOperandValue(param73, param73_init, sizeof(int32_t) * 1);
6127 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param55, param56, param57, param58, param59, param60, param61}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
6128 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param62, param63, param64, param65, param66, param67, layout}, {featureMap1});
6129 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap1, param68, param69, param70, param71, param72, param73, layout}, {out1});
6130 // Phase 3, inputs and outputs
6131 model->identifyInputsAndOutputs(
6132 {in1},
6133 {scoresOut1, classesOut1, out1});
6134 assert(model->isValid());
6135 }
6136
is_ignored_zero_sized_dynamic_output_shape_nhwc_quant8_2(int i)6137 inline bool is_ignored_zero_sized_dynamic_output_shape_nhwc_quant8_2(int i) {
6138 static std::set<int> ignore = {};
6139 return ignore.find(i) != ignore.end();
6140 }
6141
CreateModel_zero_sized_dynamic_output_shape_nhwc_float16_2(Model * model)6142 void CreateModel_zero_sized_dynamic_output_shape_nhwc_float16_2(Model *model) {
6143 OperandType type0(Type::BOOL, {});
6144 OperandType type10(Type::TENSOR_INT32, {0});
6145 OperandType type12(Type::TENSOR_INT32, {1});
6146 OperandType type2(Type::INT32, {});
6147 OperandType type24(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
6148 OperandType type57(Type::TENSOR_FLOAT16, {0, 2, 2, 1});
6149 OperandType type58(Type::TENSOR_FLOAT16, {1, 1, 1, 1});
6150 OperandType type60(Type::FLOAT16, {});
6151 OperandType type61(Type::TENSOR_FLOAT16, {1, 8});
6152 OperandType type62(Type::TENSOR_FLOAT16, {0, 4});
6153 OperandType type63(Type::TENSOR_FLOAT16, {1, 2});
6154 OperandType type69(Type::TENSOR_FLOAT16, {0});
6155 // Phase 1, operands
6156 auto scores1 = model->addOperand(&type63);
6157 auto roi1 = model->addOperand(&type61);
6158 auto param55 = model->addOperand(&type12);
6159 auto param56 = model->addOperand(&type60);
6160 auto param57 = model->addOperand(&type2);
6161 auto param58 = model->addOperand(&type2);
6162 auto param59 = model->addOperand(&type60);
6163 auto param60 = model->addOperand(&type60);
6164 auto param61 = model->addOperand(&type60);
6165 auto scoresOut1 = model->addOperand(&type69);
6166 auto roiOut1 = model->addOperand(&type62);
6167 auto classesOut1 = model->addOperand(&type10);
6168 auto batchSplitOut1 = model->addOperand(&type10);
6169 auto in1 = model->addOperand(&type58);
6170 auto param62 = model->addOperand(&type2);
6171 auto param63 = model->addOperand(&type2);
6172 auto param64 = model->addOperand(&type60);
6173 auto param65 = model->addOperand(&type60);
6174 auto param66 = model->addOperand(&type2);
6175 auto param67 = model->addOperand(&type2);
6176 auto layout = model->addOperand(&type0);
6177 auto featureMap1 = model->addOperand(&type57);
6178 auto param68 = model->addOperand(&type2);
6179 auto param69 = model->addOperand(&type2);
6180 auto param70 = model->addOperand(&type2);
6181 auto param71 = model->addOperand(&type2);
6182 auto param72 = model->addOperand(&type2);
6183 auto param73 = model->addOperand(&type2);
6184 auto out1 = model->addOperand(&type24);
6185 // Phase 2, operations
6186 static _Float16 scores1_init[] = {0.8999999761581421f, 0.10000000149011612f};
6187 model->setOperandValue(scores1, scores1_init, sizeof(_Float16) * 2);
6188 static _Float16 roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
6189 model->setOperandValue(roi1, roi1_init, sizeof(_Float16) * 8);
6190 static int32_t param55_init[] = {0};
6191 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
6192 static _Float16 param56_init[] = {0.30000001192092896f};
6193 model->setOperandValue(param56, param56_init, sizeof(_Float16) * 1);
6194 static int32_t param57_init[] = {-1};
6195 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
6196 static int32_t param58_init[] = {0};
6197 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
6198 static _Float16 param59_init[] = {0.4000000059604645f};
6199 model->setOperandValue(param59, param59_init, sizeof(_Float16) * 1);
6200 static _Float16 param60_init[] = {1.0f};
6201 model->setOperandValue(param60, param60_init, sizeof(_Float16) * 1);
6202 static _Float16 param61_init[] = {0.30000001192092896f};
6203 model->setOperandValue(param61, param61_init, sizeof(_Float16) * 1);
6204 static int32_t param62_init[] = {2};
6205 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
6206 static int32_t param63_init[] = {2};
6207 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
6208 static _Float16 param64_init[] = {2.0f};
6209 model->setOperandValue(param64, param64_init, sizeof(_Float16) * 1);
6210 static _Float16 param65_init[] = {2.0f};
6211 model->setOperandValue(param65, param65_init, sizeof(_Float16) * 1);
6212 static int32_t param66_init[] = {4};
6213 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
6214 static int32_t param67_init[] = {4};
6215 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
6216 static bool8 layout_init[] = {false};
6217 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6218 static int32_t param68_init[] = {1};
6219 model->setOperandValue(param68, param68_init, sizeof(int32_t) * 1);
6220 static int32_t param69_init[] = {1};
6221 model->setOperandValue(param69, param69_init, sizeof(int32_t) * 1);
6222 static int32_t param70_init[] = {1};
6223 model->setOperandValue(param70, param70_init, sizeof(int32_t) * 1);
6224 static int32_t param71_init[] = {2};
6225 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
6226 static int32_t param72_init[] = {2};
6227 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
6228 static int32_t param73_init[] = {0};
6229 model->setOperandValue(param73, param73_init, sizeof(int32_t) * 1);
6230 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param55, param56, param57, param58, param59, param60, param61}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
6231 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param62, param63, param64, param65, param66, param67, layout}, {featureMap1});
6232 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap1, param68, param69, param70, param71, param72, param73, layout}, {out1});
6233 // Phase 3, inputs and outputs
6234 model->identifyInputsAndOutputs(
6235 {in1},
6236 {scoresOut1, classesOut1, out1});
6237 assert(model->isValid());
6238 }
6239
is_ignored_zero_sized_dynamic_output_shape_nhwc_float16_2(int i)6240 inline bool is_ignored_zero_sized_dynamic_output_shape_nhwc_float16_2(int i) {
6241 static std::set<int> ignore = {};
6242 return ignore.find(i) != ignore.end();
6243 }
6244
CreateModel_zero_sized_dynamic_output_shape_nchw_2(Model * model)6245 void CreateModel_zero_sized_dynamic_output_shape_nchw_2(Model *model) {
6246 OperandType type0(Type::BOOL, {});
6247 OperandType type10(Type::TENSOR_INT32, {0});
6248 OperandType type11(Type::TENSOR_FLOAT32, {0, 4});
6249 OperandType type12(Type::TENSOR_INT32, {1});
6250 OperandType type13(Type::FLOAT32, {});
6251 OperandType type14(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
6252 OperandType type2(Type::INT32, {});
6253 OperandType type22(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
6254 OperandType type65(Type::TENSOR_FLOAT32, {0, 1, 2, 2});
6255 OperandType type7(Type::TENSOR_FLOAT32, {1, 2});
6256 OperandType type8(Type::TENSOR_FLOAT32, {1, 8});
6257 OperandType type9(Type::TENSOR_FLOAT32, {0});
6258 // Phase 1, operands
6259 auto scores1 = model->addOperand(&type7);
6260 auto roi1 = model->addOperand(&type8);
6261 auto param55 = model->addOperand(&type12);
6262 auto param56 = model->addOperand(&type13);
6263 auto param57 = model->addOperand(&type2);
6264 auto param58 = model->addOperand(&type2);
6265 auto param59 = model->addOperand(&type13);
6266 auto param60 = model->addOperand(&type13);
6267 auto param61 = model->addOperand(&type13);
6268 auto scoresOut1 = model->addOperand(&type9);
6269 auto roiOut1 = model->addOperand(&type11);
6270 auto classesOut1 = model->addOperand(&type10);
6271 auto batchSplitOut1 = model->addOperand(&type10);
6272 auto in1 = model->addOperand(&type14);
6273 auto param62 = model->addOperand(&type2);
6274 auto param63 = model->addOperand(&type2);
6275 auto param64 = model->addOperand(&type13);
6276 auto param65 = model->addOperand(&type13);
6277 auto param66 = model->addOperand(&type2);
6278 auto param67 = model->addOperand(&type2);
6279 auto layout = model->addOperand(&type0);
6280 auto featureMap1 = model->addOperand(&type65);
6281 auto param68 = model->addOperand(&type2);
6282 auto param69 = model->addOperand(&type2);
6283 auto param70 = model->addOperand(&type2);
6284 auto param71 = model->addOperand(&type2);
6285 auto param72 = model->addOperand(&type2);
6286 auto param73 = model->addOperand(&type2);
6287 auto out1 = model->addOperand(&type22);
6288 // Phase 2, operations
6289 static float scores1_init[] = {0.9f, 0.1f};
6290 model->setOperandValue(scores1, scores1_init, sizeof(float) * 2);
6291 static float roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
6292 model->setOperandValue(roi1, roi1_init, sizeof(float) * 8);
6293 static int32_t param55_init[] = {0};
6294 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
6295 static float param56_init[] = {0.3f};
6296 model->setOperandValue(param56, param56_init, sizeof(float) * 1);
6297 static int32_t param57_init[] = {-1};
6298 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
6299 static int32_t param58_init[] = {0};
6300 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
6301 static float param59_init[] = {0.4f};
6302 model->setOperandValue(param59, param59_init, sizeof(float) * 1);
6303 static float param60_init[] = {1.0f};
6304 model->setOperandValue(param60, param60_init, sizeof(float) * 1);
6305 static float param61_init[] = {0.3f};
6306 model->setOperandValue(param61, param61_init, sizeof(float) * 1);
6307 static int32_t param62_init[] = {2};
6308 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
6309 static int32_t param63_init[] = {2};
6310 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
6311 static float param64_init[] = {2.0f};
6312 model->setOperandValue(param64, param64_init, sizeof(float) * 1);
6313 static float param65_init[] = {2.0f};
6314 model->setOperandValue(param65, param65_init, sizeof(float) * 1);
6315 static int32_t param66_init[] = {4};
6316 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
6317 static int32_t param67_init[] = {4};
6318 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
6319 static bool8 layout_init[] = {true};
6320 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6321 static int32_t param68_init[] = {1};
6322 model->setOperandValue(param68, param68_init, sizeof(int32_t) * 1);
6323 static int32_t param69_init[] = {1};
6324 model->setOperandValue(param69, param69_init, sizeof(int32_t) * 1);
6325 static int32_t param70_init[] = {1};
6326 model->setOperandValue(param70, param70_init, sizeof(int32_t) * 1);
6327 static int32_t param71_init[] = {2};
6328 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
6329 static int32_t param72_init[] = {2};
6330 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
6331 static int32_t param73_init[] = {0};
6332 model->setOperandValue(param73, param73_init, sizeof(int32_t) * 1);
6333 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param55, param56, param57, param58, param59, param60, param61}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
6334 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param62, param63, param64, param65, param66, param67, layout}, {featureMap1});
6335 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap1, param68, param69, param70, param71, param72, param73, layout}, {out1});
6336 // Phase 3, inputs and outputs
6337 model->identifyInputsAndOutputs(
6338 {in1},
6339 {scoresOut1, classesOut1, out1});
6340 assert(model->isValid());
6341 }
6342
is_ignored_zero_sized_dynamic_output_shape_nchw_2(int i)6343 inline bool is_ignored_zero_sized_dynamic_output_shape_nchw_2(int i) {
6344 static std::set<int> ignore = {};
6345 return ignore.find(i) != ignore.end();
6346 }
6347
CreateModel_zero_sized_dynamic_output_shape_nchw_relaxed_2(Model * model)6348 void CreateModel_zero_sized_dynamic_output_shape_nchw_relaxed_2(Model *model) {
6349 OperandType type0(Type::BOOL, {});
6350 OperandType type10(Type::TENSOR_INT32, {0});
6351 OperandType type11(Type::TENSOR_FLOAT32, {0, 4});
6352 OperandType type12(Type::TENSOR_INT32, {1});
6353 OperandType type13(Type::FLOAT32, {});
6354 OperandType type14(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
6355 OperandType type2(Type::INT32, {});
6356 OperandType type22(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
6357 OperandType type65(Type::TENSOR_FLOAT32, {0, 1, 2, 2});
6358 OperandType type7(Type::TENSOR_FLOAT32, {1, 2});
6359 OperandType type8(Type::TENSOR_FLOAT32, {1, 8});
6360 OperandType type9(Type::TENSOR_FLOAT32, {0});
6361 // Phase 1, operands
6362 auto scores1 = model->addOperand(&type7);
6363 auto roi1 = model->addOperand(&type8);
6364 auto param55 = model->addOperand(&type12);
6365 auto param56 = model->addOperand(&type13);
6366 auto param57 = model->addOperand(&type2);
6367 auto param58 = model->addOperand(&type2);
6368 auto param59 = model->addOperand(&type13);
6369 auto param60 = model->addOperand(&type13);
6370 auto param61 = model->addOperand(&type13);
6371 auto scoresOut1 = model->addOperand(&type9);
6372 auto roiOut1 = model->addOperand(&type11);
6373 auto classesOut1 = model->addOperand(&type10);
6374 auto batchSplitOut1 = model->addOperand(&type10);
6375 auto in1 = model->addOperand(&type14);
6376 auto param62 = model->addOperand(&type2);
6377 auto param63 = model->addOperand(&type2);
6378 auto param64 = model->addOperand(&type13);
6379 auto param65 = model->addOperand(&type13);
6380 auto param66 = model->addOperand(&type2);
6381 auto param67 = model->addOperand(&type2);
6382 auto layout = model->addOperand(&type0);
6383 auto featureMap1 = model->addOperand(&type65);
6384 auto param68 = model->addOperand(&type2);
6385 auto param69 = model->addOperand(&type2);
6386 auto param70 = model->addOperand(&type2);
6387 auto param71 = model->addOperand(&type2);
6388 auto param72 = model->addOperand(&type2);
6389 auto param73 = model->addOperand(&type2);
6390 auto out1 = model->addOperand(&type22);
6391 // Phase 2, operations
6392 static float scores1_init[] = {0.9f, 0.1f};
6393 model->setOperandValue(scores1, scores1_init, sizeof(float) * 2);
6394 static float roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
6395 model->setOperandValue(roi1, roi1_init, sizeof(float) * 8);
6396 static int32_t param55_init[] = {0};
6397 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
6398 static float param56_init[] = {0.3f};
6399 model->setOperandValue(param56, param56_init, sizeof(float) * 1);
6400 static int32_t param57_init[] = {-1};
6401 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
6402 static int32_t param58_init[] = {0};
6403 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
6404 static float param59_init[] = {0.4f};
6405 model->setOperandValue(param59, param59_init, sizeof(float) * 1);
6406 static float param60_init[] = {1.0f};
6407 model->setOperandValue(param60, param60_init, sizeof(float) * 1);
6408 static float param61_init[] = {0.3f};
6409 model->setOperandValue(param61, param61_init, sizeof(float) * 1);
6410 static int32_t param62_init[] = {2};
6411 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
6412 static int32_t param63_init[] = {2};
6413 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
6414 static float param64_init[] = {2.0f};
6415 model->setOperandValue(param64, param64_init, sizeof(float) * 1);
6416 static float param65_init[] = {2.0f};
6417 model->setOperandValue(param65, param65_init, sizeof(float) * 1);
6418 static int32_t param66_init[] = {4};
6419 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
6420 static int32_t param67_init[] = {4};
6421 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
6422 static bool8 layout_init[] = {true};
6423 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6424 static int32_t param68_init[] = {1};
6425 model->setOperandValue(param68, param68_init, sizeof(int32_t) * 1);
6426 static int32_t param69_init[] = {1};
6427 model->setOperandValue(param69, param69_init, sizeof(int32_t) * 1);
6428 static int32_t param70_init[] = {1};
6429 model->setOperandValue(param70, param70_init, sizeof(int32_t) * 1);
6430 static int32_t param71_init[] = {2};
6431 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
6432 static int32_t param72_init[] = {2};
6433 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
6434 static int32_t param73_init[] = {0};
6435 model->setOperandValue(param73, param73_init, sizeof(int32_t) * 1);
6436 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param55, param56, param57, param58, param59, param60, param61}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
6437 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param62, param63, param64, param65, param66, param67, layout}, {featureMap1});
6438 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap1, param68, param69, param70, param71, param72, param73, layout}, {out1});
6439 // Phase 3, inputs and outputs
6440 model->identifyInputsAndOutputs(
6441 {in1},
6442 {scoresOut1, classesOut1, out1});
6443 // Phase 4: set relaxed execution
6444 model->relaxComputationFloat32toFloat16(true);
6445 assert(model->isValid());
6446 }
6447
is_ignored_zero_sized_dynamic_output_shape_nchw_relaxed_2(int i)6448 inline bool is_ignored_zero_sized_dynamic_output_shape_nchw_relaxed_2(int i) {
6449 static std::set<int> ignore = {};
6450 return ignore.find(i) != ignore.end();
6451 }
6452
CreateModel_zero_sized_dynamic_output_shape_nchw_quant8_2(Model * model)6453 void CreateModel_zero_sized_dynamic_output_shape_nchw_quant8_2(Model *model) {
6454 OperandType type0(Type::BOOL, {});
6455 OperandType type10(Type::TENSOR_INT32, {0});
6456 OperandType type12(Type::TENSOR_INT32, {1});
6457 OperandType type13(Type::FLOAT32, {});
6458 OperandType type2(Type::INT32, {});
6459 OperandType type51(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 1}, 0.1f, 128);
6460 OperandType type53(Type::TENSOR_QUANT16_ASYMM, {1, 8}, 0.125f, 0);
6461 OperandType type54(Type::TENSOR_QUANT16_ASYMM, {0, 4}, 0.125f, 0);
6462 OperandType type55(Type::TENSOR_QUANT8_ASYMM, {1, 2}, 0.1f, 128);
6463 OperandType type56(Type::TENSOR_QUANT8_ASYMM, {0}, 0.1f, 128);
6464 OperandType type66(Type::TENSOR_QUANT8_ASYMM, {0, 1, 2, 2}, 0.1f, 128);
6465 OperandType type68(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.1f, 128);
6466 // Phase 1, operands
6467 auto scores1 = model->addOperand(&type55);
6468 auto roi1 = model->addOperand(&type53);
6469 auto param55 = model->addOperand(&type12);
6470 auto param56 = model->addOperand(&type13);
6471 auto param57 = model->addOperand(&type2);
6472 auto param58 = model->addOperand(&type2);
6473 auto param59 = model->addOperand(&type13);
6474 auto param60 = model->addOperand(&type13);
6475 auto param61 = model->addOperand(&type13);
6476 auto scoresOut1 = model->addOperand(&type56);
6477 auto roiOut1 = model->addOperand(&type54);
6478 auto classesOut1 = model->addOperand(&type10);
6479 auto batchSplitOut1 = model->addOperand(&type10);
6480 auto in1 = model->addOperand(&type51);
6481 auto param62 = model->addOperand(&type2);
6482 auto param63 = model->addOperand(&type2);
6483 auto param64 = model->addOperand(&type13);
6484 auto param65 = model->addOperand(&type13);
6485 auto param66 = model->addOperand(&type2);
6486 auto param67 = model->addOperand(&type2);
6487 auto layout = model->addOperand(&type0);
6488 auto featureMap1 = model->addOperand(&type66);
6489 auto param68 = model->addOperand(&type2);
6490 auto param69 = model->addOperand(&type2);
6491 auto param70 = model->addOperand(&type2);
6492 auto param71 = model->addOperand(&type2);
6493 auto param72 = model->addOperand(&type2);
6494 auto param73 = model->addOperand(&type2);
6495 auto out1 = model->addOperand(&type68);
6496 // Phase 2, operations
6497 static uint8_t scores1_init[] = {137, 129};
6498 model->setOperandValue(scores1, scores1_init, sizeof(uint8_t) * 2);
6499 static uint16_t roi1_init[] = {8, 8, 80, 80, 0, 0, 80, 80};
6500 model->setOperandValue(roi1, roi1_init, sizeof(uint16_t) * 8);
6501 static int32_t param55_init[] = {0};
6502 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
6503 static float param56_init[] = {0.3f};
6504 model->setOperandValue(param56, param56_init, sizeof(float) * 1);
6505 static int32_t param57_init[] = {-1};
6506 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
6507 static int32_t param58_init[] = {0};
6508 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
6509 static float param59_init[] = {0.4f};
6510 model->setOperandValue(param59, param59_init, sizeof(float) * 1);
6511 static float param60_init[] = {1.0f};
6512 model->setOperandValue(param60, param60_init, sizeof(float) * 1);
6513 static float param61_init[] = {0.3f};
6514 model->setOperandValue(param61, param61_init, sizeof(float) * 1);
6515 static int32_t param62_init[] = {2};
6516 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
6517 static int32_t param63_init[] = {2};
6518 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
6519 static float param64_init[] = {2.0f};
6520 model->setOperandValue(param64, param64_init, sizeof(float) * 1);
6521 static float param65_init[] = {2.0f};
6522 model->setOperandValue(param65, param65_init, sizeof(float) * 1);
6523 static int32_t param66_init[] = {4};
6524 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
6525 static int32_t param67_init[] = {4};
6526 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
6527 static bool8 layout_init[] = {true};
6528 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6529 static int32_t param68_init[] = {1};
6530 model->setOperandValue(param68, param68_init, sizeof(int32_t) * 1);
6531 static int32_t param69_init[] = {1};
6532 model->setOperandValue(param69, param69_init, sizeof(int32_t) * 1);
6533 static int32_t param70_init[] = {1};
6534 model->setOperandValue(param70, param70_init, sizeof(int32_t) * 1);
6535 static int32_t param71_init[] = {2};
6536 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
6537 static int32_t param72_init[] = {2};
6538 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
6539 static int32_t param73_init[] = {0};
6540 model->setOperandValue(param73, param73_init, sizeof(int32_t) * 1);
6541 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param55, param56, param57, param58, param59, param60, param61}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
6542 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param62, param63, param64, param65, param66, param67, layout}, {featureMap1});
6543 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap1, param68, param69, param70, param71, param72, param73, layout}, {out1});
6544 // Phase 3, inputs and outputs
6545 model->identifyInputsAndOutputs(
6546 {in1},
6547 {scoresOut1, classesOut1, out1});
6548 assert(model->isValid());
6549 }
6550
is_ignored_zero_sized_dynamic_output_shape_nchw_quant8_2(int i)6551 inline bool is_ignored_zero_sized_dynamic_output_shape_nchw_quant8_2(int i) {
6552 static std::set<int> ignore = {};
6553 return ignore.find(i) != ignore.end();
6554 }
6555
CreateModel_zero_sized_dynamic_output_shape_nchw_float16_2(Model * model)6556 void CreateModel_zero_sized_dynamic_output_shape_nchw_float16_2(Model *model) {
6557 OperandType type0(Type::BOOL, {});
6558 OperandType type10(Type::TENSOR_INT32, {0});
6559 OperandType type12(Type::TENSOR_INT32, {1});
6560 OperandType type2(Type::INT32, {});
6561 OperandType type24(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
6562 OperandType type58(Type::TENSOR_FLOAT16, {1, 1, 1, 1});
6563 OperandType type60(Type::FLOAT16, {});
6564 OperandType type61(Type::TENSOR_FLOAT16, {1, 8});
6565 OperandType type62(Type::TENSOR_FLOAT16, {0, 4});
6566 OperandType type63(Type::TENSOR_FLOAT16, {1, 2});
6567 OperandType type67(Type::TENSOR_FLOAT16, {0, 1, 2, 2});
6568 OperandType type69(Type::TENSOR_FLOAT16, {0});
6569 // Phase 1, operands
6570 auto scores1 = model->addOperand(&type63);
6571 auto roi1 = model->addOperand(&type61);
6572 auto param55 = model->addOperand(&type12);
6573 auto param56 = model->addOperand(&type60);
6574 auto param57 = model->addOperand(&type2);
6575 auto param58 = model->addOperand(&type2);
6576 auto param59 = model->addOperand(&type60);
6577 auto param60 = model->addOperand(&type60);
6578 auto param61 = model->addOperand(&type60);
6579 auto scoresOut1 = model->addOperand(&type69);
6580 auto roiOut1 = model->addOperand(&type62);
6581 auto classesOut1 = model->addOperand(&type10);
6582 auto batchSplitOut1 = model->addOperand(&type10);
6583 auto in1 = model->addOperand(&type58);
6584 auto param62 = model->addOperand(&type2);
6585 auto param63 = model->addOperand(&type2);
6586 auto param64 = model->addOperand(&type60);
6587 auto param65 = model->addOperand(&type60);
6588 auto param66 = model->addOperand(&type2);
6589 auto param67 = model->addOperand(&type2);
6590 auto layout = model->addOperand(&type0);
6591 auto featureMap1 = model->addOperand(&type67);
6592 auto param68 = model->addOperand(&type2);
6593 auto param69 = model->addOperand(&type2);
6594 auto param70 = model->addOperand(&type2);
6595 auto param71 = model->addOperand(&type2);
6596 auto param72 = model->addOperand(&type2);
6597 auto param73 = model->addOperand(&type2);
6598 auto out1 = model->addOperand(&type24);
6599 // Phase 2, operations
6600 static _Float16 scores1_init[] = {0.8999999761581421f, 0.10000000149011612f};
6601 model->setOperandValue(scores1, scores1_init, sizeof(_Float16) * 2);
6602 static _Float16 roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
6603 model->setOperandValue(roi1, roi1_init, sizeof(_Float16) * 8);
6604 static int32_t param55_init[] = {0};
6605 model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
6606 static _Float16 param56_init[] = {0.30000001192092896f};
6607 model->setOperandValue(param56, param56_init, sizeof(_Float16) * 1);
6608 static int32_t param57_init[] = {-1};
6609 model->setOperandValue(param57, param57_init, sizeof(int32_t) * 1);
6610 static int32_t param58_init[] = {0};
6611 model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
6612 static _Float16 param59_init[] = {0.4000000059604645f};
6613 model->setOperandValue(param59, param59_init, sizeof(_Float16) * 1);
6614 static _Float16 param60_init[] = {1.0f};
6615 model->setOperandValue(param60, param60_init, sizeof(_Float16) * 1);
6616 static _Float16 param61_init[] = {0.30000001192092896f};
6617 model->setOperandValue(param61, param61_init, sizeof(_Float16) * 1);
6618 static int32_t param62_init[] = {2};
6619 model->setOperandValue(param62, param62_init, sizeof(int32_t) * 1);
6620 static int32_t param63_init[] = {2};
6621 model->setOperandValue(param63, param63_init, sizeof(int32_t) * 1);
6622 static _Float16 param64_init[] = {2.0f};
6623 model->setOperandValue(param64, param64_init, sizeof(_Float16) * 1);
6624 static _Float16 param65_init[] = {2.0f};
6625 model->setOperandValue(param65, param65_init, sizeof(_Float16) * 1);
6626 static int32_t param66_init[] = {4};
6627 model->setOperandValue(param66, param66_init, sizeof(int32_t) * 1);
6628 static int32_t param67_init[] = {4};
6629 model->setOperandValue(param67, param67_init, sizeof(int32_t) * 1);
6630 static bool8 layout_init[] = {true};
6631 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6632 static int32_t param68_init[] = {1};
6633 model->setOperandValue(param68, param68_init, sizeof(int32_t) * 1);
6634 static int32_t param69_init[] = {1};
6635 model->setOperandValue(param69, param69_init, sizeof(int32_t) * 1);
6636 static int32_t param70_init[] = {1};
6637 model->setOperandValue(param70, param70_init, sizeof(int32_t) * 1);
6638 static int32_t param71_init[] = {2};
6639 model->setOperandValue(param71, param71_init, sizeof(int32_t) * 1);
6640 static int32_t param72_init[] = {2};
6641 model->setOperandValue(param72, param72_init, sizeof(int32_t) * 1);
6642 static int32_t param73_init[] = {0};
6643 model->setOperandValue(param73, param73_init, sizeof(int32_t) * 1);
6644 model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param55, param56, param57, param58, param59, param60, param61}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
6645 model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in1, roiOut1, batchSplitOut1, param62, param63, param64, param65, param66, param67, layout}, {featureMap1});
6646 model->addOperation(ANEURALNETWORKS_MAX_POOL_2D, {featureMap1, param68, param69, param70, param71, param72, param73, layout}, {out1});
6647 // Phase 3, inputs and outputs
6648 model->identifyInputsAndOutputs(
6649 {in1},
6650 {scoresOut1, classesOut1, out1});
6651 assert(model->isValid());
6652 }
6653
is_ignored_zero_sized_dynamic_output_shape_nchw_float16_2(int i)6654 inline bool is_ignored_zero_sized_dynamic_output_shape_nchw_float16_2(int i) {
6655 static std::set<int> ignore = {};
6656 return ignore.find(i) != ignore.end();
6657 }
6658
6659