• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // clang-format off
2 // Generated file (from: resize_nearest_neighbor.mod.py). Do not edit
CreateModel_shape_nhwc(Model * model)3 void CreateModel_shape_nhwc(Model *model) {
4   OperandType type0(Type::BOOL, {});
5   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
6   OperandType type2(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
7   OperandType type3(Type::INT32, {});
8   // Phase 1, operands
9   auto in = model->addOperand(&type1);
10   auto param = model->addOperand(&type3);
11   auto param1 = model->addOperand(&type3);
12   auto layout = model->addOperand(&type0);
13   auto out = model->addOperand(&type2);
14   // Phase 2, operations
15   static int32_t param_init[] = {1};
16   model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
17   static int32_t param1_init[] = {1};
18   model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
19   static bool8 layout_init[] = {false};
20   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
21   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param, param1, layout}, {out});
22   // Phase 3, inputs and outputs
23   model->identifyInputsAndOutputs(
24     {in},
25     {out});
26   assert(model->isValid());
27 }
28 
is_ignored_shape_nhwc(int i)29 inline bool is_ignored_shape_nhwc(int i) {
30   static std::set<int> ignore = {};
31   return ignore.find(i) != ignore.end();
32 }
33 
CreateModel_shape_nhwc_relaxed(Model * model)34 void CreateModel_shape_nhwc_relaxed(Model *model) {
35   OperandType type0(Type::BOOL, {});
36   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
37   OperandType type2(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
38   OperandType type3(Type::INT32, {});
39   // Phase 1, operands
40   auto in = model->addOperand(&type1);
41   auto param = model->addOperand(&type3);
42   auto param1 = model->addOperand(&type3);
43   auto layout = model->addOperand(&type0);
44   auto out = model->addOperand(&type2);
45   // Phase 2, operations
46   static int32_t param_init[] = {1};
47   model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
48   static int32_t param1_init[] = {1};
49   model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
50   static bool8 layout_init[] = {false};
51   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
52   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param, param1, layout}, {out});
53   // Phase 3, inputs and outputs
54   model->identifyInputsAndOutputs(
55     {in},
56     {out});
57   // Phase 4: set relaxed execution
58   model->relaxComputationFloat32toFloat16(true);
59   assert(model->isValid());
60 }
61 
is_ignored_shape_nhwc_relaxed(int i)62 inline bool is_ignored_shape_nhwc_relaxed(int i) {
63   static std::set<int> ignore = {};
64   return ignore.find(i) != ignore.end();
65 }
66 
CreateModel_shape_nhwc_quant8(Model * model)67 void CreateModel_shape_nhwc_quant8(Model *model) {
68   OperandType type0(Type::BOOL, {});
69   OperandType type19(Type::TENSOR_QUANT8_ASYMM, {1, 2, 2, 1}, 0.25f, 128);
70   OperandType type20(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 1}, 0.25f, 128);
71   OperandType type3(Type::INT32, {});
72   // Phase 1, operands
73   auto in = model->addOperand(&type19);
74   auto param = model->addOperand(&type3);
75   auto param1 = model->addOperand(&type3);
76   auto layout = model->addOperand(&type0);
77   auto out = model->addOperand(&type20);
78   // Phase 2, operations
79   static int32_t param_init[] = {1};
80   model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
81   static int32_t param1_init[] = {1};
82   model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
83   static bool8 layout_init[] = {false};
84   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
85   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param, param1, layout}, {out});
86   // Phase 3, inputs and outputs
87   model->identifyInputsAndOutputs(
88     {in},
89     {out});
90   assert(model->isValid());
91 }
92 
is_ignored_shape_nhwc_quant8(int i)93 inline bool is_ignored_shape_nhwc_quant8(int i) {
94   static std::set<int> ignore = {};
95   return ignore.find(i) != ignore.end();
96 }
97 
CreateModel_shape_nhwc_float16(Model * model)98 void CreateModel_shape_nhwc_float16(Model *model) {
99   OperandType type0(Type::BOOL, {});
100   OperandType type21(Type::TENSOR_FLOAT16, {1, 2, 2, 1});
101   OperandType type22(Type::TENSOR_FLOAT16, {1, 1, 1, 1});
102   OperandType type3(Type::INT32, {});
103   // Phase 1, operands
104   auto in = model->addOperand(&type21);
105   auto param = model->addOperand(&type3);
106   auto param1 = model->addOperand(&type3);
107   auto layout = model->addOperand(&type0);
108   auto out = model->addOperand(&type22);
109   // Phase 2, operations
110   static int32_t param_init[] = {1};
111   model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
112   static int32_t param1_init[] = {1};
113   model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
114   static bool8 layout_init[] = {false};
115   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
116   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param, param1, layout}, {out});
117   // Phase 3, inputs and outputs
118   model->identifyInputsAndOutputs(
119     {in},
120     {out});
121   assert(model->isValid());
122 }
123 
is_ignored_shape_nhwc_float16(int i)124 inline bool is_ignored_shape_nhwc_float16(int i) {
125   static std::set<int> ignore = {};
126   return ignore.find(i) != ignore.end();
127 }
128 
CreateModel_shape_nchw(Model * model)129 void CreateModel_shape_nchw(Model *model) {
130   OperandType type0(Type::BOOL, {});
131   OperandType type2(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
132   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
133   OperandType type3(Type::INT32, {});
134   // Phase 1, operands
135   auto in = model->addOperand(&type23);
136   auto param = model->addOperand(&type3);
137   auto param1 = model->addOperand(&type3);
138   auto layout = model->addOperand(&type0);
139   auto out = model->addOperand(&type2);
140   // Phase 2, operations
141   static int32_t param_init[] = {1};
142   model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
143   static int32_t param1_init[] = {1};
144   model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
145   static bool8 layout_init[] = {true};
146   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
147   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param, param1, layout}, {out});
148   // Phase 3, inputs and outputs
149   model->identifyInputsAndOutputs(
150     {in},
151     {out});
152   assert(model->isValid());
153 }
154 
is_ignored_shape_nchw(int i)155 inline bool is_ignored_shape_nchw(int i) {
156   static std::set<int> ignore = {};
157   return ignore.find(i) != ignore.end();
158 }
159 
CreateModel_shape_nchw_relaxed(Model * model)160 void CreateModel_shape_nchw_relaxed(Model *model) {
161   OperandType type0(Type::BOOL, {});
162   OperandType type2(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
163   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
164   OperandType type3(Type::INT32, {});
165   // Phase 1, operands
166   auto in = model->addOperand(&type23);
167   auto param = model->addOperand(&type3);
168   auto param1 = model->addOperand(&type3);
169   auto layout = model->addOperand(&type0);
170   auto out = model->addOperand(&type2);
171   // Phase 2, operations
172   static int32_t param_init[] = {1};
173   model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
174   static int32_t param1_init[] = {1};
175   model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
176   static bool8 layout_init[] = {true};
177   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
178   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param, param1, layout}, {out});
179   // Phase 3, inputs and outputs
180   model->identifyInputsAndOutputs(
181     {in},
182     {out});
183   // Phase 4: set relaxed execution
184   model->relaxComputationFloat32toFloat16(true);
185   assert(model->isValid());
186 }
187 
is_ignored_shape_nchw_relaxed(int i)188 inline bool is_ignored_shape_nchw_relaxed(int i) {
189   static std::set<int> ignore = {};
190   return ignore.find(i) != ignore.end();
191 }
192 
CreateModel_shape_nchw_quant8(Model * model)193 void CreateModel_shape_nchw_quant8(Model *model) {
194   OperandType type0(Type::BOOL, {});
195   OperandType type20(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 1}, 0.25f, 128);
196   OperandType type24(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 2}, 0.25f, 128);
197   OperandType type3(Type::INT32, {});
198   // Phase 1, operands
199   auto in = model->addOperand(&type24);
200   auto param = model->addOperand(&type3);
201   auto param1 = model->addOperand(&type3);
202   auto layout = model->addOperand(&type0);
203   auto out = model->addOperand(&type20);
204   // Phase 2, operations
205   static int32_t param_init[] = {1};
206   model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
207   static int32_t param1_init[] = {1};
208   model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
209   static bool8 layout_init[] = {true};
210   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
211   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param, param1, layout}, {out});
212   // Phase 3, inputs and outputs
213   model->identifyInputsAndOutputs(
214     {in},
215     {out});
216   assert(model->isValid());
217 }
218 
is_ignored_shape_nchw_quant8(int i)219 inline bool is_ignored_shape_nchw_quant8(int i) {
220   static std::set<int> ignore = {};
221   return ignore.find(i) != ignore.end();
222 }
223 
CreateModel_shape_nchw_float16(Model * model)224 void CreateModel_shape_nchw_float16(Model *model) {
225   OperandType type0(Type::BOOL, {});
226   OperandType type22(Type::TENSOR_FLOAT16, {1, 1, 1, 1});
227   OperandType type25(Type::TENSOR_FLOAT16, {1, 1, 2, 2});
228   OperandType type3(Type::INT32, {});
229   // Phase 1, operands
230   auto in = model->addOperand(&type25);
231   auto param = model->addOperand(&type3);
232   auto param1 = model->addOperand(&type3);
233   auto layout = model->addOperand(&type0);
234   auto out = model->addOperand(&type22);
235   // Phase 2, operations
236   static int32_t param_init[] = {1};
237   model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
238   static int32_t param1_init[] = {1};
239   model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
240   static bool8 layout_init[] = {true};
241   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
242   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param, param1, layout}, {out});
243   // Phase 3, inputs and outputs
244   model->identifyInputsAndOutputs(
245     {in},
246     {out});
247   assert(model->isValid());
248 }
249 
is_ignored_shape_nchw_float16(int i)250 inline bool is_ignored_shape_nchw_float16(int i) {
251   static std::set<int> ignore = {};
252   return ignore.find(i) != ignore.end();
253 }
254 
CreateModel_shape_dynamic_output_shape_nhwc(Model * model)255 void CreateModel_shape_dynamic_output_shape_nhwc(Model *model) {
256   OperandType type0(Type::BOOL, {});
257   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
258   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
259   OperandType type3(Type::INT32, {});
260   // Phase 1, operands
261   auto in = model->addOperand(&type1);
262   auto param = model->addOperand(&type3);
263   auto param1 = model->addOperand(&type3);
264   auto layout = model->addOperand(&type0);
265   auto out = model->addOperand(&type26);
266   // Phase 2, operations
267   static int32_t param_init[] = {1};
268   model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
269   static int32_t param1_init[] = {1};
270   model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
271   static bool8 layout_init[] = {false};
272   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
273   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param, param1, layout}, {out});
274   // Phase 3, inputs and outputs
275   model->identifyInputsAndOutputs(
276     {in},
277     {out});
278   assert(model->isValid());
279 }
280 
is_ignored_shape_dynamic_output_shape_nhwc(int i)281 inline bool is_ignored_shape_dynamic_output_shape_nhwc(int i) {
282   static std::set<int> ignore = {};
283   return ignore.find(i) != ignore.end();
284 }
285 
CreateModel_shape_dynamic_output_shape_nhwc_relaxed(Model * model)286 void CreateModel_shape_dynamic_output_shape_nhwc_relaxed(Model *model) {
287   OperandType type0(Type::BOOL, {});
288   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
289   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
290   OperandType type3(Type::INT32, {});
291   // Phase 1, operands
292   auto in = model->addOperand(&type1);
293   auto param = model->addOperand(&type3);
294   auto param1 = model->addOperand(&type3);
295   auto layout = model->addOperand(&type0);
296   auto out = model->addOperand(&type26);
297   // Phase 2, operations
298   static int32_t param_init[] = {1};
299   model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
300   static int32_t param1_init[] = {1};
301   model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
302   static bool8 layout_init[] = {false};
303   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
304   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param, param1, layout}, {out});
305   // Phase 3, inputs and outputs
306   model->identifyInputsAndOutputs(
307     {in},
308     {out});
309   // Phase 4: set relaxed execution
310   model->relaxComputationFloat32toFloat16(true);
311   assert(model->isValid());
312 }
313 
is_ignored_shape_dynamic_output_shape_nhwc_relaxed(int i)314 inline bool is_ignored_shape_dynamic_output_shape_nhwc_relaxed(int i) {
315   static std::set<int> ignore = {};
316   return ignore.find(i) != ignore.end();
317 }
318 
CreateModel_shape_dynamic_output_shape_nhwc_quant8(Model * model)319 void CreateModel_shape_dynamic_output_shape_nhwc_quant8(Model *model) {
320   OperandType type0(Type::BOOL, {});
321   OperandType type19(Type::TENSOR_QUANT8_ASYMM, {1, 2, 2, 1}, 0.25f, 128);
322   OperandType type27(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 128);
323   OperandType type3(Type::INT32, {});
324   // Phase 1, operands
325   auto in = model->addOperand(&type19);
326   auto param = model->addOperand(&type3);
327   auto param1 = model->addOperand(&type3);
328   auto layout = model->addOperand(&type0);
329   auto out = model->addOperand(&type27);
330   // Phase 2, operations
331   static int32_t param_init[] = {1};
332   model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
333   static int32_t param1_init[] = {1};
334   model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
335   static bool8 layout_init[] = {false};
336   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
337   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param, param1, layout}, {out});
338   // Phase 3, inputs and outputs
339   model->identifyInputsAndOutputs(
340     {in},
341     {out});
342   assert(model->isValid());
343 }
344 
is_ignored_shape_dynamic_output_shape_nhwc_quant8(int i)345 inline bool is_ignored_shape_dynamic_output_shape_nhwc_quant8(int i) {
346   static std::set<int> ignore = {};
347   return ignore.find(i) != ignore.end();
348 }
349 
CreateModel_shape_dynamic_output_shape_nhwc_float16(Model * model)350 void CreateModel_shape_dynamic_output_shape_nhwc_float16(Model *model) {
351   OperandType type0(Type::BOOL, {});
352   OperandType type21(Type::TENSOR_FLOAT16, {1, 2, 2, 1});
353   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
354   OperandType type3(Type::INT32, {});
355   // Phase 1, operands
356   auto in = model->addOperand(&type21);
357   auto param = model->addOperand(&type3);
358   auto param1 = model->addOperand(&type3);
359   auto layout = model->addOperand(&type0);
360   auto out = model->addOperand(&type28);
361   // Phase 2, operations
362   static int32_t param_init[] = {1};
363   model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
364   static int32_t param1_init[] = {1};
365   model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
366   static bool8 layout_init[] = {false};
367   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
368   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param, param1, layout}, {out});
369   // Phase 3, inputs and outputs
370   model->identifyInputsAndOutputs(
371     {in},
372     {out});
373   assert(model->isValid());
374 }
375 
is_ignored_shape_dynamic_output_shape_nhwc_float16(int i)376 inline bool is_ignored_shape_dynamic_output_shape_nhwc_float16(int i) {
377   static std::set<int> ignore = {};
378   return ignore.find(i) != ignore.end();
379 }
380 
CreateModel_shape_dynamic_output_shape_nchw(Model * model)381 void CreateModel_shape_dynamic_output_shape_nchw(Model *model) {
382   OperandType type0(Type::BOOL, {});
383   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
384   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
385   OperandType type3(Type::INT32, {});
386   // Phase 1, operands
387   auto in = model->addOperand(&type23);
388   auto param = model->addOperand(&type3);
389   auto param1 = model->addOperand(&type3);
390   auto layout = model->addOperand(&type0);
391   auto out = model->addOperand(&type26);
392   // Phase 2, operations
393   static int32_t param_init[] = {1};
394   model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
395   static int32_t param1_init[] = {1};
396   model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
397   static bool8 layout_init[] = {true};
398   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
399   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param, param1, layout}, {out});
400   // Phase 3, inputs and outputs
401   model->identifyInputsAndOutputs(
402     {in},
403     {out});
404   assert(model->isValid());
405 }
406 
is_ignored_shape_dynamic_output_shape_nchw(int i)407 inline bool is_ignored_shape_dynamic_output_shape_nchw(int i) {
408   static std::set<int> ignore = {};
409   return ignore.find(i) != ignore.end();
410 }
411 
CreateModel_shape_dynamic_output_shape_nchw_relaxed(Model * model)412 void CreateModel_shape_dynamic_output_shape_nchw_relaxed(Model *model) {
413   OperandType type0(Type::BOOL, {});
414   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
415   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
416   OperandType type3(Type::INT32, {});
417   // Phase 1, operands
418   auto in = model->addOperand(&type23);
419   auto param = model->addOperand(&type3);
420   auto param1 = model->addOperand(&type3);
421   auto layout = model->addOperand(&type0);
422   auto out = model->addOperand(&type26);
423   // Phase 2, operations
424   static int32_t param_init[] = {1};
425   model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
426   static int32_t param1_init[] = {1};
427   model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
428   static bool8 layout_init[] = {true};
429   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
430   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param, param1, layout}, {out});
431   // Phase 3, inputs and outputs
432   model->identifyInputsAndOutputs(
433     {in},
434     {out});
435   // Phase 4: set relaxed execution
436   model->relaxComputationFloat32toFloat16(true);
437   assert(model->isValid());
438 }
439 
is_ignored_shape_dynamic_output_shape_nchw_relaxed(int i)440 inline bool is_ignored_shape_dynamic_output_shape_nchw_relaxed(int i) {
441   static std::set<int> ignore = {};
442   return ignore.find(i) != ignore.end();
443 }
444 
CreateModel_shape_dynamic_output_shape_nchw_quant8(Model * model)445 void CreateModel_shape_dynamic_output_shape_nchw_quant8(Model *model) {
446   OperandType type0(Type::BOOL, {});
447   OperandType type24(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 2}, 0.25f, 128);
448   OperandType type27(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 128);
449   OperandType type3(Type::INT32, {});
450   // Phase 1, operands
451   auto in = model->addOperand(&type24);
452   auto param = model->addOperand(&type3);
453   auto param1 = model->addOperand(&type3);
454   auto layout = model->addOperand(&type0);
455   auto out = model->addOperand(&type27);
456   // Phase 2, operations
457   static int32_t param_init[] = {1};
458   model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
459   static int32_t param1_init[] = {1};
460   model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
461   static bool8 layout_init[] = {true};
462   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
463   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param, param1, layout}, {out});
464   // Phase 3, inputs and outputs
465   model->identifyInputsAndOutputs(
466     {in},
467     {out});
468   assert(model->isValid());
469 }
470 
is_ignored_shape_dynamic_output_shape_nchw_quant8(int i)471 inline bool is_ignored_shape_dynamic_output_shape_nchw_quant8(int i) {
472   static std::set<int> ignore = {};
473   return ignore.find(i) != ignore.end();
474 }
475 
CreateModel_shape_dynamic_output_shape_nchw_float16(Model * model)476 void CreateModel_shape_dynamic_output_shape_nchw_float16(Model *model) {
477   OperandType type0(Type::BOOL, {});
478   OperandType type25(Type::TENSOR_FLOAT16, {1, 1, 2, 2});
479   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
480   OperandType type3(Type::INT32, {});
481   // Phase 1, operands
482   auto in = model->addOperand(&type25);
483   auto param = model->addOperand(&type3);
484   auto param1 = model->addOperand(&type3);
485   auto layout = model->addOperand(&type0);
486   auto out = model->addOperand(&type28);
487   // Phase 2, operations
488   static int32_t param_init[] = {1};
489   model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
490   static int32_t param1_init[] = {1};
491   model->setOperandValue(param1, param1_init, sizeof(int32_t) * 1);
492   static bool8 layout_init[] = {true};
493   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
494   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param, param1, layout}, {out});
495   // Phase 3, inputs and outputs
496   model->identifyInputsAndOutputs(
497     {in},
498     {out});
499   assert(model->isValid());
500 }
501 
is_ignored_shape_dynamic_output_shape_nchw_float16(int i)502 inline bool is_ignored_shape_dynamic_output_shape_nchw_float16(int i) {
503   static std::set<int> ignore = {};
504   return ignore.find(i) != ignore.end();
505 }
506 
CreateModel_scale_nhwc(Model * model)507 void CreateModel_scale_nhwc(Model *model) {
508   OperandType type0(Type::BOOL, {});
509   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
510   OperandType type2(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
511   OperandType type4(Type::FLOAT32, {});
512   // Phase 1, operands
513   auto in = model->addOperand(&type1);
514   auto param2 = model->addOperand(&type4);
515   auto param3 = model->addOperand(&type4);
516   auto layout = model->addOperand(&type0);
517   auto out = model->addOperand(&type2);
518   // Phase 2, operations
519   static float param2_init[] = {0.5f};
520   model->setOperandValue(param2, param2_init, sizeof(float) * 1);
521   static float param3_init[] = {0.5f};
522   model->setOperandValue(param3, param3_init, sizeof(float) * 1);
523   static bool8 layout_init[] = {false};
524   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
525   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param2, param3, layout}, {out});
526   // Phase 3, inputs and outputs
527   model->identifyInputsAndOutputs(
528     {in},
529     {out});
530   assert(model->isValid());
531 }
532 
is_ignored_scale_nhwc(int i)533 inline bool is_ignored_scale_nhwc(int i) {
534   static std::set<int> ignore = {};
535   return ignore.find(i) != ignore.end();
536 }
537 
CreateModel_scale_nhwc_relaxed(Model * model)538 void CreateModel_scale_nhwc_relaxed(Model *model) {
539   OperandType type0(Type::BOOL, {});
540   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
541   OperandType type2(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
542   OperandType type4(Type::FLOAT32, {});
543   // Phase 1, operands
544   auto in = model->addOperand(&type1);
545   auto param2 = model->addOperand(&type4);
546   auto param3 = model->addOperand(&type4);
547   auto layout = model->addOperand(&type0);
548   auto out = model->addOperand(&type2);
549   // Phase 2, operations
550   static float param2_init[] = {0.5f};
551   model->setOperandValue(param2, param2_init, sizeof(float) * 1);
552   static float param3_init[] = {0.5f};
553   model->setOperandValue(param3, param3_init, sizeof(float) * 1);
554   static bool8 layout_init[] = {false};
555   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
556   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param2, param3, layout}, {out});
557   // Phase 3, inputs and outputs
558   model->identifyInputsAndOutputs(
559     {in},
560     {out});
561   // Phase 4: set relaxed execution
562   model->relaxComputationFloat32toFloat16(true);
563   assert(model->isValid());
564 }
565 
is_ignored_scale_nhwc_relaxed(int i)566 inline bool is_ignored_scale_nhwc_relaxed(int i) {
567   static std::set<int> ignore = {};
568   return ignore.find(i) != ignore.end();
569 }
570 
CreateModel_scale_nhwc_quant8(Model * model)571 void CreateModel_scale_nhwc_quant8(Model *model) {
572   OperandType type0(Type::BOOL, {});
573   OperandType type19(Type::TENSOR_QUANT8_ASYMM, {1, 2, 2, 1}, 0.25f, 128);
574   OperandType type20(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 1}, 0.25f, 128);
575   OperandType type4(Type::FLOAT32, {});
576   // Phase 1, operands
577   auto in = model->addOperand(&type19);
578   auto param2 = model->addOperand(&type4);
579   auto param3 = model->addOperand(&type4);
580   auto layout = model->addOperand(&type0);
581   auto out = model->addOperand(&type20);
582   // Phase 2, operations
583   static float param2_init[] = {0.5f};
584   model->setOperandValue(param2, param2_init, sizeof(float) * 1);
585   static float param3_init[] = {0.5f};
586   model->setOperandValue(param3, param3_init, sizeof(float) * 1);
587   static bool8 layout_init[] = {false};
588   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
589   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param2, param3, layout}, {out});
590   // Phase 3, inputs and outputs
591   model->identifyInputsAndOutputs(
592     {in},
593     {out});
594   assert(model->isValid());
595 }
596 
is_ignored_scale_nhwc_quant8(int i)597 inline bool is_ignored_scale_nhwc_quant8(int i) {
598   static std::set<int> ignore = {};
599   return ignore.find(i) != ignore.end();
600 }
601 
CreateModel_scale_nhwc_float16(Model * model)602 void CreateModel_scale_nhwc_float16(Model *model) {
603   OperandType type0(Type::BOOL, {});
604   OperandType type21(Type::TENSOR_FLOAT16, {1, 2, 2, 1});
605   OperandType type22(Type::TENSOR_FLOAT16, {1, 1, 1, 1});
606   OperandType type29(Type::FLOAT16, {});
607   // Phase 1, operands
608   auto in = model->addOperand(&type21);
609   auto param2 = model->addOperand(&type29);
610   auto param3 = model->addOperand(&type29);
611   auto layout = model->addOperand(&type0);
612   auto out = model->addOperand(&type22);
613   // Phase 2, operations
614   static _Float16 param2_init[] = {0.5f};
615   model->setOperandValue(param2, param2_init, sizeof(_Float16) * 1);
616   static _Float16 param3_init[] = {0.5f};
617   model->setOperandValue(param3, param3_init, sizeof(_Float16) * 1);
618   static bool8 layout_init[] = {false};
619   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
620   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param2, param3, layout}, {out});
621   // Phase 3, inputs and outputs
622   model->identifyInputsAndOutputs(
623     {in},
624     {out});
625   assert(model->isValid());
626 }
627 
is_ignored_scale_nhwc_float16(int i)628 inline bool is_ignored_scale_nhwc_float16(int i) {
629   static std::set<int> ignore = {};
630   return ignore.find(i) != ignore.end();
631 }
632 
CreateModel_scale_nchw(Model * model)633 void CreateModel_scale_nchw(Model *model) {
634   OperandType type0(Type::BOOL, {});
635   OperandType type2(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
636   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
637   OperandType type4(Type::FLOAT32, {});
638   // Phase 1, operands
639   auto in = model->addOperand(&type23);
640   auto param2 = model->addOperand(&type4);
641   auto param3 = model->addOperand(&type4);
642   auto layout = model->addOperand(&type0);
643   auto out = model->addOperand(&type2);
644   // Phase 2, operations
645   static float param2_init[] = {0.5f};
646   model->setOperandValue(param2, param2_init, sizeof(float) * 1);
647   static float param3_init[] = {0.5f};
648   model->setOperandValue(param3, param3_init, sizeof(float) * 1);
649   static bool8 layout_init[] = {true};
650   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
651   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param2, param3, layout}, {out});
652   // Phase 3, inputs and outputs
653   model->identifyInputsAndOutputs(
654     {in},
655     {out});
656   assert(model->isValid());
657 }
658 
is_ignored_scale_nchw(int i)659 inline bool is_ignored_scale_nchw(int i) {
660   static std::set<int> ignore = {};
661   return ignore.find(i) != ignore.end();
662 }
663 
CreateModel_scale_nchw_relaxed(Model * model)664 void CreateModel_scale_nchw_relaxed(Model *model) {
665   OperandType type0(Type::BOOL, {});
666   OperandType type2(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
667   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
668   OperandType type4(Type::FLOAT32, {});
669   // Phase 1, operands
670   auto in = model->addOperand(&type23);
671   auto param2 = model->addOperand(&type4);
672   auto param3 = model->addOperand(&type4);
673   auto layout = model->addOperand(&type0);
674   auto out = model->addOperand(&type2);
675   // Phase 2, operations
676   static float param2_init[] = {0.5f};
677   model->setOperandValue(param2, param2_init, sizeof(float) * 1);
678   static float param3_init[] = {0.5f};
679   model->setOperandValue(param3, param3_init, sizeof(float) * 1);
680   static bool8 layout_init[] = {true};
681   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
682   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param2, param3, layout}, {out});
683   // Phase 3, inputs and outputs
684   model->identifyInputsAndOutputs(
685     {in},
686     {out});
687   // Phase 4: set relaxed execution
688   model->relaxComputationFloat32toFloat16(true);
689   assert(model->isValid());
690 }
691 
is_ignored_scale_nchw_relaxed(int i)692 inline bool is_ignored_scale_nchw_relaxed(int i) {
693   static std::set<int> ignore = {};
694   return ignore.find(i) != ignore.end();
695 }
696 
CreateModel_scale_nchw_quant8(Model * model)697 void CreateModel_scale_nchw_quant8(Model *model) {
698   OperandType type0(Type::BOOL, {});
699   OperandType type20(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 1}, 0.25f, 128);
700   OperandType type24(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 2}, 0.25f, 128);
701   OperandType type4(Type::FLOAT32, {});
702   // Phase 1, operands
703   auto in = model->addOperand(&type24);
704   auto param2 = model->addOperand(&type4);
705   auto param3 = model->addOperand(&type4);
706   auto layout = model->addOperand(&type0);
707   auto out = model->addOperand(&type20);
708   // Phase 2, operations
709   static float param2_init[] = {0.5f};
710   model->setOperandValue(param2, param2_init, sizeof(float) * 1);
711   static float param3_init[] = {0.5f};
712   model->setOperandValue(param3, param3_init, sizeof(float) * 1);
713   static bool8 layout_init[] = {true};
714   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
715   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param2, param3, layout}, {out});
716   // Phase 3, inputs and outputs
717   model->identifyInputsAndOutputs(
718     {in},
719     {out});
720   assert(model->isValid());
721 }
722 
is_ignored_scale_nchw_quant8(int i)723 inline bool is_ignored_scale_nchw_quant8(int i) {
724   static std::set<int> ignore = {};
725   return ignore.find(i) != ignore.end();
726 }
727 
CreateModel_scale_nchw_float16(Model * model)728 void CreateModel_scale_nchw_float16(Model *model) {
729   OperandType type0(Type::BOOL, {});
730   OperandType type22(Type::TENSOR_FLOAT16, {1, 1, 1, 1});
731   OperandType type25(Type::TENSOR_FLOAT16, {1, 1, 2, 2});
732   OperandType type29(Type::FLOAT16, {});
733   // Phase 1, operands
734   auto in = model->addOperand(&type25);
735   auto param2 = model->addOperand(&type29);
736   auto param3 = model->addOperand(&type29);
737   auto layout = model->addOperand(&type0);
738   auto out = model->addOperand(&type22);
739   // Phase 2, operations
740   static _Float16 param2_init[] = {0.5f};
741   model->setOperandValue(param2, param2_init, sizeof(_Float16) * 1);
742   static _Float16 param3_init[] = {0.5f};
743   model->setOperandValue(param3, param3_init, sizeof(_Float16) * 1);
744   static bool8 layout_init[] = {true};
745   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
746   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param2, param3, layout}, {out});
747   // Phase 3, inputs and outputs
748   model->identifyInputsAndOutputs(
749     {in},
750     {out});
751   assert(model->isValid());
752 }
753 
is_ignored_scale_nchw_float16(int i)754 inline bool is_ignored_scale_nchw_float16(int i) {
755   static std::set<int> ignore = {};
756   return ignore.find(i) != ignore.end();
757 }
758 
CreateModel_scale_dynamic_output_shape_nhwc(Model * model)759 void CreateModel_scale_dynamic_output_shape_nhwc(Model *model) {
760   OperandType type0(Type::BOOL, {});
761   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
762   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
763   OperandType type4(Type::FLOAT32, {});
764   // Phase 1, operands
765   auto in = model->addOperand(&type1);
766   auto param2 = model->addOperand(&type4);
767   auto param3 = model->addOperand(&type4);
768   auto layout = model->addOperand(&type0);
769   auto out = model->addOperand(&type26);
770   // Phase 2, operations
771   static float param2_init[] = {0.5f};
772   model->setOperandValue(param2, param2_init, sizeof(float) * 1);
773   static float param3_init[] = {0.5f};
774   model->setOperandValue(param3, param3_init, sizeof(float) * 1);
775   static bool8 layout_init[] = {false};
776   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
777   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param2, param3, layout}, {out});
778   // Phase 3, inputs and outputs
779   model->identifyInputsAndOutputs(
780     {in},
781     {out});
782   assert(model->isValid());
783 }
784 
is_ignored_scale_dynamic_output_shape_nhwc(int i)785 inline bool is_ignored_scale_dynamic_output_shape_nhwc(int i) {
786   static std::set<int> ignore = {};
787   return ignore.find(i) != ignore.end();
788 }
789 
CreateModel_scale_dynamic_output_shape_nhwc_relaxed(Model * model)790 void CreateModel_scale_dynamic_output_shape_nhwc_relaxed(Model *model) {
791   OperandType type0(Type::BOOL, {});
792   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
793   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
794   OperandType type4(Type::FLOAT32, {});
795   // Phase 1, operands
796   auto in = model->addOperand(&type1);
797   auto param2 = model->addOperand(&type4);
798   auto param3 = model->addOperand(&type4);
799   auto layout = model->addOperand(&type0);
800   auto out = model->addOperand(&type26);
801   // Phase 2, operations
802   static float param2_init[] = {0.5f};
803   model->setOperandValue(param2, param2_init, sizeof(float) * 1);
804   static float param3_init[] = {0.5f};
805   model->setOperandValue(param3, param3_init, sizeof(float) * 1);
806   static bool8 layout_init[] = {false};
807   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
808   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param2, param3, layout}, {out});
809   // Phase 3, inputs and outputs
810   model->identifyInputsAndOutputs(
811     {in},
812     {out});
813   // Phase 4: set relaxed execution
814   model->relaxComputationFloat32toFloat16(true);
815   assert(model->isValid());
816 }
817 
is_ignored_scale_dynamic_output_shape_nhwc_relaxed(int i)818 inline bool is_ignored_scale_dynamic_output_shape_nhwc_relaxed(int i) {
819   static std::set<int> ignore = {};
820   return ignore.find(i) != ignore.end();
821 }
822 
CreateModel_scale_dynamic_output_shape_nhwc_quant8(Model * model)823 void CreateModel_scale_dynamic_output_shape_nhwc_quant8(Model *model) {
824   OperandType type0(Type::BOOL, {});
825   OperandType type19(Type::TENSOR_QUANT8_ASYMM, {1, 2, 2, 1}, 0.25f, 128);
826   OperandType type27(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 128);
827   OperandType type4(Type::FLOAT32, {});
828   // Phase 1, operands
829   auto in = model->addOperand(&type19);
830   auto param2 = model->addOperand(&type4);
831   auto param3 = model->addOperand(&type4);
832   auto layout = model->addOperand(&type0);
833   auto out = model->addOperand(&type27);
834   // Phase 2, operations
835   static float param2_init[] = {0.5f};
836   model->setOperandValue(param2, param2_init, sizeof(float) * 1);
837   static float param3_init[] = {0.5f};
838   model->setOperandValue(param3, param3_init, sizeof(float) * 1);
839   static bool8 layout_init[] = {false};
840   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
841   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param2, param3, layout}, {out});
842   // Phase 3, inputs and outputs
843   model->identifyInputsAndOutputs(
844     {in},
845     {out});
846   assert(model->isValid());
847 }
848 
is_ignored_scale_dynamic_output_shape_nhwc_quant8(int i)849 inline bool is_ignored_scale_dynamic_output_shape_nhwc_quant8(int i) {
850   static std::set<int> ignore = {};
851   return ignore.find(i) != ignore.end();
852 }
853 
CreateModel_scale_dynamic_output_shape_nhwc_float16(Model * model)854 void CreateModel_scale_dynamic_output_shape_nhwc_float16(Model *model) {
855   OperandType type0(Type::BOOL, {});
856   OperandType type21(Type::TENSOR_FLOAT16, {1, 2, 2, 1});
857   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
858   OperandType type29(Type::FLOAT16, {});
859   // Phase 1, operands
860   auto in = model->addOperand(&type21);
861   auto param2 = model->addOperand(&type29);
862   auto param3 = model->addOperand(&type29);
863   auto layout = model->addOperand(&type0);
864   auto out = model->addOperand(&type28);
865   // Phase 2, operations
866   static _Float16 param2_init[] = {0.5f};
867   model->setOperandValue(param2, param2_init, sizeof(_Float16) * 1);
868   static _Float16 param3_init[] = {0.5f};
869   model->setOperandValue(param3, param3_init, sizeof(_Float16) * 1);
870   static bool8 layout_init[] = {false};
871   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
872   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param2, param3, layout}, {out});
873   // Phase 3, inputs and outputs
874   model->identifyInputsAndOutputs(
875     {in},
876     {out});
877   assert(model->isValid());
878 }
879 
is_ignored_scale_dynamic_output_shape_nhwc_float16(int i)880 inline bool is_ignored_scale_dynamic_output_shape_nhwc_float16(int i) {
881   static std::set<int> ignore = {};
882   return ignore.find(i) != ignore.end();
883 }
884 
CreateModel_scale_dynamic_output_shape_nchw(Model * model)885 void CreateModel_scale_dynamic_output_shape_nchw(Model *model) {
886   OperandType type0(Type::BOOL, {});
887   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
888   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
889   OperandType type4(Type::FLOAT32, {});
890   // Phase 1, operands
891   auto in = model->addOperand(&type23);
892   auto param2 = model->addOperand(&type4);
893   auto param3 = model->addOperand(&type4);
894   auto layout = model->addOperand(&type0);
895   auto out = model->addOperand(&type26);
896   // Phase 2, operations
897   static float param2_init[] = {0.5f};
898   model->setOperandValue(param2, param2_init, sizeof(float) * 1);
899   static float param3_init[] = {0.5f};
900   model->setOperandValue(param3, param3_init, sizeof(float) * 1);
901   static bool8 layout_init[] = {true};
902   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
903   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param2, param3, layout}, {out});
904   // Phase 3, inputs and outputs
905   model->identifyInputsAndOutputs(
906     {in},
907     {out});
908   assert(model->isValid());
909 }
910 
is_ignored_scale_dynamic_output_shape_nchw(int i)911 inline bool is_ignored_scale_dynamic_output_shape_nchw(int i) {
912   static std::set<int> ignore = {};
913   return ignore.find(i) != ignore.end();
914 }
915 
CreateModel_scale_dynamic_output_shape_nchw_relaxed(Model * model)916 void CreateModel_scale_dynamic_output_shape_nchw_relaxed(Model *model) {
917   OperandType type0(Type::BOOL, {});
918   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
919   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
920   OperandType type4(Type::FLOAT32, {});
921   // Phase 1, operands
922   auto in = model->addOperand(&type23);
923   auto param2 = model->addOperand(&type4);
924   auto param3 = model->addOperand(&type4);
925   auto layout = model->addOperand(&type0);
926   auto out = model->addOperand(&type26);
927   // Phase 2, operations
928   static float param2_init[] = {0.5f};
929   model->setOperandValue(param2, param2_init, sizeof(float) * 1);
930   static float param3_init[] = {0.5f};
931   model->setOperandValue(param3, param3_init, sizeof(float) * 1);
932   static bool8 layout_init[] = {true};
933   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
934   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param2, param3, layout}, {out});
935   // Phase 3, inputs and outputs
936   model->identifyInputsAndOutputs(
937     {in},
938     {out});
939   // Phase 4: set relaxed execution
940   model->relaxComputationFloat32toFloat16(true);
941   assert(model->isValid());
942 }
943 
is_ignored_scale_dynamic_output_shape_nchw_relaxed(int i)944 inline bool is_ignored_scale_dynamic_output_shape_nchw_relaxed(int i) {
945   static std::set<int> ignore = {};
946   return ignore.find(i) != ignore.end();
947 }
948 
CreateModel_scale_dynamic_output_shape_nchw_quant8(Model * model)949 void CreateModel_scale_dynamic_output_shape_nchw_quant8(Model *model) {
950   OperandType type0(Type::BOOL, {});
951   OperandType type24(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 2}, 0.25f, 128);
952   OperandType type27(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 128);
953   OperandType type4(Type::FLOAT32, {});
954   // Phase 1, operands
955   auto in = model->addOperand(&type24);
956   auto param2 = model->addOperand(&type4);
957   auto param3 = model->addOperand(&type4);
958   auto layout = model->addOperand(&type0);
959   auto out = model->addOperand(&type27);
960   // Phase 2, operations
961   static float param2_init[] = {0.5f};
962   model->setOperandValue(param2, param2_init, sizeof(float) * 1);
963   static float param3_init[] = {0.5f};
964   model->setOperandValue(param3, param3_init, sizeof(float) * 1);
965   static bool8 layout_init[] = {true};
966   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
967   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param2, param3, layout}, {out});
968   // Phase 3, inputs and outputs
969   model->identifyInputsAndOutputs(
970     {in},
971     {out});
972   assert(model->isValid());
973 }
974 
is_ignored_scale_dynamic_output_shape_nchw_quant8(int i)975 inline bool is_ignored_scale_dynamic_output_shape_nchw_quant8(int i) {
976   static std::set<int> ignore = {};
977   return ignore.find(i) != ignore.end();
978 }
979 
CreateModel_scale_dynamic_output_shape_nchw_float16(Model * model)980 void CreateModel_scale_dynamic_output_shape_nchw_float16(Model *model) {
981   OperandType type0(Type::BOOL, {});
982   OperandType type25(Type::TENSOR_FLOAT16, {1, 1, 2, 2});
983   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
984   OperandType type29(Type::FLOAT16, {});
985   // Phase 1, operands
986   auto in = model->addOperand(&type25);
987   auto param2 = model->addOperand(&type29);
988   auto param3 = model->addOperand(&type29);
989   auto layout = model->addOperand(&type0);
990   auto out = model->addOperand(&type28);
991   // Phase 2, operations
992   static _Float16 param2_init[] = {0.5f};
993   model->setOperandValue(param2, param2_init, sizeof(_Float16) * 1);
994   static _Float16 param3_init[] = {0.5f};
995   model->setOperandValue(param3, param3_init, sizeof(_Float16) * 1);
996   static bool8 layout_init[] = {true};
997   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
998   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in, param2, param3, layout}, {out});
999   // Phase 3, inputs and outputs
1000   model->identifyInputsAndOutputs(
1001     {in},
1002     {out});
1003   assert(model->isValid());
1004 }
1005 
is_ignored_scale_dynamic_output_shape_nchw_float16(int i)1006 inline bool is_ignored_scale_dynamic_output_shape_nchw_float16(int i) {
1007   static std::set<int> ignore = {};
1008   return ignore.find(i) != ignore.end();
1009 }
1010 
CreateModel_shape_nhwc_2(Model * model)1011 void CreateModel_shape_nhwc_2(Model *model) {
1012   OperandType type0(Type::BOOL, {});
1013   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
1014   OperandType type3(Type::INT32, {});
1015   OperandType type5(Type::TENSOR_FLOAT32, {1, 3, 3, 1});
1016   // Phase 1, operands
1017   auto in1 = model->addOperand(&type1);
1018   auto param4 = model->addOperand(&type3);
1019   auto param5 = model->addOperand(&type3);
1020   auto layout = model->addOperand(&type0);
1021   auto out1 = model->addOperand(&type5);
1022   // Phase 2, operations
1023   static int32_t param4_init[] = {3};
1024   model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
1025   static int32_t param5_init[] = {3};
1026   model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
1027   static bool8 layout_init[] = {false};
1028   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1029   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param4, param5, layout}, {out1});
1030   // Phase 3, inputs and outputs
1031   model->identifyInputsAndOutputs(
1032     {in1},
1033     {out1});
1034   assert(model->isValid());
1035 }
1036 
is_ignored_shape_nhwc_2(int i)1037 inline bool is_ignored_shape_nhwc_2(int i) {
1038   static std::set<int> ignore = {};
1039   return ignore.find(i) != ignore.end();
1040 }
1041 
CreateModel_shape_nhwc_relaxed_2(Model * model)1042 void CreateModel_shape_nhwc_relaxed_2(Model *model) {
1043   OperandType type0(Type::BOOL, {});
1044   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
1045   OperandType type3(Type::INT32, {});
1046   OperandType type5(Type::TENSOR_FLOAT32, {1, 3, 3, 1});
1047   // Phase 1, operands
1048   auto in1 = model->addOperand(&type1);
1049   auto param4 = model->addOperand(&type3);
1050   auto param5 = model->addOperand(&type3);
1051   auto layout = model->addOperand(&type0);
1052   auto out1 = model->addOperand(&type5);
1053   // Phase 2, operations
1054   static int32_t param4_init[] = {3};
1055   model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
1056   static int32_t param5_init[] = {3};
1057   model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
1058   static bool8 layout_init[] = {false};
1059   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1060   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param4, param5, layout}, {out1});
1061   // Phase 3, inputs and outputs
1062   model->identifyInputsAndOutputs(
1063     {in1},
1064     {out1});
1065   // Phase 4: set relaxed execution
1066   model->relaxComputationFloat32toFloat16(true);
1067   assert(model->isValid());
1068 }
1069 
is_ignored_shape_nhwc_relaxed_2(int i)1070 inline bool is_ignored_shape_nhwc_relaxed_2(int i) {
1071   static std::set<int> ignore = {};
1072   return ignore.find(i) != ignore.end();
1073 }
1074 
CreateModel_shape_nhwc_quant8_2(Model * model)1075 void CreateModel_shape_nhwc_quant8_2(Model *model) {
1076   OperandType type0(Type::BOOL, {});
1077   OperandType type3(Type::INT32, {});
1078   OperandType type30(Type::TENSOR_QUANT8_ASYMM, {1, 2, 2, 1}, 0.25f, 0);
1079   OperandType type31(Type::TENSOR_QUANT8_ASYMM, {1, 3, 3, 1}, 0.25f, 0);
1080   // Phase 1, operands
1081   auto in1 = model->addOperand(&type30);
1082   auto param4 = model->addOperand(&type3);
1083   auto param5 = model->addOperand(&type3);
1084   auto layout = model->addOperand(&type0);
1085   auto out1 = model->addOperand(&type31);
1086   // Phase 2, operations
1087   static int32_t param4_init[] = {3};
1088   model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
1089   static int32_t param5_init[] = {3};
1090   model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
1091   static bool8 layout_init[] = {false};
1092   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1093   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param4, param5, layout}, {out1});
1094   // Phase 3, inputs and outputs
1095   model->identifyInputsAndOutputs(
1096     {in1},
1097     {out1});
1098   assert(model->isValid());
1099 }
1100 
is_ignored_shape_nhwc_quant8_2(int i)1101 inline bool is_ignored_shape_nhwc_quant8_2(int i) {
1102   static std::set<int> ignore = {};
1103   return ignore.find(i) != ignore.end();
1104 }
1105 
CreateModel_shape_nhwc_float16_2(Model * model)1106 void CreateModel_shape_nhwc_float16_2(Model *model) {
1107   OperandType type0(Type::BOOL, {});
1108   OperandType type21(Type::TENSOR_FLOAT16, {1, 2, 2, 1});
1109   OperandType type3(Type::INT32, {});
1110   OperandType type32(Type::TENSOR_FLOAT16, {1, 3, 3, 1});
1111   // Phase 1, operands
1112   auto in1 = model->addOperand(&type21);
1113   auto param4 = model->addOperand(&type3);
1114   auto param5 = model->addOperand(&type3);
1115   auto layout = model->addOperand(&type0);
1116   auto out1 = model->addOperand(&type32);
1117   // Phase 2, operations
1118   static int32_t param4_init[] = {3};
1119   model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
1120   static int32_t param5_init[] = {3};
1121   model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
1122   static bool8 layout_init[] = {false};
1123   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1124   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param4, param5, layout}, {out1});
1125   // Phase 3, inputs and outputs
1126   model->identifyInputsAndOutputs(
1127     {in1},
1128     {out1});
1129   assert(model->isValid());
1130 }
1131 
is_ignored_shape_nhwc_float16_2(int i)1132 inline bool is_ignored_shape_nhwc_float16_2(int i) {
1133   static std::set<int> ignore = {};
1134   return ignore.find(i) != ignore.end();
1135 }
1136 
CreateModel_shape_nchw_2(Model * model)1137 void CreateModel_shape_nchw_2(Model *model) {
1138   OperandType type0(Type::BOOL, {});
1139   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
1140   OperandType type3(Type::INT32, {});
1141   OperandType type33(Type::TENSOR_FLOAT32, {1, 1, 3, 3});
1142   // Phase 1, operands
1143   auto in1 = model->addOperand(&type23);
1144   auto param4 = model->addOperand(&type3);
1145   auto param5 = model->addOperand(&type3);
1146   auto layout = model->addOperand(&type0);
1147   auto out1 = model->addOperand(&type33);
1148   // Phase 2, operations
1149   static int32_t param4_init[] = {3};
1150   model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
1151   static int32_t param5_init[] = {3};
1152   model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
1153   static bool8 layout_init[] = {true};
1154   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1155   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param4, param5, layout}, {out1});
1156   // Phase 3, inputs and outputs
1157   model->identifyInputsAndOutputs(
1158     {in1},
1159     {out1});
1160   assert(model->isValid());
1161 }
1162 
is_ignored_shape_nchw_2(int i)1163 inline bool is_ignored_shape_nchw_2(int i) {
1164   static std::set<int> ignore = {};
1165   return ignore.find(i) != ignore.end();
1166 }
1167 
CreateModel_shape_nchw_relaxed_2(Model * model)1168 void CreateModel_shape_nchw_relaxed_2(Model *model) {
1169   OperandType type0(Type::BOOL, {});
1170   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
1171   OperandType type3(Type::INT32, {});
1172   OperandType type33(Type::TENSOR_FLOAT32, {1, 1, 3, 3});
1173   // Phase 1, operands
1174   auto in1 = model->addOperand(&type23);
1175   auto param4 = model->addOperand(&type3);
1176   auto param5 = model->addOperand(&type3);
1177   auto layout = model->addOperand(&type0);
1178   auto out1 = model->addOperand(&type33);
1179   // Phase 2, operations
1180   static int32_t param4_init[] = {3};
1181   model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
1182   static int32_t param5_init[] = {3};
1183   model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
1184   static bool8 layout_init[] = {true};
1185   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1186   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param4, param5, layout}, {out1});
1187   // Phase 3, inputs and outputs
1188   model->identifyInputsAndOutputs(
1189     {in1},
1190     {out1});
1191   // Phase 4: set relaxed execution
1192   model->relaxComputationFloat32toFloat16(true);
1193   assert(model->isValid());
1194 }
1195 
is_ignored_shape_nchw_relaxed_2(int i)1196 inline bool is_ignored_shape_nchw_relaxed_2(int i) {
1197   static std::set<int> ignore = {};
1198   return ignore.find(i) != ignore.end();
1199 }
1200 
CreateModel_shape_nchw_quant8_2(Model * model)1201 void CreateModel_shape_nchw_quant8_2(Model *model) {
1202   OperandType type0(Type::BOOL, {});
1203   OperandType type3(Type::INT32, {});
1204   OperandType type34(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 2}, 0.25f, 0);
1205   OperandType type35(Type::TENSOR_QUANT8_ASYMM, {1, 1, 3, 3}, 0.25f, 0);
1206   // Phase 1, operands
1207   auto in1 = model->addOperand(&type34);
1208   auto param4 = model->addOperand(&type3);
1209   auto param5 = model->addOperand(&type3);
1210   auto layout = model->addOperand(&type0);
1211   auto out1 = model->addOperand(&type35);
1212   // Phase 2, operations
1213   static int32_t param4_init[] = {3};
1214   model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
1215   static int32_t param5_init[] = {3};
1216   model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
1217   static bool8 layout_init[] = {true};
1218   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1219   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param4, param5, layout}, {out1});
1220   // Phase 3, inputs and outputs
1221   model->identifyInputsAndOutputs(
1222     {in1},
1223     {out1});
1224   assert(model->isValid());
1225 }
1226 
is_ignored_shape_nchw_quant8_2(int i)1227 inline bool is_ignored_shape_nchw_quant8_2(int i) {
1228   static std::set<int> ignore = {};
1229   return ignore.find(i) != ignore.end();
1230 }
1231 
CreateModel_shape_nchw_float16_2(Model * model)1232 void CreateModel_shape_nchw_float16_2(Model *model) {
1233   OperandType type0(Type::BOOL, {});
1234   OperandType type25(Type::TENSOR_FLOAT16, {1, 1, 2, 2});
1235   OperandType type3(Type::INT32, {});
1236   OperandType type36(Type::TENSOR_FLOAT16, {1, 1, 3, 3});
1237   // Phase 1, operands
1238   auto in1 = model->addOperand(&type25);
1239   auto param4 = model->addOperand(&type3);
1240   auto param5 = model->addOperand(&type3);
1241   auto layout = model->addOperand(&type0);
1242   auto out1 = model->addOperand(&type36);
1243   // Phase 2, operations
1244   static int32_t param4_init[] = {3};
1245   model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
1246   static int32_t param5_init[] = {3};
1247   model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
1248   static bool8 layout_init[] = {true};
1249   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1250   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param4, param5, layout}, {out1});
1251   // Phase 3, inputs and outputs
1252   model->identifyInputsAndOutputs(
1253     {in1},
1254     {out1});
1255   assert(model->isValid());
1256 }
1257 
is_ignored_shape_nchw_float16_2(int i)1258 inline bool is_ignored_shape_nchw_float16_2(int i) {
1259   static std::set<int> ignore = {};
1260   return ignore.find(i) != ignore.end();
1261 }
1262 
CreateModel_shape_dynamic_output_shape_nhwc_2(Model * model)1263 void CreateModel_shape_dynamic_output_shape_nhwc_2(Model *model) {
1264   OperandType type0(Type::BOOL, {});
1265   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
1266   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
1267   OperandType type3(Type::INT32, {});
1268   // Phase 1, operands
1269   auto in1 = model->addOperand(&type1);
1270   auto param4 = model->addOperand(&type3);
1271   auto param5 = model->addOperand(&type3);
1272   auto layout = model->addOperand(&type0);
1273   auto out1 = model->addOperand(&type26);
1274   // Phase 2, operations
1275   static int32_t param4_init[] = {3};
1276   model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
1277   static int32_t param5_init[] = {3};
1278   model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
1279   static bool8 layout_init[] = {false};
1280   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1281   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param4, param5, layout}, {out1});
1282   // Phase 3, inputs and outputs
1283   model->identifyInputsAndOutputs(
1284     {in1},
1285     {out1});
1286   assert(model->isValid());
1287 }
1288 
is_ignored_shape_dynamic_output_shape_nhwc_2(int i)1289 inline bool is_ignored_shape_dynamic_output_shape_nhwc_2(int i) {
1290   static std::set<int> ignore = {};
1291   return ignore.find(i) != ignore.end();
1292 }
1293 
CreateModel_shape_dynamic_output_shape_nhwc_relaxed_2(Model * model)1294 void CreateModel_shape_dynamic_output_shape_nhwc_relaxed_2(Model *model) {
1295   OperandType type0(Type::BOOL, {});
1296   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
1297   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
1298   OperandType type3(Type::INT32, {});
1299   // Phase 1, operands
1300   auto in1 = model->addOperand(&type1);
1301   auto param4 = model->addOperand(&type3);
1302   auto param5 = model->addOperand(&type3);
1303   auto layout = model->addOperand(&type0);
1304   auto out1 = model->addOperand(&type26);
1305   // Phase 2, operations
1306   static int32_t param4_init[] = {3};
1307   model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
1308   static int32_t param5_init[] = {3};
1309   model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
1310   static bool8 layout_init[] = {false};
1311   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1312   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param4, param5, layout}, {out1});
1313   // Phase 3, inputs and outputs
1314   model->identifyInputsAndOutputs(
1315     {in1},
1316     {out1});
1317   // Phase 4: set relaxed execution
1318   model->relaxComputationFloat32toFloat16(true);
1319   assert(model->isValid());
1320 }
1321 
is_ignored_shape_dynamic_output_shape_nhwc_relaxed_2(int i)1322 inline bool is_ignored_shape_dynamic_output_shape_nhwc_relaxed_2(int i) {
1323   static std::set<int> ignore = {};
1324   return ignore.find(i) != ignore.end();
1325 }
1326 
CreateModel_shape_dynamic_output_shape_nhwc_quant8_2(Model * model)1327 void CreateModel_shape_dynamic_output_shape_nhwc_quant8_2(Model *model) {
1328   OperandType type0(Type::BOOL, {});
1329   OperandType type3(Type::INT32, {});
1330   OperandType type30(Type::TENSOR_QUANT8_ASYMM, {1, 2, 2, 1}, 0.25f, 0);
1331   OperandType type37(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 0);
1332   // Phase 1, operands
1333   auto in1 = model->addOperand(&type30);
1334   auto param4 = model->addOperand(&type3);
1335   auto param5 = model->addOperand(&type3);
1336   auto layout = model->addOperand(&type0);
1337   auto out1 = model->addOperand(&type37);
1338   // Phase 2, operations
1339   static int32_t param4_init[] = {3};
1340   model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
1341   static int32_t param5_init[] = {3};
1342   model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
1343   static bool8 layout_init[] = {false};
1344   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1345   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param4, param5, layout}, {out1});
1346   // Phase 3, inputs and outputs
1347   model->identifyInputsAndOutputs(
1348     {in1},
1349     {out1});
1350   assert(model->isValid());
1351 }
1352 
is_ignored_shape_dynamic_output_shape_nhwc_quant8_2(int i)1353 inline bool is_ignored_shape_dynamic_output_shape_nhwc_quant8_2(int i) {
1354   static std::set<int> ignore = {};
1355   return ignore.find(i) != ignore.end();
1356 }
1357 
CreateModel_shape_dynamic_output_shape_nhwc_float16_2(Model * model)1358 void CreateModel_shape_dynamic_output_shape_nhwc_float16_2(Model *model) {
1359   OperandType type0(Type::BOOL, {});
1360   OperandType type21(Type::TENSOR_FLOAT16, {1, 2, 2, 1});
1361   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
1362   OperandType type3(Type::INT32, {});
1363   // Phase 1, operands
1364   auto in1 = model->addOperand(&type21);
1365   auto param4 = model->addOperand(&type3);
1366   auto param5 = model->addOperand(&type3);
1367   auto layout = model->addOperand(&type0);
1368   auto out1 = model->addOperand(&type28);
1369   // Phase 2, operations
1370   static int32_t param4_init[] = {3};
1371   model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
1372   static int32_t param5_init[] = {3};
1373   model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
1374   static bool8 layout_init[] = {false};
1375   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1376   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param4, param5, layout}, {out1});
1377   // Phase 3, inputs and outputs
1378   model->identifyInputsAndOutputs(
1379     {in1},
1380     {out1});
1381   assert(model->isValid());
1382 }
1383 
is_ignored_shape_dynamic_output_shape_nhwc_float16_2(int i)1384 inline bool is_ignored_shape_dynamic_output_shape_nhwc_float16_2(int i) {
1385   static std::set<int> ignore = {};
1386   return ignore.find(i) != ignore.end();
1387 }
1388 
CreateModel_shape_dynamic_output_shape_nchw_2(Model * model)1389 void CreateModel_shape_dynamic_output_shape_nchw_2(Model *model) {
1390   OperandType type0(Type::BOOL, {});
1391   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
1392   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
1393   OperandType type3(Type::INT32, {});
1394   // Phase 1, operands
1395   auto in1 = model->addOperand(&type23);
1396   auto param4 = model->addOperand(&type3);
1397   auto param5 = model->addOperand(&type3);
1398   auto layout = model->addOperand(&type0);
1399   auto out1 = model->addOperand(&type26);
1400   // Phase 2, operations
1401   static int32_t param4_init[] = {3};
1402   model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
1403   static int32_t param5_init[] = {3};
1404   model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
1405   static bool8 layout_init[] = {true};
1406   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1407   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param4, param5, layout}, {out1});
1408   // Phase 3, inputs and outputs
1409   model->identifyInputsAndOutputs(
1410     {in1},
1411     {out1});
1412   assert(model->isValid());
1413 }
1414 
is_ignored_shape_dynamic_output_shape_nchw_2(int i)1415 inline bool is_ignored_shape_dynamic_output_shape_nchw_2(int i) {
1416   static std::set<int> ignore = {};
1417   return ignore.find(i) != ignore.end();
1418 }
1419 
CreateModel_shape_dynamic_output_shape_nchw_relaxed_2(Model * model)1420 void CreateModel_shape_dynamic_output_shape_nchw_relaxed_2(Model *model) {
1421   OperandType type0(Type::BOOL, {});
1422   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
1423   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
1424   OperandType type3(Type::INT32, {});
1425   // Phase 1, operands
1426   auto in1 = model->addOperand(&type23);
1427   auto param4 = model->addOperand(&type3);
1428   auto param5 = model->addOperand(&type3);
1429   auto layout = model->addOperand(&type0);
1430   auto out1 = model->addOperand(&type26);
1431   // Phase 2, operations
1432   static int32_t param4_init[] = {3};
1433   model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
1434   static int32_t param5_init[] = {3};
1435   model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
1436   static bool8 layout_init[] = {true};
1437   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1438   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param4, param5, layout}, {out1});
1439   // Phase 3, inputs and outputs
1440   model->identifyInputsAndOutputs(
1441     {in1},
1442     {out1});
1443   // Phase 4: set relaxed execution
1444   model->relaxComputationFloat32toFloat16(true);
1445   assert(model->isValid());
1446 }
1447 
is_ignored_shape_dynamic_output_shape_nchw_relaxed_2(int i)1448 inline bool is_ignored_shape_dynamic_output_shape_nchw_relaxed_2(int i) {
1449   static std::set<int> ignore = {};
1450   return ignore.find(i) != ignore.end();
1451 }
1452 
CreateModel_shape_dynamic_output_shape_nchw_quant8_2(Model * model)1453 void CreateModel_shape_dynamic_output_shape_nchw_quant8_2(Model *model) {
1454   OperandType type0(Type::BOOL, {});
1455   OperandType type3(Type::INT32, {});
1456   OperandType type34(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 2}, 0.25f, 0);
1457   OperandType type37(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 0);
1458   // Phase 1, operands
1459   auto in1 = model->addOperand(&type34);
1460   auto param4 = model->addOperand(&type3);
1461   auto param5 = model->addOperand(&type3);
1462   auto layout = model->addOperand(&type0);
1463   auto out1 = model->addOperand(&type37);
1464   // Phase 2, operations
1465   static int32_t param4_init[] = {3};
1466   model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
1467   static int32_t param5_init[] = {3};
1468   model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
1469   static bool8 layout_init[] = {true};
1470   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1471   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param4, param5, layout}, {out1});
1472   // Phase 3, inputs and outputs
1473   model->identifyInputsAndOutputs(
1474     {in1},
1475     {out1});
1476   assert(model->isValid());
1477 }
1478 
is_ignored_shape_dynamic_output_shape_nchw_quant8_2(int i)1479 inline bool is_ignored_shape_dynamic_output_shape_nchw_quant8_2(int i) {
1480   static std::set<int> ignore = {};
1481   return ignore.find(i) != ignore.end();
1482 }
1483 
CreateModel_shape_dynamic_output_shape_nchw_float16_2(Model * model)1484 void CreateModel_shape_dynamic_output_shape_nchw_float16_2(Model *model) {
1485   OperandType type0(Type::BOOL, {});
1486   OperandType type25(Type::TENSOR_FLOAT16, {1, 1, 2, 2});
1487   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
1488   OperandType type3(Type::INT32, {});
1489   // Phase 1, operands
1490   auto in1 = model->addOperand(&type25);
1491   auto param4 = model->addOperand(&type3);
1492   auto param5 = model->addOperand(&type3);
1493   auto layout = model->addOperand(&type0);
1494   auto out1 = model->addOperand(&type28);
1495   // Phase 2, operations
1496   static int32_t param4_init[] = {3};
1497   model->setOperandValue(param4, param4_init, sizeof(int32_t) * 1);
1498   static int32_t param5_init[] = {3};
1499   model->setOperandValue(param5, param5_init, sizeof(int32_t) * 1);
1500   static bool8 layout_init[] = {true};
1501   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1502   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param4, param5, layout}, {out1});
1503   // Phase 3, inputs and outputs
1504   model->identifyInputsAndOutputs(
1505     {in1},
1506     {out1});
1507   assert(model->isValid());
1508 }
1509 
is_ignored_shape_dynamic_output_shape_nchw_float16_2(int i)1510 inline bool is_ignored_shape_dynamic_output_shape_nchw_float16_2(int i) {
1511   static std::set<int> ignore = {};
1512   return ignore.find(i) != ignore.end();
1513 }
1514 
CreateModel_scale_nhwc_2(Model * model)1515 void CreateModel_scale_nhwc_2(Model *model) {
1516   OperandType type0(Type::BOOL, {});
1517   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
1518   OperandType type4(Type::FLOAT32, {});
1519   OperandType type5(Type::TENSOR_FLOAT32, {1, 3, 3, 1});
1520   // Phase 1, operands
1521   auto in1 = model->addOperand(&type1);
1522   auto param6 = model->addOperand(&type4);
1523   auto param7 = model->addOperand(&type4);
1524   auto layout = model->addOperand(&type0);
1525   auto out1 = model->addOperand(&type5);
1526   // Phase 2, operations
1527   static float param6_init[] = {1.5f};
1528   model->setOperandValue(param6, param6_init, sizeof(float) * 1);
1529   static float param7_init[] = {1.5f};
1530   model->setOperandValue(param7, param7_init, sizeof(float) * 1);
1531   static bool8 layout_init[] = {false};
1532   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1533   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param6, param7, layout}, {out1});
1534   // Phase 3, inputs and outputs
1535   model->identifyInputsAndOutputs(
1536     {in1},
1537     {out1});
1538   assert(model->isValid());
1539 }
1540 
is_ignored_scale_nhwc_2(int i)1541 inline bool is_ignored_scale_nhwc_2(int i) {
1542   static std::set<int> ignore = {};
1543   return ignore.find(i) != ignore.end();
1544 }
1545 
CreateModel_scale_nhwc_relaxed_2(Model * model)1546 void CreateModel_scale_nhwc_relaxed_2(Model *model) {
1547   OperandType type0(Type::BOOL, {});
1548   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
1549   OperandType type4(Type::FLOAT32, {});
1550   OperandType type5(Type::TENSOR_FLOAT32, {1, 3, 3, 1});
1551   // Phase 1, operands
1552   auto in1 = model->addOperand(&type1);
1553   auto param6 = model->addOperand(&type4);
1554   auto param7 = model->addOperand(&type4);
1555   auto layout = model->addOperand(&type0);
1556   auto out1 = model->addOperand(&type5);
1557   // Phase 2, operations
1558   static float param6_init[] = {1.5f};
1559   model->setOperandValue(param6, param6_init, sizeof(float) * 1);
1560   static float param7_init[] = {1.5f};
1561   model->setOperandValue(param7, param7_init, sizeof(float) * 1);
1562   static bool8 layout_init[] = {false};
1563   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1564   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param6, param7, layout}, {out1});
1565   // Phase 3, inputs and outputs
1566   model->identifyInputsAndOutputs(
1567     {in1},
1568     {out1});
1569   // Phase 4: set relaxed execution
1570   model->relaxComputationFloat32toFloat16(true);
1571   assert(model->isValid());
1572 }
1573 
is_ignored_scale_nhwc_relaxed_2(int i)1574 inline bool is_ignored_scale_nhwc_relaxed_2(int i) {
1575   static std::set<int> ignore = {};
1576   return ignore.find(i) != ignore.end();
1577 }
1578 
CreateModel_scale_nhwc_quant8_2(Model * model)1579 void CreateModel_scale_nhwc_quant8_2(Model *model) {
1580   OperandType type0(Type::BOOL, {});
1581   OperandType type30(Type::TENSOR_QUANT8_ASYMM, {1, 2, 2, 1}, 0.25f, 0);
1582   OperandType type31(Type::TENSOR_QUANT8_ASYMM, {1, 3, 3, 1}, 0.25f, 0);
1583   OperandType type4(Type::FLOAT32, {});
1584   // Phase 1, operands
1585   auto in1 = model->addOperand(&type30);
1586   auto param6 = model->addOperand(&type4);
1587   auto param7 = model->addOperand(&type4);
1588   auto layout = model->addOperand(&type0);
1589   auto out1 = model->addOperand(&type31);
1590   // Phase 2, operations
1591   static float param6_init[] = {1.5f};
1592   model->setOperandValue(param6, param6_init, sizeof(float) * 1);
1593   static float param7_init[] = {1.5f};
1594   model->setOperandValue(param7, param7_init, sizeof(float) * 1);
1595   static bool8 layout_init[] = {false};
1596   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1597   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param6, param7, layout}, {out1});
1598   // Phase 3, inputs and outputs
1599   model->identifyInputsAndOutputs(
1600     {in1},
1601     {out1});
1602   assert(model->isValid());
1603 }
1604 
is_ignored_scale_nhwc_quant8_2(int i)1605 inline bool is_ignored_scale_nhwc_quant8_2(int i) {
1606   static std::set<int> ignore = {};
1607   return ignore.find(i) != ignore.end();
1608 }
1609 
CreateModel_scale_nhwc_float16_2(Model * model)1610 void CreateModel_scale_nhwc_float16_2(Model *model) {
1611   OperandType type0(Type::BOOL, {});
1612   OperandType type21(Type::TENSOR_FLOAT16, {1, 2, 2, 1});
1613   OperandType type29(Type::FLOAT16, {});
1614   OperandType type32(Type::TENSOR_FLOAT16, {1, 3, 3, 1});
1615   // Phase 1, operands
1616   auto in1 = model->addOperand(&type21);
1617   auto param6 = model->addOperand(&type29);
1618   auto param7 = model->addOperand(&type29);
1619   auto layout = model->addOperand(&type0);
1620   auto out1 = model->addOperand(&type32);
1621   // Phase 2, operations
1622   static _Float16 param6_init[] = {1.5f};
1623   model->setOperandValue(param6, param6_init, sizeof(_Float16) * 1);
1624   static _Float16 param7_init[] = {1.5f};
1625   model->setOperandValue(param7, param7_init, sizeof(_Float16) * 1);
1626   static bool8 layout_init[] = {false};
1627   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1628   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param6, param7, layout}, {out1});
1629   // Phase 3, inputs and outputs
1630   model->identifyInputsAndOutputs(
1631     {in1},
1632     {out1});
1633   assert(model->isValid());
1634 }
1635 
is_ignored_scale_nhwc_float16_2(int i)1636 inline bool is_ignored_scale_nhwc_float16_2(int i) {
1637   static std::set<int> ignore = {};
1638   return ignore.find(i) != ignore.end();
1639 }
1640 
CreateModel_scale_nchw_2(Model * model)1641 void CreateModel_scale_nchw_2(Model *model) {
1642   OperandType type0(Type::BOOL, {});
1643   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
1644   OperandType type33(Type::TENSOR_FLOAT32, {1, 1, 3, 3});
1645   OperandType type4(Type::FLOAT32, {});
1646   // Phase 1, operands
1647   auto in1 = model->addOperand(&type23);
1648   auto param6 = model->addOperand(&type4);
1649   auto param7 = model->addOperand(&type4);
1650   auto layout = model->addOperand(&type0);
1651   auto out1 = model->addOperand(&type33);
1652   // Phase 2, operations
1653   static float param6_init[] = {1.5f};
1654   model->setOperandValue(param6, param6_init, sizeof(float) * 1);
1655   static float param7_init[] = {1.5f};
1656   model->setOperandValue(param7, param7_init, sizeof(float) * 1);
1657   static bool8 layout_init[] = {true};
1658   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1659   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param6, param7, layout}, {out1});
1660   // Phase 3, inputs and outputs
1661   model->identifyInputsAndOutputs(
1662     {in1},
1663     {out1});
1664   assert(model->isValid());
1665 }
1666 
is_ignored_scale_nchw_2(int i)1667 inline bool is_ignored_scale_nchw_2(int i) {
1668   static std::set<int> ignore = {};
1669   return ignore.find(i) != ignore.end();
1670 }
1671 
CreateModel_scale_nchw_relaxed_2(Model * model)1672 void CreateModel_scale_nchw_relaxed_2(Model *model) {
1673   OperandType type0(Type::BOOL, {});
1674   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
1675   OperandType type33(Type::TENSOR_FLOAT32, {1, 1, 3, 3});
1676   OperandType type4(Type::FLOAT32, {});
1677   // Phase 1, operands
1678   auto in1 = model->addOperand(&type23);
1679   auto param6 = model->addOperand(&type4);
1680   auto param7 = model->addOperand(&type4);
1681   auto layout = model->addOperand(&type0);
1682   auto out1 = model->addOperand(&type33);
1683   // Phase 2, operations
1684   static float param6_init[] = {1.5f};
1685   model->setOperandValue(param6, param6_init, sizeof(float) * 1);
1686   static float param7_init[] = {1.5f};
1687   model->setOperandValue(param7, param7_init, sizeof(float) * 1);
1688   static bool8 layout_init[] = {true};
1689   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1690   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param6, param7, layout}, {out1});
1691   // Phase 3, inputs and outputs
1692   model->identifyInputsAndOutputs(
1693     {in1},
1694     {out1});
1695   // Phase 4: set relaxed execution
1696   model->relaxComputationFloat32toFloat16(true);
1697   assert(model->isValid());
1698 }
1699 
is_ignored_scale_nchw_relaxed_2(int i)1700 inline bool is_ignored_scale_nchw_relaxed_2(int i) {
1701   static std::set<int> ignore = {};
1702   return ignore.find(i) != ignore.end();
1703 }
1704 
CreateModel_scale_nchw_quant8_2(Model * model)1705 void CreateModel_scale_nchw_quant8_2(Model *model) {
1706   OperandType type0(Type::BOOL, {});
1707   OperandType type34(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 2}, 0.25f, 0);
1708   OperandType type35(Type::TENSOR_QUANT8_ASYMM, {1, 1, 3, 3}, 0.25f, 0);
1709   OperandType type4(Type::FLOAT32, {});
1710   // Phase 1, operands
1711   auto in1 = model->addOperand(&type34);
1712   auto param6 = model->addOperand(&type4);
1713   auto param7 = model->addOperand(&type4);
1714   auto layout = model->addOperand(&type0);
1715   auto out1 = model->addOperand(&type35);
1716   // Phase 2, operations
1717   static float param6_init[] = {1.5f};
1718   model->setOperandValue(param6, param6_init, sizeof(float) * 1);
1719   static float param7_init[] = {1.5f};
1720   model->setOperandValue(param7, param7_init, sizeof(float) * 1);
1721   static bool8 layout_init[] = {true};
1722   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1723   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param6, param7, layout}, {out1});
1724   // Phase 3, inputs and outputs
1725   model->identifyInputsAndOutputs(
1726     {in1},
1727     {out1});
1728   assert(model->isValid());
1729 }
1730 
is_ignored_scale_nchw_quant8_2(int i)1731 inline bool is_ignored_scale_nchw_quant8_2(int i) {
1732   static std::set<int> ignore = {};
1733   return ignore.find(i) != ignore.end();
1734 }
1735 
CreateModel_scale_nchw_float16_2(Model * model)1736 void CreateModel_scale_nchw_float16_2(Model *model) {
1737   OperandType type0(Type::BOOL, {});
1738   OperandType type25(Type::TENSOR_FLOAT16, {1, 1, 2, 2});
1739   OperandType type29(Type::FLOAT16, {});
1740   OperandType type36(Type::TENSOR_FLOAT16, {1, 1, 3, 3});
1741   // Phase 1, operands
1742   auto in1 = model->addOperand(&type25);
1743   auto param6 = model->addOperand(&type29);
1744   auto param7 = model->addOperand(&type29);
1745   auto layout = model->addOperand(&type0);
1746   auto out1 = model->addOperand(&type36);
1747   // Phase 2, operations
1748   static _Float16 param6_init[] = {1.5f};
1749   model->setOperandValue(param6, param6_init, sizeof(_Float16) * 1);
1750   static _Float16 param7_init[] = {1.5f};
1751   model->setOperandValue(param7, param7_init, sizeof(_Float16) * 1);
1752   static bool8 layout_init[] = {true};
1753   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1754   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param6, param7, layout}, {out1});
1755   // Phase 3, inputs and outputs
1756   model->identifyInputsAndOutputs(
1757     {in1},
1758     {out1});
1759   assert(model->isValid());
1760 }
1761 
is_ignored_scale_nchw_float16_2(int i)1762 inline bool is_ignored_scale_nchw_float16_2(int i) {
1763   static std::set<int> ignore = {};
1764   return ignore.find(i) != ignore.end();
1765 }
1766 
CreateModel_scale_dynamic_output_shape_nhwc_2(Model * model)1767 void CreateModel_scale_dynamic_output_shape_nhwc_2(Model *model) {
1768   OperandType type0(Type::BOOL, {});
1769   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
1770   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
1771   OperandType type4(Type::FLOAT32, {});
1772   // Phase 1, operands
1773   auto in1 = model->addOperand(&type1);
1774   auto param6 = model->addOperand(&type4);
1775   auto param7 = model->addOperand(&type4);
1776   auto layout = model->addOperand(&type0);
1777   auto out1 = model->addOperand(&type26);
1778   // Phase 2, operations
1779   static float param6_init[] = {1.5f};
1780   model->setOperandValue(param6, param6_init, sizeof(float) * 1);
1781   static float param7_init[] = {1.5f};
1782   model->setOperandValue(param7, param7_init, sizeof(float) * 1);
1783   static bool8 layout_init[] = {false};
1784   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1785   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param6, param7, layout}, {out1});
1786   // Phase 3, inputs and outputs
1787   model->identifyInputsAndOutputs(
1788     {in1},
1789     {out1});
1790   assert(model->isValid());
1791 }
1792 
is_ignored_scale_dynamic_output_shape_nhwc_2(int i)1793 inline bool is_ignored_scale_dynamic_output_shape_nhwc_2(int i) {
1794   static std::set<int> ignore = {};
1795   return ignore.find(i) != ignore.end();
1796 }
1797 
CreateModel_scale_dynamic_output_shape_nhwc_relaxed_2(Model * model)1798 void CreateModel_scale_dynamic_output_shape_nhwc_relaxed_2(Model *model) {
1799   OperandType type0(Type::BOOL, {});
1800   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
1801   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
1802   OperandType type4(Type::FLOAT32, {});
1803   // Phase 1, operands
1804   auto in1 = model->addOperand(&type1);
1805   auto param6 = model->addOperand(&type4);
1806   auto param7 = model->addOperand(&type4);
1807   auto layout = model->addOperand(&type0);
1808   auto out1 = model->addOperand(&type26);
1809   // Phase 2, operations
1810   static float param6_init[] = {1.5f};
1811   model->setOperandValue(param6, param6_init, sizeof(float) * 1);
1812   static float param7_init[] = {1.5f};
1813   model->setOperandValue(param7, param7_init, sizeof(float) * 1);
1814   static bool8 layout_init[] = {false};
1815   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1816   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param6, param7, layout}, {out1});
1817   // Phase 3, inputs and outputs
1818   model->identifyInputsAndOutputs(
1819     {in1},
1820     {out1});
1821   // Phase 4: set relaxed execution
1822   model->relaxComputationFloat32toFloat16(true);
1823   assert(model->isValid());
1824 }
1825 
is_ignored_scale_dynamic_output_shape_nhwc_relaxed_2(int i)1826 inline bool is_ignored_scale_dynamic_output_shape_nhwc_relaxed_2(int i) {
1827   static std::set<int> ignore = {};
1828   return ignore.find(i) != ignore.end();
1829 }
1830 
CreateModel_scale_dynamic_output_shape_nhwc_quant8_2(Model * model)1831 void CreateModel_scale_dynamic_output_shape_nhwc_quant8_2(Model *model) {
1832   OperandType type0(Type::BOOL, {});
1833   OperandType type30(Type::TENSOR_QUANT8_ASYMM, {1, 2, 2, 1}, 0.25f, 0);
1834   OperandType type37(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 0);
1835   OperandType type4(Type::FLOAT32, {});
1836   // Phase 1, operands
1837   auto in1 = model->addOperand(&type30);
1838   auto param6 = model->addOperand(&type4);
1839   auto param7 = model->addOperand(&type4);
1840   auto layout = model->addOperand(&type0);
1841   auto out1 = model->addOperand(&type37);
1842   // Phase 2, operations
1843   static float param6_init[] = {1.5f};
1844   model->setOperandValue(param6, param6_init, sizeof(float) * 1);
1845   static float param7_init[] = {1.5f};
1846   model->setOperandValue(param7, param7_init, sizeof(float) * 1);
1847   static bool8 layout_init[] = {false};
1848   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1849   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param6, param7, layout}, {out1});
1850   // Phase 3, inputs and outputs
1851   model->identifyInputsAndOutputs(
1852     {in1},
1853     {out1});
1854   assert(model->isValid());
1855 }
1856 
is_ignored_scale_dynamic_output_shape_nhwc_quant8_2(int i)1857 inline bool is_ignored_scale_dynamic_output_shape_nhwc_quant8_2(int i) {
1858   static std::set<int> ignore = {};
1859   return ignore.find(i) != ignore.end();
1860 }
1861 
CreateModel_scale_dynamic_output_shape_nhwc_float16_2(Model * model)1862 void CreateModel_scale_dynamic_output_shape_nhwc_float16_2(Model *model) {
1863   OperandType type0(Type::BOOL, {});
1864   OperandType type21(Type::TENSOR_FLOAT16, {1, 2, 2, 1});
1865   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
1866   OperandType type29(Type::FLOAT16, {});
1867   // Phase 1, operands
1868   auto in1 = model->addOperand(&type21);
1869   auto param6 = model->addOperand(&type29);
1870   auto param7 = model->addOperand(&type29);
1871   auto layout = model->addOperand(&type0);
1872   auto out1 = model->addOperand(&type28);
1873   // Phase 2, operations
1874   static _Float16 param6_init[] = {1.5f};
1875   model->setOperandValue(param6, param6_init, sizeof(_Float16) * 1);
1876   static _Float16 param7_init[] = {1.5f};
1877   model->setOperandValue(param7, param7_init, sizeof(_Float16) * 1);
1878   static bool8 layout_init[] = {false};
1879   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1880   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param6, param7, layout}, {out1});
1881   // Phase 3, inputs and outputs
1882   model->identifyInputsAndOutputs(
1883     {in1},
1884     {out1});
1885   assert(model->isValid());
1886 }
1887 
is_ignored_scale_dynamic_output_shape_nhwc_float16_2(int i)1888 inline bool is_ignored_scale_dynamic_output_shape_nhwc_float16_2(int i) {
1889   static std::set<int> ignore = {};
1890   return ignore.find(i) != ignore.end();
1891 }
1892 
CreateModel_scale_dynamic_output_shape_nchw_2(Model * model)1893 void CreateModel_scale_dynamic_output_shape_nchw_2(Model *model) {
1894   OperandType type0(Type::BOOL, {});
1895   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
1896   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
1897   OperandType type4(Type::FLOAT32, {});
1898   // Phase 1, operands
1899   auto in1 = model->addOperand(&type23);
1900   auto param6 = model->addOperand(&type4);
1901   auto param7 = model->addOperand(&type4);
1902   auto layout = model->addOperand(&type0);
1903   auto out1 = model->addOperand(&type26);
1904   // Phase 2, operations
1905   static float param6_init[] = {1.5f};
1906   model->setOperandValue(param6, param6_init, sizeof(float) * 1);
1907   static float param7_init[] = {1.5f};
1908   model->setOperandValue(param7, param7_init, sizeof(float) * 1);
1909   static bool8 layout_init[] = {true};
1910   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1911   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param6, param7, layout}, {out1});
1912   // Phase 3, inputs and outputs
1913   model->identifyInputsAndOutputs(
1914     {in1},
1915     {out1});
1916   assert(model->isValid());
1917 }
1918 
is_ignored_scale_dynamic_output_shape_nchw_2(int i)1919 inline bool is_ignored_scale_dynamic_output_shape_nchw_2(int i) {
1920   static std::set<int> ignore = {};
1921   return ignore.find(i) != ignore.end();
1922 }
1923 
CreateModel_scale_dynamic_output_shape_nchw_relaxed_2(Model * model)1924 void CreateModel_scale_dynamic_output_shape_nchw_relaxed_2(Model *model) {
1925   OperandType type0(Type::BOOL, {});
1926   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
1927   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
1928   OperandType type4(Type::FLOAT32, {});
1929   // Phase 1, operands
1930   auto in1 = model->addOperand(&type23);
1931   auto param6 = model->addOperand(&type4);
1932   auto param7 = model->addOperand(&type4);
1933   auto layout = model->addOperand(&type0);
1934   auto out1 = model->addOperand(&type26);
1935   // Phase 2, operations
1936   static float param6_init[] = {1.5f};
1937   model->setOperandValue(param6, param6_init, sizeof(float) * 1);
1938   static float param7_init[] = {1.5f};
1939   model->setOperandValue(param7, param7_init, sizeof(float) * 1);
1940   static bool8 layout_init[] = {true};
1941   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1942   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param6, param7, layout}, {out1});
1943   // Phase 3, inputs and outputs
1944   model->identifyInputsAndOutputs(
1945     {in1},
1946     {out1});
1947   // Phase 4: set relaxed execution
1948   model->relaxComputationFloat32toFloat16(true);
1949   assert(model->isValid());
1950 }
1951 
is_ignored_scale_dynamic_output_shape_nchw_relaxed_2(int i)1952 inline bool is_ignored_scale_dynamic_output_shape_nchw_relaxed_2(int i) {
1953   static std::set<int> ignore = {};
1954   return ignore.find(i) != ignore.end();
1955 }
1956 
CreateModel_scale_dynamic_output_shape_nchw_quant8_2(Model * model)1957 void CreateModel_scale_dynamic_output_shape_nchw_quant8_2(Model *model) {
1958   OperandType type0(Type::BOOL, {});
1959   OperandType type34(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 2}, 0.25f, 0);
1960   OperandType type37(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 0);
1961   OperandType type4(Type::FLOAT32, {});
1962   // Phase 1, operands
1963   auto in1 = model->addOperand(&type34);
1964   auto param6 = model->addOperand(&type4);
1965   auto param7 = model->addOperand(&type4);
1966   auto layout = model->addOperand(&type0);
1967   auto out1 = model->addOperand(&type37);
1968   // Phase 2, operations
1969   static float param6_init[] = {1.5f};
1970   model->setOperandValue(param6, param6_init, sizeof(float) * 1);
1971   static float param7_init[] = {1.5f};
1972   model->setOperandValue(param7, param7_init, sizeof(float) * 1);
1973   static bool8 layout_init[] = {true};
1974   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
1975   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param6, param7, layout}, {out1});
1976   // Phase 3, inputs and outputs
1977   model->identifyInputsAndOutputs(
1978     {in1},
1979     {out1});
1980   assert(model->isValid());
1981 }
1982 
is_ignored_scale_dynamic_output_shape_nchw_quant8_2(int i)1983 inline bool is_ignored_scale_dynamic_output_shape_nchw_quant8_2(int i) {
1984   static std::set<int> ignore = {};
1985   return ignore.find(i) != ignore.end();
1986 }
1987 
CreateModel_scale_dynamic_output_shape_nchw_float16_2(Model * model)1988 void CreateModel_scale_dynamic_output_shape_nchw_float16_2(Model *model) {
1989   OperandType type0(Type::BOOL, {});
1990   OperandType type25(Type::TENSOR_FLOAT16, {1, 1, 2, 2});
1991   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
1992   OperandType type29(Type::FLOAT16, {});
1993   // Phase 1, operands
1994   auto in1 = model->addOperand(&type25);
1995   auto param6 = model->addOperand(&type29);
1996   auto param7 = model->addOperand(&type29);
1997   auto layout = model->addOperand(&type0);
1998   auto out1 = model->addOperand(&type28);
1999   // Phase 2, operations
2000   static _Float16 param6_init[] = {1.5f};
2001   model->setOperandValue(param6, param6_init, sizeof(_Float16) * 1);
2002   static _Float16 param7_init[] = {1.5f};
2003   model->setOperandValue(param7, param7_init, sizeof(_Float16) * 1);
2004   static bool8 layout_init[] = {true};
2005   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2006   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in1, param6, param7, layout}, {out1});
2007   // Phase 3, inputs and outputs
2008   model->identifyInputsAndOutputs(
2009     {in1},
2010     {out1});
2011   assert(model->isValid());
2012 }
2013 
is_ignored_scale_dynamic_output_shape_nchw_float16_2(int i)2014 inline bool is_ignored_scale_dynamic_output_shape_nchw_float16_2(int i) {
2015   static std::set<int> ignore = {};
2016   return ignore.find(i) != ignore.end();
2017 }
2018 
CreateModel_shape_nhwc_3(Model * model)2019 void CreateModel_shape_nhwc_3(Model *model) {
2020   OperandType type0(Type::BOOL, {});
2021   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
2022   OperandType type3(Type::INT32, {});
2023   OperandType type5(Type::TENSOR_FLOAT32, {1, 3, 3, 1});
2024   // Phase 1, operands
2025   auto in2 = model->addOperand(&type5);
2026   auto param8 = model->addOperand(&type3);
2027   auto param9 = model->addOperand(&type3);
2028   auto layout = model->addOperand(&type0);
2029   auto out2 = model->addOperand(&type1);
2030   // Phase 2, operations
2031   static int32_t param8_init[] = {2};
2032   model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
2033   static int32_t param9_init[] = {2};
2034   model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
2035   static bool8 layout_init[] = {false};
2036   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2037   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param8, param9, layout}, {out2});
2038   // Phase 3, inputs and outputs
2039   model->identifyInputsAndOutputs(
2040     {in2},
2041     {out2});
2042   assert(model->isValid());
2043 }
2044 
is_ignored_shape_nhwc_3(int i)2045 inline bool is_ignored_shape_nhwc_3(int i) {
2046   static std::set<int> ignore = {};
2047   return ignore.find(i) != ignore.end();
2048 }
2049 
CreateModel_shape_nhwc_relaxed_3(Model * model)2050 void CreateModel_shape_nhwc_relaxed_3(Model *model) {
2051   OperandType type0(Type::BOOL, {});
2052   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
2053   OperandType type3(Type::INT32, {});
2054   OperandType type5(Type::TENSOR_FLOAT32, {1, 3, 3, 1});
2055   // Phase 1, operands
2056   auto in2 = model->addOperand(&type5);
2057   auto param8 = model->addOperand(&type3);
2058   auto param9 = model->addOperand(&type3);
2059   auto layout = model->addOperand(&type0);
2060   auto out2 = model->addOperand(&type1);
2061   // Phase 2, operations
2062   static int32_t param8_init[] = {2};
2063   model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
2064   static int32_t param9_init[] = {2};
2065   model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
2066   static bool8 layout_init[] = {false};
2067   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2068   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param8, param9, layout}, {out2});
2069   // Phase 3, inputs and outputs
2070   model->identifyInputsAndOutputs(
2071     {in2},
2072     {out2});
2073   // Phase 4: set relaxed execution
2074   model->relaxComputationFloat32toFloat16(true);
2075   assert(model->isValid());
2076 }
2077 
is_ignored_shape_nhwc_relaxed_3(int i)2078 inline bool is_ignored_shape_nhwc_relaxed_3(int i) {
2079   static std::set<int> ignore = {};
2080   return ignore.find(i) != ignore.end();
2081 }
2082 
CreateModel_shape_nhwc_quant8_3(Model * model)2083 void CreateModel_shape_nhwc_quant8_3(Model *model) {
2084   OperandType type0(Type::BOOL, {});
2085   OperandType type3(Type::INT32, {});
2086   OperandType type38(Type::TENSOR_QUANT8_ASYMM, {1, 3, 3, 1}, 0.25f, 100);
2087   OperandType type39(Type::TENSOR_QUANT8_ASYMM, {1, 2, 2, 1}, 0.25f, 100);
2088   // Phase 1, operands
2089   auto in2 = model->addOperand(&type38);
2090   auto param8 = model->addOperand(&type3);
2091   auto param9 = model->addOperand(&type3);
2092   auto layout = model->addOperand(&type0);
2093   auto out2 = model->addOperand(&type39);
2094   // Phase 2, operations
2095   static int32_t param8_init[] = {2};
2096   model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
2097   static int32_t param9_init[] = {2};
2098   model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
2099   static bool8 layout_init[] = {false};
2100   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2101   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param8, param9, layout}, {out2});
2102   // Phase 3, inputs and outputs
2103   model->identifyInputsAndOutputs(
2104     {in2},
2105     {out2});
2106   assert(model->isValid());
2107 }
2108 
is_ignored_shape_nhwc_quant8_3(int i)2109 inline bool is_ignored_shape_nhwc_quant8_3(int i) {
2110   static std::set<int> ignore = {};
2111   return ignore.find(i) != ignore.end();
2112 }
2113 
CreateModel_shape_nhwc_float16_3(Model * model)2114 void CreateModel_shape_nhwc_float16_3(Model *model) {
2115   OperandType type0(Type::BOOL, {});
2116   OperandType type21(Type::TENSOR_FLOAT16, {1, 2, 2, 1});
2117   OperandType type3(Type::INT32, {});
2118   OperandType type32(Type::TENSOR_FLOAT16, {1, 3, 3, 1});
2119   // Phase 1, operands
2120   auto in2 = model->addOperand(&type32);
2121   auto param8 = model->addOperand(&type3);
2122   auto param9 = model->addOperand(&type3);
2123   auto layout = model->addOperand(&type0);
2124   auto out2 = model->addOperand(&type21);
2125   // Phase 2, operations
2126   static int32_t param8_init[] = {2};
2127   model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
2128   static int32_t param9_init[] = {2};
2129   model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
2130   static bool8 layout_init[] = {false};
2131   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2132   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param8, param9, layout}, {out2});
2133   // Phase 3, inputs and outputs
2134   model->identifyInputsAndOutputs(
2135     {in2},
2136     {out2});
2137   assert(model->isValid());
2138 }
2139 
is_ignored_shape_nhwc_float16_3(int i)2140 inline bool is_ignored_shape_nhwc_float16_3(int i) {
2141   static std::set<int> ignore = {};
2142   return ignore.find(i) != ignore.end();
2143 }
2144 
CreateModel_shape_nchw_3(Model * model)2145 void CreateModel_shape_nchw_3(Model *model) {
2146   OperandType type0(Type::BOOL, {});
2147   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
2148   OperandType type3(Type::INT32, {});
2149   OperandType type33(Type::TENSOR_FLOAT32, {1, 1, 3, 3});
2150   // Phase 1, operands
2151   auto in2 = model->addOperand(&type33);
2152   auto param8 = model->addOperand(&type3);
2153   auto param9 = model->addOperand(&type3);
2154   auto layout = model->addOperand(&type0);
2155   auto out2 = model->addOperand(&type23);
2156   // Phase 2, operations
2157   static int32_t param8_init[] = {2};
2158   model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
2159   static int32_t param9_init[] = {2};
2160   model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
2161   static bool8 layout_init[] = {true};
2162   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2163   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param8, param9, layout}, {out2});
2164   // Phase 3, inputs and outputs
2165   model->identifyInputsAndOutputs(
2166     {in2},
2167     {out2});
2168   assert(model->isValid());
2169 }
2170 
is_ignored_shape_nchw_3(int i)2171 inline bool is_ignored_shape_nchw_3(int i) {
2172   static std::set<int> ignore = {};
2173   return ignore.find(i) != ignore.end();
2174 }
2175 
CreateModel_shape_nchw_relaxed_3(Model * model)2176 void CreateModel_shape_nchw_relaxed_3(Model *model) {
2177   OperandType type0(Type::BOOL, {});
2178   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
2179   OperandType type3(Type::INT32, {});
2180   OperandType type33(Type::TENSOR_FLOAT32, {1, 1, 3, 3});
2181   // Phase 1, operands
2182   auto in2 = model->addOperand(&type33);
2183   auto param8 = model->addOperand(&type3);
2184   auto param9 = model->addOperand(&type3);
2185   auto layout = model->addOperand(&type0);
2186   auto out2 = model->addOperand(&type23);
2187   // Phase 2, operations
2188   static int32_t param8_init[] = {2};
2189   model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
2190   static int32_t param9_init[] = {2};
2191   model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
2192   static bool8 layout_init[] = {true};
2193   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2194   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param8, param9, layout}, {out2});
2195   // Phase 3, inputs and outputs
2196   model->identifyInputsAndOutputs(
2197     {in2},
2198     {out2});
2199   // Phase 4: set relaxed execution
2200   model->relaxComputationFloat32toFloat16(true);
2201   assert(model->isValid());
2202 }
2203 
is_ignored_shape_nchw_relaxed_3(int i)2204 inline bool is_ignored_shape_nchw_relaxed_3(int i) {
2205   static std::set<int> ignore = {};
2206   return ignore.find(i) != ignore.end();
2207 }
2208 
CreateModel_shape_nchw_quant8_3(Model * model)2209 void CreateModel_shape_nchw_quant8_3(Model *model) {
2210   OperandType type0(Type::BOOL, {});
2211   OperandType type3(Type::INT32, {});
2212   OperandType type40(Type::TENSOR_QUANT8_ASYMM, {1, 1, 3, 3}, 0.25f, 100);
2213   OperandType type41(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 2}, 0.25f, 100);
2214   // Phase 1, operands
2215   auto in2 = model->addOperand(&type40);
2216   auto param8 = model->addOperand(&type3);
2217   auto param9 = model->addOperand(&type3);
2218   auto layout = model->addOperand(&type0);
2219   auto out2 = model->addOperand(&type41);
2220   // Phase 2, operations
2221   static int32_t param8_init[] = {2};
2222   model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
2223   static int32_t param9_init[] = {2};
2224   model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
2225   static bool8 layout_init[] = {true};
2226   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2227   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param8, param9, layout}, {out2});
2228   // Phase 3, inputs and outputs
2229   model->identifyInputsAndOutputs(
2230     {in2},
2231     {out2});
2232   assert(model->isValid());
2233 }
2234 
is_ignored_shape_nchw_quant8_3(int i)2235 inline bool is_ignored_shape_nchw_quant8_3(int i) {
2236   static std::set<int> ignore = {};
2237   return ignore.find(i) != ignore.end();
2238 }
2239 
CreateModel_shape_nchw_float16_3(Model * model)2240 void CreateModel_shape_nchw_float16_3(Model *model) {
2241   OperandType type0(Type::BOOL, {});
2242   OperandType type25(Type::TENSOR_FLOAT16, {1, 1, 2, 2});
2243   OperandType type3(Type::INT32, {});
2244   OperandType type36(Type::TENSOR_FLOAT16, {1, 1, 3, 3});
2245   // Phase 1, operands
2246   auto in2 = model->addOperand(&type36);
2247   auto param8 = model->addOperand(&type3);
2248   auto param9 = model->addOperand(&type3);
2249   auto layout = model->addOperand(&type0);
2250   auto out2 = model->addOperand(&type25);
2251   // Phase 2, operations
2252   static int32_t param8_init[] = {2};
2253   model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
2254   static int32_t param9_init[] = {2};
2255   model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
2256   static bool8 layout_init[] = {true};
2257   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2258   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param8, param9, layout}, {out2});
2259   // Phase 3, inputs and outputs
2260   model->identifyInputsAndOutputs(
2261     {in2},
2262     {out2});
2263   assert(model->isValid());
2264 }
2265 
is_ignored_shape_nchw_float16_3(int i)2266 inline bool is_ignored_shape_nchw_float16_3(int i) {
2267   static std::set<int> ignore = {};
2268   return ignore.find(i) != ignore.end();
2269 }
2270 
CreateModel_shape_dynamic_output_shape_nhwc_3(Model * model)2271 void CreateModel_shape_dynamic_output_shape_nhwc_3(Model *model) {
2272   OperandType type0(Type::BOOL, {});
2273   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
2274   OperandType type3(Type::INT32, {});
2275   OperandType type5(Type::TENSOR_FLOAT32, {1, 3, 3, 1});
2276   // Phase 1, operands
2277   auto in2 = model->addOperand(&type5);
2278   auto param8 = model->addOperand(&type3);
2279   auto param9 = model->addOperand(&type3);
2280   auto layout = model->addOperand(&type0);
2281   auto out2 = model->addOperand(&type26);
2282   // Phase 2, operations
2283   static int32_t param8_init[] = {2};
2284   model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
2285   static int32_t param9_init[] = {2};
2286   model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
2287   static bool8 layout_init[] = {false};
2288   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2289   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param8, param9, layout}, {out2});
2290   // Phase 3, inputs and outputs
2291   model->identifyInputsAndOutputs(
2292     {in2},
2293     {out2});
2294   assert(model->isValid());
2295 }
2296 
is_ignored_shape_dynamic_output_shape_nhwc_3(int i)2297 inline bool is_ignored_shape_dynamic_output_shape_nhwc_3(int i) {
2298   static std::set<int> ignore = {};
2299   return ignore.find(i) != ignore.end();
2300 }
2301 
CreateModel_shape_dynamic_output_shape_nhwc_relaxed_3(Model * model)2302 void CreateModel_shape_dynamic_output_shape_nhwc_relaxed_3(Model *model) {
2303   OperandType type0(Type::BOOL, {});
2304   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
2305   OperandType type3(Type::INT32, {});
2306   OperandType type5(Type::TENSOR_FLOAT32, {1, 3, 3, 1});
2307   // Phase 1, operands
2308   auto in2 = model->addOperand(&type5);
2309   auto param8 = model->addOperand(&type3);
2310   auto param9 = model->addOperand(&type3);
2311   auto layout = model->addOperand(&type0);
2312   auto out2 = model->addOperand(&type26);
2313   // Phase 2, operations
2314   static int32_t param8_init[] = {2};
2315   model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
2316   static int32_t param9_init[] = {2};
2317   model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
2318   static bool8 layout_init[] = {false};
2319   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2320   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param8, param9, layout}, {out2});
2321   // Phase 3, inputs and outputs
2322   model->identifyInputsAndOutputs(
2323     {in2},
2324     {out2});
2325   // Phase 4: set relaxed execution
2326   model->relaxComputationFloat32toFloat16(true);
2327   assert(model->isValid());
2328 }
2329 
is_ignored_shape_dynamic_output_shape_nhwc_relaxed_3(int i)2330 inline bool is_ignored_shape_dynamic_output_shape_nhwc_relaxed_3(int i) {
2331   static std::set<int> ignore = {};
2332   return ignore.find(i) != ignore.end();
2333 }
2334 
CreateModel_shape_dynamic_output_shape_nhwc_quant8_3(Model * model)2335 void CreateModel_shape_dynamic_output_shape_nhwc_quant8_3(Model *model) {
2336   OperandType type0(Type::BOOL, {});
2337   OperandType type3(Type::INT32, {});
2338   OperandType type38(Type::TENSOR_QUANT8_ASYMM, {1, 3, 3, 1}, 0.25f, 100);
2339   OperandType type42(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 100);
2340   // Phase 1, operands
2341   auto in2 = model->addOperand(&type38);
2342   auto param8 = model->addOperand(&type3);
2343   auto param9 = model->addOperand(&type3);
2344   auto layout = model->addOperand(&type0);
2345   auto out2 = model->addOperand(&type42);
2346   // Phase 2, operations
2347   static int32_t param8_init[] = {2};
2348   model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
2349   static int32_t param9_init[] = {2};
2350   model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
2351   static bool8 layout_init[] = {false};
2352   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2353   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param8, param9, layout}, {out2});
2354   // Phase 3, inputs and outputs
2355   model->identifyInputsAndOutputs(
2356     {in2},
2357     {out2});
2358   assert(model->isValid());
2359 }
2360 
is_ignored_shape_dynamic_output_shape_nhwc_quant8_3(int i)2361 inline bool is_ignored_shape_dynamic_output_shape_nhwc_quant8_3(int i) {
2362   static std::set<int> ignore = {};
2363   return ignore.find(i) != ignore.end();
2364 }
2365 
CreateModel_shape_dynamic_output_shape_nhwc_float16_3(Model * model)2366 void CreateModel_shape_dynamic_output_shape_nhwc_float16_3(Model *model) {
2367   OperandType type0(Type::BOOL, {});
2368   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
2369   OperandType type3(Type::INT32, {});
2370   OperandType type32(Type::TENSOR_FLOAT16, {1, 3, 3, 1});
2371   // Phase 1, operands
2372   auto in2 = model->addOperand(&type32);
2373   auto param8 = model->addOperand(&type3);
2374   auto param9 = model->addOperand(&type3);
2375   auto layout = model->addOperand(&type0);
2376   auto out2 = model->addOperand(&type28);
2377   // Phase 2, operations
2378   static int32_t param8_init[] = {2};
2379   model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
2380   static int32_t param9_init[] = {2};
2381   model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
2382   static bool8 layout_init[] = {false};
2383   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2384   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param8, param9, layout}, {out2});
2385   // Phase 3, inputs and outputs
2386   model->identifyInputsAndOutputs(
2387     {in2},
2388     {out2});
2389   assert(model->isValid());
2390 }
2391 
is_ignored_shape_dynamic_output_shape_nhwc_float16_3(int i)2392 inline bool is_ignored_shape_dynamic_output_shape_nhwc_float16_3(int i) {
2393   static std::set<int> ignore = {};
2394   return ignore.find(i) != ignore.end();
2395 }
2396 
CreateModel_shape_dynamic_output_shape_nchw_3(Model * model)2397 void CreateModel_shape_dynamic_output_shape_nchw_3(Model *model) {
2398   OperandType type0(Type::BOOL, {});
2399   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
2400   OperandType type3(Type::INT32, {});
2401   OperandType type33(Type::TENSOR_FLOAT32, {1, 1, 3, 3});
2402   // Phase 1, operands
2403   auto in2 = model->addOperand(&type33);
2404   auto param8 = model->addOperand(&type3);
2405   auto param9 = model->addOperand(&type3);
2406   auto layout = model->addOperand(&type0);
2407   auto out2 = model->addOperand(&type26);
2408   // Phase 2, operations
2409   static int32_t param8_init[] = {2};
2410   model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
2411   static int32_t param9_init[] = {2};
2412   model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
2413   static bool8 layout_init[] = {true};
2414   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2415   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param8, param9, layout}, {out2});
2416   // Phase 3, inputs and outputs
2417   model->identifyInputsAndOutputs(
2418     {in2},
2419     {out2});
2420   assert(model->isValid());
2421 }
2422 
is_ignored_shape_dynamic_output_shape_nchw_3(int i)2423 inline bool is_ignored_shape_dynamic_output_shape_nchw_3(int i) {
2424   static std::set<int> ignore = {};
2425   return ignore.find(i) != ignore.end();
2426 }
2427 
CreateModel_shape_dynamic_output_shape_nchw_relaxed_3(Model * model)2428 void CreateModel_shape_dynamic_output_shape_nchw_relaxed_3(Model *model) {
2429   OperandType type0(Type::BOOL, {});
2430   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
2431   OperandType type3(Type::INT32, {});
2432   OperandType type33(Type::TENSOR_FLOAT32, {1, 1, 3, 3});
2433   // Phase 1, operands
2434   auto in2 = model->addOperand(&type33);
2435   auto param8 = model->addOperand(&type3);
2436   auto param9 = model->addOperand(&type3);
2437   auto layout = model->addOperand(&type0);
2438   auto out2 = model->addOperand(&type26);
2439   // Phase 2, operations
2440   static int32_t param8_init[] = {2};
2441   model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
2442   static int32_t param9_init[] = {2};
2443   model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
2444   static bool8 layout_init[] = {true};
2445   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2446   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param8, param9, layout}, {out2});
2447   // Phase 3, inputs and outputs
2448   model->identifyInputsAndOutputs(
2449     {in2},
2450     {out2});
2451   // Phase 4: set relaxed execution
2452   model->relaxComputationFloat32toFloat16(true);
2453   assert(model->isValid());
2454 }
2455 
is_ignored_shape_dynamic_output_shape_nchw_relaxed_3(int i)2456 inline bool is_ignored_shape_dynamic_output_shape_nchw_relaxed_3(int i) {
2457   static std::set<int> ignore = {};
2458   return ignore.find(i) != ignore.end();
2459 }
2460 
CreateModel_shape_dynamic_output_shape_nchw_quant8_3(Model * model)2461 void CreateModel_shape_dynamic_output_shape_nchw_quant8_3(Model *model) {
2462   OperandType type0(Type::BOOL, {});
2463   OperandType type3(Type::INT32, {});
2464   OperandType type40(Type::TENSOR_QUANT8_ASYMM, {1, 1, 3, 3}, 0.25f, 100);
2465   OperandType type42(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 100);
2466   // Phase 1, operands
2467   auto in2 = model->addOperand(&type40);
2468   auto param8 = model->addOperand(&type3);
2469   auto param9 = model->addOperand(&type3);
2470   auto layout = model->addOperand(&type0);
2471   auto out2 = model->addOperand(&type42);
2472   // Phase 2, operations
2473   static int32_t param8_init[] = {2};
2474   model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
2475   static int32_t param9_init[] = {2};
2476   model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
2477   static bool8 layout_init[] = {true};
2478   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2479   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param8, param9, layout}, {out2});
2480   // Phase 3, inputs and outputs
2481   model->identifyInputsAndOutputs(
2482     {in2},
2483     {out2});
2484   assert(model->isValid());
2485 }
2486 
is_ignored_shape_dynamic_output_shape_nchw_quant8_3(int i)2487 inline bool is_ignored_shape_dynamic_output_shape_nchw_quant8_3(int i) {
2488   static std::set<int> ignore = {};
2489   return ignore.find(i) != ignore.end();
2490 }
2491 
CreateModel_shape_dynamic_output_shape_nchw_float16_3(Model * model)2492 void CreateModel_shape_dynamic_output_shape_nchw_float16_3(Model *model) {
2493   OperandType type0(Type::BOOL, {});
2494   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
2495   OperandType type3(Type::INT32, {});
2496   OperandType type36(Type::TENSOR_FLOAT16, {1, 1, 3, 3});
2497   // Phase 1, operands
2498   auto in2 = model->addOperand(&type36);
2499   auto param8 = model->addOperand(&type3);
2500   auto param9 = model->addOperand(&type3);
2501   auto layout = model->addOperand(&type0);
2502   auto out2 = model->addOperand(&type28);
2503   // Phase 2, operations
2504   static int32_t param8_init[] = {2};
2505   model->setOperandValue(param8, param8_init, sizeof(int32_t) * 1);
2506   static int32_t param9_init[] = {2};
2507   model->setOperandValue(param9, param9_init, sizeof(int32_t) * 1);
2508   static bool8 layout_init[] = {true};
2509   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2510   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param8, param9, layout}, {out2});
2511   // Phase 3, inputs and outputs
2512   model->identifyInputsAndOutputs(
2513     {in2},
2514     {out2});
2515   assert(model->isValid());
2516 }
2517 
is_ignored_shape_dynamic_output_shape_nchw_float16_3(int i)2518 inline bool is_ignored_shape_dynamic_output_shape_nchw_float16_3(int i) {
2519   static std::set<int> ignore = {};
2520   return ignore.find(i) != ignore.end();
2521 }
2522 
CreateModel_scale_nhwc_3(Model * model)2523 void CreateModel_scale_nhwc_3(Model *model) {
2524   OperandType type0(Type::BOOL, {});
2525   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
2526   OperandType type4(Type::FLOAT32, {});
2527   OperandType type5(Type::TENSOR_FLOAT32, {1, 3, 3, 1});
2528   // Phase 1, operands
2529   auto in2 = model->addOperand(&type5);
2530   auto param10 = model->addOperand(&type4);
2531   auto param11 = model->addOperand(&type4);
2532   auto layout = model->addOperand(&type0);
2533   auto out2 = model->addOperand(&type1);
2534   // Phase 2, operations
2535   static float param10_init[] = {0.8f};
2536   model->setOperandValue(param10, param10_init, sizeof(float) * 1);
2537   static float param11_init[] = {0.8f};
2538   model->setOperandValue(param11, param11_init, sizeof(float) * 1);
2539   static bool8 layout_init[] = {false};
2540   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2541   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param10, param11, layout}, {out2});
2542   // Phase 3, inputs and outputs
2543   model->identifyInputsAndOutputs(
2544     {in2},
2545     {out2});
2546   assert(model->isValid());
2547 }
2548 
is_ignored_scale_nhwc_3(int i)2549 inline bool is_ignored_scale_nhwc_3(int i) {
2550   static std::set<int> ignore = {};
2551   return ignore.find(i) != ignore.end();
2552 }
2553 
CreateModel_scale_nhwc_relaxed_3(Model * model)2554 void CreateModel_scale_nhwc_relaxed_3(Model *model) {
2555   OperandType type0(Type::BOOL, {});
2556   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
2557   OperandType type4(Type::FLOAT32, {});
2558   OperandType type5(Type::TENSOR_FLOAT32, {1, 3, 3, 1});
2559   // Phase 1, operands
2560   auto in2 = model->addOperand(&type5);
2561   auto param10 = model->addOperand(&type4);
2562   auto param11 = model->addOperand(&type4);
2563   auto layout = model->addOperand(&type0);
2564   auto out2 = model->addOperand(&type1);
2565   // Phase 2, operations
2566   static float param10_init[] = {0.8f};
2567   model->setOperandValue(param10, param10_init, sizeof(float) * 1);
2568   static float param11_init[] = {0.8f};
2569   model->setOperandValue(param11, param11_init, sizeof(float) * 1);
2570   static bool8 layout_init[] = {false};
2571   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2572   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param10, param11, layout}, {out2});
2573   // Phase 3, inputs and outputs
2574   model->identifyInputsAndOutputs(
2575     {in2},
2576     {out2});
2577   // Phase 4: set relaxed execution
2578   model->relaxComputationFloat32toFloat16(true);
2579   assert(model->isValid());
2580 }
2581 
is_ignored_scale_nhwc_relaxed_3(int i)2582 inline bool is_ignored_scale_nhwc_relaxed_3(int i) {
2583   static std::set<int> ignore = {};
2584   return ignore.find(i) != ignore.end();
2585 }
2586 
CreateModel_scale_nhwc_quant8_3(Model * model)2587 void CreateModel_scale_nhwc_quant8_3(Model *model) {
2588   OperandType type0(Type::BOOL, {});
2589   OperandType type38(Type::TENSOR_QUANT8_ASYMM, {1, 3, 3, 1}, 0.25f, 100);
2590   OperandType type39(Type::TENSOR_QUANT8_ASYMM, {1, 2, 2, 1}, 0.25f, 100);
2591   OperandType type4(Type::FLOAT32, {});
2592   // Phase 1, operands
2593   auto in2 = model->addOperand(&type38);
2594   auto param10 = model->addOperand(&type4);
2595   auto param11 = model->addOperand(&type4);
2596   auto layout = model->addOperand(&type0);
2597   auto out2 = model->addOperand(&type39);
2598   // Phase 2, operations
2599   static float param10_init[] = {0.8f};
2600   model->setOperandValue(param10, param10_init, sizeof(float) * 1);
2601   static float param11_init[] = {0.8f};
2602   model->setOperandValue(param11, param11_init, sizeof(float) * 1);
2603   static bool8 layout_init[] = {false};
2604   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2605   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param10, param11, layout}, {out2});
2606   // Phase 3, inputs and outputs
2607   model->identifyInputsAndOutputs(
2608     {in2},
2609     {out2});
2610   assert(model->isValid());
2611 }
2612 
is_ignored_scale_nhwc_quant8_3(int i)2613 inline bool is_ignored_scale_nhwc_quant8_3(int i) {
2614   static std::set<int> ignore = {};
2615   return ignore.find(i) != ignore.end();
2616 }
2617 
CreateModel_scale_nhwc_float16_3(Model * model)2618 void CreateModel_scale_nhwc_float16_3(Model *model) {
2619   OperandType type0(Type::BOOL, {});
2620   OperandType type21(Type::TENSOR_FLOAT16, {1, 2, 2, 1});
2621   OperandType type29(Type::FLOAT16, {});
2622   OperandType type32(Type::TENSOR_FLOAT16, {1, 3, 3, 1});
2623   // Phase 1, operands
2624   auto in2 = model->addOperand(&type32);
2625   auto param10 = model->addOperand(&type29);
2626   auto param11 = model->addOperand(&type29);
2627   auto layout = model->addOperand(&type0);
2628   auto out2 = model->addOperand(&type21);
2629   // Phase 2, operations
2630   static _Float16 param10_init[] = {0.800000011920929f};
2631   model->setOperandValue(param10, param10_init, sizeof(_Float16) * 1);
2632   static _Float16 param11_init[] = {0.800000011920929f};
2633   model->setOperandValue(param11, param11_init, sizeof(_Float16) * 1);
2634   static bool8 layout_init[] = {false};
2635   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2636   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param10, param11, layout}, {out2});
2637   // Phase 3, inputs and outputs
2638   model->identifyInputsAndOutputs(
2639     {in2},
2640     {out2});
2641   assert(model->isValid());
2642 }
2643 
is_ignored_scale_nhwc_float16_3(int i)2644 inline bool is_ignored_scale_nhwc_float16_3(int i) {
2645   static std::set<int> ignore = {};
2646   return ignore.find(i) != ignore.end();
2647 }
2648 
CreateModel_scale_nchw_3(Model * model)2649 void CreateModel_scale_nchw_3(Model *model) {
2650   OperandType type0(Type::BOOL, {});
2651   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
2652   OperandType type33(Type::TENSOR_FLOAT32, {1, 1, 3, 3});
2653   OperandType type4(Type::FLOAT32, {});
2654   // Phase 1, operands
2655   auto in2 = model->addOperand(&type33);
2656   auto param10 = model->addOperand(&type4);
2657   auto param11 = model->addOperand(&type4);
2658   auto layout = model->addOperand(&type0);
2659   auto out2 = model->addOperand(&type23);
2660   // Phase 2, operations
2661   static float param10_init[] = {0.8f};
2662   model->setOperandValue(param10, param10_init, sizeof(float) * 1);
2663   static float param11_init[] = {0.8f};
2664   model->setOperandValue(param11, param11_init, sizeof(float) * 1);
2665   static bool8 layout_init[] = {true};
2666   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2667   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param10, param11, layout}, {out2});
2668   // Phase 3, inputs and outputs
2669   model->identifyInputsAndOutputs(
2670     {in2},
2671     {out2});
2672   assert(model->isValid());
2673 }
2674 
is_ignored_scale_nchw_3(int i)2675 inline bool is_ignored_scale_nchw_3(int i) {
2676   static std::set<int> ignore = {};
2677   return ignore.find(i) != ignore.end();
2678 }
2679 
CreateModel_scale_nchw_relaxed_3(Model * model)2680 void CreateModel_scale_nchw_relaxed_3(Model *model) {
2681   OperandType type0(Type::BOOL, {});
2682   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
2683   OperandType type33(Type::TENSOR_FLOAT32, {1, 1, 3, 3});
2684   OperandType type4(Type::FLOAT32, {});
2685   // Phase 1, operands
2686   auto in2 = model->addOperand(&type33);
2687   auto param10 = model->addOperand(&type4);
2688   auto param11 = model->addOperand(&type4);
2689   auto layout = model->addOperand(&type0);
2690   auto out2 = model->addOperand(&type23);
2691   // Phase 2, operations
2692   static float param10_init[] = {0.8f};
2693   model->setOperandValue(param10, param10_init, sizeof(float) * 1);
2694   static float param11_init[] = {0.8f};
2695   model->setOperandValue(param11, param11_init, sizeof(float) * 1);
2696   static bool8 layout_init[] = {true};
2697   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2698   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param10, param11, layout}, {out2});
2699   // Phase 3, inputs and outputs
2700   model->identifyInputsAndOutputs(
2701     {in2},
2702     {out2});
2703   // Phase 4: set relaxed execution
2704   model->relaxComputationFloat32toFloat16(true);
2705   assert(model->isValid());
2706 }
2707 
is_ignored_scale_nchw_relaxed_3(int i)2708 inline bool is_ignored_scale_nchw_relaxed_3(int i) {
2709   static std::set<int> ignore = {};
2710   return ignore.find(i) != ignore.end();
2711 }
2712 
CreateModel_scale_nchw_quant8_3(Model * model)2713 void CreateModel_scale_nchw_quant8_3(Model *model) {
2714   OperandType type0(Type::BOOL, {});
2715   OperandType type4(Type::FLOAT32, {});
2716   OperandType type40(Type::TENSOR_QUANT8_ASYMM, {1, 1, 3, 3}, 0.25f, 100);
2717   OperandType type41(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 2}, 0.25f, 100);
2718   // Phase 1, operands
2719   auto in2 = model->addOperand(&type40);
2720   auto param10 = model->addOperand(&type4);
2721   auto param11 = model->addOperand(&type4);
2722   auto layout = model->addOperand(&type0);
2723   auto out2 = model->addOperand(&type41);
2724   // Phase 2, operations
2725   static float param10_init[] = {0.8f};
2726   model->setOperandValue(param10, param10_init, sizeof(float) * 1);
2727   static float param11_init[] = {0.8f};
2728   model->setOperandValue(param11, param11_init, sizeof(float) * 1);
2729   static bool8 layout_init[] = {true};
2730   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2731   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param10, param11, layout}, {out2});
2732   // Phase 3, inputs and outputs
2733   model->identifyInputsAndOutputs(
2734     {in2},
2735     {out2});
2736   assert(model->isValid());
2737 }
2738 
is_ignored_scale_nchw_quant8_3(int i)2739 inline bool is_ignored_scale_nchw_quant8_3(int i) {
2740   static std::set<int> ignore = {};
2741   return ignore.find(i) != ignore.end();
2742 }
2743 
CreateModel_scale_nchw_float16_3(Model * model)2744 void CreateModel_scale_nchw_float16_3(Model *model) {
2745   OperandType type0(Type::BOOL, {});
2746   OperandType type25(Type::TENSOR_FLOAT16, {1, 1, 2, 2});
2747   OperandType type29(Type::FLOAT16, {});
2748   OperandType type36(Type::TENSOR_FLOAT16, {1, 1, 3, 3});
2749   // Phase 1, operands
2750   auto in2 = model->addOperand(&type36);
2751   auto param10 = model->addOperand(&type29);
2752   auto param11 = model->addOperand(&type29);
2753   auto layout = model->addOperand(&type0);
2754   auto out2 = model->addOperand(&type25);
2755   // Phase 2, operations
2756   static _Float16 param10_init[] = {0.800000011920929f};
2757   model->setOperandValue(param10, param10_init, sizeof(_Float16) * 1);
2758   static _Float16 param11_init[] = {0.800000011920929f};
2759   model->setOperandValue(param11, param11_init, sizeof(_Float16) * 1);
2760   static bool8 layout_init[] = {true};
2761   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2762   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param10, param11, layout}, {out2});
2763   // Phase 3, inputs and outputs
2764   model->identifyInputsAndOutputs(
2765     {in2},
2766     {out2});
2767   assert(model->isValid());
2768 }
2769 
is_ignored_scale_nchw_float16_3(int i)2770 inline bool is_ignored_scale_nchw_float16_3(int i) {
2771   static std::set<int> ignore = {};
2772   return ignore.find(i) != ignore.end();
2773 }
2774 
CreateModel_scale_dynamic_output_shape_nhwc_3(Model * model)2775 void CreateModel_scale_dynamic_output_shape_nhwc_3(Model *model) {
2776   OperandType type0(Type::BOOL, {});
2777   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
2778   OperandType type4(Type::FLOAT32, {});
2779   OperandType type5(Type::TENSOR_FLOAT32, {1, 3, 3, 1});
2780   // Phase 1, operands
2781   auto in2 = model->addOperand(&type5);
2782   auto param10 = model->addOperand(&type4);
2783   auto param11 = model->addOperand(&type4);
2784   auto layout = model->addOperand(&type0);
2785   auto out2 = model->addOperand(&type26);
2786   // Phase 2, operations
2787   static float param10_init[] = {0.8f};
2788   model->setOperandValue(param10, param10_init, sizeof(float) * 1);
2789   static float param11_init[] = {0.8f};
2790   model->setOperandValue(param11, param11_init, sizeof(float) * 1);
2791   static bool8 layout_init[] = {false};
2792   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2793   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param10, param11, layout}, {out2});
2794   // Phase 3, inputs and outputs
2795   model->identifyInputsAndOutputs(
2796     {in2},
2797     {out2});
2798   assert(model->isValid());
2799 }
2800 
is_ignored_scale_dynamic_output_shape_nhwc_3(int i)2801 inline bool is_ignored_scale_dynamic_output_shape_nhwc_3(int i) {
2802   static std::set<int> ignore = {};
2803   return ignore.find(i) != ignore.end();
2804 }
2805 
CreateModel_scale_dynamic_output_shape_nhwc_relaxed_3(Model * model)2806 void CreateModel_scale_dynamic_output_shape_nhwc_relaxed_3(Model *model) {
2807   OperandType type0(Type::BOOL, {});
2808   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
2809   OperandType type4(Type::FLOAT32, {});
2810   OperandType type5(Type::TENSOR_FLOAT32, {1, 3, 3, 1});
2811   // Phase 1, operands
2812   auto in2 = model->addOperand(&type5);
2813   auto param10 = model->addOperand(&type4);
2814   auto param11 = model->addOperand(&type4);
2815   auto layout = model->addOperand(&type0);
2816   auto out2 = model->addOperand(&type26);
2817   // Phase 2, operations
2818   static float param10_init[] = {0.8f};
2819   model->setOperandValue(param10, param10_init, sizeof(float) * 1);
2820   static float param11_init[] = {0.8f};
2821   model->setOperandValue(param11, param11_init, sizeof(float) * 1);
2822   static bool8 layout_init[] = {false};
2823   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2824   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param10, param11, layout}, {out2});
2825   // Phase 3, inputs and outputs
2826   model->identifyInputsAndOutputs(
2827     {in2},
2828     {out2});
2829   // Phase 4: set relaxed execution
2830   model->relaxComputationFloat32toFloat16(true);
2831   assert(model->isValid());
2832 }
2833 
is_ignored_scale_dynamic_output_shape_nhwc_relaxed_3(int i)2834 inline bool is_ignored_scale_dynamic_output_shape_nhwc_relaxed_3(int i) {
2835   static std::set<int> ignore = {};
2836   return ignore.find(i) != ignore.end();
2837 }
2838 
CreateModel_scale_dynamic_output_shape_nhwc_quant8_3(Model * model)2839 void CreateModel_scale_dynamic_output_shape_nhwc_quant8_3(Model *model) {
2840   OperandType type0(Type::BOOL, {});
2841   OperandType type38(Type::TENSOR_QUANT8_ASYMM, {1, 3, 3, 1}, 0.25f, 100);
2842   OperandType type4(Type::FLOAT32, {});
2843   OperandType type42(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 100);
2844   // Phase 1, operands
2845   auto in2 = model->addOperand(&type38);
2846   auto param10 = model->addOperand(&type4);
2847   auto param11 = model->addOperand(&type4);
2848   auto layout = model->addOperand(&type0);
2849   auto out2 = model->addOperand(&type42);
2850   // Phase 2, operations
2851   static float param10_init[] = {0.8f};
2852   model->setOperandValue(param10, param10_init, sizeof(float) * 1);
2853   static float param11_init[] = {0.8f};
2854   model->setOperandValue(param11, param11_init, sizeof(float) * 1);
2855   static bool8 layout_init[] = {false};
2856   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2857   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param10, param11, layout}, {out2});
2858   // Phase 3, inputs and outputs
2859   model->identifyInputsAndOutputs(
2860     {in2},
2861     {out2});
2862   assert(model->isValid());
2863 }
2864 
is_ignored_scale_dynamic_output_shape_nhwc_quant8_3(int i)2865 inline bool is_ignored_scale_dynamic_output_shape_nhwc_quant8_3(int i) {
2866   static std::set<int> ignore = {};
2867   return ignore.find(i) != ignore.end();
2868 }
2869 
CreateModel_scale_dynamic_output_shape_nhwc_float16_3(Model * model)2870 void CreateModel_scale_dynamic_output_shape_nhwc_float16_3(Model *model) {
2871   OperandType type0(Type::BOOL, {});
2872   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
2873   OperandType type29(Type::FLOAT16, {});
2874   OperandType type32(Type::TENSOR_FLOAT16, {1, 3, 3, 1});
2875   // Phase 1, operands
2876   auto in2 = model->addOperand(&type32);
2877   auto param10 = model->addOperand(&type29);
2878   auto param11 = model->addOperand(&type29);
2879   auto layout = model->addOperand(&type0);
2880   auto out2 = model->addOperand(&type28);
2881   // Phase 2, operations
2882   static _Float16 param10_init[] = {0.800000011920929f};
2883   model->setOperandValue(param10, param10_init, sizeof(_Float16) * 1);
2884   static _Float16 param11_init[] = {0.800000011920929f};
2885   model->setOperandValue(param11, param11_init, sizeof(_Float16) * 1);
2886   static bool8 layout_init[] = {false};
2887   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2888   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param10, param11, layout}, {out2});
2889   // Phase 3, inputs and outputs
2890   model->identifyInputsAndOutputs(
2891     {in2},
2892     {out2});
2893   assert(model->isValid());
2894 }
2895 
is_ignored_scale_dynamic_output_shape_nhwc_float16_3(int i)2896 inline bool is_ignored_scale_dynamic_output_shape_nhwc_float16_3(int i) {
2897   static std::set<int> ignore = {};
2898   return ignore.find(i) != ignore.end();
2899 }
2900 
CreateModel_scale_dynamic_output_shape_nchw_3(Model * model)2901 void CreateModel_scale_dynamic_output_shape_nchw_3(Model *model) {
2902   OperandType type0(Type::BOOL, {});
2903   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
2904   OperandType type33(Type::TENSOR_FLOAT32, {1, 1, 3, 3});
2905   OperandType type4(Type::FLOAT32, {});
2906   // Phase 1, operands
2907   auto in2 = model->addOperand(&type33);
2908   auto param10 = model->addOperand(&type4);
2909   auto param11 = model->addOperand(&type4);
2910   auto layout = model->addOperand(&type0);
2911   auto out2 = model->addOperand(&type26);
2912   // Phase 2, operations
2913   static float param10_init[] = {0.8f};
2914   model->setOperandValue(param10, param10_init, sizeof(float) * 1);
2915   static float param11_init[] = {0.8f};
2916   model->setOperandValue(param11, param11_init, sizeof(float) * 1);
2917   static bool8 layout_init[] = {true};
2918   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2919   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param10, param11, layout}, {out2});
2920   // Phase 3, inputs and outputs
2921   model->identifyInputsAndOutputs(
2922     {in2},
2923     {out2});
2924   assert(model->isValid());
2925 }
2926 
is_ignored_scale_dynamic_output_shape_nchw_3(int i)2927 inline bool is_ignored_scale_dynamic_output_shape_nchw_3(int i) {
2928   static std::set<int> ignore = {};
2929   return ignore.find(i) != ignore.end();
2930 }
2931 
CreateModel_scale_dynamic_output_shape_nchw_relaxed_3(Model * model)2932 void CreateModel_scale_dynamic_output_shape_nchw_relaxed_3(Model *model) {
2933   OperandType type0(Type::BOOL, {});
2934   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
2935   OperandType type33(Type::TENSOR_FLOAT32, {1, 1, 3, 3});
2936   OperandType type4(Type::FLOAT32, {});
2937   // Phase 1, operands
2938   auto in2 = model->addOperand(&type33);
2939   auto param10 = model->addOperand(&type4);
2940   auto param11 = model->addOperand(&type4);
2941   auto layout = model->addOperand(&type0);
2942   auto out2 = model->addOperand(&type26);
2943   // Phase 2, operations
2944   static float param10_init[] = {0.8f};
2945   model->setOperandValue(param10, param10_init, sizeof(float) * 1);
2946   static float param11_init[] = {0.8f};
2947   model->setOperandValue(param11, param11_init, sizeof(float) * 1);
2948   static bool8 layout_init[] = {true};
2949   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2950   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param10, param11, layout}, {out2});
2951   // Phase 3, inputs and outputs
2952   model->identifyInputsAndOutputs(
2953     {in2},
2954     {out2});
2955   // Phase 4: set relaxed execution
2956   model->relaxComputationFloat32toFloat16(true);
2957   assert(model->isValid());
2958 }
2959 
is_ignored_scale_dynamic_output_shape_nchw_relaxed_3(int i)2960 inline bool is_ignored_scale_dynamic_output_shape_nchw_relaxed_3(int i) {
2961   static std::set<int> ignore = {};
2962   return ignore.find(i) != ignore.end();
2963 }
2964 
CreateModel_scale_dynamic_output_shape_nchw_quant8_3(Model * model)2965 void CreateModel_scale_dynamic_output_shape_nchw_quant8_3(Model *model) {
2966   OperandType type0(Type::BOOL, {});
2967   OperandType type4(Type::FLOAT32, {});
2968   OperandType type40(Type::TENSOR_QUANT8_ASYMM, {1, 1, 3, 3}, 0.25f, 100);
2969   OperandType type42(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 100);
2970   // Phase 1, operands
2971   auto in2 = model->addOperand(&type40);
2972   auto param10 = model->addOperand(&type4);
2973   auto param11 = model->addOperand(&type4);
2974   auto layout = model->addOperand(&type0);
2975   auto out2 = model->addOperand(&type42);
2976   // Phase 2, operations
2977   static float param10_init[] = {0.8f};
2978   model->setOperandValue(param10, param10_init, sizeof(float) * 1);
2979   static float param11_init[] = {0.8f};
2980   model->setOperandValue(param11, param11_init, sizeof(float) * 1);
2981   static bool8 layout_init[] = {true};
2982   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
2983   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param10, param11, layout}, {out2});
2984   // Phase 3, inputs and outputs
2985   model->identifyInputsAndOutputs(
2986     {in2},
2987     {out2});
2988   assert(model->isValid());
2989 }
2990 
is_ignored_scale_dynamic_output_shape_nchw_quant8_3(int i)2991 inline bool is_ignored_scale_dynamic_output_shape_nchw_quant8_3(int i) {
2992   static std::set<int> ignore = {};
2993   return ignore.find(i) != ignore.end();
2994 }
2995 
CreateModel_scale_dynamic_output_shape_nchw_float16_3(Model * model)2996 void CreateModel_scale_dynamic_output_shape_nchw_float16_3(Model *model) {
2997   OperandType type0(Type::BOOL, {});
2998   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
2999   OperandType type29(Type::FLOAT16, {});
3000   OperandType type36(Type::TENSOR_FLOAT16, {1, 1, 3, 3});
3001   // Phase 1, operands
3002   auto in2 = model->addOperand(&type36);
3003   auto param10 = model->addOperand(&type29);
3004   auto param11 = model->addOperand(&type29);
3005   auto layout = model->addOperand(&type0);
3006   auto out2 = model->addOperand(&type28);
3007   // Phase 2, operations
3008   static _Float16 param10_init[] = {0.800000011920929f};
3009   model->setOperandValue(param10, param10_init, sizeof(_Float16) * 1);
3010   static _Float16 param11_init[] = {0.800000011920929f};
3011   model->setOperandValue(param11, param11_init, sizeof(_Float16) * 1);
3012   static bool8 layout_init[] = {true};
3013   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3014   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in2, param10, param11, layout}, {out2});
3015   // Phase 3, inputs and outputs
3016   model->identifyInputsAndOutputs(
3017     {in2},
3018     {out2});
3019   assert(model->isValid());
3020 }
3021 
is_ignored_scale_dynamic_output_shape_nchw_float16_3(int i)3022 inline bool is_ignored_scale_dynamic_output_shape_nchw_float16_3(int i) {
3023   static std::set<int> ignore = {};
3024   return ignore.find(i) != ignore.end();
3025 }
3026 
CreateModel_shape_nhwc_4(Model * model)3027 void CreateModel_shape_nhwc_4(Model *model) {
3028   OperandType type0(Type::BOOL, {});
3029   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
3030   OperandType type3(Type::INT32, {});
3031   OperandType type6(Type::TENSOR_FLOAT32, {1, 2, 5, 1});
3032   // Phase 1, operands
3033   auto in3 = model->addOperand(&type1);
3034   auto param12 = model->addOperand(&type3);
3035   auto param13 = model->addOperand(&type3);
3036   auto layout = model->addOperand(&type0);
3037   auto out3 = model->addOperand(&type6);
3038   // Phase 2, operations
3039   static int32_t param12_init[] = {5};
3040   model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
3041   static int32_t param13_init[] = {2};
3042   model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
3043   static bool8 layout_init[] = {false};
3044   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3045   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param12, param13, layout}, {out3});
3046   // Phase 3, inputs and outputs
3047   model->identifyInputsAndOutputs(
3048     {in3},
3049     {out3});
3050   assert(model->isValid());
3051 }
3052 
is_ignored_shape_nhwc_4(int i)3053 inline bool is_ignored_shape_nhwc_4(int i) {
3054   static std::set<int> ignore = {};
3055   return ignore.find(i) != ignore.end();
3056 }
3057 
CreateModel_shape_nhwc_relaxed_4(Model * model)3058 void CreateModel_shape_nhwc_relaxed_4(Model *model) {
3059   OperandType type0(Type::BOOL, {});
3060   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
3061   OperandType type3(Type::INT32, {});
3062   OperandType type6(Type::TENSOR_FLOAT32, {1, 2, 5, 1});
3063   // Phase 1, operands
3064   auto in3 = model->addOperand(&type1);
3065   auto param12 = model->addOperand(&type3);
3066   auto param13 = model->addOperand(&type3);
3067   auto layout = model->addOperand(&type0);
3068   auto out3 = model->addOperand(&type6);
3069   // Phase 2, operations
3070   static int32_t param12_init[] = {5};
3071   model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
3072   static int32_t param13_init[] = {2};
3073   model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
3074   static bool8 layout_init[] = {false};
3075   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3076   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param12, param13, layout}, {out3});
3077   // Phase 3, inputs and outputs
3078   model->identifyInputsAndOutputs(
3079     {in3},
3080     {out3});
3081   // Phase 4: set relaxed execution
3082   model->relaxComputationFloat32toFloat16(true);
3083   assert(model->isValid());
3084 }
3085 
is_ignored_shape_nhwc_relaxed_4(int i)3086 inline bool is_ignored_shape_nhwc_relaxed_4(int i) {
3087   static std::set<int> ignore = {};
3088   return ignore.find(i) != ignore.end();
3089 }
3090 
CreateModel_shape_nhwc_quant8_4(Model * model)3091 void CreateModel_shape_nhwc_quant8_4(Model *model) {
3092   OperandType type0(Type::BOOL, {});
3093   OperandType type3(Type::INT32, {});
3094   OperandType type39(Type::TENSOR_QUANT8_ASYMM, {1, 2, 2, 1}, 0.25f, 100);
3095   OperandType type43(Type::TENSOR_QUANT8_ASYMM, {1, 2, 5, 1}, 0.25f, 100);
3096   // Phase 1, operands
3097   auto in3 = model->addOperand(&type39);
3098   auto param12 = model->addOperand(&type3);
3099   auto param13 = model->addOperand(&type3);
3100   auto layout = model->addOperand(&type0);
3101   auto out3 = model->addOperand(&type43);
3102   // Phase 2, operations
3103   static int32_t param12_init[] = {5};
3104   model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
3105   static int32_t param13_init[] = {2};
3106   model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
3107   static bool8 layout_init[] = {false};
3108   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3109   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param12, param13, layout}, {out3});
3110   // Phase 3, inputs and outputs
3111   model->identifyInputsAndOutputs(
3112     {in3},
3113     {out3});
3114   assert(model->isValid());
3115 }
3116 
is_ignored_shape_nhwc_quant8_4(int i)3117 inline bool is_ignored_shape_nhwc_quant8_4(int i) {
3118   static std::set<int> ignore = {};
3119   return ignore.find(i) != ignore.end();
3120 }
3121 
CreateModel_shape_nhwc_float16_4(Model * model)3122 void CreateModel_shape_nhwc_float16_4(Model *model) {
3123   OperandType type0(Type::BOOL, {});
3124   OperandType type21(Type::TENSOR_FLOAT16, {1, 2, 2, 1});
3125   OperandType type3(Type::INT32, {});
3126   OperandType type44(Type::TENSOR_FLOAT16, {1, 2, 5, 1});
3127   // Phase 1, operands
3128   auto in3 = model->addOperand(&type21);
3129   auto param12 = model->addOperand(&type3);
3130   auto param13 = model->addOperand(&type3);
3131   auto layout = model->addOperand(&type0);
3132   auto out3 = model->addOperand(&type44);
3133   // Phase 2, operations
3134   static int32_t param12_init[] = {5};
3135   model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
3136   static int32_t param13_init[] = {2};
3137   model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
3138   static bool8 layout_init[] = {false};
3139   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3140   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param12, param13, layout}, {out3});
3141   // Phase 3, inputs and outputs
3142   model->identifyInputsAndOutputs(
3143     {in3},
3144     {out3});
3145   assert(model->isValid());
3146 }
3147 
is_ignored_shape_nhwc_float16_4(int i)3148 inline bool is_ignored_shape_nhwc_float16_4(int i) {
3149   static std::set<int> ignore = {};
3150   return ignore.find(i) != ignore.end();
3151 }
3152 
CreateModel_shape_nchw_4(Model * model)3153 void CreateModel_shape_nchw_4(Model *model) {
3154   OperandType type0(Type::BOOL, {});
3155   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
3156   OperandType type3(Type::INT32, {});
3157   OperandType type45(Type::TENSOR_FLOAT32, {1, 1, 2, 5});
3158   // Phase 1, operands
3159   auto in3 = model->addOperand(&type23);
3160   auto param12 = model->addOperand(&type3);
3161   auto param13 = model->addOperand(&type3);
3162   auto layout = model->addOperand(&type0);
3163   auto out3 = model->addOperand(&type45);
3164   // Phase 2, operations
3165   static int32_t param12_init[] = {5};
3166   model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
3167   static int32_t param13_init[] = {2};
3168   model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
3169   static bool8 layout_init[] = {true};
3170   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3171   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param12, param13, layout}, {out3});
3172   // Phase 3, inputs and outputs
3173   model->identifyInputsAndOutputs(
3174     {in3},
3175     {out3});
3176   assert(model->isValid());
3177 }
3178 
is_ignored_shape_nchw_4(int i)3179 inline bool is_ignored_shape_nchw_4(int i) {
3180   static std::set<int> ignore = {};
3181   return ignore.find(i) != ignore.end();
3182 }
3183 
CreateModel_shape_nchw_relaxed_4(Model * model)3184 void CreateModel_shape_nchw_relaxed_4(Model *model) {
3185   OperandType type0(Type::BOOL, {});
3186   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
3187   OperandType type3(Type::INT32, {});
3188   OperandType type45(Type::TENSOR_FLOAT32, {1, 1, 2, 5});
3189   // Phase 1, operands
3190   auto in3 = model->addOperand(&type23);
3191   auto param12 = model->addOperand(&type3);
3192   auto param13 = model->addOperand(&type3);
3193   auto layout = model->addOperand(&type0);
3194   auto out3 = model->addOperand(&type45);
3195   // Phase 2, operations
3196   static int32_t param12_init[] = {5};
3197   model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
3198   static int32_t param13_init[] = {2};
3199   model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
3200   static bool8 layout_init[] = {true};
3201   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3202   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param12, param13, layout}, {out3});
3203   // Phase 3, inputs and outputs
3204   model->identifyInputsAndOutputs(
3205     {in3},
3206     {out3});
3207   // Phase 4: set relaxed execution
3208   model->relaxComputationFloat32toFloat16(true);
3209   assert(model->isValid());
3210 }
3211 
is_ignored_shape_nchw_relaxed_4(int i)3212 inline bool is_ignored_shape_nchw_relaxed_4(int i) {
3213   static std::set<int> ignore = {};
3214   return ignore.find(i) != ignore.end();
3215 }
3216 
CreateModel_shape_nchw_quant8_4(Model * model)3217 void CreateModel_shape_nchw_quant8_4(Model *model) {
3218   OperandType type0(Type::BOOL, {});
3219   OperandType type3(Type::INT32, {});
3220   OperandType type41(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 2}, 0.25f, 100);
3221   OperandType type46(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 5}, 0.25f, 100);
3222   // Phase 1, operands
3223   auto in3 = model->addOperand(&type41);
3224   auto param12 = model->addOperand(&type3);
3225   auto param13 = model->addOperand(&type3);
3226   auto layout = model->addOperand(&type0);
3227   auto out3 = model->addOperand(&type46);
3228   // Phase 2, operations
3229   static int32_t param12_init[] = {5};
3230   model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
3231   static int32_t param13_init[] = {2};
3232   model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
3233   static bool8 layout_init[] = {true};
3234   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3235   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param12, param13, layout}, {out3});
3236   // Phase 3, inputs and outputs
3237   model->identifyInputsAndOutputs(
3238     {in3},
3239     {out3});
3240   assert(model->isValid());
3241 }
3242 
is_ignored_shape_nchw_quant8_4(int i)3243 inline bool is_ignored_shape_nchw_quant8_4(int i) {
3244   static std::set<int> ignore = {};
3245   return ignore.find(i) != ignore.end();
3246 }
3247 
CreateModel_shape_nchw_float16_4(Model * model)3248 void CreateModel_shape_nchw_float16_4(Model *model) {
3249   OperandType type0(Type::BOOL, {});
3250   OperandType type25(Type::TENSOR_FLOAT16, {1, 1, 2, 2});
3251   OperandType type3(Type::INT32, {});
3252   OperandType type47(Type::TENSOR_FLOAT16, {1, 1, 2, 5});
3253   // Phase 1, operands
3254   auto in3 = model->addOperand(&type25);
3255   auto param12 = model->addOperand(&type3);
3256   auto param13 = model->addOperand(&type3);
3257   auto layout = model->addOperand(&type0);
3258   auto out3 = model->addOperand(&type47);
3259   // Phase 2, operations
3260   static int32_t param12_init[] = {5};
3261   model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
3262   static int32_t param13_init[] = {2};
3263   model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
3264   static bool8 layout_init[] = {true};
3265   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3266   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param12, param13, layout}, {out3});
3267   // Phase 3, inputs and outputs
3268   model->identifyInputsAndOutputs(
3269     {in3},
3270     {out3});
3271   assert(model->isValid());
3272 }
3273 
is_ignored_shape_nchw_float16_4(int i)3274 inline bool is_ignored_shape_nchw_float16_4(int i) {
3275   static std::set<int> ignore = {};
3276   return ignore.find(i) != ignore.end();
3277 }
3278 
CreateModel_shape_dynamic_output_shape_nhwc_4(Model * model)3279 void CreateModel_shape_dynamic_output_shape_nhwc_4(Model *model) {
3280   OperandType type0(Type::BOOL, {});
3281   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
3282   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
3283   OperandType type3(Type::INT32, {});
3284   // Phase 1, operands
3285   auto in3 = model->addOperand(&type1);
3286   auto param12 = model->addOperand(&type3);
3287   auto param13 = model->addOperand(&type3);
3288   auto layout = model->addOperand(&type0);
3289   auto out3 = model->addOperand(&type26);
3290   // Phase 2, operations
3291   static int32_t param12_init[] = {5};
3292   model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
3293   static int32_t param13_init[] = {2};
3294   model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
3295   static bool8 layout_init[] = {false};
3296   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3297   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param12, param13, layout}, {out3});
3298   // Phase 3, inputs and outputs
3299   model->identifyInputsAndOutputs(
3300     {in3},
3301     {out3});
3302   assert(model->isValid());
3303 }
3304 
is_ignored_shape_dynamic_output_shape_nhwc_4(int i)3305 inline bool is_ignored_shape_dynamic_output_shape_nhwc_4(int i) {
3306   static std::set<int> ignore = {};
3307   return ignore.find(i) != ignore.end();
3308 }
3309 
CreateModel_shape_dynamic_output_shape_nhwc_relaxed_4(Model * model)3310 void CreateModel_shape_dynamic_output_shape_nhwc_relaxed_4(Model *model) {
3311   OperandType type0(Type::BOOL, {});
3312   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
3313   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
3314   OperandType type3(Type::INT32, {});
3315   // Phase 1, operands
3316   auto in3 = model->addOperand(&type1);
3317   auto param12 = model->addOperand(&type3);
3318   auto param13 = model->addOperand(&type3);
3319   auto layout = model->addOperand(&type0);
3320   auto out3 = model->addOperand(&type26);
3321   // Phase 2, operations
3322   static int32_t param12_init[] = {5};
3323   model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
3324   static int32_t param13_init[] = {2};
3325   model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
3326   static bool8 layout_init[] = {false};
3327   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3328   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param12, param13, layout}, {out3});
3329   // Phase 3, inputs and outputs
3330   model->identifyInputsAndOutputs(
3331     {in3},
3332     {out3});
3333   // Phase 4: set relaxed execution
3334   model->relaxComputationFloat32toFloat16(true);
3335   assert(model->isValid());
3336 }
3337 
is_ignored_shape_dynamic_output_shape_nhwc_relaxed_4(int i)3338 inline bool is_ignored_shape_dynamic_output_shape_nhwc_relaxed_4(int i) {
3339   static std::set<int> ignore = {};
3340   return ignore.find(i) != ignore.end();
3341 }
3342 
CreateModel_shape_dynamic_output_shape_nhwc_quant8_4(Model * model)3343 void CreateModel_shape_dynamic_output_shape_nhwc_quant8_4(Model *model) {
3344   OperandType type0(Type::BOOL, {});
3345   OperandType type3(Type::INT32, {});
3346   OperandType type39(Type::TENSOR_QUANT8_ASYMM, {1, 2, 2, 1}, 0.25f, 100);
3347   OperandType type42(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 100);
3348   // Phase 1, operands
3349   auto in3 = model->addOperand(&type39);
3350   auto param12 = model->addOperand(&type3);
3351   auto param13 = model->addOperand(&type3);
3352   auto layout = model->addOperand(&type0);
3353   auto out3 = model->addOperand(&type42);
3354   // Phase 2, operations
3355   static int32_t param12_init[] = {5};
3356   model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
3357   static int32_t param13_init[] = {2};
3358   model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
3359   static bool8 layout_init[] = {false};
3360   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3361   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param12, param13, layout}, {out3});
3362   // Phase 3, inputs and outputs
3363   model->identifyInputsAndOutputs(
3364     {in3},
3365     {out3});
3366   assert(model->isValid());
3367 }
3368 
is_ignored_shape_dynamic_output_shape_nhwc_quant8_4(int i)3369 inline bool is_ignored_shape_dynamic_output_shape_nhwc_quant8_4(int i) {
3370   static std::set<int> ignore = {};
3371   return ignore.find(i) != ignore.end();
3372 }
3373 
CreateModel_shape_dynamic_output_shape_nhwc_float16_4(Model * model)3374 void CreateModel_shape_dynamic_output_shape_nhwc_float16_4(Model *model) {
3375   OperandType type0(Type::BOOL, {});
3376   OperandType type21(Type::TENSOR_FLOAT16, {1, 2, 2, 1});
3377   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
3378   OperandType type3(Type::INT32, {});
3379   // Phase 1, operands
3380   auto in3 = model->addOperand(&type21);
3381   auto param12 = model->addOperand(&type3);
3382   auto param13 = model->addOperand(&type3);
3383   auto layout = model->addOperand(&type0);
3384   auto out3 = model->addOperand(&type28);
3385   // Phase 2, operations
3386   static int32_t param12_init[] = {5};
3387   model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
3388   static int32_t param13_init[] = {2};
3389   model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
3390   static bool8 layout_init[] = {false};
3391   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3392   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param12, param13, layout}, {out3});
3393   // Phase 3, inputs and outputs
3394   model->identifyInputsAndOutputs(
3395     {in3},
3396     {out3});
3397   assert(model->isValid());
3398 }
3399 
is_ignored_shape_dynamic_output_shape_nhwc_float16_4(int i)3400 inline bool is_ignored_shape_dynamic_output_shape_nhwc_float16_4(int i) {
3401   static std::set<int> ignore = {};
3402   return ignore.find(i) != ignore.end();
3403 }
3404 
CreateModel_shape_dynamic_output_shape_nchw_4(Model * model)3405 void CreateModel_shape_dynamic_output_shape_nchw_4(Model *model) {
3406   OperandType type0(Type::BOOL, {});
3407   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
3408   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
3409   OperandType type3(Type::INT32, {});
3410   // Phase 1, operands
3411   auto in3 = model->addOperand(&type23);
3412   auto param12 = model->addOperand(&type3);
3413   auto param13 = model->addOperand(&type3);
3414   auto layout = model->addOperand(&type0);
3415   auto out3 = model->addOperand(&type26);
3416   // Phase 2, operations
3417   static int32_t param12_init[] = {5};
3418   model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
3419   static int32_t param13_init[] = {2};
3420   model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
3421   static bool8 layout_init[] = {true};
3422   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3423   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param12, param13, layout}, {out3});
3424   // Phase 3, inputs and outputs
3425   model->identifyInputsAndOutputs(
3426     {in3},
3427     {out3});
3428   assert(model->isValid());
3429 }
3430 
is_ignored_shape_dynamic_output_shape_nchw_4(int i)3431 inline bool is_ignored_shape_dynamic_output_shape_nchw_4(int i) {
3432   static std::set<int> ignore = {};
3433   return ignore.find(i) != ignore.end();
3434 }
3435 
CreateModel_shape_dynamic_output_shape_nchw_relaxed_4(Model * model)3436 void CreateModel_shape_dynamic_output_shape_nchw_relaxed_4(Model *model) {
3437   OperandType type0(Type::BOOL, {});
3438   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
3439   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
3440   OperandType type3(Type::INT32, {});
3441   // Phase 1, operands
3442   auto in3 = model->addOperand(&type23);
3443   auto param12 = model->addOperand(&type3);
3444   auto param13 = model->addOperand(&type3);
3445   auto layout = model->addOperand(&type0);
3446   auto out3 = model->addOperand(&type26);
3447   // Phase 2, operations
3448   static int32_t param12_init[] = {5};
3449   model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
3450   static int32_t param13_init[] = {2};
3451   model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
3452   static bool8 layout_init[] = {true};
3453   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3454   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param12, param13, layout}, {out3});
3455   // Phase 3, inputs and outputs
3456   model->identifyInputsAndOutputs(
3457     {in3},
3458     {out3});
3459   // Phase 4: set relaxed execution
3460   model->relaxComputationFloat32toFloat16(true);
3461   assert(model->isValid());
3462 }
3463 
is_ignored_shape_dynamic_output_shape_nchw_relaxed_4(int i)3464 inline bool is_ignored_shape_dynamic_output_shape_nchw_relaxed_4(int i) {
3465   static std::set<int> ignore = {};
3466   return ignore.find(i) != ignore.end();
3467 }
3468 
CreateModel_shape_dynamic_output_shape_nchw_quant8_4(Model * model)3469 void CreateModel_shape_dynamic_output_shape_nchw_quant8_4(Model *model) {
3470   OperandType type0(Type::BOOL, {});
3471   OperandType type3(Type::INT32, {});
3472   OperandType type41(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 2}, 0.25f, 100);
3473   OperandType type42(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 100);
3474   // Phase 1, operands
3475   auto in3 = model->addOperand(&type41);
3476   auto param12 = model->addOperand(&type3);
3477   auto param13 = model->addOperand(&type3);
3478   auto layout = model->addOperand(&type0);
3479   auto out3 = model->addOperand(&type42);
3480   // Phase 2, operations
3481   static int32_t param12_init[] = {5};
3482   model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
3483   static int32_t param13_init[] = {2};
3484   model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
3485   static bool8 layout_init[] = {true};
3486   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3487   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param12, param13, layout}, {out3});
3488   // Phase 3, inputs and outputs
3489   model->identifyInputsAndOutputs(
3490     {in3},
3491     {out3});
3492   assert(model->isValid());
3493 }
3494 
is_ignored_shape_dynamic_output_shape_nchw_quant8_4(int i)3495 inline bool is_ignored_shape_dynamic_output_shape_nchw_quant8_4(int i) {
3496   static std::set<int> ignore = {};
3497   return ignore.find(i) != ignore.end();
3498 }
3499 
CreateModel_shape_dynamic_output_shape_nchw_float16_4(Model * model)3500 void CreateModel_shape_dynamic_output_shape_nchw_float16_4(Model *model) {
3501   OperandType type0(Type::BOOL, {});
3502   OperandType type25(Type::TENSOR_FLOAT16, {1, 1, 2, 2});
3503   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
3504   OperandType type3(Type::INT32, {});
3505   // Phase 1, operands
3506   auto in3 = model->addOperand(&type25);
3507   auto param12 = model->addOperand(&type3);
3508   auto param13 = model->addOperand(&type3);
3509   auto layout = model->addOperand(&type0);
3510   auto out3 = model->addOperand(&type28);
3511   // Phase 2, operations
3512   static int32_t param12_init[] = {5};
3513   model->setOperandValue(param12, param12_init, sizeof(int32_t) * 1);
3514   static int32_t param13_init[] = {2};
3515   model->setOperandValue(param13, param13_init, sizeof(int32_t) * 1);
3516   static bool8 layout_init[] = {true};
3517   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3518   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param12, param13, layout}, {out3});
3519   // Phase 3, inputs and outputs
3520   model->identifyInputsAndOutputs(
3521     {in3},
3522     {out3});
3523   assert(model->isValid());
3524 }
3525 
is_ignored_shape_dynamic_output_shape_nchw_float16_4(int i)3526 inline bool is_ignored_shape_dynamic_output_shape_nchw_float16_4(int i) {
3527   static std::set<int> ignore = {};
3528   return ignore.find(i) != ignore.end();
3529 }
3530 
CreateModel_scale_nhwc_4(Model * model)3531 void CreateModel_scale_nhwc_4(Model *model) {
3532   OperandType type0(Type::BOOL, {});
3533   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
3534   OperandType type4(Type::FLOAT32, {});
3535   OperandType type6(Type::TENSOR_FLOAT32, {1, 2, 5, 1});
3536   // Phase 1, operands
3537   auto in3 = model->addOperand(&type1);
3538   auto param14 = model->addOperand(&type4);
3539   auto param15 = model->addOperand(&type4);
3540   auto layout = model->addOperand(&type0);
3541   auto out3 = model->addOperand(&type6);
3542   // Phase 2, operations
3543   static float param14_init[] = {2.6f};
3544   model->setOperandValue(param14, param14_init, sizeof(float) * 1);
3545   static float param15_init[] = {1.1f};
3546   model->setOperandValue(param15, param15_init, sizeof(float) * 1);
3547   static bool8 layout_init[] = {false};
3548   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3549   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param14, param15, layout}, {out3});
3550   // Phase 3, inputs and outputs
3551   model->identifyInputsAndOutputs(
3552     {in3},
3553     {out3});
3554   assert(model->isValid());
3555 }
3556 
is_ignored_scale_nhwc_4(int i)3557 inline bool is_ignored_scale_nhwc_4(int i) {
3558   static std::set<int> ignore = {};
3559   return ignore.find(i) != ignore.end();
3560 }
3561 
CreateModel_scale_nhwc_relaxed_4(Model * model)3562 void CreateModel_scale_nhwc_relaxed_4(Model *model) {
3563   OperandType type0(Type::BOOL, {});
3564   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
3565   OperandType type4(Type::FLOAT32, {});
3566   OperandType type6(Type::TENSOR_FLOAT32, {1, 2, 5, 1});
3567   // Phase 1, operands
3568   auto in3 = model->addOperand(&type1);
3569   auto param14 = model->addOperand(&type4);
3570   auto param15 = model->addOperand(&type4);
3571   auto layout = model->addOperand(&type0);
3572   auto out3 = model->addOperand(&type6);
3573   // Phase 2, operations
3574   static float param14_init[] = {2.6f};
3575   model->setOperandValue(param14, param14_init, sizeof(float) * 1);
3576   static float param15_init[] = {1.1f};
3577   model->setOperandValue(param15, param15_init, sizeof(float) * 1);
3578   static bool8 layout_init[] = {false};
3579   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3580   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param14, param15, layout}, {out3});
3581   // Phase 3, inputs and outputs
3582   model->identifyInputsAndOutputs(
3583     {in3},
3584     {out3});
3585   // Phase 4: set relaxed execution
3586   model->relaxComputationFloat32toFloat16(true);
3587   assert(model->isValid());
3588 }
3589 
is_ignored_scale_nhwc_relaxed_4(int i)3590 inline bool is_ignored_scale_nhwc_relaxed_4(int i) {
3591   static std::set<int> ignore = {};
3592   return ignore.find(i) != ignore.end();
3593 }
3594 
CreateModel_scale_nhwc_quant8_4(Model * model)3595 void CreateModel_scale_nhwc_quant8_4(Model *model) {
3596   OperandType type0(Type::BOOL, {});
3597   OperandType type39(Type::TENSOR_QUANT8_ASYMM, {1, 2, 2, 1}, 0.25f, 100);
3598   OperandType type4(Type::FLOAT32, {});
3599   OperandType type43(Type::TENSOR_QUANT8_ASYMM, {1, 2, 5, 1}, 0.25f, 100);
3600   // Phase 1, operands
3601   auto in3 = model->addOperand(&type39);
3602   auto param14 = model->addOperand(&type4);
3603   auto param15 = model->addOperand(&type4);
3604   auto layout = model->addOperand(&type0);
3605   auto out3 = model->addOperand(&type43);
3606   // Phase 2, operations
3607   static float param14_init[] = {2.6f};
3608   model->setOperandValue(param14, param14_init, sizeof(float) * 1);
3609   static float param15_init[] = {1.1f};
3610   model->setOperandValue(param15, param15_init, sizeof(float) * 1);
3611   static bool8 layout_init[] = {false};
3612   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3613   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param14, param15, layout}, {out3});
3614   // Phase 3, inputs and outputs
3615   model->identifyInputsAndOutputs(
3616     {in3},
3617     {out3});
3618   assert(model->isValid());
3619 }
3620 
is_ignored_scale_nhwc_quant8_4(int i)3621 inline bool is_ignored_scale_nhwc_quant8_4(int i) {
3622   static std::set<int> ignore = {};
3623   return ignore.find(i) != ignore.end();
3624 }
3625 
CreateModel_scale_nhwc_float16_4(Model * model)3626 void CreateModel_scale_nhwc_float16_4(Model *model) {
3627   OperandType type0(Type::BOOL, {});
3628   OperandType type21(Type::TENSOR_FLOAT16, {1, 2, 2, 1});
3629   OperandType type29(Type::FLOAT16, {});
3630   OperandType type44(Type::TENSOR_FLOAT16, {1, 2, 5, 1});
3631   // Phase 1, operands
3632   auto in3 = model->addOperand(&type21);
3633   auto param14 = model->addOperand(&type29);
3634   auto param15 = model->addOperand(&type29);
3635   auto layout = model->addOperand(&type0);
3636   auto out3 = model->addOperand(&type44);
3637   // Phase 2, operations
3638   static _Float16 param14_init[] = {2.5999999046325684f};
3639   model->setOperandValue(param14, param14_init, sizeof(_Float16) * 1);
3640   static _Float16 param15_init[] = {1.100000023841858f};
3641   model->setOperandValue(param15, param15_init, sizeof(_Float16) * 1);
3642   static bool8 layout_init[] = {false};
3643   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3644   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param14, param15, layout}, {out3});
3645   // Phase 3, inputs and outputs
3646   model->identifyInputsAndOutputs(
3647     {in3},
3648     {out3});
3649   assert(model->isValid());
3650 }
3651 
is_ignored_scale_nhwc_float16_4(int i)3652 inline bool is_ignored_scale_nhwc_float16_4(int i) {
3653   static std::set<int> ignore = {};
3654   return ignore.find(i) != ignore.end();
3655 }
3656 
CreateModel_scale_nchw_4(Model * model)3657 void CreateModel_scale_nchw_4(Model *model) {
3658   OperandType type0(Type::BOOL, {});
3659   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
3660   OperandType type4(Type::FLOAT32, {});
3661   OperandType type45(Type::TENSOR_FLOAT32, {1, 1, 2, 5});
3662   // Phase 1, operands
3663   auto in3 = model->addOperand(&type23);
3664   auto param14 = model->addOperand(&type4);
3665   auto param15 = model->addOperand(&type4);
3666   auto layout = model->addOperand(&type0);
3667   auto out3 = model->addOperand(&type45);
3668   // Phase 2, operations
3669   static float param14_init[] = {2.6f};
3670   model->setOperandValue(param14, param14_init, sizeof(float) * 1);
3671   static float param15_init[] = {1.1f};
3672   model->setOperandValue(param15, param15_init, sizeof(float) * 1);
3673   static bool8 layout_init[] = {true};
3674   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3675   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param14, param15, layout}, {out3});
3676   // Phase 3, inputs and outputs
3677   model->identifyInputsAndOutputs(
3678     {in3},
3679     {out3});
3680   assert(model->isValid());
3681 }
3682 
is_ignored_scale_nchw_4(int i)3683 inline bool is_ignored_scale_nchw_4(int i) {
3684   static std::set<int> ignore = {};
3685   return ignore.find(i) != ignore.end();
3686 }
3687 
CreateModel_scale_nchw_relaxed_4(Model * model)3688 void CreateModel_scale_nchw_relaxed_4(Model *model) {
3689   OperandType type0(Type::BOOL, {});
3690   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
3691   OperandType type4(Type::FLOAT32, {});
3692   OperandType type45(Type::TENSOR_FLOAT32, {1, 1, 2, 5});
3693   // Phase 1, operands
3694   auto in3 = model->addOperand(&type23);
3695   auto param14 = model->addOperand(&type4);
3696   auto param15 = model->addOperand(&type4);
3697   auto layout = model->addOperand(&type0);
3698   auto out3 = model->addOperand(&type45);
3699   // Phase 2, operations
3700   static float param14_init[] = {2.6f};
3701   model->setOperandValue(param14, param14_init, sizeof(float) * 1);
3702   static float param15_init[] = {1.1f};
3703   model->setOperandValue(param15, param15_init, sizeof(float) * 1);
3704   static bool8 layout_init[] = {true};
3705   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3706   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param14, param15, layout}, {out3});
3707   // Phase 3, inputs and outputs
3708   model->identifyInputsAndOutputs(
3709     {in3},
3710     {out3});
3711   // Phase 4: set relaxed execution
3712   model->relaxComputationFloat32toFloat16(true);
3713   assert(model->isValid());
3714 }
3715 
is_ignored_scale_nchw_relaxed_4(int i)3716 inline bool is_ignored_scale_nchw_relaxed_4(int i) {
3717   static std::set<int> ignore = {};
3718   return ignore.find(i) != ignore.end();
3719 }
3720 
CreateModel_scale_nchw_quant8_4(Model * model)3721 void CreateModel_scale_nchw_quant8_4(Model *model) {
3722   OperandType type0(Type::BOOL, {});
3723   OperandType type4(Type::FLOAT32, {});
3724   OperandType type41(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 2}, 0.25f, 100);
3725   OperandType type46(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 5}, 0.25f, 100);
3726   // Phase 1, operands
3727   auto in3 = model->addOperand(&type41);
3728   auto param14 = model->addOperand(&type4);
3729   auto param15 = model->addOperand(&type4);
3730   auto layout = model->addOperand(&type0);
3731   auto out3 = model->addOperand(&type46);
3732   // Phase 2, operations
3733   static float param14_init[] = {2.6f};
3734   model->setOperandValue(param14, param14_init, sizeof(float) * 1);
3735   static float param15_init[] = {1.1f};
3736   model->setOperandValue(param15, param15_init, sizeof(float) * 1);
3737   static bool8 layout_init[] = {true};
3738   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3739   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param14, param15, layout}, {out3});
3740   // Phase 3, inputs and outputs
3741   model->identifyInputsAndOutputs(
3742     {in3},
3743     {out3});
3744   assert(model->isValid());
3745 }
3746 
is_ignored_scale_nchw_quant8_4(int i)3747 inline bool is_ignored_scale_nchw_quant8_4(int i) {
3748   static std::set<int> ignore = {};
3749   return ignore.find(i) != ignore.end();
3750 }
3751 
CreateModel_scale_nchw_float16_4(Model * model)3752 void CreateModel_scale_nchw_float16_4(Model *model) {
3753   OperandType type0(Type::BOOL, {});
3754   OperandType type25(Type::TENSOR_FLOAT16, {1, 1, 2, 2});
3755   OperandType type29(Type::FLOAT16, {});
3756   OperandType type47(Type::TENSOR_FLOAT16, {1, 1, 2, 5});
3757   // Phase 1, operands
3758   auto in3 = model->addOperand(&type25);
3759   auto param14 = model->addOperand(&type29);
3760   auto param15 = model->addOperand(&type29);
3761   auto layout = model->addOperand(&type0);
3762   auto out3 = model->addOperand(&type47);
3763   // Phase 2, operations
3764   static _Float16 param14_init[] = {2.5999999046325684f};
3765   model->setOperandValue(param14, param14_init, sizeof(_Float16) * 1);
3766   static _Float16 param15_init[] = {1.100000023841858f};
3767   model->setOperandValue(param15, param15_init, sizeof(_Float16) * 1);
3768   static bool8 layout_init[] = {true};
3769   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3770   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param14, param15, layout}, {out3});
3771   // Phase 3, inputs and outputs
3772   model->identifyInputsAndOutputs(
3773     {in3},
3774     {out3});
3775   assert(model->isValid());
3776 }
3777 
is_ignored_scale_nchw_float16_4(int i)3778 inline bool is_ignored_scale_nchw_float16_4(int i) {
3779   static std::set<int> ignore = {};
3780   return ignore.find(i) != ignore.end();
3781 }
3782 
CreateModel_scale_dynamic_output_shape_nhwc_4(Model * model)3783 void CreateModel_scale_dynamic_output_shape_nhwc_4(Model *model) {
3784   OperandType type0(Type::BOOL, {});
3785   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
3786   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
3787   OperandType type4(Type::FLOAT32, {});
3788   // Phase 1, operands
3789   auto in3 = model->addOperand(&type1);
3790   auto param14 = model->addOperand(&type4);
3791   auto param15 = model->addOperand(&type4);
3792   auto layout = model->addOperand(&type0);
3793   auto out3 = model->addOperand(&type26);
3794   // Phase 2, operations
3795   static float param14_init[] = {2.6f};
3796   model->setOperandValue(param14, param14_init, sizeof(float) * 1);
3797   static float param15_init[] = {1.1f};
3798   model->setOperandValue(param15, param15_init, sizeof(float) * 1);
3799   static bool8 layout_init[] = {false};
3800   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3801   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param14, param15, layout}, {out3});
3802   // Phase 3, inputs and outputs
3803   model->identifyInputsAndOutputs(
3804     {in3},
3805     {out3});
3806   assert(model->isValid());
3807 }
3808 
is_ignored_scale_dynamic_output_shape_nhwc_4(int i)3809 inline bool is_ignored_scale_dynamic_output_shape_nhwc_4(int i) {
3810   static std::set<int> ignore = {};
3811   return ignore.find(i) != ignore.end();
3812 }
3813 
CreateModel_scale_dynamic_output_shape_nhwc_relaxed_4(Model * model)3814 void CreateModel_scale_dynamic_output_shape_nhwc_relaxed_4(Model *model) {
3815   OperandType type0(Type::BOOL, {});
3816   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
3817   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
3818   OperandType type4(Type::FLOAT32, {});
3819   // Phase 1, operands
3820   auto in3 = model->addOperand(&type1);
3821   auto param14 = model->addOperand(&type4);
3822   auto param15 = model->addOperand(&type4);
3823   auto layout = model->addOperand(&type0);
3824   auto out3 = model->addOperand(&type26);
3825   // Phase 2, operations
3826   static float param14_init[] = {2.6f};
3827   model->setOperandValue(param14, param14_init, sizeof(float) * 1);
3828   static float param15_init[] = {1.1f};
3829   model->setOperandValue(param15, param15_init, sizeof(float) * 1);
3830   static bool8 layout_init[] = {false};
3831   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3832   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param14, param15, layout}, {out3});
3833   // Phase 3, inputs and outputs
3834   model->identifyInputsAndOutputs(
3835     {in3},
3836     {out3});
3837   // Phase 4: set relaxed execution
3838   model->relaxComputationFloat32toFloat16(true);
3839   assert(model->isValid());
3840 }
3841 
is_ignored_scale_dynamic_output_shape_nhwc_relaxed_4(int i)3842 inline bool is_ignored_scale_dynamic_output_shape_nhwc_relaxed_4(int i) {
3843   static std::set<int> ignore = {};
3844   return ignore.find(i) != ignore.end();
3845 }
3846 
CreateModel_scale_dynamic_output_shape_nhwc_quant8_4(Model * model)3847 void CreateModel_scale_dynamic_output_shape_nhwc_quant8_4(Model *model) {
3848   OperandType type0(Type::BOOL, {});
3849   OperandType type39(Type::TENSOR_QUANT8_ASYMM, {1, 2, 2, 1}, 0.25f, 100);
3850   OperandType type4(Type::FLOAT32, {});
3851   OperandType type42(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 100);
3852   // Phase 1, operands
3853   auto in3 = model->addOperand(&type39);
3854   auto param14 = model->addOperand(&type4);
3855   auto param15 = model->addOperand(&type4);
3856   auto layout = model->addOperand(&type0);
3857   auto out3 = model->addOperand(&type42);
3858   // Phase 2, operations
3859   static float param14_init[] = {2.6f};
3860   model->setOperandValue(param14, param14_init, sizeof(float) * 1);
3861   static float param15_init[] = {1.1f};
3862   model->setOperandValue(param15, param15_init, sizeof(float) * 1);
3863   static bool8 layout_init[] = {false};
3864   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3865   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param14, param15, layout}, {out3});
3866   // Phase 3, inputs and outputs
3867   model->identifyInputsAndOutputs(
3868     {in3},
3869     {out3});
3870   assert(model->isValid());
3871 }
3872 
is_ignored_scale_dynamic_output_shape_nhwc_quant8_4(int i)3873 inline bool is_ignored_scale_dynamic_output_shape_nhwc_quant8_4(int i) {
3874   static std::set<int> ignore = {};
3875   return ignore.find(i) != ignore.end();
3876 }
3877 
CreateModel_scale_dynamic_output_shape_nhwc_float16_4(Model * model)3878 void CreateModel_scale_dynamic_output_shape_nhwc_float16_4(Model *model) {
3879   OperandType type0(Type::BOOL, {});
3880   OperandType type21(Type::TENSOR_FLOAT16, {1, 2, 2, 1});
3881   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
3882   OperandType type29(Type::FLOAT16, {});
3883   // Phase 1, operands
3884   auto in3 = model->addOperand(&type21);
3885   auto param14 = model->addOperand(&type29);
3886   auto param15 = model->addOperand(&type29);
3887   auto layout = model->addOperand(&type0);
3888   auto out3 = model->addOperand(&type28);
3889   // Phase 2, operations
3890   static _Float16 param14_init[] = {2.5999999046325684f};
3891   model->setOperandValue(param14, param14_init, sizeof(_Float16) * 1);
3892   static _Float16 param15_init[] = {1.100000023841858f};
3893   model->setOperandValue(param15, param15_init, sizeof(_Float16) * 1);
3894   static bool8 layout_init[] = {false};
3895   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3896   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param14, param15, layout}, {out3});
3897   // Phase 3, inputs and outputs
3898   model->identifyInputsAndOutputs(
3899     {in3},
3900     {out3});
3901   assert(model->isValid());
3902 }
3903 
is_ignored_scale_dynamic_output_shape_nhwc_float16_4(int i)3904 inline bool is_ignored_scale_dynamic_output_shape_nhwc_float16_4(int i) {
3905   static std::set<int> ignore = {};
3906   return ignore.find(i) != ignore.end();
3907 }
3908 
CreateModel_scale_dynamic_output_shape_nchw_4(Model * model)3909 void CreateModel_scale_dynamic_output_shape_nchw_4(Model *model) {
3910   OperandType type0(Type::BOOL, {});
3911   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
3912   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
3913   OperandType type4(Type::FLOAT32, {});
3914   // Phase 1, operands
3915   auto in3 = model->addOperand(&type23);
3916   auto param14 = model->addOperand(&type4);
3917   auto param15 = model->addOperand(&type4);
3918   auto layout = model->addOperand(&type0);
3919   auto out3 = model->addOperand(&type26);
3920   // Phase 2, operations
3921   static float param14_init[] = {2.6f};
3922   model->setOperandValue(param14, param14_init, sizeof(float) * 1);
3923   static float param15_init[] = {1.1f};
3924   model->setOperandValue(param15, param15_init, sizeof(float) * 1);
3925   static bool8 layout_init[] = {true};
3926   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3927   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param14, param15, layout}, {out3});
3928   // Phase 3, inputs and outputs
3929   model->identifyInputsAndOutputs(
3930     {in3},
3931     {out3});
3932   assert(model->isValid());
3933 }
3934 
is_ignored_scale_dynamic_output_shape_nchw_4(int i)3935 inline bool is_ignored_scale_dynamic_output_shape_nchw_4(int i) {
3936   static std::set<int> ignore = {};
3937   return ignore.find(i) != ignore.end();
3938 }
3939 
CreateModel_scale_dynamic_output_shape_nchw_relaxed_4(Model * model)3940 void CreateModel_scale_dynamic_output_shape_nchw_relaxed_4(Model *model) {
3941   OperandType type0(Type::BOOL, {});
3942   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
3943   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
3944   OperandType type4(Type::FLOAT32, {});
3945   // Phase 1, operands
3946   auto in3 = model->addOperand(&type23);
3947   auto param14 = model->addOperand(&type4);
3948   auto param15 = model->addOperand(&type4);
3949   auto layout = model->addOperand(&type0);
3950   auto out3 = model->addOperand(&type26);
3951   // Phase 2, operations
3952   static float param14_init[] = {2.6f};
3953   model->setOperandValue(param14, param14_init, sizeof(float) * 1);
3954   static float param15_init[] = {1.1f};
3955   model->setOperandValue(param15, param15_init, sizeof(float) * 1);
3956   static bool8 layout_init[] = {true};
3957   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3958   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param14, param15, layout}, {out3});
3959   // Phase 3, inputs and outputs
3960   model->identifyInputsAndOutputs(
3961     {in3},
3962     {out3});
3963   // Phase 4: set relaxed execution
3964   model->relaxComputationFloat32toFloat16(true);
3965   assert(model->isValid());
3966 }
3967 
is_ignored_scale_dynamic_output_shape_nchw_relaxed_4(int i)3968 inline bool is_ignored_scale_dynamic_output_shape_nchw_relaxed_4(int i) {
3969   static std::set<int> ignore = {};
3970   return ignore.find(i) != ignore.end();
3971 }
3972 
CreateModel_scale_dynamic_output_shape_nchw_quant8_4(Model * model)3973 void CreateModel_scale_dynamic_output_shape_nchw_quant8_4(Model *model) {
3974   OperandType type0(Type::BOOL, {});
3975   OperandType type4(Type::FLOAT32, {});
3976   OperandType type41(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 2}, 0.25f, 100);
3977   OperandType type42(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 100);
3978   // Phase 1, operands
3979   auto in3 = model->addOperand(&type41);
3980   auto param14 = model->addOperand(&type4);
3981   auto param15 = model->addOperand(&type4);
3982   auto layout = model->addOperand(&type0);
3983   auto out3 = model->addOperand(&type42);
3984   // Phase 2, operations
3985   static float param14_init[] = {2.6f};
3986   model->setOperandValue(param14, param14_init, sizeof(float) * 1);
3987   static float param15_init[] = {1.1f};
3988   model->setOperandValue(param15, param15_init, sizeof(float) * 1);
3989   static bool8 layout_init[] = {true};
3990   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
3991   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param14, param15, layout}, {out3});
3992   // Phase 3, inputs and outputs
3993   model->identifyInputsAndOutputs(
3994     {in3},
3995     {out3});
3996   assert(model->isValid());
3997 }
3998 
is_ignored_scale_dynamic_output_shape_nchw_quant8_4(int i)3999 inline bool is_ignored_scale_dynamic_output_shape_nchw_quant8_4(int i) {
4000   static std::set<int> ignore = {};
4001   return ignore.find(i) != ignore.end();
4002 }
4003 
CreateModel_scale_dynamic_output_shape_nchw_float16_4(Model * model)4004 void CreateModel_scale_dynamic_output_shape_nchw_float16_4(Model *model) {
4005   OperandType type0(Type::BOOL, {});
4006   OperandType type25(Type::TENSOR_FLOAT16, {1, 1, 2, 2});
4007   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
4008   OperandType type29(Type::FLOAT16, {});
4009   // Phase 1, operands
4010   auto in3 = model->addOperand(&type25);
4011   auto param14 = model->addOperand(&type29);
4012   auto param15 = model->addOperand(&type29);
4013   auto layout = model->addOperand(&type0);
4014   auto out3 = model->addOperand(&type28);
4015   // Phase 2, operations
4016   static _Float16 param14_init[] = {2.5999999046325684f};
4017   model->setOperandValue(param14, param14_init, sizeof(_Float16) * 1);
4018   static _Float16 param15_init[] = {1.100000023841858f};
4019   model->setOperandValue(param15, param15_init, sizeof(_Float16) * 1);
4020   static bool8 layout_init[] = {true};
4021   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4022   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in3, param14, param15, layout}, {out3});
4023   // Phase 3, inputs and outputs
4024   model->identifyInputsAndOutputs(
4025     {in3},
4026     {out3});
4027   assert(model->isValid());
4028 }
4029 
is_ignored_scale_dynamic_output_shape_nchw_float16_4(int i)4030 inline bool is_ignored_scale_dynamic_output_shape_nchw_float16_4(int i) {
4031   static std::set<int> ignore = {};
4032   return ignore.find(i) != ignore.end();
4033 }
4034 
CreateModel_shape_nhwc_5(Model * model)4035 void CreateModel_shape_nhwc_5(Model *model) {
4036   OperandType type0(Type::BOOL, {});
4037   OperandType type3(Type::INT32, {});
4038   OperandType type5(Type::TENSOR_FLOAT32, {1, 3, 3, 1});
4039   OperandType type7(Type::TENSOR_FLOAT32, {1, 4, 4, 1});
4040   // Phase 1, operands
4041   auto in4 = model->addOperand(&type7);
4042   auto param16 = model->addOperand(&type3);
4043   auto param17 = model->addOperand(&type3);
4044   auto layout = model->addOperand(&type0);
4045   auto out4 = model->addOperand(&type5);
4046   // Phase 2, operations
4047   static int32_t param16_init[] = {3};
4048   model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
4049   static int32_t param17_init[] = {3};
4050   model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
4051   static bool8 layout_init[] = {false};
4052   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4053   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param16, param17, layout}, {out4});
4054   // Phase 3, inputs and outputs
4055   model->identifyInputsAndOutputs(
4056     {in4},
4057     {out4});
4058   assert(model->isValid());
4059 }
4060 
is_ignored_shape_nhwc_5(int i)4061 inline bool is_ignored_shape_nhwc_5(int i) {
4062   static std::set<int> ignore = {};
4063   return ignore.find(i) != ignore.end();
4064 }
4065 
CreateModel_shape_nhwc_relaxed_5(Model * model)4066 void CreateModel_shape_nhwc_relaxed_5(Model *model) {
4067   OperandType type0(Type::BOOL, {});
4068   OperandType type3(Type::INT32, {});
4069   OperandType type5(Type::TENSOR_FLOAT32, {1, 3, 3, 1});
4070   OperandType type7(Type::TENSOR_FLOAT32, {1, 4, 4, 1});
4071   // Phase 1, operands
4072   auto in4 = model->addOperand(&type7);
4073   auto param16 = model->addOperand(&type3);
4074   auto param17 = model->addOperand(&type3);
4075   auto layout = model->addOperand(&type0);
4076   auto out4 = model->addOperand(&type5);
4077   // Phase 2, operations
4078   static int32_t param16_init[] = {3};
4079   model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
4080   static int32_t param17_init[] = {3};
4081   model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
4082   static bool8 layout_init[] = {false};
4083   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4084   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param16, param17, layout}, {out4});
4085   // Phase 3, inputs and outputs
4086   model->identifyInputsAndOutputs(
4087     {in4},
4088     {out4});
4089   // Phase 4: set relaxed execution
4090   model->relaxComputationFloat32toFloat16(true);
4091   assert(model->isValid());
4092 }
4093 
is_ignored_shape_nhwc_relaxed_5(int i)4094 inline bool is_ignored_shape_nhwc_relaxed_5(int i) {
4095   static std::set<int> ignore = {};
4096   return ignore.find(i) != ignore.end();
4097 }
4098 
CreateModel_shape_nhwc_quant8_5(Model * model)4099 void CreateModel_shape_nhwc_quant8_5(Model *model) {
4100   OperandType type0(Type::BOOL, {});
4101   OperandType type3(Type::INT32, {});
4102   OperandType type38(Type::TENSOR_QUANT8_ASYMM, {1, 3, 3, 1}, 0.25f, 100);
4103   OperandType type48(Type::TENSOR_QUANT8_ASYMM, {1, 4, 4, 1}, 0.25f, 100);
4104   // Phase 1, operands
4105   auto in4 = model->addOperand(&type48);
4106   auto param16 = model->addOperand(&type3);
4107   auto param17 = model->addOperand(&type3);
4108   auto layout = model->addOperand(&type0);
4109   auto out4 = model->addOperand(&type38);
4110   // Phase 2, operations
4111   static int32_t param16_init[] = {3};
4112   model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
4113   static int32_t param17_init[] = {3};
4114   model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
4115   static bool8 layout_init[] = {false};
4116   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4117   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param16, param17, layout}, {out4});
4118   // Phase 3, inputs and outputs
4119   model->identifyInputsAndOutputs(
4120     {in4},
4121     {out4});
4122   assert(model->isValid());
4123 }
4124 
is_ignored_shape_nhwc_quant8_5(int i)4125 inline bool is_ignored_shape_nhwc_quant8_5(int i) {
4126   static std::set<int> ignore = {};
4127   return ignore.find(i) != ignore.end();
4128 }
4129 
CreateModel_shape_nhwc_float16_5(Model * model)4130 void CreateModel_shape_nhwc_float16_5(Model *model) {
4131   OperandType type0(Type::BOOL, {});
4132   OperandType type3(Type::INT32, {});
4133   OperandType type32(Type::TENSOR_FLOAT16, {1, 3, 3, 1});
4134   OperandType type49(Type::TENSOR_FLOAT16, {1, 4, 4, 1});
4135   // Phase 1, operands
4136   auto in4 = model->addOperand(&type49);
4137   auto param16 = model->addOperand(&type3);
4138   auto param17 = model->addOperand(&type3);
4139   auto layout = model->addOperand(&type0);
4140   auto out4 = model->addOperand(&type32);
4141   // Phase 2, operations
4142   static int32_t param16_init[] = {3};
4143   model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
4144   static int32_t param17_init[] = {3};
4145   model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
4146   static bool8 layout_init[] = {false};
4147   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4148   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param16, param17, layout}, {out4});
4149   // Phase 3, inputs and outputs
4150   model->identifyInputsAndOutputs(
4151     {in4},
4152     {out4});
4153   assert(model->isValid());
4154 }
4155 
is_ignored_shape_nhwc_float16_5(int i)4156 inline bool is_ignored_shape_nhwc_float16_5(int i) {
4157   static std::set<int> ignore = {};
4158   return ignore.find(i) != ignore.end();
4159 }
4160 
CreateModel_shape_nchw_5(Model * model)4161 void CreateModel_shape_nchw_5(Model *model) {
4162   OperandType type0(Type::BOOL, {});
4163   OperandType type3(Type::INT32, {});
4164   OperandType type33(Type::TENSOR_FLOAT32, {1, 1, 3, 3});
4165   OperandType type50(Type::TENSOR_FLOAT32, {1, 1, 4, 4});
4166   // Phase 1, operands
4167   auto in4 = model->addOperand(&type50);
4168   auto param16 = model->addOperand(&type3);
4169   auto param17 = model->addOperand(&type3);
4170   auto layout = model->addOperand(&type0);
4171   auto out4 = model->addOperand(&type33);
4172   // Phase 2, operations
4173   static int32_t param16_init[] = {3};
4174   model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
4175   static int32_t param17_init[] = {3};
4176   model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
4177   static bool8 layout_init[] = {true};
4178   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4179   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param16, param17, layout}, {out4});
4180   // Phase 3, inputs and outputs
4181   model->identifyInputsAndOutputs(
4182     {in4},
4183     {out4});
4184   assert(model->isValid());
4185 }
4186 
is_ignored_shape_nchw_5(int i)4187 inline bool is_ignored_shape_nchw_5(int i) {
4188   static std::set<int> ignore = {};
4189   return ignore.find(i) != ignore.end();
4190 }
4191 
CreateModel_shape_nchw_relaxed_5(Model * model)4192 void CreateModel_shape_nchw_relaxed_5(Model *model) {
4193   OperandType type0(Type::BOOL, {});
4194   OperandType type3(Type::INT32, {});
4195   OperandType type33(Type::TENSOR_FLOAT32, {1, 1, 3, 3});
4196   OperandType type50(Type::TENSOR_FLOAT32, {1, 1, 4, 4});
4197   // Phase 1, operands
4198   auto in4 = model->addOperand(&type50);
4199   auto param16 = model->addOperand(&type3);
4200   auto param17 = model->addOperand(&type3);
4201   auto layout = model->addOperand(&type0);
4202   auto out4 = model->addOperand(&type33);
4203   // Phase 2, operations
4204   static int32_t param16_init[] = {3};
4205   model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
4206   static int32_t param17_init[] = {3};
4207   model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
4208   static bool8 layout_init[] = {true};
4209   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4210   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param16, param17, layout}, {out4});
4211   // Phase 3, inputs and outputs
4212   model->identifyInputsAndOutputs(
4213     {in4},
4214     {out4});
4215   // Phase 4: set relaxed execution
4216   model->relaxComputationFloat32toFloat16(true);
4217   assert(model->isValid());
4218 }
4219 
is_ignored_shape_nchw_relaxed_5(int i)4220 inline bool is_ignored_shape_nchw_relaxed_5(int i) {
4221   static std::set<int> ignore = {};
4222   return ignore.find(i) != ignore.end();
4223 }
4224 
CreateModel_shape_nchw_quant8_5(Model * model)4225 void CreateModel_shape_nchw_quant8_5(Model *model) {
4226   OperandType type0(Type::BOOL, {});
4227   OperandType type3(Type::INT32, {});
4228   OperandType type40(Type::TENSOR_QUANT8_ASYMM, {1, 1, 3, 3}, 0.25f, 100);
4229   OperandType type51(Type::TENSOR_QUANT8_ASYMM, {1, 1, 4, 4}, 0.25f, 100);
4230   // Phase 1, operands
4231   auto in4 = model->addOperand(&type51);
4232   auto param16 = model->addOperand(&type3);
4233   auto param17 = model->addOperand(&type3);
4234   auto layout = model->addOperand(&type0);
4235   auto out4 = model->addOperand(&type40);
4236   // Phase 2, operations
4237   static int32_t param16_init[] = {3};
4238   model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
4239   static int32_t param17_init[] = {3};
4240   model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
4241   static bool8 layout_init[] = {true};
4242   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4243   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param16, param17, layout}, {out4});
4244   // Phase 3, inputs and outputs
4245   model->identifyInputsAndOutputs(
4246     {in4},
4247     {out4});
4248   assert(model->isValid());
4249 }
4250 
is_ignored_shape_nchw_quant8_5(int i)4251 inline bool is_ignored_shape_nchw_quant8_5(int i) {
4252   static std::set<int> ignore = {};
4253   return ignore.find(i) != ignore.end();
4254 }
4255 
CreateModel_shape_nchw_float16_5(Model * model)4256 void CreateModel_shape_nchw_float16_5(Model *model) {
4257   OperandType type0(Type::BOOL, {});
4258   OperandType type3(Type::INT32, {});
4259   OperandType type36(Type::TENSOR_FLOAT16, {1, 1, 3, 3});
4260   OperandType type52(Type::TENSOR_FLOAT16, {1, 1, 4, 4});
4261   // Phase 1, operands
4262   auto in4 = model->addOperand(&type52);
4263   auto param16 = model->addOperand(&type3);
4264   auto param17 = model->addOperand(&type3);
4265   auto layout = model->addOperand(&type0);
4266   auto out4 = model->addOperand(&type36);
4267   // Phase 2, operations
4268   static int32_t param16_init[] = {3};
4269   model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
4270   static int32_t param17_init[] = {3};
4271   model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
4272   static bool8 layout_init[] = {true};
4273   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4274   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param16, param17, layout}, {out4});
4275   // Phase 3, inputs and outputs
4276   model->identifyInputsAndOutputs(
4277     {in4},
4278     {out4});
4279   assert(model->isValid());
4280 }
4281 
is_ignored_shape_nchw_float16_5(int i)4282 inline bool is_ignored_shape_nchw_float16_5(int i) {
4283   static std::set<int> ignore = {};
4284   return ignore.find(i) != ignore.end();
4285 }
4286 
CreateModel_shape_dynamic_output_shape_nhwc_5(Model * model)4287 void CreateModel_shape_dynamic_output_shape_nhwc_5(Model *model) {
4288   OperandType type0(Type::BOOL, {});
4289   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
4290   OperandType type3(Type::INT32, {});
4291   OperandType type7(Type::TENSOR_FLOAT32, {1, 4, 4, 1});
4292   // Phase 1, operands
4293   auto in4 = model->addOperand(&type7);
4294   auto param16 = model->addOperand(&type3);
4295   auto param17 = model->addOperand(&type3);
4296   auto layout = model->addOperand(&type0);
4297   auto out4 = model->addOperand(&type26);
4298   // Phase 2, operations
4299   static int32_t param16_init[] = {3};
4300   model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
4301   static int32_t param17_init[] = {3};
4302   model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
4303   static bool8 layout_init[] = {false};
4304   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4305   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param16, param17, layout}, {out4});
4306   // Phase 3, inputs and outputs
4307   model->identifyInputsAndOutputs(
4308     {in4},
4309     {out4});
4310   assert(model->isValid());
4311 }
4312 
is_ignored_shape_dynamic_output_shape_nhwc_5(int i)4313 inline bool is_ignored_shape_dynamic_output_shape_nhwc_5(int i) {
4314   static std::set<int> ignore = {};
4315   return ignore.find(i) != ignore.end();
4316 }
4317 
CreateModel_shape_dynamic_output_shape_nhwc_relaxed_5(Model * model)4318 void CreateModel_shape_dynamic_output_shape_nhwc_relaxed_5(Model *model) {
4319   OperandType type0(Type::BOOL, {});
4320   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
4321   OperandType type3(Type::INT32, {});
4322   OperandType type7(Type::TENSOR_FLOAT32, {1, 4, 4, 1});
4323   // Phase 1, operands
4324   auto in4 = model->addOperand(&type7);
4325   auto param16 = model->addOperand(&type3);
4326   auto param17 = model->addOperand(&type3);
4327   auto layout = model->addOperand(&type0);
4328   auto out4 = model->addOperand(&type26);
4329   // Phase 2, operations
4330   static int32_t param16_init[] = {3};
4331   model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
4332   static int32_t param17_init[] = {3};
4333   model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
4334   static bool8 layout_init[] = {false};
4335   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4336   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param16, param17, layout}, {out4});
4337   // Phase 3, inputs and outputs
4338   model->identifyInputsAndOutputs(
4339     {in4},
4340     {out4});
4341   // Phase 4: set relaxed execution
4342   model->relaxComputationFloat32toFloat16(true);
4343   assert(model->isValid());
4344 }
4345 
is_ignored_shape_dynamic_output_shape_nhwc_relaxed_5(int i)4346 inline bool is_ignored_shape_dynamic_output_shape_nhwc_relaxed_5(int i) {
4347   static std::set<int> ignore = {};
4348   return ignore.find(i) != ignore.end();
4349 }
4350 
CreateModel_shape_dynamic_output_shape_nhwc_quant8_5(Model * model)4351 void CreateModel_shape_dynamic_output_shape_nhwc_quant8_5(Model *model) {
4352   OperandType type0(Type::BOOL, {});
4353   OperandType type3(Type::INT32, {});
4354   OperandType type42(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 100);
4355   OperandType type48(Type::TENSOR_QUANT8_ASYMM, {1, 4, 4, 1}, 0.25f, 100);
4356   // Phase 1, operands
4357   auto in4 = model->addOperand(&type48);
4358   auto param16 = model->addOperand(&type3);
4359   auto param17 = model->addOperand(&type3);
4360   auto layout = model->addOperand(&type0);
4361   auto out4 = model->addOperand(&type42);
4362   // Phase 2, operations
4363   static int32_t param16_init[] = {3};
4364   model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
4365   static int32_t param17_init[] = {3};
4366   model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
4367   static bool8 layout_init[] = {false};
4368   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4369   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param16, param17, layout}, {out4});
4370   // Phase 3, inputs and outputs
4371   model->identifyInputsAndOutputs(
4372     {in4},
4373     {out4});
4374   assert(model->isValid());
4375 }
4376 
is_ignored_shape_dynamic_output_shape_nhwc_quant8_5(int i)4377 inline bool is_ignored_shape_dynamic_output_shape_nhwc_quant8_5(int i) {
4378   static std::set<int> ignore = {};
4379   return ignore.find(i) != ignore.end();
4380 }
4381 
CreateModel_shape_dynamic_output_shape_nhwc_float16_5(Model * model)4382 void CreateModel_shape_dynamic_output_shape_nhwc_float16_5(Model *model) {
4383   OperandType type0(Type::BOOL, {});
4384   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
4385   OperandType type3(Type::INT32, {});
4386   OperandType type49(Type::TENSOR_FLOAT16, {1, 4, 4, 1});
4387   // Phase 1, operands
4388   auto in4 = model->addOperand(&type49);
4389   auto param16 = model->addOperand(&type3);
4390   auto param17 = model->addOperand(&type3);
4391   auto layout = model->addOperand(&type0);
4392   auto out4 = model->addOperand(&type28);
4393   // Phase 2, operations
4394   static int32_t param16_init[] = {3};
4395   model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
4396   static int32_t param17_init[] = {3};
4397   model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
4398   static bool8 layout_init[] = {false};
4399   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4400   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param16, param17, layout}, {out4});
4401   // Phase 3, inputs and outputs
4402   model->identifyInputsAndOutputs(
4403     {in4},
4404     {out4});
4405   assert(model->isValid());
4406 }
4407 
is_ignored_shape_dynamic_output_shape_nhwc_float16_5(int i)4408 inline bool is_ignored_shape_dynamic_output_shape_nhwc_float16_5(int i) {
4409   static std::set<int> ignore = {};
4410   return ignore.find(i) != ignore.end();
4411 }
4412 
CreateModel_shape_dynamic_output_shape_nchw_5(Model * model)4413 void CreateModel_shape_dynamic_output_shape_nchw_5(Model *model) {
4414   OperandType type0(Type::BOOL, {});
4415   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
4416   OperandType type3(Type::INT32, {});
4417   OperandType type50(Type::TENSOR_FLOAT32, {1, 1, 4, 4});
4418   // Phase 1, operands
4419   auto in4 = model->addOperand(&type50);
4420   auto param16 = model->addOperand(&type3);
4421   auto param17 = model->addOperand(&type3);
4422   auto layout = model->addOperand(&type0);
4423   auto out4 = model->addOperand(&type26);
4424   // Phase 2, operations
4425   static int32_t param16_init[] = {3};
4426   model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
4427   static int32_t param17_init[] = {3};
4428   model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
4429   static bool8 layout_init[] = {true};
4430   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4431   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param16, param17, layout}, {out4});
4432   // Phase 3, inputs and outputs
4433   model->identifyInputsAndOutputs(
4434     {in4},
4435     {out4});
4436   assert(model->isValid());
4437 }
4438 
is_ignored_shape_dynamic_output_shape_nchw_5(int i)4439 inline bool is_ignored_shape_dynamic_output_shape_nchw_5(int i) {
4440   static std::set<int> ignore = {};
4441   return ignore.find(i) != ignore.end();
4442 }
4443 
CreateModel_shape_dynamic_output_shape_nchw_relaxed_5(Model * model)4444 void CreateModel_shape_dynamic_output_shape_nchw_relaxed_5(Model *model) {
4445   OperandType type0(Type::BOOL, {});
4446   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
4447   OperandType type3(Type::INT32, {});
4448   OperandType type50(Type::TENSOR_FLOAT32, {1, 1, 4, 4});
4449   // Phase 1, operands
4450   auto in4 = model->addOperand(&type50);
4451   auto param16 = model->addOperand(&type3);
4452   auto param17 = model->addOperand(&type3);
4453   auto layout = model->addOperand(&type0);
4454   auto out4 = model->addOperand(&type26);
4455   // Phase 2, operations
4456   static int32_t param16_init[] = {3};
4457   model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
4458   static int32_t param17_init[] = {3};
4459   model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
4460   static bool8 layout_init[] = {true};
4461   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4462   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param16, param17, layout}, {out4});
4463   // Phase 3, inputs and outputs
4464   model->identifyInputsAndOutputs(
4465     {in4},
4466     {out4});
4467   // Phase 4: set relaxed execution
4468   model->relaxComputationFloat32toFloat16(true);
4469   assert(model->isValid());
4470 }
4471 
is_ignored_shape_dynamic_output_shape_nchw_relaxed_5(int i)4472 inline bool is_ignored_shape_dynamic_output_shape_nchw_relaxed_5(int i) {
4473   static std::set<int> ignore = {};
4474   return ignore.find(i) != ignore.end();
4475 }
4476 
CreateModel_shape_dynamic_output_shape_nchw_quant8_5(Model * model)4477 void CreateModel_shape_dynamic_output_shape_nchw_quant8_5(Model *model) {
4478   OperandType type0(Type::BOOL, {});
4479   OperandType type3(Type::INT32, {});
4480   OperandType type42(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 100);
4481   OperandType type51(Type::TENSOR_QUANT8_ASYMM, {1, 1, 4, 4}, 0.25f, 100);
4482   // Phase 1, operands
4483   auto in4 = model->addOperand(&type51);
4484   auto param16 = model->addOperand(&type3);
4485   auto param17 = model->addOperand(&type3);
4486   auto layout = model->addOperand(&type0);
4487   auto out4 = model->addOperand(&type42);
4488   // Phase 2, operations
4489   static int32_t param16_init[] = {3};
4490   model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
4491   static int32_t param17_init[] = {3};
4492   model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
4493   static bool8 layout_init[] = {true};
4494   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4495   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param16, param17, layout}, {out4});
4496   // Phase 3, inputs and outputs
4497   model->identifyInputsAndOutputs(
4498     {in4},
4499     {out4});
4500   assert(model->isValid());
4501 }
4502 
is_ignored_shape_dynamic_output_shape_nchw_quant8_5(int i)4503 inline bool is_ignored_shape_dynamic_output_shape_nchw_quant8_5(int i) {
4504   static std::set<int> ignore = {};
4505   return ignore.find(i) != ignore.end();
4506 }
4507 
CreateModel_shape_dynamic_output_shape_nchw_float16_5(Model * model)4508 void CreateModel_shape_dynamic_output_shape_nchw_float16_5(Model *model) {
4509   OperandType type0(Type::BOOL, {});
4510   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
4511   OperandType type3(Type::INT32, {});
4512   OperandType type52(Type::TENSOR_FLOAT16, {1, 1, 4, 4});
4513   // Phase 1, operands
4514   auto in4 = model->addOperand(&type52);
4515   auto param16 = model->addOperand(&type3);
4516   auto param17 = model->addOperand(&type3);
4517   auto layout = model->addOperand(&type0);
4518   auto out4 = model->addOperand(&type28);
4519   // Phase 2, operations
4520   static int32_t param16_init[] = {3};
4521   model->setOperandValue(param16, param16_init, sizeof(int32_t) * 1);
4522   static int32_t param17_init[] = {3};
4523   model->setOperandValue(param17, param17_init, sizeof(int32_t) * 1);
4524   static bool8 layout_init[] = {true};
4525   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4526   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param16, param17, layout}, {out4});
4527   // Phase 3, inputs and outputs
4528   model->identifyInputsAndOutputs(
4529     {in4},
4530     {out4});
4531   assert(model->isValid());
4532 }
4533 
is_ignored_shape_dynamic_output_shape_nchw_float16_5(int i)4534 inline bool is_ignored_shape_dynamic_output_shape_nchw_float16_5(int i) {
4535   static std::set<int> ignore = {};
4536   return ignore.find(i) != ignore.end();
4537 }
4538 
CreateModel_scale_nhwc_5(Model * model)4539 void CreateModel_scale_nhwc_5(Model *model) {
4540   OperandType type0(Type::BOOL, {});
4541   OperandType type4(Type::FLOAT32, {});
4542   OperandType type5(Type::TENSOR_FLOAT32, {1, 3, 3, 1});
4543   OperandType type7(Type::TENSOR_FLOAT32, {1, 4, 4, 1});
4544   // Phase 1, operands
4545   auto in4 = model->addOperand(&type7);
4546   auto param18 = model->addOperand(&type4);
4547   auto param19 = model->addOperand(&type4);
4548   auto layout = model->addOperand(&type0);
4549   auto out4 = model->addOperand(&type5);
4550   // Phase 2, operations
4551   static float param18_init[] = {0.9f};
4552   model->setOperandValue(param18, param18_init, sizeof(float) * 1);
4553   static float param19_init[] = {0.9f};
4554   model->setOperandValue(param19, param19_init, sizeof(float) * 1);
4555   static bool8 layout_init[] = {false};
4556   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4557   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param18, param19, layout}, {out4});
4558   // Phase 3, inputs and outputs
4559   model->identifyInputsAndOutputs(
4560     {in4},
4561     {out4});
4562   assert(model->isValid());
4563 }
4564 
is_ignored_scale_nhwc_5(int i)4565 inline bool is_ignored_scale_nhwc_5(int i) {
4566   static std::set<int> ignore = {};
4567   return ignore.find(i) != ignore.end();
4568 }
4569 
CreateModel_scale_nhwc_relaxed_5(Model * model)4570 void CreateModel_scale_nhwc_relaxed_5(Model *model) {
4571   OperandType type0(Type::BOOL, {});
4572   OperandType type4(Type::FLOAT32, {});
4573   OperandType type5(Type::TENSOR_FLOAT32, {1, 3, 3, 1});
4574   OperandType type7(Type::TENSOR_FLOAT32, {1, 4, 4, 1});
4575   // Phase 1, operands
4576   auto in4 = model->addOperand(&type7);
4577   auto param18 = model->addOperand(&type4);
4578   auto param19 = model->addOperand(&type4);
4579   auto layout = model->addOperand(&type0);
4580   auto out4 = model->addOperand(&type5);
4581   // Phase 2, operations
4582   static float param18_init[] = {0.9f};
4583   model->setOperandValue(param18, param18_init, sizeof(float) * 1);
4584   static float param19_init[] = {0.9f};
4585   model->setOperandValue(param19, param19_init, sizeof(float) * 1);
4586   static bool8 layout_init[] = {false};
4587   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4588   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param18, param19, layout}, {out4});
4589   // Phase 3, inputs and outputs
4590   model->identifyInputsAndOutputs(
4591     {in4},
4592     {out4});
4593   // Phase 4: set relaxed execution
4594   model->relaxComputationFloat32toFloat16(true);
4595   assert(model->isValid());
4596 }
4597 
is_ignored_scale_nhwc_relaxed_5(int i)4598 inline bool is_ignored_scale_nhwc_relaxed_5(int i) {
4599   static std::set<int> ignore = {};
4600   return ignore.find(i) != ignore.end();
4601 }
4602 
CreateModel_scale_nhwc_quant8_5(Model * model)4603 void CreateModel_scale_nhwc_quant8_5(Model *model) {
4604   OperandType type0(Type::BOOL, {});
4605   OperandType type38(Type::TENSOR_QUANT8_ASYMM, {1, 3, 3, 1}, 0.25f, 100);
4606   OperandType type4(Type::FLOAT32, {});
4607   OperandType type48(Type::TENSOR_QUANT8_ASYMM, {1, 4, 4, 1}, 0.25f, 100);
4608   // Phase 1, operands
4609   auto in4 = model->addOperand(&type48);
4610   auto param18 = model->addOperand(&type4);
4611   auto param19 = model->addOperand(&type4);
4612   auto layout = model->addOperand(&type0);
4613   auto out4 = model->addOperand(&type38);
4614   // Phase 2, operations
4615   static float param18_init[] = {0.9f};
4616   model->setOperandValue(param18, param18_init, sizeof(float) * 1);
4617   static float param19_init[] = {0.9f};
4618   model->setOperandValue(param19, param19_init, sizeof(float) * 1);
4619   static bool8 layout_init[] = {false};
4620   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4621   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param18, param19, layout}, {out4});
4622   // Phase 3, inputs and outputs
4623   model->identifyInputsAndOutputs(
4624     {in4},
4625     {out4});
4626   assert(model->isValid());
4627 }
4628 
is_ignored_scale_nhwc_quant8_5(int i)4629 inline bool is_ignored_scale_nhwc_quant8_5(int i) {
4630   static std::set<int> ignore = {};
4631   return ignore.find(i) != ignore.end();
4632 }
4633 
CreateModel_scale_nhwc_float16_5(Model * model)4634 void CreateModel_scale_nhwc_float16_5(Model *model) {
4635   OperandType type0(Type::BOOL, {});
4636   OperandType type29(Type::FLOAT16, {});
4637   OperandType type32(Type::TENSOR_FLOAT16, {1, 3, 3, 1});
4638   OperandType type49(Type::TENSOR_FLOAT16, {1, 4, 4, 1});
4639   // Phase 1, operands
4640   auto in4 = model->addOperand(&type49);
4641   auto param18 = model->addOperand(&type29);
4642   auto param19 = model->addOperand(&type29);
4643   auto layout = model->addOperand(&type0);
4644   auto out4 = model->addOperand(&type32);
4645   // Phase 2, operations
4646   static _Float16 param18_init[] = {0.8999999761581421f};
4647   model->setOperandValue(param18, param18_init, sizeof(_Float16) * 1);
4648   static _Float16 param19_init[] = {0.8999999761581421f};
4649   model->setOperandValue(param19, param19_init, sizeof(_Float16) * 1);
4650   static bool8 layout_init[] = {false};
4651   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4652   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param18, param19, layout}, {out4});
4653   // Phase 3, inputs and outputs
4654   model->identifyInputsAndOutputs(
4655     {in4},
4656     {out4});
4657   assert(model->isValid());
4658 }
4659 
is_ignored_scale_nhwc_float16_5(int i)4660 inline bool is_ignored_scale_nhwc_float16_5(int i) {
4661   static std::set<int> ignore = {};
4662   return ignore.find(i) != ignore.end();
4663 }
4664 
CreateModel_scale_nchw_5(Model * model)4665 void CreateModel_scale_nchw_5(Model *model) {
4666   OperandType type0(Type::BOOL, {});
4667   OperandType type33(Type::TENSOR_FLOAT32, {1, 1, 3, 3});
4668   OperandType type4(Type::FLOAT32, {});
4669   OperandType type50(Type::TENSOR_FLOAT32, {1, 1, 4, 4});
4670   // Phase 1, operands
4671   auto in4 = model->addOperand(&type50);
4672   auto param18 = model->addOperand(&type4);
4673   auto param19 = model->addOperand(&type4);
4674   auto layout = model->addOperand(&type0);
4675   auto out4 = model->addOperand(&type33);
4676   // Phase 2, operations
4677   static float param18_init[] = {0.9f};
4678   model->setOperandValue(param18, param18_init, sizeof(float) * 1);
4679   static float param19_init[] = {0.9f};
4680   model->setOperandValue(param19, param19_init, sizeof(float) * 1);
4681   static bool8 layout_init[] = {true};
4682   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4683   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param18, param19, layout}, {out4});
4684   // Phase 3, inputs and outputs
4685   model->identifyInputsAndOutputs(
4686     {in4},
4687     {out4});
4688   assert(model->isValid());
4689 }
4690 
is_ignored_scale_nchw_5(int i)4691 inline bool is_ignored_scale_nchw_5(int i) {
4692   static std::set<int> ignore = {};
4693   return ignore.find(i) != ignore.end();
4694 }
4695 
CreateModel_scale_nchw_relaxed_5(Model * model)4696 void CreateModel_scale_nchw_relaxed_5(Model *model) {
4697   OperandType type0(Type::BOOL, {});
4698   OperandType type33(Type::TENSOR_FLOAT32, {1, 1, 3, 3});
4699   OperandType type4(Type::FLOAT32, {});
4700   OperandType type50(Type::TENSOR_FLOAT32, {1, 1, 4, 4});
4701   // Phase 1, operands
4702   auto in4 = model->addOperand(&type50);
4703   auto param18 = model->addOperand(&type4);
4704   auto param19 = model->addOperand(&type4);
4705   auto layout = model->addOperand(&type0);
4706   auto out4 = model->addOperand(&type33);
4707   // Phase 2, operations
4708   static float param18_init[] = {0.9f};
4709   model->setOperandValue(param18, param18_init, sizeof(float) * 1);
4710   static float param19_init[] = {0.9f};
4711   model->setOperandValue(param19, param19_init, sizeof(float) * 1);
4712   static bool8 layout_init[] = {true};
4713   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4714   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param18, param19, layout}, {out4});
4715   // Phase 3, inputs and outputs
4716   model->identifyInputsAndOutputs(
4717     {in4},
4718     {out4});
4719   // Phase 4: set relaxed execution
4720   model->relaxComputationFloat32toFloat16(true);
4721   assert(model->isValid());
4722 }
4723 
is_ignored_scale_nchw_relaxed_5(int i)4724 inline bool is_ignored_scale_nchw_relaxed_5(int i) {
4725   static std::set<int> ignore = {};
4726   return ignore.find(i) != ignore.end();
4727 }
4728 
CreateModel_scale_nchw_quant8_5(Model * model)4729 void CreateModel_scale_nchw_quant8_5(Model *model) {
4730   OperandType type0(Type::BOOL, {});
4731   OperandType type4(Type::FLOAT32, {});
4732   OperandType type40(Type::TENSOR_QUANT8_ASYMM, {1, 1, 3, 3}, 0.25f, 100);
4733   OperandType type51(Type::TENSOR_QUANT8_ASYMM, {1, 1, 4, 4}, 0.25f, 100);
4734   // Phase 1, operands
4735   auto in4 = model->addOperand(&type51);
4736   auto param18 = model->addOperand(&type4);
4737   auto param19 = model->addOperand(&type4);
4738   auto layout = model->addOperand(&type0);
4739   auto out4 = model->addOperand(&type40);
4740   // Phase 2, operations
4741   static float param18_init[] = {0.9f};
4742   model->setOperandValue(param18, param18_init, sizeof(float) * 1);
4743   static float param19_init[] = {0.9f};
4744   model->setOperandValue(param19, param19_init, sizeof(float) * 1);
4745   static bool8 layout_init[] = {true};
4746   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4747   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param18, param19, layout}, {out4});
4748   // Phase 3, inputs and outputs
4749   model->identifyInputsAndOutputs(
4750     {in4},
4751     {out4});
4752   assert(model->isValid());
4753 }
4754 
is_ignored_scale_nchw_quant8_5(int i)4755 inline bool is_ignored_scale_nchw_quant8_5(int i) {
4756   static std::set<int> ignore = {};
4757   return ignore.find(i) != ignore.end();
4758 }
4759 
CreateModel_scale_nchw_float16_5(Model * model)4760 void CreateModel_scale_nchw_float16_5(Model *model) {
4761   OperandType type0(Type::BOOL, {});
4762   OperandType type29(Type::FLOAT16, {});
4763   OperandType type36(Type::TENSOR_FLOAT16, {1, 1, 3, 3});
4764   OperandType type52(Type::TENSOR_FLOAT16, {1, 1, 4, 4});
4765   // Phase 1, operands
4766   auto in4 = model->addOperand(&type52);
4767   auto param18 = model->addOperand(&type29);
4768   auto param19 = model->addOperand(&type29);
4769   auto layout = model->addOperand(&type0);
4770   auto out4 = model->addOperand(&type36);
4771   // Phase 2, operations
4772   static _Float16 param18_init[] = {0.8999999761581421f};
4773   model->setOperandValue(param18, param18_init, sizeof(_Float16) * 1);
4774   static _Float16 param19_init[] = {0.8999999761581421f};
4775   model->setOperandValue(param19, param19_init, sizeof(_Float16) * 1);
4776   static bool8 layout_init[] = {true};
4777   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4778   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param18, param19, layout}, {out4});
4779   // Phase 3, inputs and outputs
4780   model->identifyInputsAndOutputs(
4781     {in4},
4782     {out4});
4783   assert(model->isValid());
4784 }
4785 
is_ignored_scale_nchw_float16_5(int i)4786 inline bool is_ignored_scale_nchw_float16_5(int i) {
4787   static std::set<int> ignore = {};
4788   return ignore.find(i) != ignore.end();
4789 }
4790 
CreateModel_scale_dynamic_output_shape_nhwc_5(Model * model)4791 void CreateModel_scale_dynamic_output_shape_nhwc_5(Model *model) {
4792   OperandType type0(Type::BOOL, {});
4793   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
4794   OperandType type4(Type::FLOAT32, {});
4795   OperandType type7(Type::TENSOR_FLOAT32, {1, 4, 4, 1});
4796   // Phase 1, operands
4797   auto in4 = model->addOperand(&type7);
4798   auto param18 = model->addOperand(&type4);
4799   auto param19 = model->addOperand(&type4);
4800   auto layout = model->addOperand(&type0);
4801   auto out4 = model->addOperand(&type26);
4802   // Phase 2, operations
4803   static float param18_init[] = {0.9f};
4804   model->setOperandValue(param18, param18_init, sizeof(float) * 1);
4805   static float param19_init[] = {0.9f};
4806   model->setOperandValue(param19, param19_init, sizeof(float) * 1);
4807   static bool8 layout_init[] = {false};
4808   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4809   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param18, param19, layout}, {out4});
4810   // Phase 3, inputs and outputs
4811   model->identifyInputsAndOutputs(
4812     {in4},
4813     {out4});
4814   assert(model->isValid());
4815 }
4816 
is_ignored_scale_dynamic_output_shape_nhwc_5(int i)4817 inline bool is_ignored_scale_dynamic_output_shape_nhwc_5(int i) {
4818   static std::set<int> ignore = {};
4819   return ignore.find(i) != ignore.end();
4820 }
4821 
CreateModel_scale_dynamic_output_shape_nhwc_relaxed_5(Model * model)4822 void CreateModel_scale_dynamic_output_shape_nhwc_relaxed_5(Model *model) {
4823   OperandType type0(Type::BOOL, {});
4824   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
4825   OperandType type4(Type::FLOAT32, {});
4826   OperandType type7(Type::TENSOR_FLOAT32, {1, 4, 4, 1});
4827   // Phase 1, operands
4828   auto in4 = model->addOperand(&type7);
4829   auto param18 = model->addOperand(&type4);
4830   auto param19 = model->addOperand(&type4);
4831   auto layout = model->addOperand(&type0);
4832   auto out4 = model->addOperand(&type26);
4833   // Phase 2, operations
4834   static float param18_init[] = {0.9f};
4835   model->setOperandValue(param18, param18_init, sizeof(float) * 1);
4836   static float param19_init[] = {0.9f};
4837   model->setOperandValue(param19, param19_init, sizeof(float) * 1);
4838   static bool8 layout_init[] = {false};
4839   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4840   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param18, param19, layout}, {out4});
4841   // Phase 3, inputs and outputs
4842   model->identifyInputsAndOutputs(
4843     {in4},
4844     {out4});
4845   // Phase 4: set relaxed execution
4846   model->relaxComputationFloat32toFloat16(true);
4847   assert(model->isValid());
4848 }
4849 
is_ignored_scale_dynamic_output_shape_nhwc_relaxed_5(int i)4850 inline bool is_ignored_scale_dynamic_output_shape_nhwc_relaxed_5(int i) {
4851   static std::set<int> ignore = {};
4852   return ignore.find(i) != ignore.end();
4853 }
4854 
CreateModel_scale_dynamic_output_shape_nhwc_quant8_5(Model * model)4855 void CreateModel_scale_dynamic_output_shape_nhwc_quant8_5(Model *model) {
4856   OperandType type0(Type::BOOL, {});
4857   OperandType type4(Type::FLOAT32, {});
4858   OperandType type42(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 100);
4859   OperandType type48(Type::TENSOR_QUANT8_ASYMM, {1, 4, 4, 1}, 0.25f, 100);
4860   // Phase 1, operands
4861   auto in4 = model->addOperand(&type48);
4862   auto param18 = model->addOperand(&type4);
4863   auto param19 = model->addOperand(&type4);
4864   auto layout = model->addOperand(&type0);
4865   auto out4 = model->addOperand(&type42);
4866   // Phase 2, operations
4867   static float param18_init[] = {0.9f};
4868   model->setOperandValue(param18, param18_init, sizeof(float) * 1);
4869   static float param19_init[] = {0.9f};
4870   model->setOperandValue(param19, param19_init, sizeof(float) * 1);
4871   static bool8 layout_init[] = {false};
4872   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4873   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param18, param19, layout}, {out4});
4874   // Phase 3, inputs and outputs
4875   model->identifyInputsAndOutputs(
4876     {in4},
4877     {out4});
4878   assert(model->isValid());
4879 }
4880 
is_ignored_scale_dynamic_output_shape_nhwc_quant8_5(int i)4881 inline bool is_ignored_scale_dynamic_output_shape_nhwc_quant8_5(int i) {
4882   static std::set<int> ignore = {};
4883   return ignore.find(i) != ignore.end();
4884 }
4885 
CreateModel_scale_dynamic_output_shape_nhwc_float16_5(Model * model)4886 void CreateModel_scale_dynamic_output_shape_nhwc_float16_5(Model *model) {
4887   OperandType type0(Type::BOOL, {});
4888   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
4889   OperandType type29(Type::FLOAT16, {});
4890   OperandType type49(Type::TENSOR_FLOAT16, {1, 4, 4, 1});
4891   // Phase 1, operands
4892   auto in4 = model->addOperand(&type49);
4893   auto param18 = model->addOperand(&type29);
4894   auto param19 = model->addOperand(&type29);
4895   auto layout = model->addOperand(&type0);
4896   auto out4 = model->addOperand(&type28);
4897   // Phase 2, operations
4898   static _Float16 param18_init[] = {0.8999999761581421f};
4899   model->setOperandValue(param18, param18_init, sizeof(_Float16) * 1);
4900   static _Float16 param19_init[] = {0.8999999761581421f};
4901   model->setOperandValue(param19, param19_init, sizeof(_Float16) * 1);
4902   static bool8 layout_init[] = {false};
4903   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4904   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param18, param19, layout}, {out4});
4905   // Phase 3, inputs and outputs
4906   model->identifyInputsAndOutputs(
4907     {in4},
4908     {out4});
4909   assert(model->isValid());
4910 }
4911 
is_ignored_scale_dynamic_output_shape_nhwc_float16_5(int i)4912 inline bool is_ignored_scale_dynamic_output_shape_nhwc_float16_5(int i) {
4913   static std::set<int> ignore = {};
4914   return ignore.find(i) != ignore.end();
4915 }
4916 
CreateModel_scale_dynamic_output_shape_nchw_5(Model * model)4917 void CreateModel_scale_dynamic_output_shape_nchw_5(Model *model) {
4918   OperandType type0(Type::BOOL, {});
4919   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
4920   OperandType type4(Type::FLOAT32, {});
4921   OperandType type50(Type::TENSOR_FLOAT32, {1, 1, 4, 4});
4922   // Phase 1, operands
4923   auto in4 = model->addOperand(&type50);
4924   auto param18 = model->addOperand(&type4);
4925   auto param19 = model->addOperand(&type4);
4926   auto layout = model->addOperand(&type0);
4927   auto out4 = model->addOperand(&type26);
4928   // Phase 2, operations
4929   static float param18_init[] = {0.9f};
4930   model->setOperandValue(param18, param18_init, sizeof(float) * 1);
4931   static float param19_init[] = {0.9f};
4932   model->setOperandValue(param19, param19_init, sizeof(float) * 1);
4933   static bool8 layout_init[] = {true};
4934   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4935   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param18, param19, layout}, {out4});
4936   // Phase 3, inputs and outputs
4937   model->identifyInputsAndOutputs(
4938     {in4},
4939     {out4});
4940   assert(model->isValid());
4941 }
4942 
is_ignored_scale_dynamic_output_shape_nchw_5(int i)4943 inline bool is_ignored_scale_dynamic_output_shape_nchw_5(int i) {
4944   static std::set<int> ignore = {};
4945   return ignore.find(i) != ignore.end();
4946 }
4947 
CreateModel_scale_dynamic_output_shape_nchw_relaxed_5(Model * model)4948 void CreateModel_scale_dynamic_output_shape_nchw_relaxed_5(Model *model) {
4949   OperandType type0(Type::BOOL, {});
4950   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
4951   OperandType type4(Type::FLOAT32, {});
4952   OperandType type50(Type::TENSOR_FLOAT32, {1, 1, 4, 4});
4953   // Phase 1, operands
4954   auto in4 = model->addOperand(&type50);
4955   auto param18 = model->addOperand(&type4);
4956   auto param19 = model->addOperand(&type4);
4957   auto layout = model->addOperand(&type0);
4958   auto out4 = model->addOperand(&type26);
4959   // Phase 2, operations
4960   static float param18_init[] = {0.9f};
4961   model->setOperandValue(param18, param18_init, sizeof(float) * 1);
4962   static float param19_init[] = {0.9f};
4963   model->setOperandValue(param19, param19_init, sizeof(float) * 1);
4964   static bool8 layout_init[] = {true};
4965   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4966   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param18, param19, layout}, {out4});
4967   // Phase 3, inputs and outputs
4968   model->identifyInputsAndOutputs(
4969     {in4},
4970     {out4});
4971   // Phase 4: set relaxed execution
4972   model->relaxComputationFloat32toFloat16(true);
4973   assert(model->isValid());
4974 }
4975 
is_ignored_scale_dynamic_output_shape_nchw_relaxed_5(int i)4976 inline bool is_ignored_scale_dynamic_output_shape_nchw_relaxed_5(int i) {
4977   static std::set<int> ignore = {};
4978   return ignore.find(i) != ignore.end();
4979 }
4980 
CreateModel_scale_dynamic_output_shape_nchw_quant8_5(Model * model)4981 void CreateModel_scale_dynamic_output_shape_nchw_quant8_5(Model *model) {
4982   OperandType type0(Type::BOOL, {});
4983   OperandType type4(Type::FLOAT32, {});
4984   OperandType type42(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 100);
4985   OperandType type51(Type::TENSOR_QUANT8_ASYMM, {1, 1, 4, 4}, 0.25f, 100);
4986   // Phase 1, operands
4987   auto in4 = model->addOperand(&type51);
4988   auto param18 = model->addOperand(&type4);
4989   auto param19 = model->addOperand(&type4);
4990   auto layout = model->addOperand(&type0);
4991   auto out4 = model->addOperand(&type42);
4992   // Phase 2, operations
4993   static float param18_init[] = {0.9f};
4994   model->setOperandValue(param18, param18_init, sizeof(float) * 1);
4995   static float param19_init[] = {0.9f};
4996   model->setOperandValue(param19, param19_init, sizeof(float) * 1);
4997   static bool8 layout_init[] = {true};
4998   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
4999   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param18, param19, layout}, {out4});
5000   // Phase 3, inputs and outputs
5001   model->identifyInputsAndOutputs(
5002     {in4},
5003     {out4});
5004   assert(model->isValid());
5005 }
5006 
is_ignored_scale_dynamic_output_shape_nchw_quant8_5(int i)5007 inline bool is_ignored_scale_dynamic_output_shape_nchw_quant8_5(int i) {
5008   static std::set<int> ignore = {};
5009   return ignore.find(i) != ignore.end();
5010 }
5011 
CreateModel_scale_dynamic_output_shape_nchw_float16_5(Model * model)5012 void CreateModel_scale_dynamic_output_shape_nchw_float16_5(Model *model) {
5013   OperandType type0(Type::BOOL, {});
5014   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
5015   OperandType type29(Type::FLOAT16, {});
5016   OperandType type52(Type::TENSOR_FLOAT16, {1, 1, 4, 4});
5017   // Phase 1, operands
5018   auto in4 = model->addOperand(&type52);
5019   auto param18 = model->addOperand(&type29);
5020   auto param19 = model->addOperand(&type29);
5021   auto layout = model->addOperand(&type0);
5022   auto out4 = model->addOperand(&type28);
5023   // Phase 2, operations
5024   static _Float16 param18_init[] = {0.8999999761581421f};
5025   model->setOperandValue(param18, param18_init, sizeof(_Float16) * 1);
5026   static _Float16 param19_init[] = {0.8999999761581421f};
5027   model->setOperandValue(param19, param19_init, sizeof(_Float16) * 1);
5028   static bool8 layout_init[] = {true};
5029   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5030   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in4, param18, param19, layout}, {out4});
5031   // Phase 3, inputs and outputs
5032   model->identifyInputsAndOutputs(
5033     {in4},
5034     {out4});
5035   assert(model->isValid());
5036 }
5037 
is_ignored_scale_dynamic_output_shape_nchw_float16_5(int i)5038 inline bool is_ignored_scale_dynamic_output_shape_nchw_float16_5(int i) {
5039   static std::set<int> ignore = {};
5040   return ignore.find(i) != ignore.end();
5041 }
5042 
CreateModel_shape_nhwc_6(Model * model)5043 void CreateModel_shape_nhwc_6(Model *model) {
5044   OperandType type0(Type::BOOL, {});
5045   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
5046   OperandType type3(Type::INT32, {});
5047   OperandType type8(Type::TENSOR_FLOAT32, {1, 5, 2, 1});
5048   // Phase 1, operands
5049   auto in5 = model->addOperand(&type1);
5050   auto param20 = model->addOperand(&type3);
5051   auto param21 = model->addOperand(&type3);
5052   auto layout = model->addOperand(&type0);
5053   auto out5 = model->addOperand(&type8);
5054   // Phase 2, operations
5055   static int32_t param20_init[] = {2};
5056   model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
5057   static int32_t param21_init[] = {5};
5058   model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
5059   static bool8 layout_init[] = {false};
5060   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5061   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param20, param21, layout}, {out5});
5062   // Phase 3, inputs and outputs
5063   model->identifyInputsAndOutputs(
5064     {in5},
5065     {out5});
5066   assert(model->isValid());
5067 }
5068 
is_ignored_shape_nhwc_6(int i)5069 inline bool is_ignored_shape_nhwc_6(int i) {
5070   static std::set<int> ignore = {};
5071   return ignore.find(i) != ignore.end();
5072 }
5073 
CreateModel_shape_nhwc_relaxed_6(Model * model)5074 void CreateModel_shape_nhwc_relaxed_6(Model *model) {
5075   OperandType type0(Type::BOOL, {});
5076   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
5077   OperandType type3(Type::INT32, {});
5078   OperandType type8(Type::TENSOR_FLOAT32, {1, 5, 2, 1});
5079   // Phase 1, operands
5080   auto in5 = model->addOperand(&type1);
5081   auto param20 = model->addOperand(&type3);
5082   auto param21 = model->addOperand(&type3);
5083   auto layout = model->addOperand(&type0);
5084   auto out5 = model->addOperand(&type8);
5085   // Phase 2, operations
5086   static int32_t param20_init[] = {2};
5087   model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
5088   static int32_t param21_init[] = {5};
5089   model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
5090   static bool8 layout_init[] = {false};
5091   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5092   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param20, param21, layout}, {out5});
5093   // Phase 3, inputs and outputs
5094   model->identifyInputsAndOutputs(
5095     {in5},
5096     {out5});
5097   // Phase 4: set relaxed execution
5098   model->relaxComputationFloat32toFloat16(true);
5099   assert(model->isValid());
5100 }
5101 
is_ignored_shape_nhwc_relaxed_6(int i)5102 inline bool is_ignored_shape_nhwc_relaxed_6(int i) {
5103   static std::set<int> ignore = {};
5104   return ignore.find(i) != ignore.end();
5105 }
5106 
CreateModel_shape_nhwc_quant8_6(Model * model)5107 void CreateModel_shape_nhwc_quant8_6(Model *model) {
5108   OperandType type0(Type::BOOL, {});
5109   OperandType type3(Type::INT32, {});
5110   OperandType type39(Type::TENSOR_QUANT8_ASYMM, {1, 2, 2, 1}, 0.25f, 100);
5111   OperandType type53(Type::TENSOR_QUANT8_ASYMM, {1, 5, 2, 1}, 0.25f, 100);
5112   // Phase 1, operands
5113   auto in5 = model->addOperand(&type39);
5114   auto param20 = model->addOperand(&type3);
5115   auto param21 = model->addOperand(&type3);
5116   auto layout = model->addOperand(&type0);
5117   auto out5 = model->addOperand(&type53);
5118   // Phase 2, operations
5119   static int32_t param20_init[] = {2};
5120   model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
5121   static int32_t param21_init[] = {5};
5122   model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
5123   static bool8 layout_init[] = {false};
5124   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5125   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param20, param21, layout}, {out5});
5126   // Phase 3, inputs and outputs
5127   model->identifyInputsAndOutputs(
5128     {in5},
5129     {out5});
5130   assert(model->isValid());
5131 }
5132 
is_ignored_shape_nhwc_quant8_6(int i)5133 inline bool is_ignored_shape_nhwc_quant8_6(int i) {
5134   static std::set<int> ignore = {};
5135   return ignore.find(i) != ignore.end();
5136 }
5137 
CreateModel_shape_nhwc_float16_6(Model * model)5138 void CreateModel_shape_nhwc_float16_6(Model *model) {
5139   OperandType type0(Type::BOOL, {});
5140   OperandType type21(Type::TENSOR_FLOAT16, {1, 2, 2, 1});
5141   OperandType type3(Type::INT32, {});
5142   OperandType type54(Type::TENSOR_FLOAT16, {1, 5, 2, 1});
5143   // Phase 1, operands
5144   auto in5 = model->addOperand(&type21);
5145   auto param20 = model->addOperand(&type3);
5146   auto param21 = model->addOperand(&type3);
5147   auto layout = model->addOperand(&type0);
5148   auto out5 = model->addOperand(&type54);
5149   // Phase 2, operations
5150   static int32_t param20_init[] = {2};
5151   model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
5152   static int32_t param21_init[] = {5};
5153   model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
5154   static bool8 layout_init[] = {false};
5155   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5156   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param20, param21, layout}, {out5});
5157   // Phase 3, inputs and outputs
5158   model->identifyInputsAndOutputs(
5159     {in5},
5160     {out5});
5161   assert(model->isValid());
5162 }
5163 
is_ignored_shape_nhwc_float16_6(int i)5164 inline bool is_ignored_shape_nhwc_float16_6(int i) {
5165   static std::set<int> ignore = {};
5166   return ignore.find(i) != ignore.end();
5167 }
5168 
CreateModel_shape_nchw_6(Model * model)5169 void CreateModel_shape_nchw_6(Model *model) {
5170   OperandType type0(Type::BOOL, {});
5171   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
5172   OperandType type3(Type::INT32, {});
5173   OperandType type55(Type::TENSOR_FLOAT32, {1, 1, 5, 2});
5174   // Phase 1, operands
5175   auto in5 = model->addOperand(&type23);
5176   auto param20 = model->addOperand(&type3);
5177   auto param21 = model->addOperand(&type3);
5178   auto layout = model->addOperand(&type0);
5179   auto out5 = model->addOperand(&type55);
5180   // Phase 2, operations
5181   static int32_t param20_init[] = {2};
5182   model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
5183   static int32_t param21_init[] = {5};
5184   model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
5185   static bool8 layout_init[] = {true};
5186   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5187   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param20, param21, layout}, {out5});
5188   // Phase 3, inputs and outputs
5189   model->identifyInputsAndOutputs(
5190     {in5},
5191     {out5});
5192   assert(model->isValid());
5193 }
5194 
is_ignored_shape_nchw_6(int i)5195 inline bool is_ignored_shape_nchw_6(int i) {
5196   static std::set<int> ignore = {};
5197   return ignore.find(i) != ignore.end();
5198 }
5199 
CreateModel_shape_nchw_relaxed_6(Model * model)5200 void CreateModel_shape_nchw_relaxed_6(Model *model) {
5201   OperandType type0(Type::BOOL, {});
5202   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
5203   OperandType type3(Type::INT32, {});
5204   OperandType type55(Type::TENSOR_FLOAT32, {1, 1, 5, 2});
5205   // Phase 1, operands
5206   auto in5 = model->addOperand(&type23);
5207   auto param20 = model->addOperand(&type3);
5208   auto param21 = model->addOperand(&type3);
5209   auto layout = model->addOperand(&type0);
5210   auto out5 = model->addOperand(&type55);
5211   // Phase 2, operations
5212   static int32_t param20_init[] = {2};
5213   model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
5214   static int32_t param21_init[] = {5};
5215   model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
5216   static bool8 layout_init[] = {true};
5217   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5218   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param20, param21, layout}, {out5});
5219   // Phase 3, inputs and outputs
5220   model->identifyInputsAndOutputs(
5221     {in5},
5222     {out5});
5223   // Phase 4: set relaxed execution
5224   model->relaxComputationFloat32toFloat16(true);
5225   assert(model->isValid());
5226 }
5227 
is_ignored_shape_nchw_relaxed_6(int i)5228 inline bool is_ignored_shape_nchw_relaxed_6(int i) {
5229   static std::set<int> ignore = {};
5230   return ignore.find(i) != ignore.end();
5231 }
5232 
CreateModel_shape_nchw_quant8_6(Model * model)5233 void CreateModel_shape_nchw_quant8_6(Model *model) {
5234   OperandType type0(Type::BOOL, {});
5235   OperandType type3(Type::INT32, {});
5236   OperandType type41(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 2}, 0.25f, 100);
5237   OperandType type56(Type::TENSOR_QUANT8_ASYMM, {1, 1, 5, 2}, 0.25f, 100);
5238   // Phase 1, operands
5239   auto in5 = model->addOperand(&type41);
5240   auto param20 = model->addOperand(&type3);
5241   auto param21 = model->addOperand(&type3);
5242   auto layout = model->addOperand(&type0);
5243   auto out5 = model->addOperand(&type56);
5244   // Phase 2, operations
5245   static int32_t param20_init[] = {2};
5246   model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
5247   static int32_t param21_init[] = {5};
5248   model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
5249   static bool8 layout_init[] = {true};
5250   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5251   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param20, param21, layout}, {out5});
5252   // Phase 3, inputs and outputs
5253   model->identifyInputsAndOutputs(
5254     {in5},
5255     {out5});
5256   assert(model->isValid());
5257 }
5258 
is_ignored_shape_nchw_quant8_6(int i)5259 inline bool is_ignored_shape_nchw_quant8_6(int i) {
5260   static std::set<int> ignore = {};
5261   return ignore.find(i) != ignore.end();
5262 }
5263 
CreateModel_shape_nchw_float16_6(Model * model)5264 void CreateModel_shape_nchw_float16_6(Model *model) {
5265   OperandType type0(Type::BOOL, {});
5266   OperandType type25(Type::TENSOR_FLOAT16, {1, 1, 2, 2});
5267   OperandType type3(Type::INT32, {});
5268   OperandType type57(Type::TENSOR_FLOAT16, {1, 1, 5, 2});
5269   // Phase 1, operands
5270   auto in5 = model->addOperand(&type25);
5271   auto param20 = model->addOperand(&type3);
5272   auto param21 = model->addOperand(&type3);
5273   auto layout = model->addOperand(&type0);
5274   auto out5 = model->addOperand(&type57);
5275   // Phase 2, operations
5276   static int32_t param20_init[] = {2};
5277   model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
5278   static int32_t param21_init[] = {5};
5279   model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
5280   static bool8 layout_init[] = {true};
5281   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5282   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param20, param21, layout}, {out5});
5283   // Phase 3, inputs and outputs
5284   model->identifyInputsAndOutputs(
5285     {in5},
5286     {out5});
5287   assert(model->isValid());
5288 }
5289 
is_ignored_shape_nchw_float16_6(int i)5290 inline bool is_ignored_shape_nchw_float16_6(int i) {
5291   static std::set<int> ignore = {};
5292   return ignore.find(i) != ignore.end();
5293 }
5294 
CreateModel_shape_dynamic_output_shape_nhwc_6(Model * model)5295 void CreateModel_shape_dynamic_output_shape_nhwc_6(Model *model) {
5296   OperandType type0(Type::BOOL, {});
5297   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
5298   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
5299   OperandType type3(Type::INT32, {});
5300   // Phase 1, operands
5301   auto in5 = model->addOperand(&type1);
5302   auto param20 = model->addOperand(&type3);
5303   auto param21 = model->addOperand(&type3);
5304   auto layout = model->addOperand(&type0);
5305   auto out5 = model->addOperand(&type26);
5306   // Phase 2, operations
5307   static int32_t param20_init[] = {2};
5308   model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
5309   static int32_t param21_init[] = {5};
5310   model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
5311   static bool8 layout_init[] = {false};
5312   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5313   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param20, param21, layout}, {out5});
5314   // Phase 3, inputs and outputs
5315   model->identifyInputsAndOutputs(
5316     {in5},
5317     {out5});
5318   assert(model->isValid());
5319 }
5320 
is_ignored_shape_dynamic_output_shape_nhwc_6(int i)5321 inline bool is_ignored_shape_dynamic_output_shape_nhwc_6(int i) {
5322   static std::set<int> ignore = {};
5323   return ignore.find(i) != ignore.end();
5324 }
5325 
CreateModel_shape_dynamic_output_shape_nhwc_relaxed_6(Model * model)5326 void CreateModel_shape_dynamic_output_shape_nhwc_relaxed_6(Model *model) {
5327   OperandType type0(Type::BOOL, {});
5328   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
5329   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
5330   OperandType type3(Type::INT32, {});
5331   // Phase 1, operands
5332   auto in5 = model->addOperand(&type1);
5333   auto param20 = model->addOperand(&type3);
5334   auto param21 = model->addOperand(&type3);
5335   auto layout = model->addOperand(&type0);
5336   auto out5 = model->addOperand(&type26);
5337   // Phase 2, operations
5338   static int32_t param20_init[] = {2};
5339   model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
5340   static int32_t param21_init[] = {5};
5341   model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
5342   static bool8 layout_init[] = {false};
5343   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5344   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param20, param21, layout}, {out5});
5345   // Phase 3, inputs and outputs
5346   model->identifyInputsAndOutputs(
5347     {in5},
5348     {out5});
5349   // Phase 4: set relaxed execution
5350   model->relaxComputationFloat32toFloat16(true);
5351   assert(model->isValid());
5352 }
5353 
is_ignored_shape_dynamic_output_shape_nhwc_relaxed_6(int i)5354 inline bool is_ignored_shape_dynamic_output_shape_nhwc_relaxed_6(int i) {
5355   static std::set<int> ignore = {};
5356   return ignore.find(i) != ignore.end();
5357 }
5358 
CreateModel_shape_dynamic_output_shape_nhwc_quant8_6(Model * model)5359 void CreateModel_shape_dynamic_output_shape_nhwc_quant8_6(Model *model) {
5360   OperandType type0(Type::BOOL, {});
5361   OperandType type3(Type::INT32, {});
5362   OperandType type39(Type::TENSOR_QUANT8_ASYMM, {1, 2, 2, 1}, 0.25f, 100);
5363   OperandType type42(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 100);
5364   // Phase 1, operands
5365   auto in5 = model->addOperand(&type39);
5366   auto param20 = model->addOperand(&type3);
5367   auto param21 = model->addOperand(&type3);
5368   auto layout = model->addOperand(&type0);
5369   auto out5 = model->addOperand(&type42);
5370   // Phase 2, operations
5371   static int32_t param20_init[] = {2};
5372   model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
5373   static int32_t param21_init[] = {5};
5374   model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
5375   static bool8 layout_init[] = {false};
5376   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5377   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param20, param21, layout}, {out5});
5378   // Phase 3, inputs and outputs
5379   model->identifyInputsAndOutputs(
5380     {in5},
5381     {out5});
5382   assert(model->isValid());
5383 }
5384 
is_ignored_shape_dynamic_output_shape_nhwc_quant8_6(int i)5385 inline bool is_ignored_shape_dynamic_output_shape_nhwc_quant8_6(int i) {
5386   static std::set<int> ignore = {};
5387   return ignore.find(i) != ignore.end();
5388 }
5389 
CreateModel_shape_dynamic_output_shape_nhwc_float16_6(Model * model)5390 void CreateModel_shape_dynamic_output_shape_nhwc_float16_6(Model *model) {
5391   OperandType type0(Type::BOOL, {});
5392   OperandType type21(Type::TENSOR_FLOAT16, {1, 2, 2, 1});
5393   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
5394   OperandType type3(Type::INT32, {});
5395   // Phase 1, operands
5396   auto in5 = model->addOperand(&type21);
5397   auto param20 = model->addOperand(&type3);
5398   auto param21 = model->addOperand(&type3);
5399   auto layout = model->addOperand(&type0);
5400   auto out5 = model->addOperand(&type28);
5401   // Phase 2, operations
5402   static int32_t param20_init[] = {2};
5403   model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
5404   static int32_t param21_init[] = {5};
5405   model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
5406   static bool8 layout_init[] = {false};
5407   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5408   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param20, param21, layout}, {out5});
5409   // Phase 3, inputs and outputs
5410   model->identifyInputsAndOutputs(
5411     {in5},
5412     {out5});
5413   assert(model->isValid());
5414 }
5415 
is_ignored_shape_dynamic_output_shape_nhwc_float16_6(int i)5416 inline bool is_ignored_shape_dynamic_output_shape_nhwc_float16_6(int i) {
5417   static std::set<int> ignore = {};
5418   return ignore.find(i) != ignore.end();
5419 }
5420 
CreateModel_shape_dynamic_output_shape_nchw_6(Model * model)5421 void CreateModel_shape_dynamic_output_shape_nchw_6(Model *model) {
5422   OperandType type0(Type::BOOL, {});
5423   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
5424   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
5425   OperandType type3(Type::INT32, {});
5426   // Phase 1, operands
5427   auto in5 = model->addOperand(&type23);
5428   auto param20 = model->addOperand(&type3);
5429   auto param21 = model->addOperand(&type3);
5430   auto layout = model->addOperand(&type0);
5431   auto out5 = model->addOperand(&type26);
5432   // Phase 2, operations
5433   static int32_t param20_init[] = {2};
5434   model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
5435   static int32_t param21_init[] = {5};
5436   model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
5437   static bool8 layout_init[] = {true};
5438   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5439   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param20, param21, layout}, {out5});
5440   // Phase 3, inputs and outputs
5441   model->identifyInputsAndOutputs(
5442     {in5},
5443     {out5});
5444   assert(model->isValid());
5445 }
5446 
is_ignored_shape_dynamic_output_shape_nchw_6(int i)5447 inline bool is_ignored_shape_dynamic_output_shape_nchw_6(int i) {
5448   static std::set<int> ignore = {};
5449   return ignore.find(i) != ignore.end();
5450 }
5451 
CreateModel_shape_dynamic_output_shape_nchw_relaxed_6(Model * model)5452 void CreateModel_shape_dynamic_output_shape_nchw_relaxed_6(Model *model) {
5453   OperandType type0(Type::BOOL, {});
5454   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
5455   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
5456   OperandType type3(Type::INT32, {});
5457   // Phase 1, operands
5458   auto in5 = model->addOperand(&type23);
5459   auto param20 = model->addOperand(&type3);
5460   auto param21 = model->addOperand(&type3);
5461   auto layout = model->addOperand(&type0);
5462   auto out5 = model->addOperand(&type26);
5463   // Phase 2, operations
5464   static int32_t param20_init[] = {2};
5465   model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
5466   static int32_t param21_init[] = {5};
5467   model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
5468   static bool8 layout_init[] = {true};
5469   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5470   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param20, param21, layout}, {out5});
5471   // Phase 3, inputs and outputs
5472   model->identifyInputsAndOutputs(
5473     {in5},
5474     {out5});
5475   // Phase 4: set relaxed execution
5476   model->relaxComputationFloat32toFloat16(true);
5477   assert(model->isValid());
5478 }
5479 
is_ignored_shape_dynamic_output_shape_nchw_relaxed_6(int i)5480 inline bool is_ignored_shape_dynamic_output_shape_nchw_relaxed_6(int i) {
5481   static std::set<int> ignore = {};
5482   return ignore.find(i) != ignore.end();
5483 }
5484 
CreateModel_shape_dynamic_output_shape_nchw_quant8_6(Model * model)5485 void CreateModel_shape_dynamic_output_shape_nchw_quant8_6(Model *model) {
5486   OperandType type0(Type::BOOL, {});
5487   OperandType type3(Type::INT32, {});
5488   OperandType type41(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 2}, 0.25f, 100);
5489   OperandType type42(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 100);
5490   // Phase 1, operands
5491   auto in5 = model->addOperand(&type41);
5492   auto param20 = model->addOperand(&type3);
5493   auto param21 = model->addOperand(&type3);
5494   auto layout = model->addOperand(&type0);
5495   auto out5 = model->addOperand(&type42);
5496   // Phase 2, operations
5497   static int32_t param20_init[] = {2};
5498   model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
5499   static int32_t param21_init[] = {5};
5500   model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
5501   static bool8 layout_init[] = {true};
5502   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5503   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param20, param21, layout}, {out5});
5504   // Phase 3, inputs and outputs
5505   model->identifyInputsAndOutputs(
5506     {in5},
5507     {out5});
5508   assert(model->isValid());
5509 }
5510 
is_ignored_shape_dynamic_output_shape_nchw_quant8_6(int i)5511 inline bool is_ignored_shape_dynamic_output_shape_nchw_quant8_6(int i) {
5512   static std::set<int> ignore = {};
5513   return ignore.find(i) != ignore.end();
5514 }
5515 
CreateModel_shape_dynamic_output_shape_nchw_float16_6(Model * model)5516 void CreateModel_shape_dynamic_output_shape_nchw_float16_6(Model *model) {
5517   OperandType type0(Type::BOOL, {});
5518   OperandType type25(Type::TENSOR_FLOAT16, {1, 1, 2, 2});
5519   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
5520   OperandType type3(Type::INT32, {});
5521   // Phase 1, operands
5522   auto in5 = model->addOperand(&type25);
5523   auto param20 = model->addOperand(&type3);
5524   auto param21 = model->addOperand(&type3);
5525   auto layout = model->addOperand(&type0);
5526   auto out5 = model->addOperand(&type28);
5527   // Phase 2, operations
5528   static int32_t param20_init[] = {2};
5529   model->setOperandValue(param20, param20_init, sizeof(int32_t) * 1);
5530   static int32_t param21_init[] = {5};
5531   model->setOperandValue(param21, param21_init, sizeof(int32_t) * 1);
5532   static bool8 layout_init[] = {true};
5533   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5534   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param20, param21, layout}, {out5});
5535   // Phase 3, inputs and outputs
5536   model->identifyInputsAndOutputs(
5537     {in5},
5538     {out5});
5539   assert(model->isValid());
5540 }
5541 
is_ignored_shape_dynamic_output_shape_nchw_float16_6(int i)5542 inline bool is_ignored_shape_dynamic_output_shape_nchw_float16_6(int i) {
5543   static std::set<int> ignore = {};
5544   return ignore.find(i) != ignore.end();
5545 }
5546 
CreateModel_scale_nhwc_6(Model * model)5547 void CreateModel_scale_nhwc_6(Model *model) {
5548   OperandType type0(Type::BOOL, {});
5549   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
5550   OperandType type4(Type::FLOAT32, {});
5551   OperandType type8(Type::TENSOR_FLOAT32, {1, 5, 2, 1});
5552   // Phase 1, operands
5553   auto in5 = model->addOperand(&type1);
5554   auto param22 = model->addOperand(&type4);
5555   auto param23 = model->addOperand(&type4);
5556   auto layout = model->addOperand(&type0);
5557   auto out5 = model->addOperand(&type8);
5558   // Phase 2, operations
5559   static float param22_init[] = {1.4f};
5560   model->setOperandValue(param22, param22_init, sizeof(float) * 1);
5561   static float param23_init[] = {2.8f};
5562   model->setOperandValue(param23, param23_init, sizeof(float) * 1);
5563   static bool8 layout_init[] = {false};
5564   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5565   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param22, param23, layout}, {out5});
5566   // Phase 3, inputs and outputs
5567   model->identifyInputsAndOutputs(
5568     {in5},
5569     {out5});
5570   assert(model->isValid());
5571 }
5572 
is_ignored_scale_nhwc_6(int i)5573 inline bool is_ignored_scale_nhwc_6(int i) {
5574   static std::set<int> ignore = {};
5575   return ignore.find(i) != ignore.end();
5576 }
5577 
CreateModel_scale_nhwc_relaxed_6(Model * model)5578 void CreateModel_scale_nhwc_relaxed_6(Model *model) {
5579   OperandType type0(Type::BOOL, {});
5580   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
5581   OperandType type4(Type::FLOAT32, {});
5582   OperandType type8(Type::TENSOR_FLOAT32, {1, 5, 2, 1});
5583   // Phase 1, operands
5584   auto in5 = model->addOperand(&type1);
5585   auto param22 = model->addOperand(&type4);
5586   auto param23 = model->addOperand(&type4);
5587   auto layout = model->addOperand(&type0);
5588   auto out5 = model->addOperand(&type8);
5589   // Phase 2, operations
5590   static float param22_init[] = {1.4f};
5591   model->setOperandValue(param22, param22_init, sizeof(float) * 1);
5592   static float param23_init[] = {2.8f};
5593   model->setOperandValue(param23, param23_init, sizeof(float) * 1);
5594   static bool8 layout_init[] = {false};
5595   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5596   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param22, param23, layout}, {out5});
5597   // Phase 3, inputs and outputs
5598   model->identifyInputsAndOutputs(
5599     {in5},
5600     {out5});
5601   // Phase 4: set relaxed execution
5602   model->relaxComputationFloat32toFloat16(true);
5603   assert(model->isValid());
5604 }
5605 
is_ignored_scale_nhwc_relaxed_6(int i)5606 inline bool is_ignored_scale_nhwc_relaxed_6(int i) {
5607   static std::set<int> ignore = {};
5608   return ignore.find(i) != ignore.end();
5609 }
5610 
CreateModel_scale_nhwc_quant8_6(Model * model)5611 void CreateModel_scale_nhwc_quant8_6(Model *model) {
5612   OperandType type0(Type::BOOL, {});
5613   OperandType type39(Type::TENSOR_QUANT8_ASYMM, {1, 2, 2, 1}, 0.25f, 100);
5614   OperandType type4(Type::FLOAT32, {});
5615   OperandType type53(Type::TENSOR_QUANT8_ASYMM, {1, 5, 2, 1}, 0.25f, 100);
5616   // Phase 1, operands
5617   auto in5 = model->addOperand(&type39);
5618   auto param22 = model->addOperand(&type4);
5619   auto param23 = model->addOperand(&type4);
5620   auto layout = model->addOperand(&type0);
5621   auto out5 = model->addOperand(&type53);
5622   // Phase 2, operations
5623   static float param22_init[] = {1.4f};
5624   model->setOperandValue(param22, param22_init, sizeof(float) * 1);
5625   static float param23_init[] = {2.8f};
5626   model->setOperandValue(param23, param23_init, sizeof(float) * 1);
5627   static bool8 layout_init[] = {false};
5628   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5629   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param22, param23, layout}, {out5});
5630   // Phase 3, inputs and outputs
5631   model->identifyInputsAndOutputs(
5632     {in5},
5633     {out5});
5634   assert(model->isValid());
5635 }
5636 
is_ignored_scale_nhwc_quant8_6(int i)5637 inline bool is_ignored_scale_nhwc_quant8_6(int i) {
5638   static std::set<int> ignore = {};
5639   return ignore.find(i) != ignore.end();
5640 }
5641 
CreateModel_scale_nhwc_float16_6(Model * model)5642 void CreateModel_scale_nhwc_float16_6(Model *model) {
5643   OperandType type0(Type::BOOL, {});
5644   OperandType type21(Type::TENSOR_FLOAT16, {1, 2, 2, 1});
5645   OperandType type29(Type::FLOAT16, {});
5646   OperandType type54(Type::TENSOR_FLOAT16, {1, 5, 2, 1});
5647   // Phase 1, operands
5648   auto in5 = model->addOperand(&type21);
5649   auto param22 = model->addOperand(&type29);
5650   auto param23 = model->addOperand(&type29);
5651   auto layout = model->addOperand(&type0);
5652   auto out5 = model->addOperand(&type54);
5653   // Phase 2, operations
5654   static _Float16 param22_init[] = {1.399999976158142f};
5655   model->setOperandValue(param22, param22_init, sizeof(_Float16) * 1);
5656   static _Float16 param23_init[] = {2.799999952316284f};
5657   model->setOperandValue(param23, param23_init, sizeof(_Float16) * 1);
5658   static bool8 layout_init[] = {false};
5659   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5660   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param22, param23, layout}, {out5});
5661   // Phase 3, inputs and outputs
5662   model->identifyInputsAndOutputs(
5663     {in5},
5664     {out5});
5665   assert(model->isValid());
5666 }
5667 
is_ignored_scale_nhwc_float16_6(int i)5668 inline bool is_ignored_scale_nhwc_float16_6(int i) {
5669   static std::set<int> ignore = {};
5670   return ignore.find(i) != ignore.end();
5671 }
5672 
CreateModel_scale_nchw_6(Model * model)5673 void CreateModel_scale_nchw_6(Model *model) {
5674   OperandType type0(Type::BOOL, {});
5675   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
5676   OperandType type4(Type::FLOAT32, {});
5677   OperandType type55(Type::TENSOR_FLOAT32, {1, 1, 5, 2});
5678   // Phase 1, operands
5679   auto in5 = model->addOperand(&type23);
5680   auto param22 = model->addOperand(&type4);
5681   auto param23 = model->addOperand(&type4);
5682   auto layout = model->addOperand(&type0);
5683   auto out5 = model->addOperand(&type55);
5684   // Phase 2, operations
5685   static float param22_init[] = {1.4f};
5686   model->setOperandValue(param22, param22_init, sizeof(float) * 1);
5687   static float param23_init[] = {2.8f};
5688   model->setOperandValue(param23, param23_init, sizeof(float) * 1);
5689   static bool8 layout_init[] = {true};
5690   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5691   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param22, param23, layout}, {out5});
5692   // Phase 3, inputs and outputs
5693   model->identifyInputsAndOutputs(
5694     {in5},
5695     {out5});
5696   assert(model->isValid());
5697 }
5698 
is_ignored_scale_nchw_6(int i)5699 inline bool is_ignored_scale_nchw_6(int i) {
5700   static std::set<int> ignore = {};
5701   return ignore.find(i) != ignore.end();
5702 }
5703 
CreateModel_scale_nchw_relaxed_6(Model * model)5704 void CreateModel_scale_nchw_relaxed_6(Model *model) {
5705   OperandType type0(Type::BOOL, {});
5706   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
5707   OperandType type4(Type::FLOAT32, {});
5708   OperandType type55(Type::TENSOR_FLOAT32, {1, 1, 5, 2});
5709   // Phase 1, operands
5710   auto in5 = model->addOperand(&type23);
5711   auto param22 = model->addOperand(&type4);
5712   auto param23 = model->addOperand(&type4);
5713   auto layout = model->addOperand(&type0);
5714   auto out5 = model->addOperand(&type55);
5715   // Phase 2, operations
5716   static float param22_init[] = {1.4f};
5717   model->setOperandValue(param22, param22_init, sizeof(float) * 1);
5718   static float param23_init[] = {2.8f};
5719   model->setOperandValue(param23, param23_init, sizeof(float) * 1);
5720   static bool8 layout_init[] = {true};
5721   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5722   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param22, param23, layout}, {out5});
5723   // Phase 3, inputs and outputs
5724   model->identifyInputsAndOutputs(
5725     {in5},
5726     {out5});
5727   // Phase 4: set relaxed execution
5728   model->relaxComputationFloat32toFloat16(true);
5729   assert(model->isValid());
5730 }
5731 
is_ignored_scale_nchw_relaxed_6(int i)5732 inline bool is_ignored_scale_nchw_relaxed_6(int i) {
5733   static std::set<int> ignore = {};
5734   return ignore.find(i) != ignore.end();
5735 }
5736 
CreateModel_scale_nchw_quant8_6(Model * model)5737 void CreateModel_scale_nchw_quant8_6(Model *model) {
5738   OperandType type0(Type::BOOL, {});
5739   OperandType type4(Type::FLOAT32, {});
5740   OperandType type41(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 2}, 0.25f, 100);
5741   OperandType type56(Type::TENSOR_QUANT8_ASYMM, {1, 1, 5, 2}, 0.25f, 100);
5742   // Phase 1, operands
5743   auto in5 = model->addOperand(&type41);
5744   auto param22 = model->addOperand(&type4);
5745   auto param23 = model->addOperand(&type4);
5746   auto layout = model->addOperand(&type0);
5747   auto out5 = model->addOperand(&type56);
5748   // Phase 2, operations
5749   static float param22_init[] = {1.4f};
5750   model->setOperandValue(param22, param22_init, sizeof(float) * 1);
5751   static float param23_init[] = {2.8f};
5752   model->setOperandValue(param23, param23_init, sizeof(float) * 1);
5753   static bool8 layout_init[] = {true};
5754   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5755   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param22, param23, layout}, {out5});
5756   // Phase 3, inputs and outputs
5757   model->identifyInputsAndOutputs(
5758     {in5},
5759     {out5});
5760   assert(model->isValid());
5761 }
5762 
is_ignored_scale_nchw_quant8_6(int i)5763 inline bool is_ignored_scale_nchw_quant8_6(int i) {
5764   static std::set<int> ignore = {};
5765   return ignore.find(i) != ignore.end();
5766 }
5767 
CreateModel_scale_nchw_float16_6(Model * model)5768 void CreateModel_scale_nchw_float16_6(Model *model) {
5769   OperandType type0(Type::BOOL, {});
5770   OperandType type25(Type::TENSOR_FLOAT16, {1, 1, 2, 2});
5771   OperandType type29(Type::FLOAT16, {});
5772   OperandType type57(Type::TENSOR_FLOAT16, {1, 1, 5, 2});
5773   // Phase 1, operands
5774   auto in5 = model->addOperand(&type25);
5775   auto param22 = model->addOperand(&type29);
5776   auto param23 = model->addOperand(&type29);
5777   auto layout = model->addOperand(&type0);
5778   auto out5 = model->addOperand(&type57);
5779   // Phase 2, operations
5780   static _Float16 param22_init[] = {1.399999976158142f};
5781   model->setOperandValue(param22, param22_init, sizeof(_Float16) * 1);
5782   static _Float16 param23_init[] = {2.799999952316284f};
5783   model->setOperandValue(param23, param23_init, sizeof(_Float16) * 1);
5784   static bool8 layout_init[] = {true};
5785   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5786   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param22, param23, layout}, {out5});
5787   // Phase 3, inputs and outputs
5788   model->identifyInputsAndOutputs(
5789     {in5},
5790     {out5});
5791   assert(model->isValid());
5792 }
5793 
is_ignored_scale_nchw_float16_6(int i)5794 inline bool is_ignored_scale_nchw_float16_6(int i) {
5795   static std::set<int> ignore = {};
5796   return ignore.find(i) != ignore.end();
5797 }
5798 
CreateModel_scale_dynamic_output_shape_nhwc_6(Model * model)5799 void CreateModel_scale_dynamic_output_shape_nhwc_6(Model *model) {
5800   OperandType type0(Type::BOOL, {});
5801   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
5802   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
5803   OperandType type4(Type::FLOAT32, {});
5804   // Phase 1, operands
5805   auto in5 = model->addOperand(&type1);
5806   auto param22 = model->addOperand(&type4);
5807   auto param23 = model->addOperand(&type4);
5808   auto layout = model->addOperand(&type0);
5809   auto out5 = model->addOperand(&type26);
5810   // Phase 2, operations
5811   static float param22_init[] = {1.4f};
5812   model->setOperandValue(param22, param22_init, sizeof(float) * 1);
5813   static float param23_init[] = {2.8f};
5814   model->setOperandValue(param23, param23_init, sizeof(float) * 1);
5815   static bool8 layout_init[] = {false};
5816   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5817   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param22, param23, layout}, {out5});
5818   // Phase 3, inputs and outputs
5819   model->identifyInputsAndOutputs(
5820     {in5},
5821     {out5});
5822   assert(model->isValid());
5823 }
5824 
is_ignored_scale_dynamic_output_shape_nhwc_6(int i)5825 inline bool is_ignored_scale_dynamic_output_shape_nhwc_6(int i) {
5826   static std::set<int> ignore = {};
5827   return ignore.find(i) != ignore.end();
5828 }
5829 
CreateModel_scale_dynamic_output_shape_nhwc_relaxed_6(Model * model)5830 void CreateModel_scale_dynamic_output_shape_nhwc_relaxed_6(Model *model) {
5831   OperandType type0(Type::BOOL, {});
5832   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
5833   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
5834   OperandType type4(Type::FLOAT32, {});
5835   // Phase 1, operands
5836   auto in5 = model->addOperand(&type1);
5837   auto param22 = model->addOperand(&type4);
5838   auto param23 = model->addOperand(&type4);
5839   auto layout = model->addOperand(&type0);
5840   auto out5 = model->addOperand(&type26);
5841   // Phase 2, operations
5842   static float param22_init[] = {1.4f};
5843   model->setOperandValue(param22, param22_init, sizeof(float) * 1);
5844   static float param23_init[] = {2.8f};
5845   model->setOperandValue(param23, param23_init, sizeof(float) * 1);
5846   static bool8 layout_init[] = {false};
5847   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5848   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param22, param23, layout}, {out5});
5849   // Phase 3, inputs and outputs
5850   model->identifyInputsAndOutputs(
5851     {in5},
5852     {out5});
5853   // Phase 4: set relaxed execution
5854   model->relaxComputationFloat32toFloat16(true);
5855   assert(model->isValid());
5856 }
5857 
is_ignored_scale_dynamic_output_shape_nhwc_relaxed_6(int i)5858 inline bool is_ignored_scale_dynamic_output_shape_nhwc_relaxed_6(int i) {
5859   static std::set<int> ignore = {};
5860   return ignore.find(i) != ignore.end();
5861 }
5862 
CreateModel_scale_dynamic_output_shape_nhwc_quant8_6(Model * model)5863 void CreateModel_scale_dynamic_output_shape_nhwc_quant8_6(Model *model) {
5864   OperandType type0(Type::BOOL, {});
5865   OperandType type39(Type::TENSOR_QUANT8_ASYMM, {1, 2, 2, 1}, 0.25f, 100);
5866   OperandType type4(Type::FLOAT32, {});
5867   OperandType type42(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 100);
5868   // Phase 1, operands
5869   auto in5 = model->addOperand(&type39);
5870   auto param22 = model->addOperand(&type4);
5871   auto param23 = model->addOperand(&type4);
5872   auto layout = model->addOperand(&type0);
5873   auto out5 = model->addOperand(&type42);
5874   // Phase 2, operations
5875   static float param22_init[] = {1.4f};
5876   model->setOperandValue(param22, param22_init, sizeof(float) * 1);
5877   static float param23_init[] = {2.8f};
5878   model->setOperandValue(param23, param23_init, sizeof(float) * 1);
5879   static bool8 layout_init[] = {false};
5880   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5881   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param22, param23, layout}, {out5});
5882   // Phase 3, inputs and outputs
5883   model->identifyInputsAndOutputs(
5884     {in5},
5885     {out5});
5886   assert(model->isValid());
5887 }
5888 
is_ignored_scale_dynamic_output_shape_nhwc_quant8_6(int i)5889 inline bool is_ignored_scale_dynamic_output_shape_nhwc_quant8_6(int i) {
5890   static std::set<int> ignore = {};
5891   return ignore.find(i) != ignore.end();
5892 }
5893 
CreateModel_scale_dynamic_output_shape_nhwc_float16_6(Model * model)5894 void CreateModel_scale_dynamic_output_shape_nhwc_float16_6(Model *model) {
5895   OperandType type0(Type::BOOL, {});
5896   OperandType type21(Type::TENSOR_FLOAT16, {1, 2, 2, 1});
5897   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
5898   OperandType type29(Type::FLOAT16, {});
5899   // Phase 1, operands
5900   auto in5 = model->addOperand(&type21);
5901   auto param22 = model->addOperand(&type29);
5902   auto param23 = model->addOperand(&type29);
5903   auto layout = model->addOperand(&type0);
5904   auto out5 = model->addOperand(&type28);
5905   // Phase 2, operations
5906   static _Float16 param22_init[] = {1.399999976158142f};
5907   model->setOperandValue(param22, param22_init, sizeof(_Float16) * 1);
5908   static _Float16 param23_init[] = {2.799999952316284f};
5909   model->setOperandValue(param23, param23_init, sizeof(_Float16) * 1);
5910   static bool8 layout_init[] = {false};
5911   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5912   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param22, param23, layout}, {out5});
5913   // Phase 3, inputs and outputs
5914   model->identifyInputsAndOutputs(
5915     {in5},
5916     {out5});
5917   assert(model->isValid());
5918 }
5919 
is_ignored_scale_dynamic_output_shape_nhwc_float16_6(int i)5920 inline bool is_ignored_scale_dynamic_output_shape_nhwc_float16_6(int i) {
5921   static std::set<int> ignore = {};
5922   return ignore.find(i) != ignore.end();
5923 }
5924 
CreateModel_scale_dynamic_output_shape_nchw_6(Model * model)5925 void CreateModel_scale_dynamic_output_shape_nchw_6(Model *model) {
5926   OperandType type0(Type::BOOL, {});
5927   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
5928   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
5929   OperandType type4(Type::FLOAT32, {});
5930   // Phase 1, operands
5931   auto in5 = model->addOperand(&type23);
5932   auto param22 = model->addOperand(&type4);
5933   auto param23 = model->addOperand(&type4);
5934   auto layout = model->addOperand(&type0);
5935   auto out5 = model->addOperand(&type26);
5936   // Phase 2, operations
5937   static float param22_init[] = {1.4f};
5938   model->setOperandValue(param22, param22_init, sizeof(float) * 1);
5939   static float param23_init[] = {2.8f};
5940   model->setOperandValue(param23, param23_init, sizeof(float) * 1);
5941   static bool8 layout_init[] = {true};
5942   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5943   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param22, param23, layout}, {out5});
5944   // Phase 3, inputs and outputs
5945   model->identifyInputsAndOutputs(
5946     {in5},
5947     {out5});
5948   assert(model->isValid());
5949 }
5950 
is_ignored_scale_dynamic_output_shape_nchw_6(int i)5951 inline bool is_ignored_scale_dynamic_output_shape_nchw_6(int i) {
5952   static std::set<int> ignore = {};
5953   return ignore.find(i) != ignore.end();
5954 }
5955 
CreateModel_scale_dynamic_output_shape_nchw_relaxed_6(Model * model)5956 void CreateModel_scale_dynamic_output_shape_nchw_relaxed_6(Model *model) {
5957   OperandType type0(Type::BOOL, {});
5958   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
5959   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
5960   OperandType type4(Type::FLOAT32, {});
5961   // Phase 1, operands
5962   auto in5 = model->addOperand(&type23);
5963   auto param22 = model->addOperand(&type4);
5964   auto param23 = model->addOperand(&type4);
5965   auto layout = model->addOperand(&type0);
5966   auto out5 = model->addOperand(&type26);
5967   // Phase 2, operations
5968   static float param22_init[] = {1.4f};
5969   model->setOperandValue(param22, param22_init, sizeof(float) * 1);
5970   static float param23_init[] = {2.8f};
5971   model->setOperandValue(param23, param23_init, sizeof(float) * 1);
5972   static bool8 layout_init[] = {true};
5973   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
5974   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param22, param23, layout}, {out5});
5975   // Phase 3, inputs and outputs
5976   model->identifyInputsAndOutputs(
5977     {in5},
5978     {out5});
5979   // Phase 4: set relaxed execution
5980   model->relaxComputationFloat32toFloat16(true);
5981   assert(model->isValid());
5982 }
5983 
is_ignored_scale_dynamic_output_shape_nchw_relaxed_6(int i)5984 inline bool is_ignored_scale_dynamic_output_shape_nchw_relaxed_6(int i) {
5985   static std::set<int> ignore = {};
5986   return ignore.find(i) != ignore.end();
5987 }
5988 
CreateModel_scale_dynamic_output_shape_nchw_quant8_6(Model * model)5989 void CreateModel_scale_dynamic_output_shape_nchw_quant8_6(Model *model) {
5990   OperandType type0(Type::BOOL, {});
5991   OperandType type4(Type::FLOAT32, {});
5992   OperandType type41(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 2}, 0.25f, 100);
5993   OperandType type42(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 100);
5994   // Phase 1, operands
5995   auto in5 = model->addOperand(&type41);
5996   auto param22 = model->addOperand(&type4);
5997   auto param23 = model->addOperand(&type4);
5998   auto layout = model->addOperand(&type0);
5999   auto out5 = model->addOperand(&type42);
6000   // Phase 2, operations
6001   static float param22_init[] = {1.4f};
6002   model->setOperandValue(param22, param22_init, sizeof(float) * 1);
6003   static float param23_init[] = {2.8f};
6004   model->setOperandValue(param23, param23_init, sizeof(float) * 1);
6005   static bool8 layout_init[] = {true};
6006   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6007   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param22, param23, layout}, {out5});
6008   // Phase 3, inputs and outputs
6009   model->identifyInputsAndOutputs(
6010     {in5},
6011     {out5});
6012   assert(model->isValid());
6013 }
6014 
is_ignored_scale_dynamic_output_shape_nchw_quant8_6(int i)6015 inline bool is_ignored_scale_dynamic_output_shape_nchw_quant8_6(int i) {
6016   static std::set<int> ignore = {};
6017   return ignore.find(i) != ignore.end();
6018 }
6019 
CreateModel_scale_dynamic_output_shape_nchw_float16_6(Model * model)6020 void CreateModel_scale_dynamic_output_shape_nchw_float16_6(Model *model) {
6021   OperandType type0(Type::BOOL, {});
6022   OperandType type25(Type::TENSOR_FLOAT16, {1, 1, 2, 2});
6023   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
6024   OperandType type29(Type::FLOAT16, {});
6025   // Phase 1, operands
6026   auto in5 = model->addOperand(&type25);
6027   auto param22 = model->addOperand(&type29);
6028   auto param23 = model->addOperand(&type29);
6029   auto layout = model->addOperand(&type0);
6030   auto out5 = model->addOperand(&type28);
6031   // Phase 2, operations
6032   static _Float16 param22_init[] = {1.399999976158142f};
6033   model->setOperandValue(param22, param22_init, sizeof(_Float16) * 1);
6034   static _Float16 param23_init[] = {2.799999952316284f};
6035   model->setOperandValue(param23, param23_init, sizeof(_Float16) * 1);
6036   static bool8 layout_init[] = {true};
6037   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6038   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in5, param22, param23, layout}, {out5});
6039   // Phase 3, inputs and outputs
6040   model->identifyInputsAndOutputs(
6041     {in5},
6042     {out5});
6043   assert(model->isValid());
6044 }
6045 
is_ignored_scale_dynamic_output_shape_nchw_float16_6(int i)6046 inline bool is_ignored_scale_dynamic_output_shape_nchw_float16_6(int i) {
6047   static std::set<int> ignore = {};
6048   return ignore.find(i) != ignore.end();
6049 }
6050 
CreateModel_shape_nhwc_7(Model * model)6051 void CreateModel_shape_nhwc_7(Model *model) {
6052   OperandType type0(Type::BOOL, {});
6053   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
6054   OperandType type3(Type::INT32, {});
6055   OperandType type7(Type::TENSOR_FLOAT32, {1, 4, 4, 1});
6056   // Phase 1, operands
6057   auto in6 = model->addOperand(&type1);
6058   auto param24 = model->addOperand(&type3);
6059   auto param25 = model->addOperand(&type3);
6060   auto layout = model->addOperand(&type0);
6061   auto out6 = model->addOperand(&type7);
6062   // Phase 2, operations
6063   static int32_t param24_init[] = {4};
6064   model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
6065   static int32_t param25_init[] = {4};
6066   model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
6067   static bool8 layout_init[] = {false};
6068   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6069   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param24, param25, layout}, {out6});
6070   // Phase 3, inputs and outputs
6071   model->identifyInputsAndOutputs(
6072     {in6},
6073     {out6});
6074   assert(model->isValid());
6075 }
6076 
is_ignored_shape_nhwc_7(int i)6077 inline bool is_ignored_shape_nhwc_7(int i) {
6078   static std::set<int> ignore = {};
6079   return ignore.find(i) != ignore.end();
6080 }
6081 
CreateModel_shape_nhwc_relaxed_7(Model * model)6082 void CreateModel_shape_nhwc_relaxed_7(Model *model) {
6083   OperandType type0(Type::BOOL, {});
6084   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
6085   OperandType type3(Type::INT32, {});
6086   OperandType type7(Type::TENSOR_FLOAT32, {1, 4, 4, 1});
6087   // Phase 1, operands
6088   auto in6 = model->addOperand(&type1);
6089   auto param24 = model->addOperand(&type3);
6090   auto param25 = model->addOperand(&type3);
6091   auto layout = model->addOperand(&type0);
6092   auto out6 = model->addOperand(&type7);
6093   // Phase 2, operations
6094   static int32_t param24_init[] = {4};
6095   model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
6096   static int32_t param25_init[] = {4};
6097   model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
6098   static bool8 layout_init[] = {false};
6099   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6100   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param24, param25, layout}, {out6});
6101   // Phase 3, inputs and outputs
6102   model->identifyInputsAndOutputs(
6103     {in6},
6104     {out6});
6105   // Phase 4: set relaxed execution
6106   model->relaxComputationFloat32toFloat16(true);
6107   assert(model->isValid());
6108 }
6109 
is_ignored_shape_nhwc_relaxed_7(int i)6110 inline bool is_ignored_shape_nhwc_relaxed_7(int i) {
6111   static std::set<int> ignore = {};
6112   return ignore.find(i) != ignore.end();
6113 }
6114 
CreateModel_shape_nhwc_quant8_7(Model * model)6115 void CreateModel_shape_nhwc_quant8_7(Model *model) {
6116   OperandType type0(Type::BOOL, {});
6117   OperandType type3(Type::INT32, {});
6118   OperandType type39(Type::TENSOR_QUANT8_ASYMM, {1, 2, 2, 1}, 0.25f, 100);
6119   OperandType type48(Type::TENSOR_QUANT8_ASYMM, {1, 4, 4, 1}, 0.25f, 100);
6120   // Phase 1, operands
6121   auto in6 = model->addOperand(&type39);
6122   auto param24 = model->addOperand(&type3);
6123   auto param25 = model->addOperand(&type3);
6124   auto layout = model->addOperand(&type0);
6125   auto out6 = model->addOperand(&type48);
6126   // Phase 2, operations
6127   static int32_t param24_init[] = {4};
6128   model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
6129   static int32_t param25_init[] = {4};
6130   model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
6131   static bool8 layout_init[] = {false};
6132   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6133   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param24, param25, layout}, {out6});
6134   // Phase 3, inputs and outputs
6135   model->identifyInputsAndOutputs(
6136     {in6},
6137     {out6});
6138   assert(model->isValid());
6139 }
6140 
is_ignored_shape_nhwc_quant8_7(int i)6141 inline bool is_ignored_shape_nhwc_quant8_7(int i) {
6142   static std::set<int> ignore = {};
6143   return ignore.find(i) != ignore.end();
6144 }
6145 
CreateModel_shape_nhwc_float16_7(Model * model)6146 void CreateModel_shape_nhwc_float16_7(Model *model) {
6147   OperandType type0(Type::BOOL, {});
6148   OperandType type21(Type::TENSOR_FLOAT16, {1, 2, 2, 1});
6149   OperandType type3(Type::INT32, {});
6150   OperandType type49(Type::TENSOR_FLOAT16, {1, 4, 4, 1});
6151   // Phase 1, operands
6152   auto in6 = model->addOperand(&type21);
6153   auto param24 = model->addOperand(&type3);
6154   auto param25 = model->addOperand(&type3);
6155   auto layout = model->addOperand(&type0);
6156   auto out6 = model->addOperand(&type49);
6157   // Phase 2, operations
6158   static int32_t param24_init[] = {4};
6159   model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
6160   static int32_t param25_init[] = {4};
6161   model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
6162   static bool8 layout_init[] = {false};
6163   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6164   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param24, param25, layout}, {out6});
6165   // Phase 3, inputs and outputs
6166   model->identifyInputsAndOutputs(
6167     {in6},
6168     {out6});
6169   assert(model->isValid());
6170 }
6171 
is_ignored_shape_nhwc_float16_7(int i)6172 inline bool is_ignored_shape_nhwc_float16_7(int i) {
6173   static std::set<int> ignore = {};
6174   return ignore.find(i) != ignore.end();
6175 }
6176 
CreateModel_shape_nchw_7(Model * model)6177 void CreateModel_shape_nchw_7(Model *model) {
6178   OperandType type0(Type::BOOL, {});
6179   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
6180   OperandType type3(Type::INT32, {});
6181   OperandType type50(Type::TENSOR_FLOAT32, {1, 1, 4, 4});
6182   // Phase 1, operands
6183   auto in6 = model->addOperand(&type23);
6184   auto param24 = model->addOperand(&type3);
6185   auto param25 = model->addOperand(&type3);
6186   auto layout = model->addOperand(&type0);
6187   auto out6 = model->addOperand(&type50);
6188   // Phase 2, operations
6189   static int32_t param24_init[] = {4};
6190   model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
6191   static int32_t param25_init[] = {4};
6192   model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
6193   static bool8 layout_init[] = {true};
6194   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6195   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param24, param25, layout}, {out6});
6196   // Phase 3, inputs and outputs
6197   model->identifyInputsAndOutputs(
6198     {in6},
6199     {out6});
6200   assert(model->isValid());
6201 }
6202 
is_ignored_shape_nchw_7(int i)6203 inline bool is_ignored_shape_nchw_7(int i) {
6204   static std::set<int> ignore = {};
6205   return ignore.find(i) != ignore.end();
6206 }
6207 
CreateModel_shape_nchw_relaxed_7(Model * model)6208 void CreateModel_shape_nchw_relaxed_7(Model *model) {
6209   OperandType type0(Type::BOOL, {});
6210   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
6211   OperandType type3(Type::INT32, {});
6212   OperandType type50(Type::TENSOR_FLOAT32, {1, 1, 4, 4});
6213   // Phase 1, operands
6214   auto in6 = model->addOperand(&type23);
6215   auto param24 = model->addOperand(&type3);
6216   auto param25 = model->addOperand(&type3);
6217   auto layout = model->addOperand(&type0);
6218   auto out6 = model->addOperand(&type50);
6219   // Phase 2, operations
6220   static int32_t param24_init[] = {4};
6221   model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
6222   static int32_t param25_init[] = {4};
6223   model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
6224   static bool8 layout_init[] = {true};
6225   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6226   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param24, param25, layout}, {out6});
6227   // Phase 3, inputs and outputs
6228   model->identifyInputsAndOutputs(
6229     {in6},
6230     {out6});
6231   // Phase 4: set relaxed execution
6232   model->relaxComputationFloat32toFloat16(true);
6233   assert(model->isValid());
6234 }
6235 
is_ignored_shape_nchw_relaxed_7(int i)6236 inline bool is_ignored_shape_nchw_relaxed_7(int i) {
6237   static std::set<int> ignore = {};
6238   return ignore.find(i) != ignore.end();
6239 }
6240 
CreateModel_shape_nchw_quant8_7(Model * model)6241 void CreateModel_shape_nchw_quant8_7(Model *model) {
6242   OperandType type0(Type::BOOL, {});
6243   OperandType type3(Type::INT32, {});
6244   OperandType type41(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 2}, 0.25f, 100);
6245   OperandType type51(Type::TENSOR_QUANT8_ASYMM, {1, 1, 4, 4}, 0.25f, 100);
6246   // Phase 1, operands
6247   auto in6 = model->addOperand(&type41);
6248   auto param24 = model->addOperand(&type3);
6249   auto param25 = model->addOperand(&type3);
6250   auto layout = model->addOperand(&type0);
6251   auto out6 = model->addOperand(&type51);
6252   // Phase 2, operations
6253   static int32_t param24_init[] = {4};
6254   model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
6255   static int32_t param25_init[] = {4};
6256   model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
6257   static bool8 layout_init[] = {true};
6258   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6259   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param24, param25, layout}, {out6});
6260   // Phase 3, inputs and outputs
6261   model->identifyInputsAndOutputs(
6262     {in6},
6263     {out6});
6264   assert(model->isValid());
6265 }
6266 
is_ignored_shape_nchw_quant8_7(int i)6267 inline bool is_ignored_shape_nchw_quant8_7(int i) {
6268   static std::set<int> ignore = {};
6269   return ignore.find(i) != ignore.end();
6270 }
6271 
CreateModel_shape_nchw_float16_7(Model * model)6272 void CreateModel_shape_nchw_float16_7(Model *model) {
6273   OperandType type0(Type::BOOL, {});
6274   OperandType type25(Type::TENSOR_FLOAT16, {1, 1, 2, 2});
6275   OperandType type3(Type::INT32, {});
6276   OperandType type52(Type::TENSOR_FLOAT16, {1, 1, 4, 4});
6277   // Phase 1, operands
6278   auto in6 = model->addOperand(&type25);
6279   auto param24 = model->addOperand(&type3);
6280   auto param25 = model->addOperand(&type3);
6281   auto layout = model->addOperand(&type0);
6282   auto out6 = model->addOperand(&type52);
6283   // Phase 2, operations
6284   static int32_t param24_init[] = {4};
6285   model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
6286   static int32_t param25_init[] = {4};
6287   model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
6288   static bool8 layout_init[] = {true};
6289   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6290   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param24, param25, layout}, {out6});
6291   // Phase 3, inputs and outputs
6292   model->identifyInputsAndOutputs(
6293     {in6},
6294     {out6});
6295   assert(model->isValid());
6296 }
6297 
is_ignored_shape_nchw_float16_7(int i)6298 inline bool is_ignored_shape_nchw_float16_7(int i) {
6299   static std::set<int> ignore = {};
6300   return ignore.find(i) != ignore.end();
6301 }
6302 
CreateModel_shape_dynamic_output_shape_nhwc_7(Model * model)6303 void CreateModel_shape_dynamic_output_shape_nhwc_7(Model *model) {
6304   OperandType type0(Type::BOOL, {});
6305   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
6306   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
6307   OperandType type3(Type::INT32, {});
6308   // Phase 1, operands
6309   auto in6 = model->addOperand(&type1);
6310   auto param24 = model->addOperand(&type3);
6311   auto param25 = model->addOperand(&type3);
6312   auto layout = model->addOperand(&type0);
6313   auto out6 = model->addOperand(&type26);
6314   // Phase 2, operations
6315   static int32_t param24_init[] = {4};
6316   model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
6317   static int32_t param25_init[] = {4};
6318   model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
6319   static bool8 layout_init[] = {false};
6320   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6321   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param24, param25, layout}, {out6});
6322   // Phase 3, inputs and outputs
6323   model->identifyInputsAndOutputs(
6324     {in6},
6325     {out6});
6326   assert(model->isValid());
6327 }
6328 
is_ignored_shape_dynamic_output_shape_nhwc_7(int i)6329 inline bool is_ignored_shape_dynamic_output_shape_nhwc_7(int i) {
6330   static std::set<int> ignore = {};
6331   return ignore.find(i) != ignore.end();
6332 }
6333 
CreateModel_shape_dynamic_output_shape_nhwc_relaxed_7(Model * model)6334 void CreateModel_shape_dynamic_output_shape_nhwc_relaxed_7(Model *model) {
6335   OperandType type0(Type::BOOL, {});
6336   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
6337   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
6338   OperandType type3(Type::INT32, {});
6339   // Phase 1, operands
6340   auto in6 = model->addOperand(&type1);
6341   auto param24 = model->addOperand(&type3);
6342   auto param25 = model->addOperand(&type3);
6343   auto layout = model->addOperand(&type0);
6344   auto out6 = model->addOperand(&type26);
6345   // Phase 2, operations
6346   static int32_t param24_init[] = {4};
6347   model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
6348   static int32_t param25_init[] = {4};
6349   model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
6350   static bool8 layout_init[] = {false};
6351   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6352   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param24, param25, layout}, {out6});
6353   // Phase 3, inputs and outputs
6354   model->identifyInputsAndOutputs(
6355     {in6},
6356     {out6});
6357   // Phase 4: set relaxed execution
6358   model->relaxComputationFloat32toFloat16(true);
6359   assert(model->isValid());
6360 }
6361 
is_ignored_shape_dynamic_output_shape_nhwc_relaxed_7(int i)6362 inline bool is_ignored_shape_dynamic_output_shape_nhwc_relaxed_7(int i) {
6363   static std::set<int> ignore = {};
6364   return ignore.find(i) != ignore.end();
6365 }
6366 
CreateModel_shape_dynamic_output_shape_nhwc_quant8_7(Model * model)6367 void CreateModel_shape_dynamic_output_shape_nhwc_quant8_7(Model *model) {
6368   OperandType type0(Type::BOOL, {});
6369   OperandType type3(Type::INT32, {});
6370   OperandType type39(Type::TENSOR_QUANT8_ASYMM, {1, 2, 2, 1}, 0.25f, 100);
6371   OperandType type42(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 100);
6372   // Phase 1, operands
6373   auto in6 = model->addOperand(&type39);
6374   auto param24 = model->addOperand(&type3);
6375   auto param25 = model->addOperand(&type3);
6376   auto layout = model->addOperand(&type0);
6377   auto out6 = model->addOperand(&type42);
6378   // Phase 2, operations
6379   static int32_t param24_init[] = {4};
6380   model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
6381   static int32_t param25_init[] = {4};
6382   model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
6383   static bool8 layout_init[] = {false};
6384   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6385   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param24, param25, layout}, {out6});
6386   // Phase 3, inputs and outputs
6387   model->identifyInputsAndOutputs(
6388     {in6},
6389     {out6});
6390   assert(model->isValid());
6391 }
6392 
is_ignored_shape_dynamic_output_shape_nhwc_quant8_7(int i)6393 inline bool is_ignored_shape_dynamic_output_shape_nhwc_quant8_7(int i) {
6394   static std::set<int> ignore = {};
6395   return ignore.find(i) != ignore.end();
6396 }
6397 
CreateModel_shape_dynamic_output_shape_nhwc_float16_7(Model * model)6398 void CreateModel_shape_dynamic_output_shape_nhwc_float16_7(Model *model) {
6399   OperandType type0(Type::BOOL, {});
6400   OperandType type21(Type::TENSOR_FLOAT16, {1, 2, 2, 1});
6401   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
6402   OperandType type3(Type::INT32, {});
6403   // Phase 1, operands
6404   auto in6 = model->addOperand(&type21);
6405   auto param24 = model->addOperand(&type3);
6406   auto param25 = model->addOperand(&type3);
6407   auto layout = model->addOperand(&type0);
6408   auto out6 = model->addOperand(&type28);
6409   // Phase 2, operations
6410   static int32_t param24_init[] = {4};
6411   model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
6412   static int32_t param25_init[] = {4};
6413   model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
6414   static bool8 layout_init[] = {false};
6415   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6416   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param24, param25, layout}, {out6});
6417   // Phase 3, inputs and outputs
6418   model->identifyInputsAndOutputs(
6419     {in6},
6420     {out6});
6421   assert(model->isValid());
6422 }
6423 
is_ignored_shape_dynamic_output_shape_nhwc_float16_7(int i)6424 inline bool is_ignored_shape_dynamic_output_shape_nhwc_float16_7(int i) {
6425   static std::set<int> ignore = {};
6426   return ignore.find(i) != ignore.end();
6427 }
6428 
CreateModel_shape_dynamic_output_shape_nchw_7(Model * model)6429 void CreateModel_shape_dynamic_output_shape_nchw_7(Model *model) {
6430   OperandType type0(Type::BOOL, {});
6431   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
6432   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
6433   OperandType type3(Type::INT32, {});
6434   // Phase 1, operands
6435   auto in6 = model->addOperand(&type23);
6436   auto param24 = model->addOperand(&type3);
6437   auto param25 = model->addOperand(&type3);
6438   auto layout = model->addOperand(&type0);
6439   auto out6 = model->addOperand(&type26);
6440   // Phase 2, operations
6441   static int32_t param24_init[] = {4};
6442   model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
6443   static int32_t param25_init[] = {4};
6444   model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
6445   static bool8 layout_init[] = {true};
6446   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6447   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param24, param25, layout}, {out6});
6448   // Phase 3, inputs and outputs
6449   model->identifyInputsAndOutputs(
6450     {in6},
6451     {out6});
6452   assert(model->isValid());
6453 }
6454 
is_ignored_shape_dynamic_output_shape_nchw_7(int i)6455 inline bool is_ignored_shape_dynamic_output_shape_nchw_7(int i) {
6456   static std::set<int> ignore = {};
6457   return ignore.find(i) != ignore.end();
6458 }
6459 
CreateModel_shape_dynamic_output_shape_nchw_relaxed_7(Model * model)6460 void CreateModel_shape_dynamic_output_shape_nchw_relaxed_7(Model *model) {
6461   OperandType type0(Type::BOOL, {});
6462   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
6463   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
6464   OperandType type3(Type::INT32, {});
6465   // Phase 1, operands
6466   auto in6 = model->addOperand(&type23);
6467   auto param24 = model->addOperand(&type3);
6468   auto param25 = model->addOperand(&type3);
6469   auto layout = model->addOperand(&type0);
6470   auto out6 = model->addOperand(&type26);
6471   // Phase 2, operations
6472   static int32_t param24_init[] = {4};
6473   model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
6474   static int32_t param25_init[] = {4};
6475   model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
6476   static bool8 layout_init[] = {true};
6477   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6478   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param24, param25, layout}, {out6});
6479   // Phase 3, inputs and outputs
6480   model->identifyInputsAndOutputs(
6481     {in6},
6482     {out6});
6483   // Phase 4: set relaxed execution
6484   model->relaxComputationFloat32toFloat16(true);
6485   assert(model->isValid());
6486 }
6487 
is_ignored_shape_dynamic_output_shape_nchw_relaxed_7(int i)6488 inline bool is_ignored_shape_dynamic_output_shape_nchw_relaxed_7(int i) {
6489   static std::set<int> ignore = {};
6490   return ignore.find(i) != ignore.end();
6491 }
6492 
CreateModel_shape_dynamic_output_shape_nchw_quant8_7(Model * model)6493 void CreateModel_shape_dynamic_output_shape_nchw_quant8_7(Model *model) {
6494   OperandType type0(Type::BOOL, {});
6495   OperandType type3(Type::INT32, {});
6496   OperandType type41(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 2}, 0.25f, 100);
6497   OperandType type42(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 100);
6498   // Phase 1, operands
6499   auto in6 = model->addOperand(&type41);
6500   auto param24 = model->addOperand(&type3);
6501   auto param25 = model->addOperand(&type3);
6502   auto layout = model->addOperand(&type0);
6503   auto out6 = model->addOperand(&type42);
6504   // Phase 2, operations
6505   static int32_t param24_init[] = {4};
6506   model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
6507   static int32_t param25_init[] = {4};
6508   model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
6509   static bool8 layout_init[] = {true};
6510   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6511   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param24, param25, layout}, {out6});
6512   // Phase 3, inputs and outputs
6513   model->identifyInputsAndOutputs(
6514     {in6},
6515     {out6});
6516   assert(model->isValid());
6517 }
6518 
is_ignored_shape_dynamic_output_shape_nchw_quant8_7(int i)6519 inline bool is_ignored_shape_dynamic_output_shape_nchw_quant8_7(int i) {
6520   static std::set<int> ignore = {};
6521   return ignore.find(i) != ignore.end();
6522 }
6523 
CreateModel_shape_dynamic_output_shape_nchw_float16_7(Model * model)6524 void CreateModel_shape_dynamic_output_shape_nchw_float16_7(Model *model) {
6525   OperandType type0(Type::BOOL, {});
6526   OperandType type25(Type::TENSOR_FLOAT16, {1, 1, 2, 2});
6527   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
6528   OperandType type3(Type::INT32, {});
6529   // Phase 1, operands
6530   auto in6 = model->addOperand(&type25);
6531   auto param24 = model->addOperand(&type3);
6532   auto param25 = model->addOperand(&type3);
6533   auto layout = model->addOperand(&type0);
6534   auto out6 = model->addOperand(&type28);
6535   // Phase 2, operations
6536   static int32_t param24_init[] = {4};
6537   model->setOperandValue(param24, param24_init, sizeof(int32_t) * 1);
6538   static int32_t param25_init[] = {4};
6539   model->setOperandValue(param25, param25_init, sizeof(int32_t) * 1);
6540   static bool8 layout_init[] = {true};
6541   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6542   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param24, param25, layout}, {out6});
6543   // Phase 3, inputs and outputs
6544   model->identifyInputsAndOutputs(
6545     {in6},
6546     {out6});
6547   assert(model->isValid());
6548 }
6549 
is_ignored_shape_dynamic_output_shape_nchw_float16_7(int i)6550 inline bool is_ignored_shape_dynamic_output_shape_nchw_float16_7(int i) {
6551   static std::set<int> ignore = {};
6552   return ignore.find(i) != ignore.end();
6553 }
6554 
CreateModel_scale_nhwc_7(Model * model)6555 void CreateModel_scale_nhwc_7(Model *model) {
6556   OperandType type0(Type::BOOL, {});
6557   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
6558   OperandType type4(Type::FLOAT32, {});
6559   OperandType type7(Type::TENSOR_FLOAT32, {1, 4, 4, 1});
6560   // Phase 1, operands
6561   auto in6 = model->addOperand(&type1);
6562   auto param26 = model->addOperand(&type4);
6563   auto param27 = model->addOperand(&type4);
6564   auto layout = model->addOperand(&type0);
6565   auto out6 = model->addOperand(&type7);
6566   // Phase 2, operations
6567   static float param26_init[] = {2.0f};
6568   model->setOperandValue(param26, param26_init, sizeof(float) * 1);
6569   static float param27_init[] = {2.0f};
6570   model->setOperandValue(param27, param27_init, sizeof(float) * 1);
6571   static bool8 layout_init[] = {false};
6572   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6573   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param26, param27, layout}, {out6});
6574   // Phase 3, inputs and outputs
6575   model->identifyInputsAndOutputs(
6576     {in6},
6577     {out6});
6578   assert(model->isValid());
6579 }
6580 
is_ignored_scale_nhwc_7(int i)6581 inline bool is_ignored_scale_nhwc_7(int i) {
6582   static std::set<int> ignore = {};
6583   return ignore.find(i) != ignore.end();
6584 }
6585 
CreateModel_scale_nhwc_relaxed_7(Model * model)6586 void CreateModel_scale_nhwc_relaxed_7(Model *model) {
6587   OperandType type0(Type::BOOL, {});
6588   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
6589   OperandType type4(Type::FLOAT32, {});
6590   OperandType type7(Type::TENSOR_FLOAT32, {1, 4, 4, 1});
6591   // Phase 1, operands
6592   auto in6 = model->addOperand(&type1);
6593   auto param26 = model->addOperand(&type4);
6594   auto param27 = model->addOperand(&type4);
6595   auto layout = model->addOperand(&type0);
6596   auto out6 = model->addOperand(&type7);
6597   // Phase 2, operations
6598   static float param26_init[] = {2.0f};
6599   model->setOperandValue(param26, param26_init, sizeof(float) * 1);
6600   static float param27_init[] = {2.0f};
6601   model->setOperandValue(param27, param27_init, sizeof(float) * 1);
6602   static bool8 layout_init[] = {false};
6603   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6604   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param26, param27, layout}, {out6});
6605   // Phase 3, inputs and outputs
6606   model->identifyInputsAndOutputs(
6607     {in6},
6608     {out6});
6609   // Phase 4: set relaxed execution
6610   model->relaxComputationFloat32toFloat16(true);
6611   assert(model->isValid());
6612 }
6613 
is_ignored_scale_nhwc_relaxed_7(int i)6614 inline bool is_ignored_scale_nhwc_relaxed_7(int i) {
6615   static std::set<int> ignore = {};
6616   return ignore.find(i) != ignore.end();
6617 }
6618 
CreateModel_scale_nhwc_quant8_7(Model * model)6619 void CreateModel_scale_nhwc_quant8_7(Model *model) {
6620   OperandType type0(Type::BOOL, {});
6621   OperandType type39(Type::TENSOR_QUANT8_ASYMM, {1, 2, 2, 1}, 0.25f, 100);
6622   OperandType type4(Type::FLOAT32, {});
6623   OperandType type48(Type::TENSOR_QUANT8_ASYMM, {1, 4, 4, 1}, 0.25f, 100);
6624   // Phase 1, operands
6625   auto in6 = model->addOperand(&type39);
6626   auto param26 = model->addOperand(&type4);
6627   auto param27 = model->addOperand(&type4);
6628   auto layout = model->addOperand(&type0);
6629   auto out6 = model->addOperand(&type48);
6630   // Phase 2, operations
6631   static float param26_init[] = {2.0f};
6632   model->setOperandValue(param26, param26_init, sizeof(float) * 1);
6633   static float param27_init[] = {2.0f};
6634   model->setOperandValue(param27, param27_init, sizeof(float) * 1);
6635   static bool8 layout_init[] = {false};
6636   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6637   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param26, param27, layout}, {out6});
6638   // Phase 3, inputs and outputs
6639   model->identifyInputsAndOutputs(
6640     {in6},
6641     {out6});
6642   assert(model->isValid());
6643 }
6644 
is_ignored_scale_nhwc_quant8_7(int i)6645 inline bool is_ignored_scale_nhwc_quant8_7(int i) {
6646   static std::set<int> ignore = {};
6647   return ignore.find(i) != ignore.end();
6648 }
6649 
CreateModel_scale_nhwc_float16_7(Model * model)6650 void CreateModel_scale_nhwc_float16_7(Model *model) {
6651   OperandType type0(Type::BOOL, {});
6652   OperandType type21(Type::TENSOR_FLOAT16, {1, 2, 2, 1});
6653   OperandType type29(Type::FLOAT16, {});
6654   OperandType type49(Type::TENSOR_FLOAT16, {1, 4, 4, 1});
6655   // Phase 1, operands
6656   auto in6 = model->addOperand(&type21);
6657   auto param26 = model->addOperand(&type29);
6658   auto param27 = model->addOperand(&type29);
6659   auto layout = model->addOperand(&type0);
6660   auto out6 = model->addOperand(&type49);
6661   // Phase 2, operations
6662   static _Float16 param26_init[] = {2.0f};
6663   model->setOperandValue(param26, param26_init, sizeof(_Float16) * 1);
6664   static _Float16 param27_init[] = {2.0f};
6665   model->setOperandValue(param27, param27_init, sizeof(_Float16) * 1);
6666   static bool8 layout_init[] = {false};
6667   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6668   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param26, param27, layout}, {out6});
6669   // Phase 3, inputs and outputs
6670   model->identifyInputsAndOutputs(
6671     {in6},
6672     {out6});
6673   assert(model->isValid());
6674 }
6675 
is_ignored_scale_nhwc_float16_7(int i)6676 inline bool is_ignored_scale_nhwc_float16_7(int i) {
6677   static std::set<int> ignore = {};
6678   return ignore.find(i) != ignore.end();
6679 }
6680 
CreateModel_scale_nchw_7(Model * model)6681 void CreateModel_scale_nchw_7(Model *model) {
6682   OperandType type0(Type::BOOL, {});
6683   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
6684   OperandType type4(Type::FLOAT32, {});
6685   OperandType type50(Type::TENSOR_FLOAT32, {1, 1, 4, 4});
6686   // Phase 1, operands
6687   auto in6 = model->addOperand(&type23);
6688   auto param26 = model->addOperand(&type4);
6689   auto param27 = model->addOperand(&type4);
6690   auto layout = model->addOperand(&type0);
6691   auto out6 = model->addOperand(&type50);
6692   // Phase 2, operations
6693   static float param26_init[] = {2.0f};
6694   model->setOperandValue(param26, param26_init, sizeof(float) * 1);
6695   static float param27_init[] = {2.0f};
6696   model->setOperandValue(param27, param27_init, sizeof(float) * 1);
6697   static bool8 layout_init[] = {true};
6698   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6699   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param26, param27, layout}, {out6});
6700   // Phase 3, inputs and outputs
6701   model->identifyInputsAndOutputs(
6702     {in6},
6703     {out6});
6704   assert(model->isValid());
6705 }
6706 
is_ignored_scale_nchw_7(int i)6707 inline bool is_ignored_scale_nchw_7(int i) {
6708   static std::set<int> ignore = {};
6709   return ignore.find(i) != ignore.end();
6710 }
6711 
CreateModel_scale_nchw_relaxed_7(Model * model)6712 void CreateModel_scale_nchw_relaxed_7(Model *model) {
6713   OperandType type0(Type::BOOL, {});
6714   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
6715   OperandType type4(Type::FLOAT32, {});
6716   OperandType type50(Type::TENSOR_FLOAT32, {1, 1, 4, 4});
6717   // Phase 1, operands
6718   auto in6 = model->addOperand(&type23);
6719   auto param26 = model->addOperand(&type4);
6720   auto param27 = model->addOperand(&type4);
6721   auto layout = model->addOperand(&type0);
6722   auto out6 = model->addOperand(&type50);
6723   // Phase 2, operations
6724   static float param26_init[] = {2.0f};
6725   model->setOperandValue(param26, param26_init, sizeof(float) * 1);
6726   static float param27_init[] = {2.0f};
6727   model->setOperandValue(param27, param27_init, sizeof(float) * 1);
6728   static bool8 layout_init[] = {true};
6729   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6730   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param26, param27, layout}, {out6});
6731   // Phase 3, inputs and outputs
6732   model->identifyInputsAndOutputs(
6733     {in6},
6734     {out6});
6735   // Phase 4: set relaxed execution
6736   model->relaxComputationFloat32toFloat16(true);
6737   assert(model->isValid());
6738 }
6739 
is_ignored_scale_nchw_relaxed_7(int i)6740 inline bool is_ignored_scale_nchw_relaxed_7(int i) {
6741   static std::set<int> ignore = {};
6742   return ignore.find(i) != ignore.end();
6743 }
6744 
CreateModel_scale_nchw_quant8_7(Model * model)6745 void CreateModel_scale_nchw_quant8_7(Model *model) {
6746   OperandType type0(Type::BOOL, {});
6747   OperandType type4(Type::FLOAT32, {});
6748   OperandType type41(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 2}, 0.25f, 100);
6749   OperandType type51(Type::TENSOR_QUANT8_ASYMM, {1, 1, 4, 4}, 0.25f, 100);
6750   // Phase 1, operands
6751   auto in6 = model->addOperand(&type41);
6752   auto param26 = model->addOperand(&type4);
6753   auto param27 = model->addOperand(&type4);
6754   auto layout = model->addOperand(&type0);
6755   auto out6 = model->addOperand(&type51);
6756   // Phase 2, operations
6757   static float param26_init[] = {2.0f};
6758   model->setOperandValue(param26, param26_init, sizeof(float) * 1);
6759   static float param27_init[] = {2.0f};
6760   model->setOperandValue(param27, param27_init, sizeof(float) * 1);
6761   static bool8 layout_init[] = {true};
6762   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6763   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param26, param27, layout}, {out6});
6764   // Phase 3, inputs and outputs
6765   model->identifyInputsAndOutputs(
6766     {in6},
6767     {out6});
6768   assert(model->isValid());
6769 }
6770 
is_ignored_scale_nchw_quant8_7(int i)6771 inline bool is_ignored_scale_nchw_quant8_7(int i) {
6772   static std::set<int> ignore = {};
6773   return ignore.find(i) != ignore.end();
6774 }
6775 
CreateModel_scale_nchw_float16_7(Model * model)6776 void CreateModel_scale_nchw_float16_7(Model *model) {
6777   OperandType type0(Type::BOOL, {});
6778   OperandType type25(Type::TENSOR_FLOAT16, {1, 1, 2, 2});
6779   OperandType type29(Type::FLOAT16, {});
6780   OperandType type52(Type::TENSOR_FLOAT16, {1, 1, 4, 4});
6781   // Phase 1, operands
6782   auto in6 = model->addOperand(&type25);
6783   auto param26 = model->addOperand(&type29);
6784   auto param27 = model->addOperand(&type29);
6785   auto layout = model->addOperand(&type0);
6786   auto out6 = model->addOperand(&type52);
6787   // Phase 2, operations
6788   static _Float16 param26_init[] = {2.0f};
6789   model->setOperandValue(param26, param26_init, sizeof(_Float16) * 1);
6790   static _Float16 param27_init[] = {2.0f};
6791   model->setOperandValue(param27, param27_init, sizeof(_Float16) * 1);
6792   static bool8 layout_init[] = {true};
6793   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6794   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param26, param27, layout}, {out6});
6795   // Phase 3, inputs and outputs
6796   model->identifyInputsAndOutputs(
6797     {in6},
6798     {out6});
6799   assert(model->isValid());
6800 }
6801 
is_ignored_scale_nchw_float16_7(int i)6802 inline bool is_ignored_scale_nchw_float16_7(int i) {
6803   static std::set<int> ignore = {};
6804   return ignore.find(i) != ignore.end();
6805 }
6806 
CreateModel_scale_dynamic_output_shape_nhwc_7(Model * model)6807 void CreateModel_scale_dynamic_output_shape_nhwc_7(Model *model) {
6808   OperandType type0(Type::BOOL, {});
6809   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
6810   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
6811   OperandType type4(Type::FLOAT32, {});
6812   // Phase 1, operands
6813   auto in6 = model->addOperand(&type1);
6814   auto param26 = model->addOperand(&type4);
6815   auto param27 = model->addOperand(&type4);
6816   auto layout = model->addOperand(&type0);
6817   auto out6 = model->addOperand(&type26);
6818   // Phase 2, operations
6819   static float param26_init[] = {2.0f};
6820   model->setOperandValue(param26, param26_init, sizeof(float) * 1);
6821   static float param27_init[] = {2.0f};
6822   model->setOperandValue(param27, param27_init, sizeof(float) * 1);
6823   static bool8 layout_init[] = {false};
6824   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6825   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param26, param27, layout}, {out6});
6826   // Phase 3, inputs and outputs
6827   model->identifyInputsAndOutputs(
6828     {in6},
6829     {out6});
6830   assert(model->isValid());
6831 }
6832 
is_ignored_scale_dynamic_output_shape_nhwc_7(int i)6833 inline bool is_ignored_scale_dynamic_output_shape_nhwc_7(int i) {
6834   static std::set<int> ignore = {};
6835   return ignore.find(i) != ignore.end();
6836 }
6837 
CreateModel_scale_dynamic_output_shape_nhwc_relaxed_7(Model * model)6838 void CreateModel_scale_dynamic_output_shape_nhwc_relaxed_7(Model *model) {
6839   OperandType type0(Type::BOOL, {});
6840   OperandType type1(Type::TENSOR_FLOAT32, {1, 2, 2, 1});
6841   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
6842   OperandType type4(Type::FLOAT32, {});
6843   // Phase 1, operands
6844   auto in6 = model->addOperand(&type1);
6845   auto param26 = model->addOperand(&type4);
6846   auto param27 = model->addOperand(&type4);
6847   auto layout = model->addOperand(&type0);
6848   auto out6 = model->addOperand(&type26);
6849   // Phase 2, operations
6850   static float param26_init[] = {2.0f};
6851   model->setOperandValue(param26, param26_init, sizeof(float) * 1);
6852   static float param27_init[] = {2.0f};
6853   model->setOperandValue(param27, param27_init, sizeof(float) * 1);
6854   static bool8 layout_init[] = {false};
6855   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6856   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param26, param27, layout}, {out6});
6857   // Phase 3, inputs and outputs
6858   model->identifyInputsAndOutputs(
6859     {in6},
6860     {out6});
6861   // Phase 4: set relaxed execution
6862   model->relaxComputationFloat32toFloat16(true);
6863   assert(model->isValid());
6864 }
6865 
is_ignored_scale_dynamic_output_shape_nhwc_relaxed_7(int i)6866 inline bool is_ignored_scale_dynamic_output_shape_nhwc_relaxed_7(int i) {
6867   static std::set<int> ignore = {};
6868   return ignore.find(i) != ignore.end();
6869 }
6870 
CreateModel_scale_dynamic_output_shape_nhwc_quant8_7(Model * model)6871 void CreateModel_scale_dynamic_output_shape_nhwc_quant8_7(Model *model) {
6872   OperandType type0(Type::BOOL, {});
6873   OperandType type39(Type::TENSOR_QUANT8_ASYMM, {1, 2, 2, 1}, 0.25f, 100);
6874   OperandType type4(Type::FLOAT32, {});
6875   OperandType type42(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 100);
6876   // Phase 1, operands
6877   auto in6 = model->addOperand(&type39);
6878   auto param26 = model->addOperand(&type4);
6879   auto param27 = model->addOperand(&type4);
6880   auto layout = model->addOperand(&type0);
6881   auto out6 = model->addOperand(&type42);
6882   // Phase 2, operations
6883   static float param26_init[] = {2.0f};
6884   model->setOperandValue(param26, param26_init, sizeof(float) * 1);
6885   static float param27_init[] = {2.0f};
6886   model->setOperandValue(param27, param27_init, sizeof(float) * 1);
6887   static bool8 layout_init[] = {false};
6888   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6889   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param26, param27, layout}, {out6});
6890   // Phase 3, inputs and outputs
6891   model->identifyInputsAndOutputs(
6892     {in6},
6893     {out6});
6894   assert(model->isValid());
6895 }
6896 
is_ignored_scale_dynamic_output_shape_nhwc_quant8_7(int i)6897 inline bool is_ignored_scale_dynamic_output_shape_nhwc_quant8_7(int i) {
6898   static std::set<int> ignore = {};
6899   return ignore.find(i) != ignore.end();
6900 }
6901 
CreateModel_scale_dynamic_output_shape_nhwc_float16_7(Model * model)6902 void CreateModel_scale_dynamic_output_shape_nhwc_float16_7(Model *model) {
6903   OperandType type0(Type::BOOL, {});
6904   OperandType type21(Type::TENSOR_FLOAT16, {1, 2, 2, 1});
6905   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
6906   OperandType type29(Type::FLOAT16, {});
6907   // Phase 1, operands
6908   auto in6 = model->addOperand(&type21);
6909   auto param26 = model->addOperand(&type29);
6910   auto param27 = model->addOperand(&type29);
6911   auto layout = model->addOperand(&type0);
6912   auto out6 = model->addOperand(&type28);
6913   // Phase 2, operations
6914   static _Float16 param26_init[] = {2.0f};
6915   model->setOperandValue(param26, param26_init, sizeof(_Float16) * 1);
6916   static _Float16 param27_init[] = {2.0f};
6917   model->setOperandValue(param27, param27_init, sizeof(_Float16) * 1);
6918   static bool8 layout_init[] = {false};
6919   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6920   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param26, param27, layout}, {out6});
6921   // Phase 3, inputs and outputs
6922   model->identifyInputsAndOutputs(
6923     {in6},
6924     {out6});
6925   assert(model->isValid());
6926 }
6927 
is_ignored_scale_dynamic_output_shape_nhwc_float16_7(int i)6928 inline bool is_ignored_scale_dynamic_output_shape_nhwc_float16_7(int i) {
6929   static std::set<int> ignore = {};
6930   return ignore.find(i) != ignore.end();
6931 }
6932 
CreateModel_scale_dynamic_output_shape_nchw_7(Model * model)6933 void CreateModel_scale_dynamic_output_shape_nchw_7(Model *model) {
6934   OperandType type0(Type::BOOL, {});
6935   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
6936   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
6937   OperandType type4(Type::FLOAT32, {});
6938   // Phase 1, operands
6939   auto in6 = model->addOperand(&type23);
6940   auto param26 = model->addOperand(&type4);
6941   auto param27 = model->addOperand(&type4);
6942   auto layout = model->addOperand(&type0);
6943   auto out6 = model->addOperand(&type26);
6944   // Phase 2, operations
6945   static float param26_init[] = {2.0f};
6946   model->setOperandValue(param26, param26_init, sizeof(float) * 1);
6947   static float param27_init[] = {2.0f};
6948   model->setOperandValue(param27, param27_init, sizeof(float) * 1);
6949   static bool8 layout_init[] = {true};
6950   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6951   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param26, param27, layout}, {out6});
6952   // Phase 3, inputs and outputs
6953   model->identifyInputsAndOutputs(
6954     {in6},
6955     {out6});
6956   assert(model->isValid());
6957 }
6958 
is_ignored_scale_dynamic_output_shape_nchw_7(int i)6959 inline bool is_ignored_scale_dynamic_output_shape_nchw_7(int i) {
6960   static std::set<int> ignore = {};
6961   return ignore.find(i) != ignore.end();
6962 }
6963 
CreateModel_scale_dynamic_output_shape_nchw_relaxed_7(Model * model)6964 void CreateModel_scale_dynamic_output_shape_nchw_relaxed_7(Model *model) {
6965   OperandType type0(Type::BOOL, {});
6966   OperandType type23(Type::TENSOR_FLOAT32, {1, 1, 2, 2});
6967   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
6968   OperandType type4(Type::FLOAT32, {});
6969   // Phase 1, operands
6970   auto in6 = model->addOperand(&type23);
6971   auto param26 = model->addOperand(&type4);
6972   auto param27 = model->addOperand(&type4);
6973   auto layout = model->addOperand(&type0);
6974   auto out6 = model->addOperand(&type26);
6975   // Phase 2, operations
6976   static float param26_init[] = {2.0f};
6977   model->setOperandValue(param26, param26_init, sizeof(float) * 1);
6978   static float param27_init[] = {2.0f};
6979   model->setOperandValue(param27, param27_init, sizeof(float) * 1);
6980   static bool8 layout_init[] = {true};
6981   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
6982   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param26, param27, layout}, {out6});
6983   // Phase 3, inputs and outputs
6984   model->identifyInputsAndOutputs(
6985     {in6},
6986     {out6});
6987   // Phase 4: set relaxed execution
6988   model->relaxComputationFloat32toFloat16(true);
6989   assert(model->isValid());
6990 }
6991 
is_ignored_scale_dynamic_output_shape_nchw_relaxed_7(int i)6992 inline bool is_ignored_scale_dynamic_output_shape_nchw_relaxed_7(int i) {
6993   static std::set<int> ignore = {};
6994   return ignore.find(i) != ignore.end();
6995 }
6996 
CreateModel_scale_dynamic_output_shape_nchw_quant8_7(Model * model)6997 void CreateModel_scale_dynamic_output_shape_nchw_quant8_7(Model *model) {
6998   OperandType type0(Type::BOOL, {});
6999   OperandType type4(Type::FLOAT32, {});
7000   OperandType type41(Type::TENSOR_QUANT8_ASYMM, {1, 1, 2, 2}, 0.25f, 100);
7001   OperandType type42(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 100);
7002   // Phase 1, operands
7003   auto in6 = model->addOperand(&type41);
7004   auto param26 = model->addOperand(&type4);
7005   auto param27 = model->addOperand(&type4);
7006   auto layout = model->addOperand(&type0);
7007   auto out6 = model->addOperand(&type42);
7008   // Phase 2, operations
7009   static float param26_init[] = {2.0f};
7010   model->setOperandValue(param26, param26_init, sizeof(float) * 1);
7011   static float param27_init[] = {2.0f};
7012   model->setOperandValue(param27, param27_init, sizeof(float) * 1);
7013   static bool8 layout_init[] = {true};
7014   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7015   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param26, param27, layout}, {out6});
7016   // Phase 3, inputs and outputs
7017   model->identifyInputsAndOutputs(
7018     {in6},
7019     {out6});
7020   assert(model->isValid());
7021 }
7022 
is_ignored_scale_dynamic_output_shape_nchw_quant8_7(int i)7023 inline bool is_ignored_scale_dynamic_output_shape_nchw_quant8_7(int i) {
7024   static std::set<int> ignore = {};
7025   return ignore.find(i) != ignore.end();
7026 }
7027 
CreateModel_scale_dynamic_output_shape_nchw_float16_7(Model * model)7028 void CreateModel_scale_dynamic_output_shape_nchw_float16_7(Model *model) {
7029   OperandType type0(Type::BOOL, {});
7030   OperandType type25(Type::TENSOR_FLOAT16, {1, 1, 2, 2});
7031   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
7032   OperandType type29(Type::FLOAT16, {});
7033   // Phase 1, operands
7034   auto in6 = model->addOperand(&type25);
7035   auto param26 = model->addOperand(&type29);
7036   auto param27 = model->addOperand(&type29);
7037   auto layout = model->addOperand(&type0);
7038   auto out6 = model->addOperand(&type28);
7039   // Phase 2, operations
7040   static _Float16 param26_init[] = {2.0f};
7041   model->setOperandValue(param26, param26_init, sizeof(_Float16) * 1);
7042   static _Float16 param27_init[] = {2.0f};
7043   model->setOperandValue(param27, param27_init, sizeof(_Float16) * 1);
7044   static bool8 layout_init[] = {true};
7045   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7046   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in6, param26, param27, layout}, {out6});
7047   // Phase 3, inputs and outputs
7048   model->identifyInputsAndOutputs(
7049     {in6},
7050     {out6});
7051   assert(model->isValid());
7052 }
7053 
is_ignored_scale_dynamic_output_shape_nchw_float16_7(int i)7054 inline bool is_ignored_scale_dynamic_output_shape_nchw_float16_7(int i) {
7055   static std::set<int> ignore = {};
7056   return ignore.find(i) != ignore.end();
7057 }
7058 
CreateModel_shape_nhwc_8(Model * model)7059 void CreateModel_shape_nhwc_8(Model *model) {
7060   OperandType type0(Type::BOOL, {});
7061   OperandType type10(Type::TENSOR_FLOAT32, {2, 3, 3, 2});
7062   OperandType type3(Type::INT32, {});
7063   OperandType type9(Type::TENSOR_FLOAT32, {2, 2, 2, 2});
7064   // Phase 1, operands
7065   auto in7 = model->addOperand(&type9);
7066   auto param28 = model->addOperand(&type3);
7067   auto param29 = model->addOperand(&type3);
7068   auto layout = model->addOperand(&type0);
7069   auto out7 = model->addOperand(&type10);
7070   // Phase 2, operations
7071   static int32_t param28_init[] = {3};
7072   model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
7073   static int32_t param29_init[] = {3};
7074   model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
7075   static bool8 layout_init[] = {false};
7076   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7077   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param28, param29, layout}, {out7});
7078   // Phase 3, inputs and outputs
7079   model->identifyInputsAndOutputs(
7080     {in7},
7081     {out7});
7082   assert(model->isValid());
7083 }
7084 
is_ignored_shape_nhwc_8(int i)7085 inline bool is_ignored_shape_nhwc_8(int i) {
7086   static std::set<int> ignore = {};
7087   return ignore.find(i) != ignore.end();
7088 }
7089 
CreateModel_shape_nhwc_relaxed_8(Model * model)7090 void CreateModel_shape_nhwc_relaxed_8(Model *model) {
7091   OperandType type0(Type::BOOL, {});
7092   OperandType type10(Type::TENSOR_FLOAT32, {2, 3, 3, 2});
7093   OperandType type3(Type::INT32, {});
7094   OperandType type9(Type::TENSOR_FLOAT32, {2, 2, 2, 2});
7095   // Phase 1, operands
7096   auto in7 = model->addOperand(&type9);
7097   auto param28 = model->addOperand(&type3);
7098   auto param29 = model->addOperand(&type3);
7099   auto layout = model->addOperand(&type0);
7100   auto out7 = model->addOperand(&type10);
7101   // Phase 2, operations
7102   static int32_t param28_init[] = {3};
7103   model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
7104   static int32_t param29_init[] = {3};
7105   model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
7106   static bool8 layout_init[] = {false};
7107   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7108   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param28, param29, layout}, {out7});
7109   // Phase 3, inputs and outputs
7110   model->identifyInputsAndOutputs(
7111     {in7},
7112     {out7});
7113   // Phase 4: set relaxed execution
7114   model->relaxComputationFloat32toFloat16(true);
7115   assert(model->isValid());
7116 }
7117 
is_ignored_shape_nhwc_relaxed_8(int i)7118 inline bool is_ignored_shape_nhwc_relaxed_8(int i) {
7119   static std::set<int> ignore = {};
7120   return ignore.find(i) != ignore.end();
7121 }
7122 
CreateModel_shape_nhwc_quant8_8(Model * model)7123 void CreateModel_shape_nhwc_quant8_8(Model *model) {
7124   OperandType type0(Type::BOOL, {});
7125   OperandType type3(Type::INT32, {});
7126   OperandType type58(Type::TENSOR_QUANT8_ASYMM, {2, 2, 2, 2}, 0.25f, 100);
7127   OperandType type59(Type::TENSOR_QUANT8_ASYMM, {2, 3, 3, 2}, 0.25f, 100);
7128   // Phase 1, operands
7129   auto in7 = model->addOperand(&type58);
7130   auto param28 = model->addOperand(&type3);
7131   auto param29 = model->addOperand(&type3);
7132   auto layout = model->addOperand(&type0);
7133   auto out7 = model->addOperand(&type59);
7134   // Phase 2, operations
7135   static int32_t param28_init[] = {3};
7136   model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
7137   static int32_t param29_init[] = {3};
7138   model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
7139   static bool8 layout_init[] = {false};
7140   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7141   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param28, param29, layout}, {out7});
7142   // Phase 3, inputs and outputs
7143   model->identifyInputsAndOutputs(
7144     {in7},
7145     {out7});
7146   assert(model->isValid());
7147 }
7148 
is_ignored_shape_nhwc_quant8_8(int i)7149 inline bool is_ignored_shape_nhwc_quant8_8(int i) {
7150   static std::set<int> ignore = {};
7151   return ignore.find(i) != ignore.end();
7152 }
7153 
CreateModel_shape_nhwc_float16_8(Model * model)7154 void CreateModel_shape_nhwc_float16_8(Model *model) {
7155   OperandType type0(Type::BOOL, {});
7156   OperandType type3(Type::INT32, {});
7157   OperandType type60(Type::TENSOR_FLOAT16, {2, 2, 2, 2});
7158   OperandType type61(Type::TENSOR_FLOAT16, {2, 3, 3, 2});
7159   // Phase 1, operands
7160   auto in7 = model->addOperand(&type60);
7161   auto param28 = model->addOperand(&type3);
7162   auto param29 = model->addOperand(&type3);
7163   auto layout = model->addOperand(&type0);
7164   auto out7 = model->addOperand(&type61);
7165   // Phase 2, operations
7166   static int32_t param28_init[] = {3};
7167   model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
7168   static int32_t param29_init[] = {3};
7169   model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
7170   static bool8 layout_init[] = {false};
7171   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7172   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param28, param29, layout}, {out7});
7173   // Phase 3, inputs and outputs
7174   model->identifyInputsAndOutputs(
7175     {in7},
7176     {out7});
7177   assert(model->isValid());
7178 }
7179 
is_ignored_shape_nhwc_float16_8(int i)7180 inline bool is_ignored_shape_nhwc_float16_8(int i) {
7181   static std::set<int> ignore = {};
7182   return ignore.find(i) != ignore.end();
7183 }
7184 
CreateModel_shape_nchw_8(Model * model)7185 void CreateModel_shape_nchw_8(Model *model) {
7186   OperandType type0(Type::BOOL, {});
7187   OperandType type3(Type::INT32, {});
7188   OperandType type62(Type::TENSOR_FLOAT32, {2, 2, 3, 3});
7189   OperandType type9(Type::TENSOR_FLOAT32, {2, 2, 2, 2});
7190   // Phase 1, operands
7191   auto in7 = model->addOperand(&type9);
7192   auto param28 = model->addOperand(&type3);
7193   auto param29 = model->addOperand(&type3);
7194   auto layout = model->addOperand(&type0);
7195   auto out7 = model->addOperand(&type62);
7196   // Phase 2, operations
7197   static int32_t param28_init[] = {3};
7198   model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
7199   static int32_t param29_init[] = {3};
7200   model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
7201   static bool8 layout_init[] = {true};
7202   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7203   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param28, param29, layout}, {out7});
7204   // Phase 3, inputs and outputs
7205   model->identifyInputsAndOutputs(
7206     {in7},
7207     {out7});
7208   assert(model->isValid());
7209 }
7210 
is_ignored_shape_nchw_8(int i)7211 inline bool is_ignored_shape_nchw_8(int i) {
7212   static std::set<int> ignore = {};
7213   return ignore.find(i) != ignore.end();
7214 }
7215 
CreateModel_shape_nchw_relaxed_8(Model * model)7216 void CreateModel_shape_nchw_relaxed_8(Model *model) {
7217   OperandType type0(Type::BOOL, {});
7218   OperandType type3(Type::INT32, {});
7219   OperandType type62(Type::TENSOR_FLOAT32, {2, 2, 3, 3});
7220   OperandType type9(Type::TENSOR_FLOAT32, {2, 2, 2, 2});
7221   // Phase 1, operands
7222   auto in7 = model->addOperand(&type9);
7223   auto param28 = model->addOperand(&type3);
7224   auto param29 = model->addOperand(&type3);
7225   auto layout = model->addOperand(&type0);
7226   auto out7 = model->addOperand(&type62);
7227   // Phase 2, operations
7228   static int32_t param28_init[] = {3};
7229   model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
7230   static int32_t param29_init[] = {3};
7231   model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
7232   static bool8 layout_init[] = {true};
7233   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7234   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param28, param29, layout}, {out7});
7235   // Phase 3, inputs and outputs
7236   model->identifyInputsAndOutputs(
7237     {in7},
7238     {out7});
7239   // Phase 4: set relaxed execution
7240   model->relaxComputationFloat32toFloat16(true);
7241   assert(model->isValid());
7242 }
7243 
is_ignored_shape_nchw_relaxed_8(int i)7244 inline bool is_ignored_shape_nchw_relaxed_8(int i) {
7245   static std::set<int> ignore = {};
7246   return ignore.find(i) != ignore.end();
7247 }
7248 
CreateModel_shape_nchw_quant8_8(Model * model)7249 void CreateModel_shape_nchw_quant8_8(Model *model) {
7250   OperandType type0(Type::BOOL, {});
7251   OperandType type3(Type::INT32, {});
7252   OperandType type58(Type::TENSOR_QUANT8_ASYMM, {2, 2, 2, 2}, 0.25f, 100);
7253   OperandType type63(Type::TENSOR_QUANT8_ASYMM, {2, 2, 3, 3}, 0.25f, 100);
7254   // Phase 1, operands
7255   auto in7 = model->addOperand(&type58);
7256   auto param28 = model->addOperand(&type3);
7257   auto param29 = model->addOperand(&type3);
7258   auto layout = model->addOperand(&type0);
7259   auto out7 = model->addOperand(&type63);
7260   // Phase 2, operations
7261   static int32_t param28_init[] = {3};
7262   model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
7263   static int32_t param29_init[] = {3};
7264   model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
7265   static bool8 layout_init[] = {true};
7266   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7267   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param28, param29, layout}, {out7});
7268   // Phase 3, inputs and outputs
7269   model->identifyInputsAndOutputs(
7270     {in7},
7271     {out7});
7272   assert(model->isValid());
7273 }
7274 
is_ignored_shape_nchw_quant8_8(int i)7275 inline bool is_ignored_shape_nchw_quant8_8(int i) {
7276   static std::set<int> ignore = {};
7277   return ignore.find(i) != ignore.end();
7278 }
7279 
CreateModel_shape_nchw_float16_8(Model * model)7280 void CreateModel_shape_nchw_float16_8(Model *model) {
7281   OperandType type0(Type::BOOL, {});
7282   OperandType type3(Type::INT32, {});
7283   OperandType type60(Type::TENSOR_FLOAT16, {2, 2, 2, 2});
7284   OperandType type64(Type::TENSOR_FLOAT16, {2, 2, 3, 3});
7285   // Phase 1, operands
7286   auto in7 = model->addOperand(&type60);
7287   auto param28 = model->addOperand(&type3);
7288   auto param29 = model->addOperand(&type3);
7289   auto layout = model->addOperand(&type0);
7290   auto out7 = model->addOperand(&type64);
7291   // Phase 2, operations
7292   static int32_t param28_init[] = {3};
7293   model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
7294   static int32_t param29_init[] = {3};
7295   model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
7296   static bool8 layout_init[] = {true};
7297   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7298   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param28, param29, layout}, {out7});
7299   // Phase 3, inputs and outputs
7300   model->identifyInputsAndOutputs(
7301     {in7},
7302     {out7});
7303   assert(model->isValid());
7304 }
7305 
is_ignored_shape_nchw_float16_8(int i)7306 inline bool is_ignored_shape_nchw_float16_8(int i) {
7307   static std::set<int> ignore = {};
7308   return ignore.find(i) != ignore.end();
7309 }
7310 
CreateModel_shape_dynamic_output_shape_nhwc_8(Model * model)7311 void CreateModel_shape_dynamic_output_shape_nhwc_8(Model *model) {
7312   OperandType type0(Type::BOOL, {});
7313   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
7314   OperandType type3(Type::INT32, {});
7315   OperandType type9(Type::TENSOR_FLOAT32, {2, 2, 2, 2});
7316   // Phase 1, operands
7317   auto in7 = model->addOperand(&type9);
7318   auto param28 = model->addOperand(&type3);
7319   auto param29 = model->addOperand(&type3);
7320   auto layout = model->addOperand(&type0);
7321   auto out7 = model->addOperand(&type26);
7322   // Phase 2, operations
7323   static int32_t param28_init[] = {3};
7324   model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
7325   static int32_t param29_init[] = {3};
7326   model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
7327   static bool8 layout_init[] = {false};
7328   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7329   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param28, param29, layout}, {out7});
7330   // Phase 3, inputs and outputs
7331   model->identifyInputsAndOutputs(
7332     {in7},
7333     {out7});
7334   assert(model->isValid());
7335 }
7336 
is_ignored_shape_dynamic_output_shape_nhwc_8(int i)7337 inline bool is_ignored_shape_dynamic_output_shape_nhwc_8(int i) {
7338   static std::set<int> ignore = {};
7339   return ignore.find(i) != ignore.end();
7340 }
7341 
CreateModel_shape_dynamic_output_shape_nhwc_relaxed_8(Model * model)7342 void CreateModel_shape_dynamic_output_shape_nhwc_relaxed_8(Model *model) {
7343   OperandType type0(Type::BOOL, {});
7344   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
7345   OperandType type3(Type::INT32, {});
7346   OperandType type9(Type::TENSOR_FLOAT32, {2, 2, 2, 2});
7347   // Phase 1, operands
7348   auto in7 = model->addOperand(&type9);
7349   auto param28 = model->addOperand(&type3);
7350   auto param29 = model->addOperand(&type3);
7351   auto layout = model->addOperand(&type0);
7352   auto out7 = model->addOperand(&type26);
7353   // Phase 2, operations
7354   static int32_t param28_init[] = {3};
7355   model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
7356   static int32_t param29_init[] = {3};
7357   model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
7358   static bool8 layout_init[] = {false};
7359   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7360   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param28, param29, layout}, {out7});
7361   // Phase 3, inputs and outputs
7362   model->identifyInputsAndOutputs(
7363     {in7},
7364     {out7});
7365   // Phase 4: set relaxed execution
7366   model->relaxComputationFloat32toFloat16(true);
7367   assert(model->isValid());
7368 }
7369 
is_ignored_shape_dynamic_output_shape_nhwc_relaxed_8(int i)7370 inline bool is_ignored_shape_dynamic_output_shape_nhwc_relaxed_8(int i) {
7371   static std::set<int> ignore = {};
7372   return ignore.find(i) != ignore.end();
7373 }
7374 
CreateModel_shape_dynamic_output_shape_nhwc_quant8_8(Model * model)7375 void CreateModel_shape_dynamic_output_shape_nhwc_quant8_8(Model *model) {
7376   OperandType type0(Type::BOOL, {});
7377   OperandType type3(Type::INT32, {});
7378   OperandType type42(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 100);
7379   OperandType type58(Type::TENSOR_QUANT8_ASYMM, {2, 2, 2, 2}, 0.25f, 100);
7380   // Phase 1, operands
7381   auto in7 = model->addOperand(&type58);
7382   auto param28 = model->addOperand(&type3);
7383   auto param29 = model->addOperand(&type3);
7384   auto layout = model->addOperand(&type0);
7385   auto out7 = model->addOperand(&type42);
7386   // Phase 2, operations
7387   static int32_t param28_init[] = {3};
7388   model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
7389   static int32_t param29_init[] = {3};
7390   model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
7391   static bool8 layout_init[] = {false};
7392   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7393   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param28, param29, layout}, {out7});
7394   // Phase 3, inputs and outputs
7395   model->identifyInputsAndOutputs(
7396     {in7},
7397     {out7});
7398   assert(model->isValid());
7399 }
7400 
is_ignored_shape_dynamic_output_shape_nhwc_quant8_8(int i)7401 inline bool is_ignored_shape_dynamic_output_shape_nhwc_quant8_8(int i) {
7402   static std::set<int> ignore = {};
7403   return ignore.find(i) != ignore.end();
7404 }
7405 
CreateModel_shape_dynamic_output_shape_nhwc_float16_8(Model * model)7406 void CreateModel_shape_dynamic_output_shape_nhwc_float16_8(Model *model) {
7407   OperandType type0(Type::BOOL, {});
7408   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
7409   OperandType type3(Type::INT32, {});
7410   OperandType type60(Type::TENSOR_FLOAT16, {2, 2, 2, 2});
7411   // Phase 1, operands
7412   auto in7 = model->addOperand(&type60);
7413   auto param28 = model->addOperand(&type3);
7414   auto param29 = model->addOperand(&type3);
7415   auto layout = model->addOperand(&type0);
7416   auto out7 = model->addOperand(&type28);
7417   // Phase 2, operations
7418   static int32_t param28_init[] = {3};
7419   model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
7420   static int32_t param29_init[] = {3};
7421   model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
7422   static bool8 layout_init[] = {false};
7423   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7424   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param28, param29, layout}, {out7});
7425   // Phase 3, inputs and outputs
7426   model->identifyInputsAndOutputs(
7427     {in7},
7428     {out7});
7429   assert(model->isValid());
7430 }
7431 
is_ignored_shape_dynamic_output_shape_nhwc_float16_8(int i)7432 inline bool is_ignored_shape_dynamic_output_shape_nhwc_float16_8(int i) {
7433   static std::set<int> ignore = {};
7434   return ignore.find(i) != ignore.end();
7435 }
7436 
CreateModel_shape_dynamic_output_shape_nchw_8(Model * model)7437 void CreateModel_shape_dynamic_output_shape_nchw_8(Model *model) {
7438   OperandType type0(Type::BOOL, {});
7439   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
7440   OperandType type3(Type::INT32, {});
7441   OperandType type9(Type::TENSOR_FLOAT32, {2, 2, 2, 2});
7442   // Phase 1, operands
7443   auto in7 = model->addOperand(&type9);
7444   auto param28 = model->addOperand(&type3);
7445   auto param29 = model->addOperand(&type3);
7446   auto layout = model->addOperand(&type0);
7447   auto out7 = model->addOperand(&type26);
7448   // Phase 2, operations
7449   static int32_t param28_init[] = {3};
7450   model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
7451   static int32_t param29_init[] = {3};
7452   model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
7453   static bool8 layout_init[] = {true};
7454   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7455   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param28, param29, layout}, {out7});
7456   // Phase 3, inputs and outputs
7457   model->identifyInputsAndOutputs(
7458     {in7},
7459     {out7});
7460   assert(model->isValid());
7461 }
7462 
is_ignored_shape_dynamic_output_shape_nchw_8(int i)7463 inline bool is_ignored_shape_dynamic_output_shape_nchw_8(int i) {
7464   static std::set<int> ignore = {};
7465   return ignore.find(i) != ignore.end();
7466 }
7467 
CreateModel_shape_dynamic_output_shape_nchw_relaxed_8(Model * model)7468 void CreateModel_shape_dynamic_output_shape_nchw_relaxed_8(Model *model) {
7469   OperandType type0(Type::BOOL, {});
7470   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
7471   OperandType type3(Type::INT32, {});
7472   OperandType type9(Type::TENSOR_FLOAT32, {2, 2, 2, 2});
7473   // Phase 1, operands
7474   auto in7 = model->addOperand(&type9);
7475   auto param28 = model->addOperand(&type3);
7476   auto param29 = model->addOperand(&type3);
7477   auto layout = model->addOperand(&type0);
7478   auto out7 = model->addOperand(&type26);
7479   // Phase 2, operations
7480   static int32_t param28_init[] = {3};
7481   model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
7482   static int32_t param29_init[] = {3};
7483   model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
7484   static bool8 layout_init[] = {true};
7485   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7486   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param28, param29, layout}, {out7});
7487   // Phase 3, inputs and outputs
7488   model->identifyInputsAndOutputs(
7489     {in7},
7490     {out7});
7491   // Phase 4: set relaxed execution
7492   model->relaxComputationFloat32toFloat16(true);
7493   assert(model->isValid());
7494 }
7495 
is_ignored_shape_dynamic_output_shape_nchw_relaxed_8(int i)7496 inline bool is_ignored_shape_dynamic_output_shape_nchw_relaxed_8(int i) {
7497   static std::set<int> ignore = {};
7498   return ignore.find(i) != ignore.end();
7499 }
7500 
CreateModel_shape_dynamic_output_shape_nchw_quant8_8(Model * model)7501 void CreateModel_shape_dynamic_output_shape_nchw_quant8_8(Model *model) {
7502   OperandType type0(Type::BOOL, {});
7503   OperandType type3(Type::INT32, {});
7504   OperandType type42(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 100);
7505   OperandType type58(Type::TENSOR_QUANT8_ASYMM, {2, 2, 2, 2}, 0.25f, 100);
7506   // Phase 1, operands
7507   auto in7 = model->addOperand(&type58);
7508   auto param28 = model->addOperand(&type3);
7509   auto param29 = model->addOperand(&type3);
7510   auto layout = model->addOperand(&type0);
7511   auto out7 = model->addOperand(&type42);
7512   // Phase 2, operations
7513   static int32_t param28_init[] = {3};
7514   model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
7515   static int32_t param29_init[] = {3};
7516   model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
7517   static bool8 layout_init[] = {true};
7518   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7519   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param28, param29, layout}, {out7});
7520   // Phase 3, inputs and outputs
7521   model->identifyInputsAndOutputs(
7522     {in7},
7523     {out7});
7524   assert(model->isValid());
7525 }
7526 
is_ignored_shape_dynamic_output_shape_nchw_quant8_8(int i)7527 inline bool is_ignored_shape_dynamic_output_shape_nchw_quant8_8(int i) {
7528   static std::set<int> ignore = {};
7529   return ignore.find(i) != ignore.end();
7530 }
7531 
CreateModel_shape_dynamic_output_shape_nchw_float16_8(Model * model)7532 void CreateModel_shape_dynamic_output_shape_nchw_float16_8(Model *model) {
7533   OperandType type0(Type::BOOL, {});
7534   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
7535   OperandType type3(Type::INT32, {});
7536   OperandType type60(Type::TENSOR_FLOAT16, {2, 2, 2, 2});
7537   // Phase 1, operands
7538   auto in7 = model->addOperand(&type60);
7539   auto param28 = model->addOperand(&type3);
7540   auto param29 = model->addOperand(&type3);
7541   auto layout = model->addOperand(&type0);
7542   auto out7 = model->addOperand(&type28);
7543   // Phase 2, operations
7544   static int32_t param28_init[] = {3};
7545   model->setOperandValue(param28, param28_init, sizeof(int32_t) * 1);
7546   static int32_t param29_init[] = {3};
7547   model->setOperandValue(param29, param29_init, sizeof(int32_t) * 1);
7548   static bool8 layout_init[] = {true};
7549   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7550   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param28, param29, layout}, {out7});
7551   // Phase 3, inputs and outputs
7552   model->identifyInputsAndOutputs(
7553     {in7},
7554     {out7});
7555   assert(model->isValid());
7556 }
7557 
is_ignored_shape_dynamic_output_shape_nchw_float16_8(int i)7558 inline bool is_ignored_shape_dynamic_output_shape_nchw_float16_8(int i) {
7559   static std::set<int> ignore = {};
7560   return ignore.find(i) != ignore.end();
7561 }
7562 
CreateModel_scale_nhwc_8(Model * model)7563 void CreateModel_scale_nhwc_8(Model *model) {
7564   OperandType type0(Type::BOOL, {});
7565   OperandType type10(Type::TENSOR_FLOAT32, {2, 3, 3, 2});
7566   OperandType type4(Type::FLOAT32, {});
7567   OperandType type9(Type::TENSOR_FLOAT32, {2, 2, 2, 2});
7568   // Phase 1, operands
7569   auto in7 = model->addOperand(&type9);
7570   auto param30 = model->addOperand(&type4);
7571   auto param31 = model->addOperand(&type4);
7572   auto layout = model->addOperand(&type0);
7573   auto out7 = model->addOperand(&type10);
7574   // Phase 2, operations
7575   static float param30_init[] = {1.6f};
7576   model->setOperandValue(param30, param30_init, sizeof(float) * 1);
7577   static float param31_init[] = {1.8f};
7578   model->setOperandValue(param31, param31_init, sizeof(float) * 1);
7579   static bool8 layout_init[] = {false};
7580   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7581   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param30, param31, layout}, {out7});
7582   // Phase 3, inputs and outputs
7583   model->identifyInputsAndOutputs(
7584     {in7},
7585     {out7});
7586   assert(model->isValid());
7587 }
7588 
is_ignored_scale_nhwc_8(int i)7589 inline bool is_ignored_scale_nhwc_8(int i) {
7590   static std::set<int> ignore = {};
7591   return ignore.find(i) != ignore.end();
7592 }
7593 
CreateModel_scale_nhwc_relaxed_8(Model * model)7594 void CreateModel_scale_nhwc_relaxed_8(Model *model) {
7595   OperandType type0(Type::BOOL, {});
7596   OperandType type10(Type::TENSOR_FLOAT32, {2, 3, 3, 2});
7597   OperandType type4(Type::FLOAT32, {});
7598   OperandType type9(Type::TENSOR_FLOAT32, {2, 2, 2, 2});
7599   // Phase 1, operands
7600   auto in7 = model->addOperand(&type9);
7601   auto param30 = model->addOperand(&type4);
7602   auto param31 = model->addOperand(&type4);
7603   auto layout = model->addOperand(&type0);
7604   auto out7 = model->addOperand(&type10);
7605   // Phase 2, operations
7606   static float param30_init[] = {1.6f};
7607   model->setOperandValue(param30, param30_init, sizeof(float) * 1);
7608   static float param31_init[] = {1.8f};
7609   model->setOperandValue(param31, param31_init, sizeof(float) * 1);
7610   static bool8 layout_init[] = {false};
7611   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7612   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param30, param31, layout}, {out7});
7613   // Phase 3, inputs and outputs
7614   model->identifyInputsAndOutputs(
7615     {in7},
7616     {out7});
7617   // Phase 4: set relaxed execution
7618   model->relaxComputationFloat32toFloat16(true);
7619   assert(model->isValid());
7620 }
7621 
is_ignored_scale_nhwc_relaxed_8(int i)7622 inline bool is_ignored_scale_nhwc_relaxed_8(int i) {
7623   static std::set<int> ignore = {};
7624   return ignore.find(i) != ignore.end();
7625 }
7626 
CreateModel_scale_nhwc_quant8_8(Model * model)7627 void CreateModel_scale_nhwc_quant8_8(Model *model) {
7628   OperandType type0(Type::BOOL, {});
7629   OperandType type4(Type::FLOAT32, {});
7630   OperandType type58(Type::TENSOR_QUANT8_ASYMM, {2, 2, 2, 2}, 0.25f, 100);
7631   OperandType type59(Type::TENSOR_QUANT8_ASYMM, {2, 3, 3, 2}, 0.25f, 100);
7632   // Phase 1, operands
7633   auto in7 = model->addOperand(&type58);
7634   auto param30 = model->addOperand(&type4);
7635   auto param31 = model->addOperand(&type4);
7636   auto layout = model->addOperand(&type0);
7637   auto out7 = model->addOperand(&type59);
7638   // Phase 2, operations
7639   static float param30_init[] = {1.6f};
7640   model->setOperandValue(param30, param30_init, sizeof(float) * 1);
7641   static float param31_init[] = {1.8f};
7642   model->setOperandValue(param31, param31_init, sizeof(float) * 1);
7643   static bool8 layout_init[] = {false};
7644   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7645   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param30, param31, layout}, {out7});
7646   // Phase 3, inputs and outputs
7647   model->identifyInputsAndOutputs(
7648     {in7},
7649     {out7});
7650   assert(model->isValid());
7651 }
7652 
is_ignored_scale_nhwc_quant8_8(int i)7653 inline bool is_ignored_scale_nhwc_quant8_8(int i) {
7654   static std::set<int> ignore = {};
7655   return ignore.find(i) != ignore.end();
7656 }
7657 
CreateModel_scale_nhwc_float16_8(Model * model)7658 void CreateModel_scale_nhwc_float16_8(Model *model) {
7659   OperandType type0(Type::BOOL, {});
7660   OperandType type29(Type::FLOAT16, {});
7661   OperandType type60(Type::TENSOR_FLOAT16, {2, 2, 2, 2});
7662   OperandType type61(Type::TENSOR_FLOAT16, {2, 3, 3, 2});
7663   // Phase 1, operands
7664   auto in7 = model->addOperand(&type60);
7665   auto param30 = model->addOperand(&type29);
7666   auto param31 = model->addOperand(&type29);
7667   auto layout = model->addOperand(&type0);
7668   auto out7 = model->addOperand(&type61);
7669   // Phase 2, operations
7670   static _Float16 param30_init[] = {1.600000023841858f};
7671   model->setOperandValue(param30, param30_init, sizeof(_Float16) * 1);
7672   static _Float16 param31_init[] = {1.7999999523162842f};
7673   model->setOperandValue(param31, param31_init, sizeof(_Float16) * 1);
7674   static bool8 layout_init[] = {false};
7675   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7676   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param30, param31, layout}, {out7});
7677   // Phase 3, inputs and outputs
7678   model->identifyInputsAndOutputs(
7679     {in7},
7680     {out7});
7681   assert(model->isValid());
7682 }
7683 
is_ignored_scale_nhwc_float16_8(int i)7684 inline bool is_ignored_scale_nhwc_float16_8(int i) {
7685   static std::set<int> ignore = {};
7686   return ignore.find(i) != ignore.end();
7687 }
7688 
CreateModel_scale_nchw_8(Model * model)7689 void CreateModel_scale_nchw_8(Model *model) {
7690   OperandType type0(Type::BOOL, {});
7691   OperandType type4(Type::FLOAT32, {});
7692   OperandType type62(Type::TENSOR_FLOAT32, {2, 2, 3, 3});
7693   OperandType type9(Type::TENSOR_FLOAT32, {2, 2, 2, 2});
7694   // Phase 1, operands
7695   auto in7 = model->addOperand(&type9);
7696   auto param30 = model->addOperand(&type4);
7697   auto param31 = model->addOperand(&type4);
7698   auto layout = model->addOperand(&type0);
7699   auto out7 = model->addOperand(&type62);
7700   // Phase 2, operations
7701   static float param30_init[] = {1.6f};
7702   model->setOperandValue(param30, param30_init, sizeof(float) * 1);
7703   static float param31_init[] = {1.8f};
7704   model->setOperandValue(param31, param31_init, sizeof(float) * 1);
7705   static bool8 layout_init[] = {true};
7706   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7707   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param30, param31, layout}, {out7});
7708   // Phase 3, inputs and outputs
7709   model->identifyInputsAndOutputs(
7710     {in7},
7711     {out7});
7712   assert(model->isValid());
7713 }
7714 
is_ignored_scale_nchw_8(int i)7715 inline bool is_ignored_scale_nchw_8(int i) {
7716   static std::set<int> ignore = {};
7717   return ignore.find(i) != ignore.end();
7718 }
7719 
CreateModel_scale_nchw_relaxed_8(Model * model)7720 void CreateModel_scale_nchw_relaxed_8(Model *model) {
7721   OperandType type0(Type::BOOL, {});
7722   OperandType type4(Type::FLOAT32, {});
7723   OperandType type62(Type::TENSOR_FLOAT32, {2, 2, 3, 3});
7724   OperandType type9(Type::TENSOR_FLOAT32, {2, 2, 2, 2});
7725   // Phase 1, operands
7726   auto in7 = model->addOperand(&type9);
7727   auto param30 = model->addOperand(&type4);
7728   auto param31 = model->addOperand(&type4);
7729   auto layout = model->addOperand(&type0);
7730   auto out7 = model->addOperand(&type62);
7731   // Phase 2, operations
7732   static float param30_init[] = {1.6f};
7733   model->setOperandValue(param30, param30_init, sizeof(float) * 1);
7734   static float param31_init[] = {1.8f};
7735   model->setOperandValue(param31, param31_init, sizeof(float) * 1);
7736   static bool8 layout_init[] = {true};
7737   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7738   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param30, param31, layout}, {out7});
7739   // Phase 3, inputs and outputs
7740   model->identifyInputsAndOutputs(
7741     {in7},
7742     {out7});
7743   // Phase 4: set relaxed execution
7744   model->relaxComputationFloat32toFloat16(true);
7745   assert(model->isValid());
7746 }
7747 
is_ignored_scale_nchw_relaxed_8(int i)7748 inline bool is_ignored_scale_nchw_relaxed_8(int i) {
7749   static std::set<int> ignore = {};
7750   return ignore.find(i) != ignore.end();
7751 }
7752 
CreateModel_scale_nchw_quant8_8(Model * model)7753 void CreateModel_scale_nchw_quant8_8(Model *model) {
7754   OperandType type0(Type::BOOL, {});
7755   OperandType type4(Type::FLOAT32, {});
7756   OperandType type58(Type::TENSOR_QUANT8_ASYMM, {2, 2, 2, 2}, 0.25f, 100);
7757   OperandType type63(Type::TENSOR_QUANT8_ASYMM, {2, 2, 3, 3}, 0.25f, 100);
7758   // Phase 1, operands
7759   auto in7 = model->addOperand(&type58);
7760   auto param30 = model->addOperand(&type4);
7761   auto param31 = model->addOperand(&type4);
7762   auto layout = model->addOperand(&type0);
7763   auto out7 = model->addOperand(&type63);
7764   // Phase 2, operations
7765   static float param30_init[] = {1.6f};
7766   model->setOperandValue(param30, param30_init, sizeof(float) * 1);
7767   static float param31_init[] = {1.8f};
7768   model->setOperandValue(param31, param31_init, sizeof(float) * 1);
7769   static bool8 layout_init[] = {true};
7770   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7771   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param30, param31, layout}, {out7});
7772   // Phase 3, inputs and outputs
7773   model->identifyInputsAndOutputs(
7774     {in7},
7775     {out7});
7776   assert(model->isValid());
7777 }
7778 
is_ignored_scale_nchw_quant8_8(int i)7779 inline bool is_ignored_scale_nchw_quant8_8(int i) {
7780   static std::set<int> ignore = {};
7781   return ignore.find(i) != ignore.end();
7782 }
7783 
CreateModel_scale_nchw_float16_8(Model * model)7784 void CreateModel_scale_nchw_float16_8(Model *model) {
7785   OperandType type0(Type::BOOL, {});
7786   OperandType type29(Type::FLOAT16, {});
7787   OperandType type60(Type::TENSOR_FLOAT16, {2, 2, 2, 2});
7788   OperandType type64(Type::TENSOR_FLOAT16, {2, 2, 3, 3});
7789   // Phase 1, operands
7790   auto in7 = model->addOperand(&type60);
7791   auto param30 = model->addOperand(&type29);
7792   auto param31 = model->addOperand(&type29);
7793   auto layout = model->addOperand(&type0);
7794   auto out7 = model->addOperand(&type64);
7795   // Phase 2, operations
7796   static _Float16 param30_init[] = {1.600000023841858f};
7797   model->setOperandValue(param30, param30_init, sizeof(_Float16) * 1);
7798   static _Float16 param31_init[] = {1.7999999523162842f};
7799   model->setOperandValue(param31, param31_init, sizeof(_Float16) * 1);
7800   static bool8 layout_init[] = {true};
7801   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7802   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param30, param31, layout}, {out7});
7803   // Phase 3, inputs and outputs
7804   model->identifyInputsAndOutputs(
7805     {in7},
7806     {out7});
7807   assert(model->isValid());
7808 }
7809 
is_ignored_scale_nchw_float16_8(int i)7810 inline bool is_ignored_scale_nchw_float16_8(int i) {
7811   static std::set<int> ignore = {};
7812   return ignore.find(i) != ignore.end();
7813 }
7814 
CreateModel_scale_dynamic_output_shape_nhwc_8(Model * model)7815 void CreateModel_scale_dynamic_output_shape_nhwc_8(Model *model) {
7816   OperandType type0(Type::BOOL, {});
7817   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
7818   OperandType type4(Type::FLOAT32, {});
7819   OperandType type9(Type::TENSOR_FLOAT32, {2, 2, 2, 2});
7820   // Phase 1, operands
7821   auto in7 = model->addOperand(&type9);
7822   auto param30 = model->addOperand(&type4);
7823   auto param31 = model->addOperand(&type4);
7824   auto layout = model->addOperand(&type0);
7825   auto out7 = model->addOperand(&type26);
7826   // Phase 2, operations
7827   static float param30_init[] = {1.6f};
7828   model->setOperandValue(param30, param30_init, sizeof(float) * 1);
7829   static float param31_init[] = {1.8f};
7830   model->setOperandValue(param31, param31_init, sizeof(float) * 1);
7831   static bool8 layout_init[] = {false};
7832   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7833   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param30, param31, layout}, {out7});
7834   // Phase 3, inputs and outputs
7835   model->identifyInputsAndOutputs(
7836     {in7},
7837     {out7});
7838   assert(model->isValid());
7839 }
7840 
is_ignored_scale_dynamic_output_shape_nhwc_8(int i)7841 inline bool is_ignored_scale_dynamic_output_shape_nhwc_8(int i) {
7842   static std::set<int> ignore = {};
7843   return ignore.find(i) != ignore.end();
7844 }
7845 
CreateModel_scale_dynamic_output_shape_nhwc_relaxed_8(Model * model)7846 void CreateModel_scale_dynamic_output_shape_nhwc_relaxed_8(Model *model) {
7847   OperandType type0(Type::BOOL, {});
7848   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
7849   OperandType type4(Type::FLOAT32, {});
7850   OperandType type9(Type::TENSOR_FLOAT32, {2, 2, 2, 2});
7851   // Phase 1, operands
7852   auto in7 = model->addOperand(&type9);
7853   auto param30 = model->addOperand(&type4);
7854   auto param31 = model->addOperand(&type4);
7855   auto layout = model->addOperand(&type0);
7856   auto out7 = model->addOperand(&type26);
7857   // Phase 2, operations
7858   static float param30_init[] = {1.6f};
7859   model->setOperandValue(param30, param30_init, sizeof(float) * 1);
7860   static float param31_init[] = {1.8f};
7861   model->setOperandValue(param31, param31_init, sizeof(float) * 1);
7862   static bool8 layout_init[] = {false};
7863   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7864   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param30, param31, layout}, {out7});
7865   // Phase 3, inputs and outputs
7866   model->identifyInputsAndOutputs(
7867     {in7},
7868     {out7});
7869   // Phase 4: set relaxed execution
7870   model->relaxComputationFloat32toFloat16(true);
7871   assert(model->isValid());
7872 }
7873 
is_ignored_scale_dynamic_output_shape_nhwc_relaxed_8(int i)7874 inline bool is_ignored_scale_dynamic_output_shape_nhwc_relaxed_8(int i) {
7875   static std::set<int> ignore = {};
7876   return ignore.find(i) != ignore.end();
7877 }
7878 
CreateModel_scale_dynamic_output_shape_nhwc_quant8_8(Model * model)7879 void CreateModel_scale_dynamic_output_shape_nhwc_quant8_8(Model *model) {
7880   OperandType type0(Type::BOOL, {});
7881   OperandType type4(Type::FLOAT32, {});
7882   OperandType type42(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 100);
7883   OperandType type58(Type::TENSOR_QUANT8_ASYMM, {2, 2, 2, 2}, 0.25f, 100);
7884   // Phase 1, operands
7885   auto in7 = model->addOperand(&type58);
7886   auto param30 = model->addOperand(&type4);
7887   auto param31 = model->addOperand(&type4);
7888   auto layout = model->addOperand(&type0);
7889   auto out7 = model->addOperand(&type42);
7890   // Phase 2, operations
7891   static float param30_init[] = {1.6f};
7892   model->setOperandValue(param30, param30_init, sizeof(float) * 1);
7893   static float param31_init[] = {1.8f};
7894   model->setOperandValue(param31, param31_init, sizeof(float) * 1);
7895   static bool8 layout_init[] = {false};
7896   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7897   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param30, param31, layout}, {out7});
7898   // Phase 3, inputs and outputs
7899   model->identifyInputsAndOutputs(
7900     {in7},
7901     {out7});
7902   assert(model->isValid());
7903 }
7904 
is_ignored_scale_dynamic_output_shape_nhwc_quant8_8(int i)7905 inline bool is_ignored_scale_dynamic_output_shape_nhwc_quant8_8(int i) {
7906   static std::set<int> ignore = {};
7907   return ignore.find(i) != ignore.end();
7908 }
7909 
CreateModel_scale_dynamic_output_shape_nhwc_float16_8(Model * model)7910 void CreateModel_scale_dynamic_output_shape_nhwc_float16_8(Model *model) {
7911   OperandType type0(Type::BOOL, {});
7912   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
7913   OperandType type29(Type::FLOAT16, {});
7914   OperandType type60(Type::TENSOR_FLOAT16, {2, 2, 2, 2});
7915   // Phase 1, operands
7916   auto in7 = model->addOperand(&type60);
7917   auto param30 = model->addOperand(&type29);
7918   auto param31 = model->addOperand(&type29);
7919   auto layout = model->addOperand(&type0);
7920   auto out7 = model->addOperand(&type28);
7921   // Phase 2, operations
7922   static _Float16 param30_init[] = {1.600000023841858f};
7923   model->setOperandValue(param30, param30_init, sizeof(_Float16) * 1);
7924   static _Float16 param31_init[] = {1.7999999523162842f};
7925   model->setOperandValue(param31, param31_init, sizeof(_Float16) * 1);
7926   static bool8 layout_init[] = {false};
7927   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7928   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param30, param31, layout}, {out7});
7929   // Phase 3, inputs and outputs
7930   model->identifyInputsAndOutputs(
7931     {in7},
7932     {out7});
7933   assert(model->isValid());
7934 }
7935 
is_ignored_scale_dynamic_output_shape_nhwc_float16_8(int i)7936 inline bool is_ignored_scale_dynamic_output_shape_nhwc_float16_8(int i) {
7937   static std::set<int> ignore = {};
7938   return ignore.find(i) != ignore.end();
7939 }
7940 
CreateModel_scale_dynamic_output_shape_nchw_8(Model * model)7941 void CreateModel_scale_dynamic_output_shape_nchw_8(Model *model) {
7942   OperandType type0(Type::BOOL, {});
7943   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
7944   OperandType type4(Type::FLOAT32, {});
7945   OperandType type9(Type::TENSOR_FLOAT32, {2, 2, 2, 2});
7946   // Phase 1, operands
7947   auto in7 = model->addOperand(&type9);
7948   auto param30 = model->addOperand(&type4);
7949   auto param31 = model->addOperand(&type4);
7950   auto layout = model->addOperand(&type0);
7951   auto out7 = model->addOperand(&type26);
7952   // Phase 2, operations
7953   static float param30_init[] = {1.6f};
7954   model->setOperandValue(param30, param30_init, sizeof(float) * 1);
7955   static float param31_init[] = {1.8f};
7956   model->setOperandValue(param31, param31_init, sizeof(float) * 1);
7957   static bool8 layout_init[] = {true};
7958   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7959   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param30, param31, layout}, {out7});
7960   // Phase 3, inputs and outputs
7961   model->identifyInputsAndOutputs(
7962     {in7},
7963     {out7});
7964   assert(model->isValid());
7965 }
7966 
is_ignored_scale_dynamic_output_shape_nchw_8(int i)7967 inline bool is_ignored_scale_dynamic_output_shape_nchw_8(int i) {
7968   static std::set<int> ignore = {};
7969   return ignore.find(i) != ignore.end();
7970 }
7971 
CreateModel_scale_dynamic_output_shape_nchw_relaxed_8(Model * model)7972 void CreateModel_scale_dynamic_output_shape_nchw_relaxed_8(Model *model) {
7973   OperandType type0(Type::BOOL, {});
7974   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
7975   OperandType type4(Type::FLOAT32, {});
7976   OperandType type9(Type::TENSOR_FLOAT32, {2, 2, 2, 2});
7977   // Phase 1, operands
7978   auto in7 = model->addOperand(&type9);
7979   auto param30 = model->addOperand(&type4);
7980   auto param31 = model->addOperand(&type4);
7981   auto layout = model->addOperand(&type0);
7982   auto out7 = model->addOperand(&type26);
7983   // Phase 2, operations
7984   static float param30_init[] = {1.6f};
7985   model->setOperandValue(param30, param30_init, sizeof(float) * 1);
7986   static float param31_init[] = {1.8f};
7987   model->setOperandValue(param31, param31_init, sizeof(float) * 1);
7988   static bool8 layout_init[] = {true};
7989   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
7990   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param30, param31, layout}, {out7});
7991   // Phase 3, inputs and outputs
7992   model->identifyInputsAndOutputs(
7993     {in7},
7994     {out7});
7995   // Phase 4: set relaxed execution
7996   model->relaxComputationFloat32toFloat16(true);
7997   assert(model->isValid());
7998 }
7999 
is_ignored_scale_dynamic_output_shape_nchw_relaxed_8(int i)8000 inline bool is_ignored_scale_dynamic_output_shape_nchw_relaxed_8(int i) {
8001   static std::set<int> ignore = {};
8002   return ignore.find(i) != ignore.end();
8003 }
8004 
CreateModel_scale_dynamic_output_shape_nchw_quant8_8(Model * model)8005 void CreateModel_scale_dynamic_output_shape_nchw_quant8_8(Model *model) {
8006   OperandType type0(Type::BOOL, {});
8007   OperandType type4(Type::FLOAT32, {});
8008   OperandType type42(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.25f, 100);
8009   OperandType type58(Type::TENSOR_QUANT8_ASYMM, {2, 2, 2, 2}, 0.25f, 100);
8010   // Phase 1, operands
8011   auto in7 = model->addOperand(&type58);
8012   auto param30 = model->addOperand(&type4);
8013   auto param31 = model->addOperand(&type4);
8014   auto layout = model->addOperand(&type0);
8015   auto out7 = model->addOperand(&type42);
8016   // Phase 2, operations
8017   static float param30_init[] = {1.6f};
8018   model->setOperandValue(param30, param30_init, sizeof(float) * 1);
8019   static float param31_init[] = {1.8f};
8020   model->setOperandValue(param31, param31_init, sizeof(float) * 1);
8021   static bool8 layout_init[] = {true};
8022   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
8023   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param30, param31, layout}, {out7});
8024   // Phase 3, inputs and outputs
8025   model->identifyInputsAndOutputs(
8026     {in7},
8027     {out7});
8028   assert(model->isValid());
8029 }
8030 
is_ignored_scale_dynamic_output_shape_nchw_quant8_8(int i)8031 inline bool is_ignored_scale_dynamic_output_shape_nchw_quant8_8(int i) {
8032   static std::set<int> ignore = {};
8033   return ignore.find(i) != ignore.end();
8034 }
8035 
CreateModel_scale_dynamic_output_shape_nchw_float16_8(Model * model)8036 void CreateModel_scale_dynamic_output_shape_nchw_float16_8(Model *model) {
8037   OperandType type0(Type::BOOL, {});
8038   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
8039   OperandType type29(Type::FLOAT16, {});
8040   OperandType type60(Type::TENSOR_FLOAT16, {2, 2, 2, 2});
8041   // Phase 1, operands
8042   auto in7 = model->addOperand(&type60);
8043   auto param30 = model->addOperand(&type29);
8044   auto param31 = model->addOperand(&type29);
8045   auto layout = model->addOperand(&type0);
8046   auto out7 = model->addOperand(&type28);
8047   // Phase 2, operations
8048   static _Float16 param30_init[] = {1.600000023841858f};
8049   model->setOperandValue(param30, param30_init, sizeof(_Float16) * 1);
8050   static _Float16 param31_init[] = {1.7999999523162842f};
8051   model->setOperandValue(param31, param31_init, sizeof(_Float16) * 1);
8052   static bool8 layout_init[] = {true};
8053   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
8054   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {in7, param30, param31, layout}, {out7});
8055   // Phase 3, inputs and outputs
8056   model->identifyInputsAndOutputs(
8057     {in7},
8058     {out7});
8059   assert(model->isValid());
8060 }
8061 
is_ignored_scale_dynamic_output_shape_nchw_float16_8(int i)8062 inline bool is_ignored_scale_dynamic_output_shape_nchw_float16_8(int i) {
8063   static std::set<int> ignore = {};
8064   return ignore.find(i) != ignore.end();
8065 }
8066 
CreateModel_zero_sized_nhwc(Model * model)8067 void CreateModel_zero_sized_nhwc(Model *model) {
8068   OperandType type0(Type::BOOL, {});
8069   OperandType type11(Type::TENSOR_FLOAT32, {1, 2});
8070   OperandType type12(Type::TENSOR_FLOAT32, {1, 8});
8071   OperandType type13(Type::TENSOR_FLOAT32, {0});
8072   OperandType type14(Type::TENSOR_INT32, {0});
8073   OperandType type15(Type::TENSOR_FLOAT32, {0, 4});
8074   OperandType type16(Type::TENSOR_INT32, {1});
8075   OperandType type17(Type::TENSOR_FLOAT32, {0, 2, 2, 1});
8076   OperandType type18(Type::TENSOR_FLOAT32, {0, 3, 3, 1});
8077   OperandType type2(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
8078   OperandType type3(Type::INT32, {});
8079   OperandType type4(Type::FLOAT32, {});
8080   // Phase 1, operands
8081   auto scores = model->addOperand(&type11);
8082   auto roi = model->addOperand(&type12);
8083   auto param32 = model->addOperand(&type16);
8084   auto param33 = model->addOperand(&type4);
8085   auto param34 = model->addOperand(&type3);
8086   auto param35 = model->addOperand(&type3);
8087   auto param36 = model->addOperand(&type4);
8088   auto param37 = model->addOperand(&type4);
8089   auto param38 = model->addOperand(&type4);
8090   auto scoresOut = model->addOperand(&type13);
8091   auto roiOut = model->addOperand(&type15);
8092   auto classesOut = model->addOperand(&type14);
8093   auto batchSplitOut = model->addOperand(&type14);
8094   auto in8 = model->addOperand(&type2);
8095   auto param39 = model->addOperand(&type3);
8096   auto param40 = model->addOperand(&type3);
8097   auto param41 = model->addOperand(&type4);
8098   auto param42 = model->addOperand(&type4);
8099   auto param43 = model->addOperand(&type3);
8100   auto param44 = model->addOperand(&type3);
8101   auto layout = model->addOperand(&type0);
8102   auto featureMap = model->addOperand(&type17);
8103   auto param45 = model->addOperand(&type3);
8104   auto param46 = model->addOperand(&type3);
8105   auto out8 = model->addOperand(&type18);
8106   // Phase 2, operations
8107   static float scores_init[] = {0.9f, 0.1f};
8108   model->setOperandValue(scores, scores_init, sizeof(float) * 2);
8109   static float roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
8110   model->setOperandValue(roi, roi_init, sizeof(float) * 8);
8111   static int32_t param32_init[] = {0};
8112   model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
8113   static float param33_init[] = {0.3f};
8114   model->setOperandValue(param33, param33_init, sizeof(float) * 1);
8115   static int32_t param34_init[] = {-1};
8116   model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
8117   static int32_t param35_init[] = {0};
8118   model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
8119   static float param36_init[] = {0.4f};
8120   model->setOperandValue(param36, param36_init, sizeof(float) * 1);
8121   static float param37_init[] = {1.0f};
8122   model->setOperandValue(param37, param37_init, sizeof(float) * 1);
8123   static float param38_init[] = {0.3f};
8124   model->setOperandValue(param38, param38_init, sizeof(float) * 1);
8125   static int32_t param39_init[] = {2};
8126   model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
8127   static int32_t param40_init[] = {2};
8128   model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
8129   static float param41_init[] = {2.0f};
8130   model->setOperandValue(param41, param41_init, sizeof(float) * 1);
8131   static float param42_init[] = {2.0f};
8132   model->setOperandValue(param42, param42_init, sizeof(float) * 1);
8133   static int32_t param43_init[] = {4};
8134   model->setOperandValue(param43, param43_init, sizeof(int32_t) * 1);
8135   static int32_t param44_init[] = {4};
8136   model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
8137   static bool8 layout_init[] = {false};
8138   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
8139   static int32_t param45_init[] = {3};
8140   model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
8141   static int32_t param46_init[] = {3};
8142   model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
8143   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param32, param33, param34, param35, param36, param37, param38}, {scoresOut, roiOut, classesOut, batchSplitOut});
8144   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in8, roiOut, batchSplitOut, param39, param40, param41, param42, param43, param44, layout}, {featureMap});
8145   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap, param45, param46, layout}, {out8});
8146   // Phase 3, inputs and outputs
8147   model->identifyInputsAndOutputs(
8148     {in8},
8149     {scoresOut, classesOut, out8});
8150   assert(model->isValid());
8151 }
8152 
is_ignored_zero_sized_nhwc(int i)8153 inline bool is_ignored_zero_sized_nhwc(int i) {
8154   static std::set<int> ignore = {};
8155   return ignore.find(i) != ignore.end();
8156 }
8157 
CreateModel_zero_sized_nhwc_relaxed(Model * model)8158 void CreateModel_zero_sized_nhwc_relaxed(Model *model) {
8159   OperandType type0(Type::BOOL, {});
8160   OperandType type11(Type::TENSOR_FLOAT32, {1, 2});
8161   OperandType type12(Type::TENSOR_FLOAT32, {1, 8});
8162   OperandType type13(Type::TENSOR_FLOAT32, {0});
8163   OperandType type14(Type::TENSOR_INT32, {0});
8164   OperandType type15(Type::TENSOR_FLOAT32, {0, 4});
8165   OperandType type16(Type::TENSOR_INT32, {1});
8166   OperandType type17(Type::TENSOR_FLOAT32, {0, 2, 2, 1});
8167   OperandType type18(Type::TENSOR_FLOAT32, {0, 3, 3, 1});
8168   OperandType type2(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
8169   OperandType type3(Type::INT32, {});
8170   OperandType type4(Type::FLOAT32, {});
8171   // Phase 1, operands
8172   auto scores = model->addOperand(&type11);
8173   auto roi = model->addOperand(&type12);
8174   auto param32 = model->addOperand(&type16);
8175   auto param33 = model->addOperand(&type4);
8176   auto param34 = model->addOperand(&type3);
8177   auto param35 = model->addOperand(&type3);
8178   auto param36 = model->addOperand(&type4);
8179   auto param37 = model->addOperand(&type4);
8180   auto param38 = model->addOperand(&type4);
8181   auto scoresOut = model->addOperand(&type13);
8182   auto roiOut = model->addOperand(&type15);
8183   auto classesOut = model->addOperand(&type14);
8184   auto batchSplitOut = model->addOperand(&type14);
8185   auto in8 = model->addOperand(&type2);
8186   auto param39 = model->addOperand(&type3);
8187   auto param40 = model->addOperand(&type3);
8188   auto param41 = model->addOperand(&type4);
8189   auto param42 = model->addOperand(&type4);
8190   auto param43 = model->addOperand(&type3);
8191   auto param44 = model->addOperand(&type3);
8192   auto layout = model->addOperand(&type0);
8193   auto featureMap = model->addOperand(&type17);
8194   auto param45 = model->addOperand(&type3);
8195   auto param46 = model->addOperand(&type3);
8196   auto out8 = model->addOperand(&type18);
8197   // Phase 2, operations
8198   static float scores_init[] = {0.9f, 0.1f};
8199   model->setOperandValue(scores, scores_init, sizeof(float) * 2);
8200   static float roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
8201   model->setOperandValue(roi, roi_init, sizeof(float) * 8);
8202   static int32_t param32_init[] = {0};
8203   model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
8204   static float param33_init[] = {0.3f};
8205   model->setOperandValue(param33, param33_init, sizeof(float) * 1);
8206   static int32_t param34_init[] = {-1};
8207   model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
8208   static int32_t param35_init[] = {0};
8209   model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
8210   static float param36_init[] = {0.4f};
8211   model->setOperandValue(param36, param36_init, sizeof(float) * 1);
8212   static float param37_init[] = {1.0f};
8213   model->setOperandValue(param37, param37_init, sizeof(float) * 1);
8214   static float param38_init[] = {0.3f};
8215   model->setOperandValue(param38, param38_init, sizeof(float) * 1);
8216   static int32_t param39_init[] = {2};
8217   model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
8218   static int32_t param40_init[] = {2};
8219   model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
8220   static float param41_init[] = {2.0f};
8221   model->setOperandValue(param41, param41_init, sizeof(float) * 1);
8222   static float param42_init[] = {2.0f};
8223   model->setOperandValue(param42, param42_init, sizeof(float) * 1);
8224   static int32_t param43_init[] = {4};
8225   model->setOperandValue(param43, param43_init, sizeof(int32_t) * 1);
8226   static int32_t param44_init[] = {4};
8227   model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
8228   static bool8 layout_init[] = {false};
8229   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
8230   static int32_t param45_init[] = {3};
8231   model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
8232   static int32_t param46_init[] = {3};
8233   model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
8234   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param32, param33, param34, param35, param36, param37, param38}, {scoresOut, roiOut, classesOut, batchSplitOut});
8235   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in8, roiOut, batchSplitOut, param39, param40, param41, param42, param43, param44, layout}, {featureMap});
8236   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap, param45, param46, layout}, {out8});
8237   // Phase 3, inputs and outputs
8238   model->identifyInputsAndOutputs(
8239     {in8},
8240     {scoresOut, classesOut, out8});
8241   // Phase 4: set relaxed execution
8242   model->relaxComputationFloat32toFloat16(true);
8243   assert(model->isValid());
8244 }
8245 
is_ignored_zero_sized_nhwc_relaxed(int i)8246 inline bool is_ignored_zero_sized_nhwc_relaxed(int i) {
8247   static std::set<int> ignore = {};
8248   return ignore.find(i) != ignore.end();
8249 }
8250 
CreateModel_zero_sized_nhwc_quant8(Model * model)8251 void CreateModel_zero_sized_nhwc_quant8(Model *model) {
8252   OperandType type0(Type::BOOL, {});
8253   OperandType type14(Type::TENSOR_INT32, {0});
8254   OperandType type16(Type::TENSOR_INT32, {1});
8255   OperandType type3(Type::INT32, {});
8256   OperandType type4(Type::FLOAT32, {});
8257   OperandType type65(Type::TENSOR_QUANT8_ASYMM, {0, 2, 2, 1}, 0.1f, 128);
8258   OperandType type66(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 1}, 0.1f, 128);
8259   OperandType type67(Type::TENSOR_QUANT8_ASYMM, {0, 3, 3, 1}, 0.1f, 128);
8260   OperandType type68(Type::TENSOR_QUANT16_ASYMM, {1, 8}, 0.125f, 0);
8261   OperandType type69(Type::TENSOR_QUANT16_ASYMM, {0, 4}, 0.125f, 0);
8262   OperandType type70(Type::TENSOR_QUANT8_ASYMM, {1, 2}, 0.1f, 128);
8263   OperandType type71(Type::TENSOR_QUANT8_ASYMM, {0}, 0.1f, 128);
8264   // Phase 1, operands
8265   auto scores = model->addOperand(&type70);
8266   auto roi = model->addOperand(&type68);
8267   auto param32 = model->addOperand(&type16);
8268   auto param33 = model->addOperand(&type4);
8269   auto param34 = model->addOperand(&type3);
8270   auto param35 = model->addOperand(&type3);
8271   auto param36 = model->addOperand(&type4);
8272   auto param37 = model->addOperand(&type4);
8273   auto param38 = model->addOperand(&type4);
8274   auto scoresOut = model->addOperand(&type71);
8275   auto roiOut = model->addOperand(&type69);
8276   auto classesOut = model->addOperand(&type14);
8277   auto batchSplitOut = model->addOperand(&type14);
8278   auto in8 = model->addOperand(&type66);
8279   auto param39 = model->addOperand(&type3);
8280   auto param40 = model->addOperand(&type3);
8281   auto param41 = model->addOperand(&type4);
8282   auto param42 = model->addOperand(&type4);
8283   auto param43 = model->addOperand(&type3);
8284   auto param44 = model->addOperand(&type3);
8285   auto layout = model->addOperand(&type0);
8286   auto featureMap = model->addOperand(&type65);
8287   auto param45 = model->addOperand(&type3);
8288   auto param46 = model->addOperand(&type3);
8289   auto out8 = model->addOperand(&type67);
8290   // Phase 2, operations
8291   static uint8_t scores_init[] = {137, 129};
8292   model->setOperandValue(scores, scores_init, sizeof(uint8_t) * 2);
8293   static uint16_t roi_init[] = {8, 8, 80, 80, 0, 0, 80, 80};
8294   model->setOperandValue(roi, roi_init, sizeof(uint16_t) * 8);
8295   static int32_t param32_init[] = {0};
8296   model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
8297   static float param33_init[] = {0.3f};
8298   model->setOperandValue(param33, param33_init, sizeof(float) * 1);
8299   static int32_t param34_init[] = {-1};
8300   model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
8301   static int32_t param35_init[] = {0};
8302   model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
8303   static float param36_init[] = {0.4f};
8304   model->setOperandValue(param36, param36_init, sizeof(float) * 1);
8305   static float param37_init[] = {1.0f};
8306   model->setOperandValue(param37, param37_init, sizeof(float) * 1);
8307   static float param38_init[] = {0.3f};
8308   model->setOperandValue(param38, param38_init, sizeof(float) * 1);
8309   static int32_t param39_init[] = {2};
8310   model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
8311   static int32_t param40_init[] = {2};
8312   model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
8313   static float param41_init[] = {2.0f};
8314   model->setOperandValue(param41, param41_init, sizeof(float) * 1);
8315   static float param42_init[] = {2.0f};
8316   model->setOperandValue(param42, param42_init, sizeof(float) * 1);
8317   static int32_t param43_init[] = {4};
8318   model->setOperandValue(param43, param43_init, sizeof(int32_t) * 1);
8319   static int32_t param44_init[] = {4};
8320   model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
8321   static bool8 layout_init[] = {false};
8322   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
8323   static int32_t param45_init[] = {3};
8324   model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
8325   static int32_t param46_init[] = {3};
8326   model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
8327   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param32, param33, param34, param35, param36, param37, param38}, {scoresOut, roiOut, classesOut, batchSplitOut});
8328   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in8, roiOut, batchSplitOut, param39, param40, param41, param42, param43, param44, layout}, {featureMap});
8329   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap, param45, param46, layout}, {out8});
8330   // Phase 3, inputs and outputs
8331   model->identifyInputsAndOutputs(
8332     {in8},
8333     {scoresOut, classesOut, out8});
8334   assert(model->isValid());
8335 }
8336 
is_ignored_zero_sized_nhwc_quant8(int i)8337 inline bool is_ignored_zero_sized_nhwc_quant8(int i) {
8338   static std::set<int> ignore = {};
8339   return ignore.find(i) != ignore.end();
8340 }
8341 
CreateModel_zero_sized_nhwc_float16(Model * model)8342 void CreateModel_zero_sized_nhwc_float16(Model *model) {
8343   OperandType type0(Type::BOOL, {});
8344   OperandType type14(Type::TENSOR_INT32, {0});
8345   OperandType type16(Type::TENSOR_INT32, {1});
8346   OperandType type22(Type::TENSOR_FLOAT16, {1, 1, 1, 1});
8347   OperandType type29(Type::FLOAT16, {});
8348   OperandType type3(Type::INT32, {});
8349   OperandType type72(Type::TENSOR_FLOAT16, {0, 2, 2, 1});
8350   OperandType type73(Type::TENSOR_FLOAT16, {0, 3, 3, 1});
8351   OperandType type74(Type::TENSOR_FLOAT16, {1, 8});
8352   OperandType type75(Type::TENSOR_FLOAT16, {0, 4});
8353   OperandType type76(Type::TENSOR_FLOAT16, {1, 2});
8354   OperandType type77(Type::TENSOR_FLOAT16, {0});
8355   // Phase 1, operands
8356   auto scores = model->addOperand(&type76);
8357   auto roi = model->addOperand(&type74);
8358   auto param32 = model->addOperand(&type16);
8359   auto param33 = model->addOperand(&type29);
8360   auto param34 = model->addOperand(&type3);
8361   auto param35 = model->addOperand(&type3);
8362   auto param36 = model->addOperand(&type29);
8363   auto param37 = model->addOperand(&type29);
8364   auto param38 = model->addOperand(&type29);
8365   auto scoresOut = model->addOperand(&type77);
8366   auto roiOut = model->addOperand(&type75);
8367   auto classesOut = model->addOperand(&type14);
8368   auto batchSplitOut = model->addOperand(&type14);
8369   auto in8 = model->addOperand(&type22);
8370   auto param39 = model->addOperand(&type3);
8371   auto param40 = model->addOperand(&type3);
8372   auto param41 = model->addOperand(&type29);
8373   auto param42 = model->addOperand(&type29);
8374   auto param43 = model->addOperand(&type3);
8375   auto param44 = model->addOperand(&type3);
8376   auto layout = model->addOperand(&type0);
8377   auto featureMap = model->addOperand(&type72);
8378   auto param45 = model->addOperand(&type3);
8379   auto param46 = model->addOperand(&type3);
8380   auto out8 = model->addOperand(&type73);
8381   // Phase 2, operations
8382   static _Float16 scores_init[] = {0.8999999761581421f, 0.10000000149011612f};
8383   model->setOperandValue(scores, scores_init, sizeof(_Float16) * 2);
8384   static _Float16 roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
8385   model->setOperandValue(roi, roi_init, sizeof(_Float16) * 8);
8386   static int32_t param32_init[] = {0};
8387   model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
8388   static _Float16 param33_init[] = {0.30000001192092896f};
8389   model->setOperandValue(param33, param33_init, sizeof(_Float16) * 1);
8390   static int32_t param34_init[] = {-1};
8391   model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
8392   static int32_t param35_init[] = {0};
8393   model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
8394   static _Float16 param36_init[] = {0.4000000059604645f};
8395   model->setOperandValue(param36, param36_init, sizeof(_Float16) * 1);
8396   static _Float16 param37_init[] = {1.0f};
8397   model->setOperandValue(param37, param37_init, sizeof(_Float16) * 1);
8398   static _Float16 param38_init[] = {0.30000001192092896f};
8399   model->setOperandValue(param38, param38_init, sizeof(_Float16) * 1);
8400   static int32_t param39_init[] = {2};
8401   model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
8402   static int32_t param40_init[] = {2};
8403   model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
8404   static _Float16 param41_init[] = {2.0f};
8405   model->setOperandValue(param41, param41_init, sizeof(_Float16) * 1);
8406   static _Float16 param42_init[] = {2.0f};
8407   model->setOperandValue(param42, param42_init, sizeof(_Float16) * 1);
8408   static int32_t param43_init[] = {4};
8409   model->setOperandValue(param43, param43_init, sizeof(int32_t) * 1);
8410   static int32_t param44_init[] = {4};
8411   model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
8412   static bool8 layout_init[] = {false};
8413   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
8414   static int32_t param45_init[] = {3};
8415   model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
8416   static int32_t param46_init[] = {3};
8417   model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
8418   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param32, param33, param34, param35, param36, param37, param38}, {scoresOut, roiOut, classesOut, batchSplitOut});
8419   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in8, roiOut, batchSplitOut, param39, param40, param41, param42, param43, param44, layout}, {featureMap});
8420   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap, param45, param46, layout}, {out8});
8421   // Phase 3, inputs and outputs
8422   model->identifyInputsAndOutputs(
8423     {in8},
8424     {scoresOut, classesOut, out8});
8425   assert(model->isValid());
8426 }
8427 
is_ignored_zero_sized_nhwc_float16(int i)8428 inline bool is_ignored_zero_sized_nhwc_float16(int i) {
8429   static std::set<int> ignore = {};
8430   return ignore.find(i) != ignore.end();
8431 }
8432 
CreateModel_zero_sized_nchw(Model * model)8433 void CreateModel_zero_sized_nchw(Model *model) {
8434   OperandType type0(Type::BOOL, {});
8435   OperandType type11(Type::TENSOR_FLOAT32, {1, 2});
8436   OperandType type12(Type::TENSOR_FLOAT32, {1, 8});
8437   OperandType type13(Type::TENSOR_FLOAT32, {0});
8438   OperandType type14(Type::TENSOR_INT32, {0});
8439   OperandType type15(Type::TENSOR_FLOAT32, {0, 4});
8440   OperandType type16(Type::TENSOR_INT32, {1});
8441   OperandType type2(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
8442   OperandType type3(Type::INT32, {});
8443   OperandType type4(Type::FLOAT32, {});
8444   OperandType type78(Type::TENSOR_FLOAT32, {0, 1, 2, 2});
8445   OperandType type79(Type::TENSOR_FLOAT32, {0, 1, 3, 3});
8446   // Phase 1, operands
8447   auto scores = model->addOperand(&type11);
8448   auto roi = model->addOperand(&type12);
8449   auto param32 = model->addOperand(&type16);
8450   auto param33 = model->addOperand(&type4);
8451   auto param34 = model->addOperand(&type3);
8452   auto param35 = model->addOperand(&type3);
8453   auto param36 = model->addOperand(&type4);
8454   auto param37 = model->addOperand(&type4);
8455   auto param38 = model->addOperand(&type4);
8456   auto scoresOut = model->addOperand(&type13);
8457   auto roiOut = model->addOperand(&type15);
8458   auto classesOut = model->addOperand(&type14);
8459   auto batchSplitOut = model->addOperand(&type14);
8460   auto in8 = model->addOperand(&type2);
8461   auto param39 = model->addOperand(&type3);
8462   auto param40 = model->addOperand(&type3);
8463   auto param41 = model->addOperand(&type4);
8464   auto param42 = model->addOperand(&type4);
8465   auto param43 = model->addOperand(&type3);
8466   auto param44 = model->addOperand(&type3);
8467   auto layout = model->addOperand(&type0);
8468   auto featureMap = model->addOperand(&type78);
8469   auto param45 = model->addOperand(&type3);
8470   auto param46 = model->addOperand(&type3);
8471   auto out8 = model->addOperand(&type79);
8472   // Phase 2, operations
8473   static float scores_init[] = {0.9f, 0.1f};
8474   model->setOperandValue(scores, scores_init, sizeof(float) * 2);
8475   static float roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
8476   model->setOperandValue(roi, roi_init, sizeof(float) * 8);
8477   static int32_t param32_init[] = {0};
8478   model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
8479   static float param33_init[] = {0.3f};
8480   model->setOperandValue(param33, param33_init, sizeof(float) * 1);
8481   static int32_t param34_init[] = {-1};
8482   model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
8483   static int32_t param35_init[] = {0};
8484   model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
8485   static float param36_init[] = {0.4f};
8486   model->setOperandValue(param36, param36_init, sizeof(float) * 1);
8487   static float param37_init[] = {1.0f};
8488   model->setOperandValue(param37, param37_init, sizeof(float) * 1);
8489   static float param38_init[] = {0.3f};
8490   model->setOperandValue(param38, param38_init, sizeof(float) * 1);
8491   static int32_t param39_init[] = {2};
8492   model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
8493   static int32_t param40_init[] = {2};
8494   model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
8495   static float param41_init[] = {2.0f};
8496   model->setOperandValue(param41, param41_init, sizeof(float) * 1);
8497   static float param42_init[] = {2.0f};
8498   model->setOperandValue(param42, param42_init, sizeof(float) * 1);
8499   static int32_t param43_init[] = {4};
8500   model->setOperandValue(param43, param43_init, sizeof(int32_t) * 1);
8501   static int32_t param44_init[] = {4};
8502   model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
8503   static bool8 layout_init[] = {true};
8504   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
8505   static int32_t param45_init[] = {3};
8506   model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
8507   static int32_t param46_init[] = {3};
8508   model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
8509   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param32, param33, param34, param35, param36, param37, param38}, {scoresOut, roiOut, classesOut, batchSplitOut});
8510   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in8, roiOut, batchSplitOut, param39, param40, param41, param42, param43, param44, layout}, {featureMap});
8511   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap, param45, param46, layout}, {out8});
8512   // Phase 3, inputs and outputs
8513   model->identifyInputsAndOutputs(
8514     {in8},
8515     {scoresOut, classesOut, out8});
8516   assert(model->isValid());
8517 }
8518 
is_ignored_zero_sized_nchw(int i)8519 inline bool is_ignored_zero_sized_nchw(int i) {
8520   static std::set<int> ignore = {};
8521   return ignore.find(i) != ignore.end();
8522 }
8523 
CreateModel_zero_sized_nchw_relaxed(Model * model)8524 void CreateModel_zero_sized_nchw_relaxed(Model *model) {
8525   OperandType type0(Type::BOOL, {});
8526   OperandType type11(Type::TENSOR_FLOAT32, {1, 2});
8527   OperandType type12(Type::TENSOR_FLOAT32, {1, 8});
8528   OperandType type13(Type::TENSOR_FLOAT32, {0});
8529   OperandType type14(Type::TENSOR_INT32, {0});
8530   OperandType type15(Type::TENSOR_FLOAT32, {0, 4});
8531   OperandType type16(Type::TENSOR_INT32, {1});
8532   OperandType type2(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
8533   OperandType type3(Type::INT32, {});
8534   OperandType type4(Type::FLOAT32, {});
8535   OperandType type78(Type::TENSOR_FLOAT32, {0, 1, 2, 2});
8536   OperandType type79(Type::TENSOR_FLOAT32, {0, 1, 3, 3});
8537   // Phase 1, operands
8538   auto scores = model->addOperand(&type11);
8539   auto roi = model->addOperand(&type12);
8540   auto param32 = model->addOperand(&type16);
8541   auto param33 = model->addOperand(&type4);
8542   auto param34 = model->addOperand(&type3);
8543   auto param35 = model->addOperand(&type3);
8544   auto param36 = model->addOperand(&type4);
8545   auto param37 = model->addOperand(&type4);
8546   auto param38 = model->addOperand(&type4);
8547   auto scoresOut = model->addOperand(&type13);
8548   auto roiOut = model->addOperand(&type15);
8549   auto classesOut = model->addOperand(&type14);
8550   auto batchSplitOut = model->addOperand(&type14);
8551   auto in8 = model->addOperand(&type2);
8552   auto param39 = model->addOperand(&type3);
8553   auto param40 = model->addOperand(&type3);
8554   auto param41 = model->addOperand(&type4);
8555   auto param42 = model->addOperand(&type4);
8556   auto param43 = model->addOperand(&type3);
8557   auto param44 = model->addOperand(&type3);
8558   auto layout = model->addOperand(&type0);
8559   auto featureMap = model->addOperand(&type78);
8560   auto param45 = model->addOperand(&type3);
8561   auto param46 = model->addOperand(&type3);
8562   auto out8 = model->addOperand(&type79);
8563   // Phase 2, operations
8564   static float scores_init[] = {0.9f, 0.1f};
8565   model->setOperandValue(scores, scores_init, sizeof(float) * 2);
8566   static float roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
8567   model->setOperandValue(roi, roi_init, sizeof(float) * 8);
8568   static int32_t param32_init[] = {0};
8569   model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
8570   static float param33_init[] = {0.3f};
8571   model->setOperandValue(param33, param33_init, sizeof(float) * 1);
8572   static int32_t param34_init[] = {-1};
8573   model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
8574   static int32_t param35_init[] = {0};
8575   model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
8576   static float param36_init[] = {0.4f};
8577   model->setOperandValue(param36, param36_init, sizeof(float) * 1);
8578   static float param37_init[] = {1.0f};
8579   model->setOperandValue(param37, param37_init, sizeof(float) * 1);
8580   static float param38_init[] = {0.3f};
8581   model->setOperandValue(param38, param38_init, sizeof(float) * 1);
8582   static int32_t param39_init[] = {2};
8583   model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
8584   static int32_t param40_init[] = {2};
8585   model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
8586   static float param41_init[] = {2.0f};
8587   model->setOperandValue(param41, param41_init, sizeof(float) * 1);
8588   static float param42_init[] = {2.0f};
8589   model->setOperandValue(param42, param42_init, sizeof(float) * 1);
8590   static int32_t param43_init[] = {4};
8591   model->setOperandValue(param43, param43_init, sizeof(int32_t) * 1);
8592   static int32_t param44_init[] = {4};
8593   model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
8594   static bool8 layout_init[] = {true};
8595   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
8596   static int32_t param45_init[] = {3};
8597   model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
8598   static int32_t param46_init[] = {3};
8599   model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
8600   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param32, param33, param34, param35, param36, param37, param38}, {scoresOut, roiOut, classesOut, batchSplitOut});
8601   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in8, roiOut, batchSplitOut, param39, param40, param41, param42, param43, param44, layout}, {featureMap});
8602   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap, param45, param46, layout}, {out8});
8603   // Phase 3, inputs and outputs
8604   model->identifyInputsAndOutputs(
8605     {in8},
8606     {scoresOut, classesOut, out8});
8607   // Phase 4: set relaxed execution
8608   model->relaxComputationFloat32toFloat16(true);
8609   assert(model->isValid());
8610 }
8611 
is_ignored_zero_sized_nchw_relaxed(int i)8612 inline bool is_ignored_zero_sized_nchw_relaxed(int i) {
8613   static std::set<int> ignore = {};
8614   return ignore.find(i) != ignore.end();
8615 }
8616 
CreateModel_zero_sized_nchw_quant8(Model * model)8617 void CreateModel_zero_sized_nchw_quant8(Model *model) {
8618   OperandType type0(Type::BOOL, {});
8619   OperandType type14(Type::TENSOR_INT32, {0});
8620   OperandType type16(Type::TENSOR_INT32, {1});
8621   OperandType type3(Type::INT32, {});
8622   OperandType type4(Type::FLOAT32, {});
8623   OperandType type66(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 1}, 0.1f, 128);
8624   OperandType type68(Type::TENSOR_QUANT16_ASYMM, {1, 8}, 0.125f, 0);
8625   OperandType type69(Type::TENSOR_QUANT16_ASYMM, {0, 4}, 0.125f, 0);
8626   OperandType type70(Type::TENSOR_QUANT8_ASYMM, {1, 2}, 0.1f, 128);
8627   OperandType type71(Type::TENSOR_QUANT8_ASYMM, {0}, 0.1f, 128);
8628   OperandType type80(Type::TENSOR_QUANT8_ASYMM, {0, 1, 2, 2}, 0.1f, 128);
8629   OperandType type81(Type::TENSOR_QUANT8_ASYMM, {0, 1, 3, 3}, 0.1f, 128);
8630   // Phase 1, operands
8631   auto scores = model->addOperand(&type70);
8632   auto roi = model->addOperand(&type68);
8633   auto param32 = model->addOperand(&type16);
8634   auto param33 = model->addOperand(&type4);
8635   auto param34 = model->addOperand(&type3);
8636   auto param35 = model->addOperand(&type3);
8637   auto param36 = model->addOperand(&type4);
8638   auto param37 = model->addOperand(&type4);
8639   auto param38 = model->addOperand(&type4);
8640   auto scoresOut = model->addOperand(&type71);
8641   auto roiOut = model->addOperand(&type69);
8642   auto classesOut = model->addOperand(&type14);
8643   auto batchSplitOut = model->addOperand(&type14);
8644   auto in8 = model->addOperand(&type66);
8645   auto param39 = model->addOperand(&type3);
8646   auto param40 = model->addOperand(&type3);
8647   auto param41 = model->addOperand(&type4);
8648   auto param42 = model->addOperand(&type4);
8649   auto param43 = model->addOperand(&type3);
8650   auto param44 = model->addOperand(&type3);
8651   auto layout = model->addOperand(&type0);
8652   auto featureMap = model->addOperand(&type80);
8653   auto param45 = model->addOperand(&type3);
8654   auto param46 = model->addOperand(&type3);
8655   auto out8 = model->addOperand(&type81);
8656   // Phase 2, operations
8657   static uint8_t scores_init[] = {137, 129};
8658   model->setOperandValue(scores, scores_init, sizeof(uint8_t) * 2);
8659   static uint16_t roi_init[] = {8, 8, 80, 80, 0, 0, 80, 80};
8660   model->setOperandValue(roi, roi_init, sizeof(uint16_t) * 8);
8661   static int32_t param32_init[] = {0};
8662   model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
8663   static float param33_init[] = {0.3f};
8664   model->setOperandValue(param33, param33_init, sizeof(float) * 1);
8665   static int32_t param34_init[] = {-1};
8666   model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
8667   static int32_t param35_init[] = {0};
8668   model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
8669   static float param36_init[] = {0.4f};
8670   model->setOperandValue(param36, param36_init, sizeof(float) * 1);
8671   static float param37_init[] = {1.0f};
8672   model->setOperandValue(param37, param37_init, sizeof(float) * 1);
8673   static float param38_init[] = {0.3f};
8674   model->setOperandValue(param38, param38_init, sizeof(float) * 1);
8675   static int32_t param39_init[] = {2};
8676   model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
8677   static int32_t param40_init[] = {2};
8678   model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
8679   static float param41_init[] = {2.0f};
8680   model->setOperandValue(param41, param41_init, sizeof(float) * 1);
8681   static float param42_init[] = {2.0f};
8682   model->setOperandValue(param42, param42_init, sizeof(float) * 1);
8683   static int32_t param43_init[] = {4};
8684   model->setOperandValue(param43, param43_init, sizeof(int32_t) * 1);
8685   static int32_t param44_init[] = {4};
8686   model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
8687   static bool8 layout_init[] = {true};
8688   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
8689   static int32_t param45_init[] = {3};
8690   model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
8691   static int32_t param46_init[] = {3};
8692   model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
8693   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param32, param33, param34, param35, param36, param37, param38}, {scoresOut, roiOut, classesOut, batchSplitOut});
8694   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in8, roiOut, batchSplitOut, param39, param40, param41, param42, param43, param44, layout}, {featureMap});
8695   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap, param45, param46, layout}, {out8});
8696   // Phase 3, inputs and outputs
8697   model->identifyInputsAndOutputs(
8698     {in8},
8699     {scoresOut, classesOut, out8});
8700   assert(model->isValid());
8701 }
8702 
is_ignored_zero_sized_nchw_quant8(int i)8703 inline bool is_ignored_zero_sized_nchw_quant8(int i) {
8704   static std::set<int> ignore = {};
8705   return ignore.find(i) != ignore.end();
8706 }
8707 
CreateModel_zero_sized_nchw_float16(Model * model)8708 void CreateModel_zero_sized_nchw_float16(Model *model) {
8709   OperandType type0(Type::BOOL, {});
8710   OperandType type14(Type::TENSOR_INT32, {0});
8711   OperandType type16(Type::TENSOR_INT32, {1});
8712   OperandType type22(Type::TENSOR_FLOAT16, {1, 1, 1, 1});
8713   OperandType type29(Type::FLOAT16, {});
8714   OperandType type3(Type::INT32, {});
8715   OperandType type74(Type::TENSOR_FLOAT16, {1, 8});
8716   OperandType type75(Type::TENSOR_FLOAT16, {0, 4});
8717   OperandType type76(Type::TENSOR_FLOAT16, {1, 2});
8718   OperandType type77(Type::TENSOR_FLOAT16, {0});
8719   OperandType type82(Type::TENSOR_FLOAT16, {0, 1, 2, 2});
8720   OperandType type83(Type::TENSOR_FLOAT16, {0, 1, 3, 3});
8721   // Phase 1, operands
8722   auto scores = model->addOperand(&type76);
8723   auto roi = model->addOperand(&type74);
8724   auto param32 = model->addOperand(&type16);
8725   auto param33 = model->addOperand(&type29);
8726   auto param34 = model->addOperand(&type3);
8727   auto param35 = model->addOperand(&type3);
8728   auto param36 = model->addOperand(&type29);
8729   auto param37 = model->addOperand(&type29);
8730   auto param38 = model->addOperand(&type29);
8731   auto scoresOut = model->addOperand(&type77);
8732   auto roiOut = model->addOperand(&type75);
8733   auto classesOut = model->addOperand(&type14);
8734   auto batchSplitOut = model->addOperand(&type14);
8735   auto in8 = model->addOperand(&type22);
8736   auto param39 = model->addOperand(&type3);
8737   auto param40 = model->addOperand(&type3);
8738   auto param41 = model->addOperand(&type29);
8739   auto param42 = model->addOperand(&type29);
8740   auto param43 = model->addOperand(&type3);
8741   auto param44 = model->addOperand(&type3);
8742   auto layout = model->addOperand(&type0);
8743   auto featureMap = model->addOperand(&type82);
8744   auto param45 = model->addOperand(&type3);
8745   auto param46 = model->addOperand(&type3);
8746   auto out8 = model->addOperand(&type83);
8747   // Phase 2, operations
8748   static _Float16 scores_init[] = {0.8999999761581421f, 0.10000000149011612f};
8749   model->setOperandValue(scores, scores_init, sizeof(_Float16) * 2);
8750   static _Float16 roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
8751   model->setOperandValue(roi, roi_init, sizeof(_Float16) * 8);
8752   static int32_t param32_init[] = {0};
8753   model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
8754   static _Float16 param33_init[] = {0.30000001192092896f};
8755   model->setOperandValue(param33, param33_init, sizeof(_Float16) * 1);
8756   static int32_t param34_init[] = {-1};
8757   model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
8758   static int32_t param35_init[] = {0};
8759   model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
8760   static _Float16 param36_init[] = {0.4000000059604645f};
8761   model->setOperandValue(param36, param36_init, sizeof(_Float16) * 1);
8762   static _Float16 param37_init[] = {1.0f};
8763   model->setOperandValue(param37, param37_init, sizeof(_Float16) * 1);
8764   static _Float16 param38_init[] = {0.30000001192092896f};
8765   model->setOperandValue(param38, param38_init, sizeof(_Float16) * 1);
8766   static int32_t param39_init[] = {2};
8767   model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
8768   static int32_t param40_init[] = {2};
8769   model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
8770   static _Float16 param41_init[] = {2.0f};
8771   model->setOperandValue(param41, param41_init, sizeof(_Float16) * 1);
8772   static _Float16 param42_init[] = {2.0f};
8773   model->setOperandValue(param42, param42_init, sizeof(_Float16) * 1);
8774   static int32_t param43_init[] = {4};
8775   model->setOperandValue(param43, param43_init, sizeof(int32_t) * 1);
8776   static int32_t param44_init[] = {4};
8777   model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
8778   static bool8 layout_init[] = {true};
8779   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
8780   static int32_t param45_init[] = {3};
8781   model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
8782   static int32_t param46_init[] = {3};
8783   model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
8784   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param32, param33, param34, param35, param36, param37, param38}, {scoresOut, roiOut, classesOut, batchSplitOut});
8785   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in8, roiOut, batchSplitOut, param39, param40, param41, param42, param43, param44, layout}, {featureMap});
8786   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap, param45, param46, layout}, {out8});
8787   // Phase 3, inputs and outputs
8788   model->identifyInputsAndOutputs(
8789     {in8},
8790     {scoresOut, classesOut, out8});
8791   assert(model->isValid());
8792 }
8793 
is_ignored_zero_sized_nchw_float16(int i)8794 inline bool is_ignored_zero_sized_nchw_float16(int i) {
8795   static std::set<int> ignore = {};
8796   return ignore.find(i) != ignore.end();
8797 }
8798 
CreateModel_zero_sized_dynamic_output_shape_nhwc(Model * model)8799 void CreateModel_zero_sized_dynamic_output_shape_nhwc(Model *model) {
8800   OperandType type0(Type::BOOL, {});
8801   OperandType type11(Type::TENSOR_FLOAT32, {1, 2});
8802   OperandType type12(Type::TENSOR_FLOAT32, {1, 8});
8803   OperandType type13(Type::TENSOR_FLOAT32, {0});
8804   OperandType type14(Type::TENSOR_INT32, {0});
8805   OperandType type15(Type::TENSOR_FLOAT32, {0, 4});
8806   OperandType type16(Type::TENSOR_INT32, {1});
8807   OperandType type17(Type::TENSOR_FLOAT32, {0, 2, 2, 1});
8808   OperandType type2(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
8809   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
8810   OperandType type3(Type::INT32, {});
8811   OperandType type4(Type::FLOAT32, {});
8812   // Phase 1, operands
8813   auto scores = model->addOperand(&type11);
8814   auto roi = model->addOperand(&type12);
8815   auto param32 = model->addOperand(&type16);
8816   auto param33 = model->addOperand(&type4);
8817   auto param34 = model->addOperand(&type3);
8818   auto param35 = model->addOperand(&type3);
8819   auto param36 = model->addOperand(&type4);
8820   auto param37 = model->addOperand(&type4);
8821   auto param38 = model->addOperand(&type4);
8822   auto scoresOut = model->addOperand(&type13);
8823   auto roiOut = model->addOperand(&type15);
8824   auto classesOut = model->addOperand(&type14);
8825   auto batchSplitOut = model->addOperand(&type14);
8826   auto in8 = model->addOperand(&type2);
8827   auto param39 = model->addOperand(&type3);
8828   auto param40 = model->addOperand(&type3);
8829   auto param41 = model->addOperand(&type4);
8830   auto param42 = model->addOperand(&type4);
8831   auto param43 = model->addOperand(&type3);
8832   auto param44 = model->addOperand(&type3);
8833   auto layout = model->addOperand(&type0);
8834   auto featureMap = model->addOperand(&type17);
8835   auto param45 = model->addOperand(&type3);
8836   auto param46 = model->addOperand(&type3);
8837   auto out8 = model->addOperand(&type26);
8838   // Phase 2, operations
8839   static float scores_init[] = {0.9f, 0.1f};
8840   model->setOperandValue(scores, scores_init, sizeof(float) * 2);
8841   static float roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
8842   model->setOperandValue(roi, roi_init, sizeof(float) * 8);
8843   static int32_t param32_init[] = {0};
8844   model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
8845   static float param33_init[] = {0.3f};
8846   model->setOperandValue(param33, param33_init, sizeof(float) * 1);
8847   static int32_t param34_init[] = {-1};
8848   model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
8849   static int32_t param35_init[] = {0};
8850   model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
8851   static float param36_init[] = {0.4f};
8852   model->setOperandValue(param36, param36_init, sizeof(float) * 1);
8853   static float param37_init[] = {1.0f};
8854   model->setOperandValue(param37, param37_init, sizeof(float) * 1);
8855   static float param38_init[] = {0.3f};
8856   model->setOperandValue(param38, param38_init, sizeof(float) * 1);
8857   static int32_t param39_init[] = {2};
8858   model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
8859   static int32_t param40_init[] = {2};
8860   model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
8861   static float param41_init[] = {2.0f};
8862   model->setOperandValue(param41, param41_init, sizeof(float) * 1);
8863   static float param42_init[] = {2.0f};
8864   model->setOperandValue(param42, param42_init, sizeof(float) * 1);
8865   static int32_t param43_init[] = {4};
8866   model->setOperandValue(param43, param43_init, sizeof(int32_t) * 1);
8867   static int32_t param44_init[] = {4};
8868   model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
8869   static bool8 layout_init[] = {false};
8870   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
8871   static int32_t param45_init[] = {3};
8872   model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
8873   static int32_t param46_init[] = {3};
8874   model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
8875   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param32, param33, param34, param35, param36, param37, param38}, {scoresOut, roiOut, classesOut, batchSplitOut});
8876   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in8, roiOut, batchSplitOut, param39, param40, param41, param42, param43, param44, layout}, {featureMap});
8877   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap, param45, param46, layout}, {out8});
8878   // Phase 3, inputs and outputs
8879   model->identifyInputsAndOutputs(
8880     {in8},
8881     {scoresOut, classesOut, out8});
8882   assert(model->isValid());
8883 }
8884 
is_ignored_zero_sized_dynamic_output_shape_nhwc(int i)8885 inline bool is_ignored_zero_sized_dynamic_output_shape_nhwc(int i) {
8886   static std::set<int> ignore = {};
8887   return ignore.find(i) != ignore.end();
8888 }
8889 
CreateModel_zero_sized_dynamic_output_shape_nhwc_relaxed(Model * model)8890 void CreateModel_zero_sized_dynamic_output_shape_nhwc_relaxed(Model *model) {
8891   OperandType type0(Type::BOOL, {});
8892   OperandType type11(Type::TENSOR_FLOAT32, {1, 2});
8893   OperandType type12(Type::TENSOR_FLOAT32, {1, 8});
8894   OperandType type13(Type::TENSOR_FLOAT32, {0});
8895   OperandType type14(Type::TENSOR_INT32, {0});
8896   OperandType type15(Type::TENSOR_FLOAT32, {0, 4});
8897   OperandType type16(Type::TENSOR_INT32, {1});
8898   OperandType type17(Type::TENSOR_FLOAT32, {0, 2, 2, 1});
8899   OperandType type2(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
8900   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
8901   OperandType type3(Type::INT32, {});
8902   OperandType type4(Type::FLOAT32, {});
8903   // Phase 1, operands
8904   auto scores = model->addOperand(&type11);
8905   auto roi = model->addOperand(&type12);
8906   auto param32 = model->addOperand(&type16);
8907   auto param33 = model->addOperand(&type4);
8908   auto param34 = model->addOperand(&type3);
8909   auto param35 = model->addOperand(&type3);
8910   auto param36 = model->addOperand(&type4);
8911   auto param37 = model->addOperand(&type4);
8912   auto param38 = model->addOperand(&type4);
8913   auto scoresOut = model->addOperand(&type13);
8914   auto roiOut = model->addOperand(&type15);
8915   auto classesOut = model->addOperand(&type14);
8916   auto batchSplitOut = model->addOperand(&type14);
8917   auto in8 = model->addOperand(&type2);
8918   auto param39 = model->addOperand(&type3);
8919   auto param40 = model->addOperand(&type3);
8920   auto param41 = model->addOperand(&type4);
8921   auto param42 = model->addOperand(&type4);
8922   auto param43 = model->addOperand(&type3);
8923   auto param44 = model->addOperand(&type3);
8924   auto layout = model->addOperand(&type0);
8925   auto featureMap = model->addOperand(&type17);
8926   auto param45 = model->addOperand(&type3);
8927   auto param46 = model->addOperand(&type3);
8928   auto out8 = model->addOperand(&type26);
8929   // Phase 2, operations
8930   static float scores_init[] = {0.9f, 0.1f};
8931   model->setOperandValue(scores, scores_init, sizeof(float) * 2);
8932   static float roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
8933   model->setOperandValue(roi, roi_init, sizeof(float) * 8);
8934   static int32_t param32_init[] = {0};
8935   model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
8936   static float param33_init[] = {0.3f};
8937   model->setOperandValue(param33, param33_init, sizeof(float) * 1);
8938   static int32_t param34_init[] = {-1};
8939   model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
8940   static int32_t param35_init[] = {0};
8941   model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
8942   static float param36_init[] = {0.4f};
8943   model->setOperandValue(param36, param36_init, sizeof(float) * 1);
8944   static float param37_init[] = {1.0f};
8945   model->setOperandValue(param37, param37_init, sizeof(float) * 1);
8946   static float param38_init[] = {0.3f};
8947   model->setOperandValue(param38, param38_init, sizeof(float) * 1);
8948   static int32_t param39_init[] = {2};
8949   model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
8950   static int32_t param40_init[] = {2};
8951   model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
8952   static float param41_init[] = {2.0f};
8953   model->setOperandValue(param41, param41_init, sizeof(float) * 1);
8954   static float param42_init[] = {2.0f};
8955   model->setOperandValue(param42, param42_init, sizeof(float) * 1);
8956   static int32_t param43_init[] = {4};
8957   model->setOperandValue(param43, param43_init, sizeof(int32_t) * 1);
8958   static int32_t param44_init[] = {4};
8959   model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
8960   static bool8 layout_init[] = {false};
8961   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
8962   static int32_t param45_init[] = {3};
8963   model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
8964   static int32_t param46_init[] = {3};
8965   model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
8966   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param32, param33, param34, param35, param36, param37, param38}, {scoresOut, roiOut, classesOut, batchSplitOut});
8967   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in8, roiOut, batchSplitOut, param39, param40, param41, param42, param43, param44, layout}, {featureMap});
8968   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap, param45, param46, layout}, {out8});
8969   // Phase 3, inputs and outputs
8970   model->identifyInputsAndOutputs(
8971     {in8},
8972     {scoresOut, classesOut, out8});
8973   // Phase 4: set relaxed execution
8974   model->relaxComputationFloat32toFloat16(true);
8975   assert(model->isValid());
8976 }
8977 
is_ignored_zero_sized_dynamic_output_shape_nhwc_relaxed(int i)8978 inline bool is_ignored_zero_sized_dynamic_output_shape_nhwc_relaxed(int i) {
8979   static std::set<int> ignore = {};
8980   return ignore.find(i) != ignore.end();
8981 }
8982 
CreateModel_zero_sized_dynamic_output_shape_nhwc_quant8(Model * model)8983 void CreateModel_zero_sized_dynamic_output_shape_nhwc_quant8(Model *model) {
8984   OperandType type0(Type::BOOL, {});
8985   OperandType type14(Type::TENSOR_INT32, {0});
8986   OperandType type16(Type::TENSOR_INT32, {1});
8987   OperandType type3(Type::INT32, {});
8988   OperandType type4(Type::FLOAT32, {});
8989   OperandType type65(Type::TENSOR_QUANT8_ASYMM, {0, 2, 2, 1}, 0.1f, 128);
8990   OperandType type66(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 1}, 0.1f, 128);
8991   OperandType type68(Type::TENSOR_QUANT16_ASYMM, {1, 8}, 0.125f, 0);
8992   OperandType type69(Type::TENSOR_QUANT16_ASYMM, {0, 4}, 0.125f, 0);
8993   OperandType type70(Type::TENSOR_QUANT8_ASYMM, {1, 2}, 0.1f, 128);
8994   OperandType type71(Type::TENSOR_QUANT8_ASYMM, {0}, 0.1f, 128);
8995   OperandType type84(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.1f, 128);
8996   // Phase 1, operands
8997   auto scores = model->addOperand(&type70);
8998   auto roi = model->addOperand(&type68);
8999   auto param32 = model->addOperand(&type16);
9000   auto param33 = model->addOperand(&type4);
9001   auto param34 = model->addOperand(&type3);
9002   auto param35 = model->addOperand(&type3);
9003   auto param36 = model->addOperand(&type4);
9004   auto param37 = model->addOperand(&type4);
9005   auto param38 = model->addOperand(&type4);
9006   auto scoresOut = model->addOperand(&type71);
9007   auto roiOut = model->addOperand(&type69);
9008   auto classesOut = model->addOperand(&type14);
9009   auto batchSplitOut = model->addOperand(&type14);
9010   auto in8 = model->addOperand(&type66);
9011   auto param39 = model->addOperand(&type3);
9012   auto param40 = model->addOperand(&type3);
9013   auto param41 = model->addOperand(&type4);
9014   auto param42 = model->addOperand(&type4);
9015   auto param43 = model->addOperand(&type3);
9016   auto param44 = model->addOperand(&type3);
9017   auto layout = model->addOperand(&type0);
9018   auto featureMap = model->addOperand(&type65);
9019   auto param45 = model->addOperand(&type3);
9020   auto param46 = model->addOperand(&type3);
9021   auto out8 = model->addOperand(&type84);
9022   // Phase 2, operations
9023   static uint8_t scores_init[] = {137, 129};
9024   model->setOperandValue(scores, scores_init, sizeof(uint8_t) * 2);
9025   static uint16_t roi_init[] = {8, 8, 80, 80, 0, 0, 80, 80};
9026   model->setOperandValue(roi, roi_init, sizeof(uint16_t) * 8);
9027   static int32_t param32_init[] = {0};
9028   model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
9029   static float param33_init[] = {0.3f};
9030   model->setOperandValue(param33, param33_init, sizeof(float) * 1);
9031   static int32_t param34_init[] = {-1};
9032   model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
9033   static int32_t param35_init[] = {0};
9034   model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
9035   static float param36_init[] = {0.4f};
9036   model->setOperandValue(param36, param36_init, sizeof(float) * 1);
9037   static float param37_init[] = {1.0f};
9038   model->setOperandValue(param37, param37_init, sizeof(float) * 1);
9039   static float param38_init[] = {0.3f};
9040   model->setOperandValue(param38, param38_init, sizeof(float) * 1);
9041   static int32_t param39_init[] = {2};
9042   model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
9043   static int32_t param40_init[] = {2};
9044   model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
9045   static float param41_init[] = {2.0f};
9046   model->setOperandValue(param41, param41_init, sizeof(float) * 1);
9047   static float param42_init[] = {2.0f};
9048   model->setOperandValue(param42, param42_init, sizeof(float) * 1);
9049   static int32_t param43_init[] = {4};
9050   model->setOperandValue(param43, param43_init, sizeof(int32_t) * 1);
9051   static int32_t param44_init[] = {4};
9052   model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
9053   static bool8 layout_init[] = {false};
9054   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
9055   static int32_t param45_init[] = {3};
9056   model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
9057   static int32_t param46_init[] = {3};
9058   model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
9059   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param32, param33, param34, param35, param36, param37, param38}, {scoresOut, roiOut, classesOut, batchSplitOut});
9060   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in8, roiOut, batchSplitOut, param39, param40, param41, param42, param43, param44, layout}, {featureMap});
9061   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap, param45, param46, layout}, {out8});
9062   // Phase 3, inputs and outputs
9063   model->identifyInputsAndOutputs(
9064     {in8},
9065     {scoresOut, classesOut, out8});
9066   assert(model->isValid());
9067 }
9068 
is_ignored_zero_sized_dynamic_output_shape_nhwc_quant8(int i)9069 inline bool is_ignored_zero_sized_dynamic_output_shape_nhwc_quant8(int i) {
9070   static std::set<int> ignore = {};
9071   return ignore.find(i) != ignore.end();
9072 }
9073 
CreateModel_zero_sized_dynamic_output_shape_nhwc_float16(Model * model)9074 void CreateModel_zero_sized_dynamic_output_shape_nhwc_float16(Model *model) {
9075   OperandType type0(Type::BOOL, {});
9076   OperandType type14(Type::TENSOR_INT32, {0});
9077   OperandType type16(Type::TENSOR_INT32, {1});
9078   OperandType type22(Type::TENSOR_FLOAT16, {1, 1, 1, 1});
9079   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
9080   OperandType type29(Type::FLOAT16, {});
9081   OperandType type3(Type::INT32, {});
9082   OperandType type72(Type::TENSOR_FLOAT16, {0, 2, 2, 1});
9083   OperandType type74(Type::TENSOR_FLOAT16, {1, 8});
9084   OperandType type75(Type::TENSOR_FLOAT16, {0, 4});
9085   OperandType type76(Type::TENSOR_FLOAT16, {1, 2});
9086   OperandType type85(Type::TENSOR_FLOAT16, {0});
9087   // Phase 1, operands
9088   auto scores = model->addOperand(&type76);
9089   auto roi = model->addOperand(&type74);
9090   auto param32 = model->addOperand(&type16);
9091   auto param33 = model->addOperand(&type29);
9092   auto param34 = model->addOperand(&type3);
9093   auto param35 = model->addOperand(&type3);
9094   auto param36 = model->addOperand(&type29);
9095   auto param37 = model->addOperand(&type29);
9096   auto param38 = model->addOperand(&type29);
9097   auto scoresOut = model->addOperand(&type85);
9098   auto roiOut = model->addOperand(&type75);
9099   auto classesOut = model->addOperand(&type14);
9100   auto batchSplitOut = model->addOperand(&type14);
9101   auto in8 = model->addOperand(&type22);
9102   auto param39 = model->addOperand(&type3);
9103   auto param40 = model->addOperand(&type3);
9104   auto param41 = model->addOperand(&type29);
9105   auto param42 = model->addOperand(&type29);
9106   auto param43 = model->addOperand(&type3);
9107   auto param44 = model->addOperand(&type3);
9108   auto layout = model->addOperand(&type0);
9109   auto featureMap = model->addOperand(&type72);
9110   auto param45 = model->addOperand(&type3);
9111   auto param46 = model->addOperand(&type3);
9112   auto out8 = model->addOperand(&type28);
9113   // Phase 2, operations
9114   static _Float16 scores_init[] = {0.8999999761581421f, 0.10000000149011612f};
9115   model->setOperandValue(scores, scores_init, sizeof(_Float16) * 2);
9116   static _Float16 roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
9117   model->setOperandValue(roi, roi_init, sizeof(_Float16) * 8);
9118   static int32_t param32_init[] = {0};
9119   model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
9120   static _Float16 param33_init[] = {0.30000001192092896f};
9121   model->setOperandValue(param33, param33_init, sizeof(_Float16) * 1);
9122   static int32_t param34_init[] = {-1};
9123   model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
9124   static int32_t param35_init[] = {0};
9125   model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
9126   static _Float16 param36_init[] = {0.4000000059604645f};
9127   model->setOperandValue(param36, param36_init, sizeof(_Float16) * 1);
9128   static _Float16 param37_init[] = {1.0f};
9129   model->setOperandValue(param37, param37_init, sizeof(_Float16) * 1);
9130   static _Float16 param38_init[] = {0.30000001192092896f};
9131   model->setOperandValue(param38, param38_init, sizeof(_Float16) * 1);
9132   static int32_t param39_init[] = {2};
9133   model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
9134   static int32_t param40_init[] = {2};
9135   model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
9136   static _Float16 param41_init[] = {2.0f};
9137   model->setOperandValue(param41, param41_init, sizeof(_Float16) * 1);
9138   static _Float16 param42_init[] = {2.0f};
9139   model->setOperandValue(param42, param42_init, sizeof(_Float16) * 1);
9140   static int32_t param43_init[] = {4};
9141   model->setOperandValue(param43, param43_init, sizeof(int32_t) * 1);
9142   static int32_t param44_init[] = {4};
9143   model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
9144   static bool8 layout_init[] = {false};
9145   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
9146   static int32_t param45_init[] = {3};
9147   model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
9148   static int32_t param46_init[] = {3};
9149   model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
9150   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param32, param33, param34, param35, param36, param37, param38}, {scoresOut, roiOut, classesOut, batchSplitOut});
9151   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in8, roiOut, batchSplitOut, param39, param40, param41, param42, param43, param44, layout}, {featureMap});
9152   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap, param45, param46, layout}, {out8});
9153   // Phase 3, inputs and outputs
9154   model->identifyInputsAndOutputs(
9155     {in8},
9156     {scoresOut, classesOut, out8});
9157   assert(model->isValid());
9158 }
9159 
is_ignored_zero_sized_dynamic_output_shape_nhwc_float16(int i)9160 inline bool is_ignored_zero_sized_dynamic_output_shape_nhwc_float16(int i) {
9161   static std::set<int> ignore = {};
9162   return ignore.find(i) != ignore.end();
9163 }
9164 
CreateModel_zero_sized_dynamic_output_shape_nchw(Model * model)9165 void CreateModel_zero_sized_dynamic_output_shape_nchw(Model *model) {
9166   OperandType type0(Type::BOOL, {});
9167   OperandType type11(Type::TENSOR_FLOAT32, {1, 2});
9168   OperandType type12(Type::TENSOR_FLOAT32, {1, 8});
9169   OperandType type13(Type::TENSOR_FLOAT32, {0});
9170   OperandType type14(Type::TENSOR_INT32, {0});
9171   OperandType type15(Type::TENSOR_FLOAT32, {0, 4});
9172   OperandType type16(Type::TENSOR_INT32, {1});
9173   OperandType type2(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
9174   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
9175   OperandType type3(Type::INT32, {});
9176   OperandType type4(Type::FLOAT32, {});
9177   OperandType type78(Type::TENSOR_FLOAT32, {0, 1, 2, 2});
9178   // Phase 1, operands
9179   auto scores = model->addOperand(&type11);
9180   auto roi = model->addOperand(&type12);
9181   auto param32 = model->addOperand(&type16);
9182   auto param33 = model->addOperand(&type4);
9183   auto param34 = model->addOperand(&type3);
9184   auto param35 = model->addOperand(&type3);
9185   auto param36 = model->addOperand(&type4);
9186   auto param37 = model->addOperand(&type4);
9187   auto param38 = model->addOperand(&type4);
9188   auto scoresOut = model->addOperand(&type13);
9189   auto roiOut = model->addOperand(&type15);
9190   auto classesOut = model->addOperand(&type14);
9191   auto batchSplitOut = model->addOperand(&type14);
9192   auto in8 = model->addOperand(&type2);
9193   auto param39 = model->addOperand(&type3);
9194   auto param40 = model->addOperand(&type3);
9195   auto param41 = model->addOperand(&type4);
9196   auto param42 = model->addOperand(&type4);
9197   auto param43 = model->addOperand(&type3);
9198   auto param44 = model->addOperand(&type3);
9199   auto layout = model->addOperand(&type0);
9200   auto featureMap = model->addOperand(&type78);
9201   auto param45 = model->addOperand(&type3);
9202   auto param46 = model->addOperand(&type3);
9203   auto out8 = model->addOperand(&type26);
9204   // Phase 2, operations
9205   static float scores_init[] = {0.9f, 0.1f};
9206   model->setOperandValue(scores, scores_init, sizeof(float) * 2);
9207   static float roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
9208   model->setOperandValue(roi, roi_init, sizeof(float) * 8);
9209   static int32_t param32_init[] = {0};
9210   model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
9211   static float param33_init[] = {0.3f};
9212   model->setOperandValue(param33, param33_init, sizeof(float) * 1);
9213   static int32_t param34_init[] = {-1};
9214   model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
9215   static int32_t param35_init[] = {0};
9216   model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
9217   static float param36_init[] = {0.4f};
9218   model->setOperandValue(param36, param36_init, sizeof(float) * 1);
9219   static float param37_init[] = {1.0f};
9220   model->setOperandValue(param37, param37_init, sizeof(float) * 1);
9221   static float param38_init[] = {0.3f};
9222   model->setOperandValue(param38, param38_init, sizeof(float) * 1);
9223   static int32_t param39_init[] = {2};
9224   model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
9225   static int32_t param40_init[] = {2};
9226   model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
9227   static float param41_init[] = {2.0f};
9228   model->setOperandValue(param41, param41_init, sizeof(float) * 1);
9229   static float param42_init[] = {2.0f};
9230   model->setOperandValue(param42, param42_init, sizeof(float) * 1);
9231   static int32_t param43_init[] = {4};
9232   model->setOperandValue(param43, param43_init, sizeof(int32_t) * 1);
9233   static int32_t param44_init[] = {4};
9234   model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
9235   static bool8 layout_init[] = {true};
9236   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
9237   static int32_t param45_init[] = {3};
9238   model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
9239   static int32_t param46_init[] = {3};
9240   model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
9241   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param32, param33, param34, param35, param36, param37, param38}, {scoresOut, roiOut, classesOut, batchSplitOut});
9242   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in8, roiOut, batchSplitOut, param39, param40, param41, param42, param43, param44, layout}, {featureMap});
9243   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap, param45, param46, layout}, {out8});
9244   // Phase 3, inputs and outputs
9245   model->identifyInputsAndOutputs(
9246     {in8},
9247     {scoresOut, classesOut, out8});
9248   assert(model->isValid());
9249 }
9250 
is_ignored_zero_sized_dynamic_output_shape_nchw(int i)9251 inline bool is_ignored_zero_sized_dynamic_output_shape_nchw(int i) {
9252   static std::set<int> ignore = {};
9253   return ignore.find(i) != ignore.end();
9254 }
9255 
CreateModel_zero_sized_dynamic_output_shape_nchw_relaxed(Model * model)9256 void CreateModel_zero_sized_dynamic_output_shape_nchw_relaxed(Model *model) {
9257   OperandType type0(Type::BOOL, {});
9258   OperandType type11(Type::TENSOR_FLOAT32, {1, 2});
9259   OperandType type12(Type::TENSOR_FLOAT32, {1, 8});
9260   OperandType type13(Type::TENSOR_FLOAT32, {0});
9261   OperandType type14(Type::TENSOR_INT32, {0});
9262   OperandType type15(Type::TENSOR_FLOAT32, {0, 4});
9263   OperandType type16(Type::TENSOR_INT32, {1});
9264   OperandType type2(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
9265   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
9266   OperandType type3(Type::INT32, {});
9267   OperandType type4(Type::FLOAT32, {});
9268   OperandType type78(Type::TENSOR_FLOAT32, {0, 1, 2, 2});
9269   // Phase 1, operands
9270   auto scores = model->addOperand(&type11);
9271   auto roi = model->addOperand(&type12);
9272   auto param32 = model->addOperand(&type16);
9273   auto param33 = model->addOperand(&type4);
9274   auto param34 = model->addOperand(&type3);
9275   auto param35 = model->addOperand(&type3);
9276   auto param36 = model->addOperand(&type4);
9277   auto param37 = model->addOperand(&type4);
9278   auto param38 = model->addOperand(&type4);
9279   auto scoresOut = model->addOperand(&type13);
9280   auto roiOut = model->addOperand(&type15);
9281   auto classesOut = model->addOperand(&type14);
9282   auto batchSplitOut = model->addOperand(&type14);
9283   auto in8 = model->addOperand(&type2);
9284   auto param39 = model->addOperand(&type3);
9285   auto param40 = model->addOperand(&type3);
9286   auto param41 = model->addOperand(&type4);
9287   auto param42 = model->addOperand(&type4);
9288   auto param43 = model->addOperand(&type3);
9289   auto param44 = model->addOperand(&type3);
9290   auto layout = model->addOperand(&type0);
9291   auto featureMap = model->addOperand(&type78);
9292   auto param45 = model->addOperand(&type3);
9293   auto param46 = model->addOperand(&type3);
9294   auto out8 = model->addOperand(&type26);
9295   // Phase 2, operations
9296   static float scores_init[] = {0.9f, 0.1f};
9297   model->setOperandValue(scores, scores_init, sizeof(float) * 2);
9298   static float roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
9299   model->setOperandValue(roi, roi_init, sizeof(float) * 8);
9300   static int32_t param32_init[] = {0};
9301   model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
9302   static float param33_init[] = {0.3f};
9303   model->setOperandValue(param33, param33_init, sizeof(float) * 1);
9304   static int32_t param34_init[] = {-1};
9305   model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
9306   static int32_t param35_init[] = {0};
9307   model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
9308   static float param36_init[] = {0.4f};
9309   model->setOperandValue(param36, param36_init, sizeof(float) * 1);
9310   static float param37_init[] = {1.0f};
9311   model->setOperandValue(param37, param37_init, sizeof(float) * 1);
9312   static float param38_init[] = {0.3f};
9313   model->setOperandValue(param38, param38_init, sizeof(float) * 1);
9314   static int32_t param39_init[] = {2};
9315   model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
9316   static int32_t param40_init[] = {2};
9317   model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
9318   static float param41_init[] = {2.0f};
9319   model->setOperandValue(param41, param41_init, sizeof(float) * 1);
9320   static float param42_init[] = {2.0f};
9321   model->setOperandValue(param42, param42_init, sizeof(float) * 1);
9322   static int32_t param43_init[] = {4};
9323   model->setOperandValue(param43, param43_init, sizeof(int32_t) * 1);
9324   static int32_t param44_init[] = {4};
9325   model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
9326   static bool8 layout_init[] = {true};
9327   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
9328   static int32_t param45_init[] = {3};
9329   model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
9330   static int32_t param46_init[] = {3};
9331   model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
9332   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param32, param33, param34, param35, param36, param37, param38}, {scoresOut, roiOut, classesOut, batchSplitOut});
9333   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in8, roiOut, batchSplitOut, param39, param40, param41, param42, param43, param44, layout}, {featureMap});
9334   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap, param45, param46, layout}, {out8});
9335   // Phase 3, inputs and outputs
9336   model->identifyInputsAndOutputs(
9337     {in8},
9338     {scoresOut, classesOut, out8});
9339   // Phase 4: set relaxed execution
9340   model->relaxComputationFloat32toFloat16(true);
9341   assert(model->isValid());
9342 }
9343 
is_ignored_zero_sized_dynamic_output_shape_nchw_relaxed(int i)9344 inline bool is_ignored_zero_sized_dynamic_output_shape_nchw_relaxed(int i) {
9345   static std::set<int> ignore = {};
9346   return ignore.find(i) != ignore.end();
9347 }
9348 
CreateModel_zero_sized_dynamic_output_shape_nchw_quant8(Model * model)9349 void CreateModel_zero_sized_dynamic_output_shape_nchw_quant8(Model *model) {
9350   OperandType type0(Type::BOOL, {});
9351   OperandType type14(Type::TENSOR_INT32, {0});
9352   OperandType type16(Type::TENSOR_INT32, {1});
9353   OperandType type3(Type::INT32, {});
9354   OperandType type4(Type::FLOAT32, {});
9355   OperandType type66(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 1}, 0.1f, 128);
9356   OperandType type68(Type::TENSOR_QUANT16_ASYMM, {1, 8}, 0.125f, 0);
9357   OperandType type69(Type::TENSOR_QUANT16_ASYMM, {0, 4}, 0.125f, 0);
9358   OperandType type70(Type::TENSOR_QUANT8_ASYMM, {1, 2}, 0.1f, 128);
9359   OperandType type71(Type::TENSOR_QUANT8_ASYMM, {0}, 0.1f, 128);
9360   OperandType type80(Type::TENSOR_QUANT8_ASYMM, {0, 1, 2, 2}, 0.1f, 128);
9361   OperandType type84(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.1f, 128);
9362   // Phase 1, operands
9363   auto scores = model->addOperand(&type70);
9364   auto roi = model->addOperand(&type68);
9365   auto param32 = model->addOperand(&type16);
9366   auto param33 = model->addOperand(&type4);
9367   auto param34 = model->addOperand(&type3);
9368   auto param35 = model->addOperand(&type3);
9369   auto param36 = model->addOperand(&type4);
9370   auto param37 = model->addOperand(&type4);
9371   auto param38 = model->addOperand(&type4);
9372   auto scoresOut = model->addOperand(&type71);
9373   auto roiOut = model->addOperand(&type69);
9374   auto classesOut = model->addOperand(&type14);
9375   auto batchSplitOut = model->addOperand(&type14);
9376   auto in8 = model->addOperand(&type66);
9377   auto param39 = model->addOperand(&type3);
9378   auto param40 = model->addOperand(&type3);
9379   auto param41 = model->addOperand(&type4);
9380   auto param42 = model->addOperand(&type4);
9381   auto param43 = model->addOperand(&type3);
9382   auto param44 = model->addOperand(&type3);
9383   auto layout = model->addOperand(&type0);
9384   auto featureMap = model->addOperand(&type80);
9385   auto param45 = model->addOperand(&type3);
9386   auto param46 = model->addOperand(&type3);
9387   auto out8 = model->addOperand(&type84);
9388   // Phase 2, operations
9389   static uint8_t scores_init[] = {137, 129};
9390   model->setOperandValue(scores, scores_init, sizeof(uint8_t) * 2);
9391   static uint16_t roi_init[] = {8, 8, 80, 80, 0, 0, 80, 80};
9392   model->setOperandValue(roi, roi_init, sizeof(uint16_t) * 8);
9393   static int32_t param32_init[] = {0};
9394   model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
9395   static float param33_init[] = {0.3f};
9396   model->setOperandValue(param33, param33_init, sizeof(float) * 1);
9397   static int32_t param34_init[] = {-1};
9398   model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
9399   static int32_t param35_init[] = {0};
9400   model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
9401   static float param36_init[] = {0.4f};
9402   model->setOperandValue(param36, param36_init, sizeof(float) * 1);
9403   static float param37_init[] = {1.0f};
9404   model->setOperandValue(param37, param37_init, sizeof(float) * 1);
9405   static float param38_init[] = {0.3f};
9406   model->setOperandValue(param38, param38_init, sizeof(float) * 1);
9407   static int32_t param39_init[] = {2};
9408   model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
9409   static int32_t param40_init[] = {2};
9410   model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
9411   static float param41_init[] = {2.0f};
9412   model->setOperandValue(param41, param41_init, sizeof(float) * 1);
9413   static float param42_init[] = {2.0f};
9414   model->setOperandValue(param42, param42_init, sizeof(float) * 1);
9415   static int32_t param43_init[] = {4};
9416   model->setOperandValue(param43, param43_init, sizeof(int32_t) * 1);
9417   static int32_t param44_init[] = {4};
9418   model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
9419   static bool8 layout_init[] = {true};
9420   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
9421   static int32_t param45_init[] = {3};
9422   model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
9423   static int32_t param46_init[] = {3};
9424   model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
9425   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param32, param33, param34, param35, param36, param37, param38}, {scoresOut, roiOut, classesOut, batchSplitOut});
9426   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in8, roiOut, batchSplitOut, param39, param40, param41, param42, param43, param44, layout}, {featureMap});
9427   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap, param45, param46, layout}, {out8});
9428   // Phase 3, inputs and outputs
9429   model->identifyInputsAndOutputs(
9430     {in8},
9431     {scoresOut, classesOut, out8});
9432   assert(model->isValid());
9433 }
9434 
is_ignored_zero_sized_dynamic_output_shape_nchw_quant8(int i)9435 inline bool is_ignored_zero_sized_dynamic_output_shape_nchw_quant8(int i) {
9436   static std::set<int> ignore = {};
9437   return ignore.find(i) != ignore.end();
9438 }
9439 
CreateModel_zero_sized_dynamic_output_shape_nchw_float16(Model * model)9440 void CreateModel_zero_sized_dynamic_output_shape_nchw_float16(Model *model) {
9441   OperandType type0(Type::BOOL, {});
9442   OperandType type14(Type::TENSOR_INT32, {0});
9443   OperandType type16(Type::TENSOR_INT32, {1});
9444   OperandType type22(Type::TENSOR_FLOAT16, {1, 1, 1, 1});
9445   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
9446   OperandType type29(Type::FLOAT16, {});
9447   OperandType type3(Type::INT32, {});
9448   OperandType type74(Type::TENSOR_FLOAT16, {1, 8});
9449   OperandType type75(Type::TENSOR_FLOAT16, {0, 4});
9450   OperandType type76(Type::TENSOR_FLOAT16, {1, 2});
9451   OperandType type82(Type::TENSOR_FLOAT16, {0, 1, 2, 2});
9452   OperandType type85(Type::TENSOR_FLOAT16, {0});
9453   // Phase 1, operands
9454   auto scores = model->addOperand(&type76);
9455   auto roi = model->addOperand(&type74);
9456   auto param32 = model->addOperand(&type16);
9457   auto param33 = model->addOperand(&type29);
9458   auto param34 = model->addOperand(&type3);
9459   auto param35 = model->addOperand(&type3);
9460   auto param36 = model->addOperand(&type29);
9461   auto param37 = model->addOperand(&type29);
9462   auto param38 = model->addOperand(&type29);
9463   auto scoresOut = model->addOperand(&type85);
9464   auto roiOut = model->addOperand(&type75);
9465   auto classesOut = model->addOperand(&type14);
9466   auto batchSplitOut = model->addOperand(&type14);
9467   auto in8 = model->addOperand(&type22);
9468   auto param39 = model->addOperand(&type3);
9469   auto param40 = model->addOperand(&type3);
9470   auto param41 = model->addOperand(&type29);
9471   auto param42 = model->addOperand(&type29);
9472   auto param43 = model->addOperand(&type3);
9473   auto param44 = model->addOperand(&type3);
9474   auto layout = model->addOperand(&type0);
9475   auto featureMap = model->addOperand(&type82);
9476   auto param45 = model->addOperand(&type3);
9477   auto param46 = model->addOperand(&type3);
9478   auto out8 = model->addOperand(&type28);
9479   // Phase 2, operations
9480   static _Float16 scores_init[] = {0.8999999761581421f, 0.10000000149011612f};
9481   model->setOperandValue(scores, scores_init, sizeof(_Float16) * 2);
9482   static _Float16 roi_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
9483   model->setOperandValue(roi, roi_init, sizeof(_Float16) * 8);
9484   static int32_t param32_init[] = {0};
9485   model->setOperandValue(param32, param32_init, sizeof(int32_t) * 1);
9486   static _Float16 param33_init[] = {0.30000001192092896f};
9487   model->setOperandValue(param33, param33_init, sizeof(_Float16) * 1);
9488   static int32_t param34_init[] = {-1};
9489   model->setOperandValue(param34, param34_init, sizeof(int32_t) * 1);
9490   static int32_t param35_init[] = {0};
9491   model->setOperandValue(param35, param35_init, sizeof(int32_t) * 1);
9492   static _Float16 param36_init[] = {0.4000000059604645f};
9493   model->setOperandValue(param36, param36_init, sizeof(_Float16) * 1);
9494   static _Float16 param37_init[] = {1.0f};
9495   model->setOperandValue(param37, param37_init, sizeof(_Float16) * 1);
9496   static _Float16 param38_init[] = {0.30000001192092896f};
9497   model->setOperandValue(param38, param38_init, sizeof(_Float16) * 1);
9498   static int32_t param39_init[] = {2};
9499   model->setOperandValue(param39, param39_init, sizeof(int32_t) * 1);
9500   static int32_t param40_init[] = {2};
9501   model->setOperandValue(param40, param40_init, sizeof(int32_t) * 1);
9502   static _Float16 param41_init[] = {2.0f};
9503   model->setOperandValue(param41, param41_init, sizeof(_Float16) * 1);
9504   static _Float16 param42_init[] = {2.0f};
9505   model->setOperandValue(param42, param42_init, sizeof(_Float16) * 1);
9506   static int32_t param43_init[] = {4};
9507   model->setOperandValue(param43, param43_init, sizeof(int32_t) * 1);
9508   static int32_t param44_init[] = {4};
9509   model->setOperandValue(param44, param44_init, sizeof(int32_t) * 1);
9510   static bool8 layout_init[] = {true};
9511   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
9512   static int32_t param45_init[] = {3};
9513   model->setOperandValue(param45, param45_init, sizeof(int32_t) * 1);
9514   static int32_t param46_init[] = {3};
9515   model->setOperandValue(param46, param46_init, sizeof(int32_t) * 1);
9516   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores, roi, param32, param33, param34, param35, param36, param37, param38}, {scoresOut, roiOut, classesOut, batchSplitOut});
9517   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in8, roiOut, batchSplitOut, param39, param40, param41, param42, param43, param44, layout}, {featureMap});
9518   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap, param45, param46, layout}, {out8});
9519   // Phase 3, inputs and outputs
9520   model->identifyInputsAndOutputs(
9521     {in8},
9522     {scoresOut, classesOut, out8});
9523   assert(model->isValid());
9524 }
9525 
is_ignored_zero_sized_dynamic_output_shape_nchw_float16(int i)9526 inline bool is_ignored_zero_sized_dynamic_output_shape_nchw_float16(int i) {
9527   static std::set<int> ignore = {};
9528   return ignore.find(i) != ignore.end();
9529 }
9530 
CreateModel_zero_sized_nhwc_2(Model * model)9531 void CreateModel_zero_sized_nhwc_2(Model *model) {
9532   OperandType type0(Type::BOOL, {});
9533   OperandType type11(Type::TENSOR_FLOAT32, {1, 2});
9534   OperandType type12(Type::TENSOR_FLOAT32, {1, 8});
9535   OperandType type13(Type::TENSOR_FLOAT32, {0});
9536   OperandType type14(Type::TENSOR_INT32, {0});
9537   OperandType type15(Type::TENSOR_FLOAT32, {0, 4});
9538   OperandType type16(Type::TENSOR_INT32, {1});
9539   OperandType type17(Type::TENSOR_FLOAT32, {0, 2, 2, 1});
9540   OperandType type18(Type::TENSOR_FLOAT32, {0, 3, 3, 1});
9541   OperandType type2(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
9542   OperandType type3(Type::INT32, {});
9543   OperandType type4(Type::FLOAT32, {});
9544   // Phase 1, operands
9545   auto scores1 = model->addOperand(&type11);
9546   auto roi1 = model->addOperand(&type12);
9547   auto param47 = model->addOperand(&type16);
9548   auto param48 = model->addOperand(&type4);
9549   auto param49 = model->addOperand(&type3);
9550   auto param50 = model->addOperand(&type3);
9551   auto param51 = model->addOperand(&type4);
9552   auto param52 = model->addOperand(&type4);
9553   auto param53 = model->addOperand(&type4);
9554   auto scoresOut1 = model->addOperand(&type13);
9555   auto roiOut1 = model->addOperand(&type15);
9556   auto classesOut1 = model->addOperand(&type14);
9557   auto batchSplitOut1 = model->addOperand(&type14);
9558   auto in9 = model->addOperand(&type2);
9559   auto param54 = model->addOperand(&type3);
9560   auto param55 = model->addOperand(&type3);
9561   auto param56 = model->addOperand(&type4);
9562   auto param57 = model->addOperand(&type4);
9563   auto param58 = model->addOperand(&type3);
9564   auto param59 = model->addOperand(&type3);
9565   auto layout = model->addOperand(&type0);
9566   auto featureMap1 = model->addOperand(&type17);
9567   auto param60 = model->addOperand(&type4);
9568   auto param61 = model->addOperand(&type4);
9569   auto out9 = model->addOperand(&type18);
9570   // Phase 2, operations
9571   static float scores1_init[] = {0.9f, 0.1f};
9572   model->setOperandValue(scores1, scores1_init, sizeof(float) * 2);
9573   static float roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
9574   model->setOperandValue(roi1, roi1_init, sizeof(float) * 8);
9575   static int32_t param47_init[] = {0};
9576   model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
9577   static float param48_init[] = {0.3f};
9578   model->setOperandValue(param48, param48_init, sizeof(float) * 1);
9579   static int32_t param49_init[] = {-1};
9580   model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
9581   static int32_t param50_init[] = {0};
9582   model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
9583   static float param51_init[] = {0.4f};
9584   model->setOperandValue(param51, param51_init, sizeof(float) * 1);
9585   static float param52_init[] = {1.0f};
9586   model->setOperandValue(param52, param52_init, sizeof(float) * 1);
9587   static float param53_init[] = {0.3f};
9588   model->setOperandValue(param53, param53_init, sizeof(float) * 1);
9589   static int32_t param54_init[] = {2};
9590   model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
9591   static int32_t param55_init[] = {2};
9592   model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
9593   static float param56_init[] = {2.0f};
9594   model->setOperandValue(param56, param56_init, sizeof(float) * 1);
9595   static float param57_init[] = {2.0f};
9596   model->setOperandValue(param57, param57_init, sizeof(float) * 1);
9597   static int32_t param58_init[] = {4};
9598   model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
9599   static int32_t param59_init[] = {4};
9600   model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
9601   static bool8 layout_init[] = {false};
9602   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
9603   static float param60_init[] = {1.6f};
9604   model->setOperandValue(param60, param60_init, sizeof(float) * 1);
9605   static float param61_init[] = {1.6f};
9606   model->setOperandValue(param61, param61_init, sizeof(float) * 1);
9607   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param47, param48, param49, param50, param51, param52, param53}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
9608   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in9, roiOut1, batchSplitOut1, param54, param55, param56, param57, param58, param59, layout}, {featureMap1});
9609   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap1, param60, param61, layout}, {out9});
9610   // Phase 3, inputs and outputs
9611   model->identifyInputsAndOutputs(
9612     {in9},
9613     {scoresOut1, classesOut1, out9});
9614   assert(model->isValid());
9615 }
9616 
is_ignored_zero_sized_nhwc_2(int i)9617 inline bool is_ignored_zero_sized_nhwc_2(int i) {
9618   static std::set<int> ignore = {};
9619   return ignore.find(i) != ignore.end();
9620 }
9621 
CreateModel_zero_sized_nhwc_relaxed_2(Model * model)9622 void CreateModel_zero_sized_nhwc_relaxed_2(Model *model) {
9623   OperandType type0(Type::BOOL, {});
9624   OperandType type11(Type::TENSOR_FLOAT32, {1, 2});
9625   OperandType type12(Type::TENSOR_FLOAT32, {1, 8});
9626   OperandType type13(Type::TENSOR_FLOAT32, {0});
9627   OperandType type14(Type::TENSOR_INT32, {0});
9628   OperandType type15(Type::TENSOR_FLOAT32, {0, 4});
9629   OperandType type16(Type::TENSOR_INT32, {1});
9630   OperandType type17(Type::TENSOR_FLOAT32, {0, 2, 2, 1});
9631   OperandType type18(Type::TENSOR_FLOAT32, {0, 3, 3, 1});
9632   OperandType type2(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
9633   OperandType type3(Type::INT32, {});
9634   OperandType type4(Type::FLOAT32, {});
9635   // Phase 1, operands
9636   auto scores1 = model->addOperand(&type11);
9637   auto roi1 = model->addOperand(&type12);
9638   auto param47 = model->addOperand(&type16);
9639   auto param48 = model->addOperand(&type4);
9640   auto param49 = model->addOperand(&type3);
9641   auto param50 = model->addOperand(&type3);
9642   auto param51 = model->addOperand(&type4);
9643   auto param52 = model->addOperand(&type4);
9644   auto param53 = model->addOperand(&type4);
9645   auto scoresOut1 = model->addOperand(&type13);
9646   auto roiOut1 = model->addOperand(&type15);
9647   auto classesOut1 = model->addOperand(&type14);
9648   auto batchSplitOut1 = model->addOperand(&type14);
9649   auto in9 = model->addOperand(&type2);
9650   auto param54 = model->addOperand(&type3);
9651   auto param55 = model->addOperand(&type3);
9652   auto param56 = model->addOperand(&type4);
9653   auto param57 = model->addOperand(&type4);
9654   auto param58 = model->addOperand(&type3);
9655   auto param59 = model->addOperand(&type3);
9656   auto layout = model->addOperand(&type0);
9657   auto featureMap1 = model->addOperand(&type17);
9658   auto param60 = model->addOperand(&type4);
9659   auto param61 = model->addOperand(&type4);
9660   auto out9 = model->addOperand(&type18);
9661   // Phase 2, operations
9662   static float scores1_init[] = {0.9f, 0.1f};
9663   model->setOperandValue(scores1, scores1_init, sizeof(float) * 2);
9664   static float roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
9665   model->setOperandValue(roi1, roi1_init, sizeof(float) * 8);
9666   static int32_t param47_init[] = {0};
9667   model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
9668   static float param48_init[] = {0.3f};
9669   model->setOperandValue(param48, param48_init, sizeof(float) * 1);
9670   static int32_t param49_init[] = {-1};
9671   model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
9672   static int32_t param50_init[] = {0};
9673   model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
9674   static float param51_init[] = {0.4f};
9675   model->setOperandValue(param51, param51_init, sizeof(float) * 1);
9676   static float param52_init[] = {1.0f};
9677   model->setOperandValue(param52, param52_init, sizeof(float) * 1);
9678   static float param53_init[] = {0.3f};
9679   model->setOperandValue(param53, param53_init, sizeof(float) * 1);
9680   static int32_t param54_init[] = {2};
9681   model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
9682   static int32_t param55_init[] = {2};
9683   model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
9684   static float param56_init[] = {2.0f};
9685   model->setOperandValue(param56, param56_init, sizeof(float) * 1);
9686   static float param57_init[] = {2.0f};
9687   model->setOperandValue(param57, param57_init, sizeof(float) * 1);
9688   static int32_t param58_init[] = {4};
9689   model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
9690   static int32_t param59_init[] = {4};
9691   model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
9692   static bool8 layout_init[] = {false};
9693   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
9694   static float param60_init[] = {1.6f};
9695   model->setOperandValue(param60, param60_init, sizeof(float) * 1);
9696   static float param61_init[] = {1.6f};
9697   model->setOperandValue(param61, param61_init, sizeof(float) * 1);
9698   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param47, param48, param49, param50, param51, param52, param53}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
9699   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in9, roiOut1, batchSplitOut1, param54, param55, param56, param57, param58, param59, layout}, {featureMap1});
9700   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap1, param60, param61, layout}, {out9});
9701   // Phase 3, inputs and outputs
9702   model->identifyInputsAndOutputs(
9703     {in9},
9704     {scoresOut1, classesOut1, out9});
9705   // Phase 4: set relaxed execution
9706   model->relaxComputationFloat32toFloat16(true);
9707   assert(model->isValid());
9708 }
9709 
is_ignored_zero_sized_nhwc_relaxed_2(int i)9710 inline bool is_ignored_zero_sized_nhwc_relaxed_2(int i) {
9711   static std::set<int> ignore = {};
9712   return ignore.find(i) != ignore.end();
9713 }
9714 
CreateModel_zero_sized_nhwc_quant8_2(Model * model)9715 void CreateModel_zero_sized_nhwc_quant8_2(Model *model) {
9716   OperandType type0(Type::BOOL, {});
9717   OperandType type14(Type::TENSOR_INT32, {0});
9718   OperandType type16(Type::TENSOR_INT32, {1});
9719   OperandType type3(Type::INT32, {});
9720   OperandType type4(Type::FLOAT32, {});
9721   OperandType type65(Type::TENSOR_QUANT8_ASYMM, {0, 2, 2, 1}, 0.1f, 128);
9722   OperandType type66(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 1}, 0.1f, 128);
9723   OperandType type67(Type::TENSOR_QUANT8_ASYMM, {0, 3, 3, 1}, 0.1f, 128);
9724   OperandType type68(Type::TENSOR_QUANT16_ASYMM, {1, 8}, 0.125f, 0);
9725   OperandType type69(Type::TENSOR_QUANT16_ASYMM, {0, 4}, 0.125f, 0);
9726   OperandType type70(Type::TENSOR_QUANT8_ASYMM, {1, 2}, 0.1f, 128);
9727   OperandType type71(Type::TENSOR_QUANT8_ASYMM, {0}, 0.1f, 128);
9728   // Phase 1, operands
9729   auto scores1 = model->addOperand(&type70);
9730   auto roi1 = model->addOperand(&type68);
9731   auto param47 = model->addOperand(&type16);
9732   auto param48 = model->addOperand(&type4);
9733   auto param49 = model->addOperand(&type3);
9734   auto param50 = model->addOperand(&type3);
9735   auto param51 = model->addOperand(&type4);
9736   auto param52 = model->addOperand(&type4);
9737   auto param53 = model->addOperand(&type4);
9738   auto scoresOut1 = model->addOperand(&type71);
9739   auto roiOut1 = model->addOperand(&type69);
9740   auto classesOut1 = model->addOperand(&type14);
9741   auto batchSplitOut1 = model->addOperand(&type14);
9742   auto in9 = model->addOperand(&type66);
9743   auto param54 = model->addOperand(&type3);
9744   auto param55 = model->addOperand(&type3);
9745   auto param56 = model->addOperand(&type4);
9746   auto param57 = model->addOperand(&type4);
9747   auto param58 = model->addOperand(&type3);
9748   auto param59 = model->addOperand(&type3);
9749   auto layout = model->addOperand(&type0);
9750   auto featureMap1 = model->addOperand(&type65);
9751   auto param60 = model->addOperand(&type4);
9752   auto param61 = model->addOperand(&type4);
9753   auto out9 = model->addOperand(&type67);
9754   // Phase 2, operations
9755   static uint8_t scores1_init[] = {137, 129};
9756   model->setOperandValue(scores1, scores1_init, sizeof(uint8_t) * 2);
9757   static uint16_t roi1_init[] = {8, 8, 80, 80, 0, 0, 80, 80};
9758   model->setOperandValue(roi1, roi1_init, sizeof(uint16_t) * 8);
9759   static int32_t param47_init[] = {0};
9760   model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
9761   static float param48_init[] = {0.3f};
9762   model->setOperandValue(param48, param48_init, sizeof(float) * 1);
9763   static int32_t param49_init[] = {-1};
9764   model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
9765   static int32_t param50_init[] = {0};
9766   model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
9767   static float param51_init[] = {0.4f};
9768   model->setOperandValue(param51, param51_init, sizeof(float) * 1);
9769   static float param52_init[] = {1.0f};
9770   model->setOperandValue(param52, param52_init, sizeof(float) * 1);
9771   static float param53_init[] = {0.3f};
9772   model->setOperandValue(param53, param53_init, sizeof(float) * 1);
9773   static int32_t param54_init[] = {2};
9774   model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
9775   static int32_t param55_init[] = {2};
9776   model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
9777   static float param56_init[] = {2.0f};
9778   model->setOperandValue(param56, param56_init, sizeof(float) * 1);
9779   static float param57_init[] = {2.0f};
9780   model->setOperandValue(param57, param57_init, sizeof(float) * 1);
9781   static int32_t param58_init[] = {4};
9782   model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
9783   static int32_t param59_init[] = {4};
9784   model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
9785   static bool8 layout_init[] = {false};
9786   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
9787   static float param60_init[] = {1.6f};
9788   model->setOperandValue(param60, param60_init, sizeof(float) * 1);
9789   static float param61_init[] = {1.6f};
9790   model->setOperandValue(param61, param61_init, sizeof(float) * 1);
9791   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param47, param48, param49, param50, param51, param52, param53}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
9792   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in9, roiOut1, batchSplitOut1, param54, param55, param56, param57, param58, param59, layout}, {featureMap1});
9793   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap1, param60, param61, layout}, {out9});
9794   // Phase 3, inputs and outputs
9795   model->identifyInputsAndOutputs(
9796     {in9},
9797     {scoresOut1, classesOut1, out9});
9798   assert(model->isValid());
9799 }
9800 
is_ignored_zero_sized_nhwc_quant8_2(int i)9801 inline bool is_ignored_zero_sized_nhwc_quant8_2(int i) {
9802   static std::set<int> ignore = {};
9803   return ignore.find(i) != ignore.end();
9804 }
9805 
CreateModel_zero_sized_nhwc_float16_2(Model * model)9806 void CreateModel_zero_sized_nhwc_float16_2(Model *model) {
9807   OperandType type0(Type::BOOL, {});
9808   OperandType type14(Type::TENSOR_INT32, {0});
9809   OperandType type16(Type::TENSOR_INT32, {1});
9810   OperandType type22(Type::TENSOR_FLOAT16, {1, 1, 1, 1});
9811   OperandType type29(Type::FLOAT16, {});
9812   OperandType type3(Type::INT32, {});
9813   OperandType type72(Type::TENSOR_FLOAT16, {0, 2, 2, 1});
9814   OperandType type73(Type::TENSOR_FLOAT16, {0, 3, 3, 1});
9815   OperandType type74(Type::TENSOR_FLOAT16, {1, 8});
9816   OperandType type75(Type::TENSOR_FLOAT16, {0, 4});
9817   OperandType type76(Type::TENSOR_FLOAT16, {1, 2});
9818   OperandType type77(Type::TENSOR_FLOAT16, {0});
9819   // Phase 1, operands
9820   auto scores1 = model->addOperand(&type76);
9821   auto roi1 = model->addOperand(&type74);
9822   auto param47 = model->addOperand(&type16);
9823   auto param48 = model->addOperand(&type29);
9824   auto param49 = model->addOperand(&type3);
9825   auto param50 = model->addOperand(&type3);
9826   auto param51 = model->addOperand(&type29);
9827   auto param52 = model->addOperand(&type29);
9828   auto param53 = model->addOperand(&type29);
9829   auto scoresOut1 = model->addOperand(&type77);
9830   auto roiOut1 = model->addOperand(&type75);
9831   auto classesOut1 = model->addOperand(&type14);
9832   auto batchSplitOut1 = model->addOperand(&type14);
9833   auto in9 = model->addOperand(&type22);
9834   auto param54 = model->addOperand(&type3);
9835   auto param55 = model->addOperand(&type3);
9836   auto param56 = model->addOperand(&type29);
9837   auto param57 = model->addOperand(&type29);
9838   auto param58 = model->addOperand(&type3);
9839   auto param59 = model->addOperand(&type3);
9840   auto layout = model->addOperand(&type0);
9841   auto featureMap1 = model->addOperand(&type72);
9842   auto param60 = model->addOperand(&type29);
9843   auto param61 = model->addOperand(&type29);
9844   auto out9 = model->addOperand(&type73);
9845   // Phase 2, operations
9846   static _Float16 scores1_init[] = {0.8999999761581421f, 0.10000000149011612f};
9847   model->setOperandValue(scores1, scores1_init, sizeof(_Float16) * 2);
9848   static _Float16 roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
9849   model->setOperandValue(roi1, roi1_init, sizeof(_Float16) * 8);
9850   static int32_t param47_init[] = {0};
9851   model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
9852   static _Float16 param48_init[] = {0.30000001192092896f};
9853   model->setOperandValue(param48, param48_init, sizeof(_Float16) * 1);
9854   static int32_t param49_init[] = {-1};
9855   model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
9856   static int32_t param50_init[] = {0};
9857   model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
9858   static _Float16 param51_init[] = {0.4000000059604645f};
9859   model->setOperandValue(param51, param51_init, sizeof(_Float16) * 1);
9860   static _Float16 param52_init[] = {1.0f};
9861   model->setOperandValue(param52, param52_init, sizeof(_Float16) * 1);
9862   static _Float16 param53_init[] = {0.30000001192092896f};
9863   model->setOperandValue(param53, param53_init, sizeof(_Float16) * 1);
9864   static int32_t param54_init[] = {2};
9865   model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
9866   static int32_t param55_init[] = {2};
9867   model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
9868   static _Float16 param56_init[] = {2.0f};
9869   model->setOperandValue(param56, param56_init, sizeof(_Float16) * 1);
9870   static _Float16 param57_init[] = {2.0f};
9871   model->setOperandValue(param57, param57_init, sizeof(_Float16) * 1);
9872   static int32_t param58_init[] = {4};
9873   model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
9874   static int32_t param59_init[] = {4};
9875   model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
9876   static bool8 layout_init[] = {false};
9877   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
9878   static _Float16 param60_init[] = {1.600000023841858f};
9879   model->setOperandValue(param60, param60_init, sizeof(_Float16) * 1);
9880   static _Float16 param61_init[] = {1.600000023841858f};
9881   model->setOperandValue(param61, param61_init, sizeof(_Float16) * 1);
9882   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param47, param48, param49, param50, param51, param52, param53}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
9883   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in9, roiOut1, batchSplitOut1, param54, param55, param56, param57, param58, param59, layout}, {featureMap1});
9884   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap1, param60, param61, layout}, {out9});
9885   // Phase 3, inputs and outputs
9886   model->identifyInputsAndOutputs(
9887     {in9},
9888     {scoresOut1, classesOut1, out9});
9889   assert(model->isValid());
9890 }
9891 
is_ignored_zero_sized_nhwc_float16_2(int i)9892 inline bool is_ignored_zero_sized_nhwc_float16_2(int i) {
9893   static std::set<int> ignore = {};
9894   return ignore.find(i) != ignore.end();
9895 }
9896 
CreateModel_zero_sized_nchw_2(Model * model)9897 void CreateModel_zero_sized_nchw_2(Model *model) {
9898   OperandType type0(Type::BOOL, {});
9899   OperandType type11(Type::TENSOR_FLOAT32, {1, 2});
9900   OperandType type12(Type::TENSOR_FLOAT32, {1, 8});
9901   OperandType type13(Type::TENSOR_FLOAT32, {0});
9902   OperandType type14(Type::TENSOR_INT32, {0});
9903   OperandType type15(Type::TENSOR_FLOAT32, {0, 4});
9904   OperandType type16(Type::TENSOR_INT32, {1});
9905   OperandType type2(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
9906   OperandType type3(Type::INT32, {});
9907   OperandType type4(Type::FLOAT32, {});
9908   OperandType type78(Type::TENSOR_FLOAT32, {0, 1, 2, 2});
9909   OperandType type79(Type::TENSOR_FLOAT32, {0, 1, 3, 3});
9910   // Phase 1, operands
9911   auto scores1 = model->addOperand(&type11);
9912   auto roi1 = model->addOperand(&type12);
9913   auto param47 = model->addOperand(&type16);
9914   auto param48 = model->addOperand(&type4);
9915   auto param49 = model->addOperand(&type3);
9916   auto param50 = model->addOperand(&type3);
9917   auto param51 = model->addOperand(&type4);
9918   auto param52 = model->addOperand(&type4);
9919   auto param53 = model->addOperand(&type4);
9920   auto scoresOut1 = model->addOperand(&type13);
9921   auto roiOut1 = model->addOperand(&type15);
9922   auto classesOut1 = model->addOperand(&type14);
9923   auto batchSplitOut1 = model->addOperand(&type14);
9924   auto in9 = model->addOperand(&type2);
9925   auto param54 = model->addOperand(&type3);
9926   auto param55 = model->addOperand(&type3);
9927   auto param56 = model->addOperand(&type4);
9928   auto param57 = model->addOperand(&type4);
9929   auto param58 = model->addOperand(&type3);
9930   auto param59 = model->addOperand(&type3);
9931   auto layout = model->addOperand(&type0);
9932   auto featureMap1 = model->addOperand(&type78);
9933   auto param60 = model->addOperand(&type4);
9934   auto param61 = model->addOperand(&type4);
9935   auto out9 = model->addOperand(&type79);
9936   // Phase 2, operations
9937   static float scores1_init[] = {0.9f, 0.1f};
9938   model->setOperandValue(scores1, scores1_init, sizeof(float) * 2);
9939   static float roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
9940   model->setOperandValue(roi1, roi1_init, sizeof(float) * 8);
9941   static int32_t param47_init[] = {0};
9942   model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
9943   static float param48_init[] = {0.3f};
9944   model->setOperandValue(param48, param48_init, sizeof(float) * 1);
9945   static int32_t param49_init[] = {-1};
9946   model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
9947   static int32_t param50_init[] = {0};
9948   model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
9949   static float param51_init[] = {0.4f};
9950   model->setOperandValue(param51, param51_init, sizeof(float) * 1);
9951   static float param52_init[] = {1.0f};
9952   model->setOperandValue(param52, param52_init, sizeof(float) * 1);
9953   static float param53_init[] = {0.3f};
9954   model->setOperandValue(param53, param53_init, sizeof(float) * 1);
9955   static int32_t param54_init[] = {2};
9956   model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
9957   static int32_t param55_init[] = {2};
9958   model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
9959   static float param56_init[] = {2.0f};
9960   model->setOperandValue(param56, param56_init, sizeof(float) * 1);
9961   static float param57_init[] = {2.0f};
9962   model->setOperandValue(param57, param57_init, sizeof(float) * 1);
9963   static int32_t param58_init[] = {4};
9964   model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
9965   static int32_t param59_init[] = {4};
9966   model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
9967   static bool8 layout_init[] = {true};
9968   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
9969   static float param60_init[] = {1.6f};
9970   model->setOperandValue(param60, param60_init, sizeof(float) * 1);
9971   static float param61_init[] = {1.6f};
9972   model->setOperandValue(param61, param61_init, sizeof(float) * 1);
9973   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param47, param48, param49, param50, param51, param52, param53}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
9974   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in9, roiOut1, batchSplitOut1, param54, param55, param56, param57, param58, param59, layout}, {featureMap1});
9975   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap1, param60, param61, layout}, {out9});
9976   // Phase 3, inputs and outputs
9977   model->identifyInputsAndOutputs(
9978     {in9},
9979     {scoresOut1, classesOut1, out9});
9980   assert(model->isValid());
9981 }
9982 
is_ignored_zero_sized_nchw_2(int i)9983 inline bool is_ignored_zero_sized_nchw_2(int i) {
9984   static std::set<int> ignore = {};
9985   return ignore.find(i) != ignore.end();
9986 }
9987 
CreateModel_zero_sized_nchw_relaxed_2(Model * model)9988 void CreateModel_zero_sized_nchw_relaxed_2(Model *model) {
9989   OperandType type0(Type::BOOL, {});
9990   OperandType type11(Type::TENSOR_FLOAT32, {1, 2});
9991   OperandType type12(Type::TENSOR_FLOAT32, {1, 8});
9992   OperandType type13(Type::TENSOR_FLOAT32, {0});
9993   OperandType type14(Type::TENSOR_INT32, {0});
9994   OperandType type15(Type::TENSOR_FLOAT32, {0, 4});
9995   OperandType type16(Type::TENSOR_INT32, {1});
9996   OperandType type2(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
9997   OperandType type3(Type::INT32, {});
9998   OperandType type4(Type::FLOAT32, {});
9999   OperandType type78(Type::TENSOR_FLOAT32, {0, 1, 2, 2});
10000   OperandType type79(Type::TENSOR_FLOAT32, {0, 1, 3, 3});
10001   // Phase 1, operands
10002   auto scores1 = model->addOperand(&type11);
10003   auto roi1 = model->addOperand(&type12);
10004   auto param47 = model->addOperand(&type16);
10005   auto param48 = model->addOperand(&type4);
10006   auto param49 = model->addOperand(&type3);
10007   auto param50 = model->addOperand(&type3);
10008   auto param51 = model->addOperand(&type4);
10009   auto param52 = model->addOperand(&type4);
10010   auto param53 = model->addOperand(&type4);
10011   auto scoresOut1 = model->addOperand(&type13);
10012   auto roiOut1 = model->addOperand(&type15);
10013   auto classesOut1 = model->addOperand(&type14);
10014   auto batchSplitOut1 = model->addOperand(&type14);
10015   auto in9 = model->addOperand(&type2);
10016   auto param54 = model->addOperand(&type3);
10017   auto param55 = model->addOperand(&type3);
10018   auto param56 = model->addOperand(&type4);
10019   auto param57 = model->addOperand(&type4);
10020   auto param58 = model->addOperand(&type3);
10021   auto param59 = model->addOperand(&type3);
10022   auto layout = model->addOperand(&type0);
10023   auto featureMap1 = model->addOperand(&type78);
10024   auto param60 = model->addOperand(&type4);
10025   auto param61 = model->addOperand(&type4);
10026   auto out9 = model->addOperand(&type79);
10027   // Phase 2, operations
10028   static float scores1_init[] = {0.9f, 0.1f};
10029   model->setOperandValue(scores1, scores1_init, sizeof(float) * 2);
10030   static float roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
10031   model->setOperandValue(roi1, roi1_init, sizeof(float) * 8);
10032   static int32_t param47_init[] = {0};
10033   model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
10034   static float param48_init[] = {0.3f};
10035   model->setOperandValue(param48, param48_init, sizeof(float) * 1);
10036   static int32_t param49_init[] = {-1};
10037   model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
10038   static int32_t param50_init[] = {0};
10039   model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
10040   static float param51_init[] = {0.4f};
10041   model->setOperandValue(param51, param51_init, sizeof(float) * 1);
10042   static float param52_init[] = {1.0f};
10043   model->setOperandValue(param52, param52_init, sizeof(float) * 1);
10044   static float param53_init[] = {0.3f};
10045   model->setOperandValue(param53, param53_init, sizeof(float) * 1);
10046   static int32_t param54_init[] = {2};
10047   model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
10048   static int32_t param55_init[] = {2};
10049   model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
10050   static float param56_init[] = {2.0f};
10051   model->setOperandValue(param56, param56_init, sizeof(float) * 1);
10052   static float param57_init[] = {2.0f};
10053   model->setOperandValue(param57, param57_init, sizeof(float) * 1);
10054   static int32_t param58_init[] = {4};
10055   model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
10056   static int32_t param59_init[] = {4};
10057   model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
10058   static bool8 layout_init[] = {true};
10059   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
10060   static float param60_init[] = {1.6f};
10061   model->setOperandValue(param60, param60_init, sizeof(float) * 1);
10062   static float param61_init[] = {1.6f};
10063   model->setOperandValue(param61, param61_init, sizeof(float) * 1);
10064   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param47, param48, param49, param50, param51, param52, param53}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
10065   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in9, roiOut1, batchSplitOut1, param54, param55, param56, param57, param58, param59, layout}, {featureMap1});
10066   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap1, param60, param61, layout}, {out9});
10067   // Phase 3, inputs and outputs
10068   model->identifyInputsAndOutputs(
10069     {in9},
10070     {scoresOut1, classesOut1, out9});
10071   // Phase 4: set relaxed execution
10072   model->relaxComputationFloat32toFloat16(true);
10073   assert(model->isValid());
10074 }
10075 
is_ignored_zero_sized_nchw_relaxed_2(int i)10076 inline bool is_ignored_zero_sized_nchw_relaxed_2(int i) {
10077   static std::set<int> ignore = {};
10078   return ignore.find(i) != ignore.end();
10079 }
10080 
CreateModel_zero_sized_nchw_quant8_2(Model * model)10081 void CreateModel_zero_sized_nchw_quant8_2(Model *model) {
10082   OperandType type0(Type::BOOL, {});
10083   OperandType type14(Type::TENSOR_INT32, {0});
10084   OperandType type16(Type::TENSOR_INT32, {1});
10085   OperandType type3(Type::INT32, {});
10086   OperandType type4(Type::FLOAT32, {});
10087   OperandType type66(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 1}, 0.1f, 128);
10088   OperandType type68(Type::TENSOR_QUANT16_ASYMM, {1, 8}, 0.125f, 0);
10089   OperandType type69(Type::TENSOR_QUANT16_ASYMM, {0, 4}, 0.125f, 0);
10090   OperandType type70(Type::TENSOR_QUANT8_ASYMM, {1, 2}, 0.1f, 128);
10091   OperandType type71(Type::TENSOR_QUANT8_ASYMM, {0}, 0.1f, 128);
10092   OperandType type80(Type::TENSOR_QUANT8_ASYMM, {0, 1, 2, 2}, 0.1f, 128);
10093   OperandType type81(Type::TENSOR_QUANT8_ASYMM, {0, 1, 3, 3}, 0.1f, 128);
10094   // Phase 1, operands
10095   auto scores1 = model->addOperand(&type70);
10096   auto roi1 = model->addOperand(&type68);
10097   auto param47 = model->addOperand(&type16);
10098   auto param48 = model->addOperand(&type4);
10099   auto param49 = model->addOperand(&type3);
10100   auto param50 = model->addOperand(&type3);
10101   auto param51 = model->addOperand(&type4);
10102   auto param52 = model->addOperand(&type4);
10103   auto param53 = model->addOperand(&type4);
10104   auto scoresOut1 = model->addOperand(&type71);
10105   auto roiOut1 = model->addOperand(&type69);
10106   auto classesOut1 = model->addOperand(&type14);
10107   auto batchSplitOut1 = model->addOperand(&type14);
10108   auto in9 = model->addOperand(&type66);
10109   auto param54 = model->addOperand(&type3);
10110   auto param55 = model->addOperand(&type3);
10111   auto param56 = model->addOperand(&type4);
10112   auto param57 = model->addOperand(&type4);
10113   auto param58 = model->addOperand(&type3);
10114   auto param59 = model->addOperand(&type3);
10115   auto layout = model->addOperand(&type0);
10116   auto featureMap1 = model->addOperand(&type80);
10117   auto param60 = model->addOperand(&type4);
10118   auto param61 = model->addOperand(&type4);
10119   auto out9 = model->addOperand(&type81);
10120   // Phase 2, operations
10121   static uint8_t scores1_init[] = {137, 129};
10122   model->setOperandValue(scores1, scores1_init, sizeof(uint8_t) * 2);
10123   static uint16_t roi1_init[] = {8, 8, 80, 80, 0, 0, 80, 80};
10124   model->setOperandValue(roi1, roi1_init, sizeof(uint16_t) * 8);
10125   static int32_t param47_init[] = {0};
10126   model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
10127   static float param48_init[] = {0.3f};
10128   model->setOperandValue(param48, param48_init, sizeof(float) * 1);
10129   static int32_t param49_init[] = {-1};
10130   model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
10131   static int32_t param50_init[] = {0};
10132   model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
10133   static float param51_init[] = {0.4f};
10134   model->setOperandValue(param51, param51_init, sizeof(float) * 1);
10135   static float param52_init[] = {1.0f};
10136   model->setOperandValue(param52, param52_init, sizeof(float) * 1);
10137   static float param53_init[] = {0.3f};
10138   model->setOperandValue(param53, param53_init, sizeof(float) * 1);
10139   static int32_t param54_init[] = {2};
10140   model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
10141   static int32_t param55_init[] = {2};
10142   model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
10143   static float param56_init[] = {2.0f};
10144   model->setOperandValue(param56, param56_init, sizeof(float) * 1);
10145   static float param57_init[] = {2.0f};
10146   model->setOperandValue(param57, param57_init, sizeof(float) * 1);
10147   static int32_t param58_init[] = {4};
10148   model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
10149   static int32_t param59_init[] = {4};
10150   model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
10151   static bool8 layout_init[] = {true};
10152   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
10153   static float param60_init[] = {1.6f};
10154   model->setOperandValue(param60, param60_init, sizeof(float) * 1);
10155   static float param61_init[] = {1.6f};
10156   model->setOperandValue(param61, param61_init, sizeof(float) * 1);
10157   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param47, param48, param49, param50, param51, param52, param53}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
10158   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in9, roiOut1, batchSplitOut1, param54, param55, param56, param57, param58, param59, layout}, {featureMap1});
10159   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap1, param60, param61, layout}, {out9});
10160   // Phase 3, inputs and outputs
10161   model->identifyInputsAndOutputs(
10162     {in9},
10163     {scoresOut1, classesOut1, out9});
10164   assert(model->isValid());
10165 }
10166 
is_ignored_zero_sized_nchw_quant8_2(int i)10167 inline bool is_ignored_zero_sized_nchw_quant8_2(int i) {
10168   static std::set<int> ignore = {};
10169   return ignore.find(i) != ignore.end();
10170 }
10171 
CreateModel_zero_sized_nchw_float16_2(Model * model)10172 void CreateModel_zero_sized_nchw_float16_2(Model *model) {
10173   OperandType type0(Type::BOOL, {});
10174   OperandType type14(Type::TENSOR_INT32, {0});
10175   OperandType type16(Type::TENSOR_INT32, {1});
10176   OperandType type22(Type::TENSOR_FLOAT16, {1, 1, 1, 1});
10177   OperandType type29(Type::FLOAT16, {});
10178   OperandType type3(Type::INT32, {});
10179   OperandType type74(Type::TENSOR_FLOAT16, {1, 8});
10180   OperandType type75(Type::TENSOR_FLOAT16, {0, 4});
10181   OperandType type76(Type::TENSOR_FLOAT16, {1, 2});
10182   OperandType type77(Type::TENSOR_FLOAT16, {0});
10183   OperandType type82(Type::TENSOR_FLOAT16, {0, 1, 2, 2});
10184   OperandType type83(Type::TENSOR_FLOAT16, {0, 1, 3, 3});
10185   // Phase 1, operands
10186   auto scores1 = model->addOperand(&type76);
10187   auto roi1 = model->addOperand(&type74);
10188   auto param47 = model->addOperand(&type16);
10189   auto param48 = model->addOperand(&type29);
10190   auto param49 = model->addOperand(&type3);
10191   auto param50 = model->addOperand(&type3);
10192   auto param51 = model->addOperand(&type29);
10193   auto param52 = model->addOperand(&type29);
10194   auto param53 = model->addOperand(&type29);
10195   auto scoresOut1 = model->addOperand(&type77);
10196   auto roiOut1 = model->addOperand(&type75);
10197   auto classesOut1 = model->addOperand(&type14);
10198   auto batchSplitOut1 = model->addOperand(&type14);
10199   auto in9 = model->addOperand(&type22);
10200   auto param54 = model->addOperand(&type3);
10201   auto param55 = model->addOperand(&type3);
10202   auto param56 = model->addOperand(&type29);
10203   auto param57 = model->addOperand(&type29);
10204   auto param58 = model->addOperand(&type3);
10205   auto param59 = model->addOperand(&type3);
10206   auto layout = model->addOperand(&type0);
10207   auto featureMap1 = model->addOperand(&type82);
10208   auto param60 = model->addOperand(&type29);
10209   auto param61 = model->addOperand(&type29);
10210   auto out9 = model->addOperand(&type83);
10211   // Phase 2, operations
10212   static _Float16 scores1_init[] = {0.8999999761581421f, 0.10000000149011612f};
10213   model->setOperandValue(scores1, scores1_init, sizeof(_Float16) * 2);
10214   static _Float16 roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
10215   model->setOperandValue(roi1, roi1_init, sizeof(_Float16) * 8);
10216   static int32_t param47_init[] = {0};
10217   model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
10218   static _Float16 param48_init[] = {0.30000001192092896f};
10219   model->setOperandValue(param48, param48_init, sizeof(_Float16) * 1);
10220   static int32_t param49_init[] = {-1};
10221   model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
10222   static int32_t param50_init[] = {0};
10223   model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
10224   static _Float16 param51_init[] = {0.4000000059604645f};
10225   model->setOperandValue(param51, param51_init, sizeof(_Float16) * 1);
10226   static _Float16 param52_init[] = {1.0f};
10227   model->setOperandValue(param52, param52_init, sizeof(_Float16) * 1);
10228   static _Float16 param53_init[] = {0.30000001192092896f};
10229   model->setOperandValue(param53, param53_init, sizeof(_Float16) * 1);
10230   static int32_t param54_init[] = {2};
10231   model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
10232   static int32_t param55_init[] = {2};
10233   model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
10234   static _Float16 param56_init[] = {2.0f};
10235   model->setOperandValue(param56, param56_init, sizeof(_Float16) * 1);
10236   static _Float16 param57_init[] = {2.0f};
10237   model->setOperandValue(param57, param57_init, sizeof(_Float16) * 1);
10238   static int32_t param58_init[] = {4};
10239   model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
10240   static int32_t param59_init[] = {4};
10241   model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
10242   static bool8 layout_init[] = {true};
10243   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
10244   static _Float16 param60_init[] = {1.600000023841858f};
10245   model->setOperandValue(param60, param60_init, sizeof(_Float16) * 1);
10246   static _Float16 param61_init[] = {1.600000023841858f};
10247   model->setOperandValue(param61, param61_init, sizeof(_Float16) * 1);
10248   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param47, param48, param49, param50, param51, param52, param53}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
10249   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in9, roiOut1, batchSplitOut1, param54, param55, param56, param57, param58, param59, layout}, {featureMap1});
10250   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap1, param60, param61, layout}, {out9});
10251   // Phase 3, inputs and outputs
10252   model->identifyInputsAndOutputs(
10253     {in9},
10254     {scoresOut1, classesOut1, out9});
10255   assert(model->isValid());
10256 }
10257 
is_ignored_zero_sized_nchw_float16_2(int i)10258 inline bool is_ignored_zero_sized_nchw_float16_2(int i) {
10259   static std::set<int> ignore = {};
10260   return ignore.find(i) != ignore.end();
10261 }
10262 
CreateModel_zero_sized_dynamic_output_shape_nhwc_2(Model * model)10263 void CreateModel_zero_sized_dynamic_output_shape_nhwc_2(Model *model) {
10264   OperandType type0(Type::BOOL, {});
10265   OperandType type11(Type::TENSOR_FLOAT32, {1, 2});
10266   OperandType type12(Type::TENSOR_FLOAT32, {1, 8});
10267   OperandType type13(Type::TENSOR_FLOAT32, {0});
10268   OperandType type14(Type::TENSOR_INT32, {0});
10269   OperandType type15(Type::TENSOR_FLOAT32, {0, 4});
10270   OperandType type16(Type::TENSOR_INT32, {1});
10271   OperandType type17(Type::TENSOR_FLOAT32, {0, 2, 2, 1});
10272   OperandType type2(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
10273   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
10274   OperandType type3(Type::INT32, {});
10275   OperandType type4(Type::FLOAT32, {});
10276   // Phase 1, operands
10277   auto scores1 = model->addOperand(&type11);
10278   auto roi1 = model->addOperand(&type12);
10279   auto param47 = model->addOperand(&type16);
10280   auto param48 = model->addOperand(&type4);
10281   auto param49 = model->addOperand(&type3);
10282   auto param50 = model->addOperand(&type3);
10283   auto param51 = model->addOperand(&type4);
10284   auto param52 = model->addOperand(&type4);
10285   auto param53 = model->addOperand(&type4);
10286   auto scoresOut1 = model->addOperand(&type13);
10287   auto roiOut1 = model->addOperand(&type15);
10288   auto classesOut1 = model->addOperand(&type14);
10289   auto batchSplitOut1 = model->addOperand(&type14);
10290   auto in9 = model->addOperand(&type2);
10291   auto param54 = model->addOperand(&type3);
10292   auto param55 = model->addOperand(&type3);
10293   auto param56 = model->addOperand(&type4);
10294   auto param57 = model->addOperand(&type4);
10295   auto param58 = model->addOperand(&type3);
10296   auto param59 = model->addOperand(&type3);
10297   auto layout = model->addOperand(&type0);
10298   auto featureMap1 = model->addOperand(&type17);
10299   auto param60 = model->addOperand(&type4);
10300   auto param61 = model->addOperand(&type4);
10301   auto out9 = model->addOperand(&type26);
10302   // Phase 2, operations
10303   static float scores1_init[] = {0.9f, 0.1f};
10304   model->setOperandValue(scores1, scores1_init, sizeof(float) * 2);
10305   static float roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
10306   model->setOperandValue(roi1, roi1_init, sizeof(float) * 8);
10307   static int32_t param47_init[] = {0};
10308   model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
10309   static float param48_init[] = {0.3f};
10310   model->setOperandValue(param48, param48_init, sizeof(float) * 1);
10311   static int32_t param49_init[] = {-1};
10312   model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
10313   static int32_t param50_init[] = {0};
10314   model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
10315   static float param51_init[] = {0.4f};
10316   model->setOperandValue(param51, param51_init, sizeof(float) * 1);
10317   static float param52_init[] = {1.0f};
10318   model->setOperandValue(param52, param52_init, sizeof(float) * 1);
10319   static float param53_init[] = {0.3f};
10320   model->setOperandValue(param53, param53_init, sizeof(float) * 1);
10321   static int32_t param54_init[] = {2};
10322   model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
10323   static int32_t param55_init[] = {2};
10324   model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
10325   static float param56_init[] = {2.0f};
10326   model->setOperandValue(param56, param56_init, sizeof(float) * 1);
10327   static float param57_init[] = {2.0f};
10328   model->setOperandValue(param57, param57_init, sizeof(float) * 1);
10329   static int32_t param58_init[] = {4};
10330   model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
10331   static int32_t param59_init[] = {4};
10332   model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
10333   static bool8 layout_init[] = {false};
10334   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
10335   static float param60_init[] = {1.6f};
10336   model->setOperandValue(param60, param60_init, sizeof(float) * 1);
10337   static float param61_init[] = {1.6f};
10338   model->setOperandValue(param61, param61_init, sizeof(float) * 1);
10339   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param47, param48, param49, param50, param51, param52, param53}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
10340   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in9, roiOut1, batchSplitOut1, param54, param55, param56, param57, param58, param59, layout}, {featureMap1});
10341   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap1, param60, param61, layout}, {out9});
10342   // Phase 3, inputs and outputs
10343   model->identifyInputsAndOutputs(
10344     {in9},
10345     {scoresOut1, classesOut1, out9});
10346   assert(model->isValid());
10347 }
10348 
is_ignored_zero_sized_dynamic_output_shape_nhwc_2(int i)10349 inline bool is_ignored_zero_sized_dynamic_output_shape_nhwc_2(int i) {
10350   static std::set<int> ignore = {};
10351   return ignore.find(i) != ignore.end();
10352 }
10353 
CreateModel_zero_sized_dynamic_output_shape_nhwc_relaxed_2(Model * model)10354 void CreateModel_zero_sized_dynamic_output_shape_nhwc_relaxed_2(Model *model) {
10355   OperandType type0(Type::BOOL, {});
10356   OperandType type11(Type::TENSOR_FLOAT32, {1, 2});
10357   OperandType type12(Type::TENSOR_FLOAT32, {1, 8});
10358   OperandType type13(Type::TENSOR_FLOAT32, {0});
10359   OperandType type14(Type::TENSOR_INT32, {0});
10360   OperandType type15(Type::TENSOR_FLOAT32, {0, 4});
10361   OperandType type16(Type::TENSOR_INT32, {1});
10362   OperandType type17(Type::TENSOR_FLOAT32, {0, 2, 2, 1});
10363   OperandType type2(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
10364   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
10365   OperandType type3(Type::INT32, {});
10366   OperandType type4(Type::FLOAT32, {});
10367   // Phase 1, operands
10368   auto scores1 = model->addOperand(&type11);
10369   auto roi1 = model->addOperand(&type12);
10370   auto param47 = model->addOperand(&type16);
10371   auto param48 = model->addOperand(&type4);
10372   auto param49 = model->addOperand(&type3);
10373   auto param50 = model->addOperand(&type3);
10374   auto param51 = model->addOperand(&type4);
10375   auto param52 = model->addOperand(&type4);
10376   auto param53 = model->addOperand(&type4);
10377   auto scoresOut1 = model->addOperand(&type13);
10378   auto roiOut1 = model->addOperand(&type15);
10379   auto classesOut1 = model->addOperand(&type14);
10380   auto batchSplitOut1 = model->addOperand(&type14);
10381   auto in9 = model->addOperand(&type2);
10382   auto param54 = model->addOperand(&type3);
10383   auto param55 = model->addOperand(&type3);
10384   auto param56 = model->addOperand(&type4);
10385   auto param57 = model->addOperand(&type4);
10386   auto param58 = model->addOperand(&type3);
10387   auto param59 = model->addOperand(&type3);
10388   auto layout = model->addOperand(&type0);
10389   auto featureMap1 = model->addOperand(&type17);
10390   auto param60 = model->addOperand(&type4);
10391   auto param61 = model->addOperand(&type4);
10392   auto out9 = model->addOperand(&type26);
10393   // Phase 2, operations
10394   static float scores1_init[] = {0.9f, 0.1f};
10395   model->setOperandValue(scores1, scores1_init, sizeof(float) * 2);
10396   static float roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
10397   model->setOperandValue(roi1, roi1_init, sizeof(float) * 8);
10398   static int32_t param47_init[] = {0};
10399   model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
10400   static float param48_init[] = {0.3f};
10401   model->setOperandValue(param48, param48_init, sizeof(float) * 1);
10402   static int32_t param49_init[] = {-1};
10403   model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
10404   static int32_t param50_init[] = {0};
10405   model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
10406   static float param51_init[] = {0.4f};
10407   model->setOperandValue(param51, param51_init, sizeof(float) * 1);
10408   static float param52_init[] = {1.0f};
10409   model->setOperandValue(param52, param52_init, sizeof(float) * 1);
10410   static float param53_init[] = {0.3f};
10411   model->setOperandValue(param53, param53_init, sizeof(float) * 1);
10412   static int32_t param54_init[] = {2};
10413   model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
10414   static int32_t param55_init[] = {2};
10415   model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
10416   static float param56_init[] = {2.0f};
10417   model->setOperandValue(param56, param56_init, sizeof(float) * 1);
10418   static float param57_init[] = {2.0f};
10419   model->setOperandValue(param57, param57_init, sizeof(float) * 1);
10420   static int32_t param58_init[] = {4};
10421   model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
10422   static int32_t param59_init[] = {4};
10423   model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
10424   static bool8 layout_init[] = {false};
10425   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
10426   static float param60_init[] = {1.6f};
10427   model->setOperandValue(param60, param60_init, sizeof(float) * 1);
10428   static float param61_init[] = {1.6f};
10429   model->setOperandValue(param61, param61_init, sizeof(float) * 1);
10430   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param47, param48, param49, param50, param51, param52, param53}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
10431   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in9, roiOut1, batchSplitOut1, param54, param55, param56, param57, param58, param59, layout}, {featureMap1});
10432   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap1, param60, param61, layout}, {out9});
10433   // Phase 3, inputs and outputs
10434   model->identifyInputsAndOutputs(
10435     {in9},
10436     {scoresOut1, classesOut1, out9});
10437   // Phase 4: set relaxed execution
10438   model->relaxComputationFloat32toFloat16(true);
10439   assert(model->isValid());
10440 }
10441 
is_ignored_zero_sized_dynamic_output_shape_nhwc_relaxed_2(int i)10442 inline bool is_ignored_zero_sized_dynamic_output_shape_nhwc_relaxed_2(int i) {
10443   static std::set<int> ignore = {};
10444   return ignore.find(i) != ignore.end();
10445 }
10446 
CreateModel_zero_sized_dynamic_output_shape_nhwc_quant8_2(Model * model)10447 void CreateModel_zero_sized_dynamic_output_shape_nhwc_quant8_2(Model *model) {
10448   OperandType type0(Type::BOOL, {});
10449   OperandType type14(Type::TENSOR_INT32, {0});
10450   OperandType type16(Type::TENSOR_INT32, {1});
10451   OperandType type3(Type::INT32, {});
10452   OperandType type4(Type::FLOAT32, {});
10453   OperandType type65(Type::TENSOR_QUANT8_ASYMM, {0, 2, 2, 1}, 0.1f, 128);
10454   OperandType type66(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 1}, 0.1f, 128);
10455   OperandType type68(Type::TENSOR_QUANT16_ASYMM, {1, 8}, 0.125f, 0);
10456   OperandType type69(Type::TENSOR_QUANT16_ASYMM, {0, 4}, 0.125f, 0);
10457   OperandType type70(Type::TENSOR_QUANT8_ASYMM, {1, 2}, 0.1f, 128);
10458   OperandType type71(Type::TENSOR_QUANT8_ASYMM, {0}, 0.1f, 128);
10459   OperandType type84(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.1f, 128);
10460   // Phase 1, operands
10461   auto scores1 = model->addOperand(&type70);
10462   auto roi1 = model->addOperand(&type68);
10463   auto param47 = model->addOperand(&type16);
10464   auto param48 = model->addOperand(&type4);
10465   auto param49 = model->addOperand(&type3);
10466   auto param50 = model->addOperand(&type3);
10467   auto param51 = model->addOperand(&type4);
10468   auto param52 = model->addOperand(&type4);
10469   auto param53 = model->addOperand(&type4);
10470   auto scoresOut1 = model->addOperand(&type71);
10471   auto roiOut1 = model->addOperand(&type69);
10472   auto classesOut1 = model->addOperand(&type14);
10473   auto batchSplitOut1 = model->addOperand(&type14);
10474   auto in9 = model->addOperand(&type66);
10475   auto param54 = model->addOperand(&type3);
10476   auto param55 = model->addOperand(&type3);
10477   auto param56 = model->addOperand(&type4);
10478   auto param57 = model->addOperand(&type4);
10479   auto param58 = model->addOperand(&type3);
10480   auto param59 = model->addOperand(&type3);
10481   auto layout = model->addOperand(&type0);
10482   auto featureMap1 = model->addOperand(&type65);
10483   auto param60 = model->addOperand(&type4);
10484   auto param61 = model->addOperand(&type4);
10485   auto out9 = model->addOperand(&type84);
10486   // Phase 2, operations
10487   static uint8_t scores1_init[] = {137, 129};
10488   model->setOperandValue(scores1, scores1_init, sizeof(uint8_t) * 2);
10489   static uint16_t roi1_init[] = {8, 8, 80, 80, 0, 0, 80, 80};
10490   model->setOperandValue(roi1, roi1_init, sizeof(uint16_t) * 8);
10491   static int32_t param47_init[] = {0};
10492   model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
10493   static float param48_init[] = {0.3f};
10494   model->setOperandValue(param48, param48_init, sizeof(float) * 1);
10495   static int32_t param49_init[] = {-1};
10496   model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
10497   static int32_t param50_init[] = {0};
10498   model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
10499   static float param51_init[] = {0.4f};
10500   model->setOperandValue(param51, param51_init, sizeof(float) * 1);
10501   static float param52_init[] = {1.0f};
10502   model->setOperandValue(param52, param52_init, sizeof(float) * 1);
10503   static float param53_init[] = {0.3f};
10504   model->setOperandValue(param53, param53_init, sizeof(float) * 1);
10505   static int32_t param54_init[] = {2};
10506   model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
10507   static int32_t param55_init[] = {2};
10508   model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
10509   static float param56_init[] = {2.0f};
10510   model->setOperandValue(param56, param56_init, sizeof(float) * 1);
10511   static float param57_init[] = {2.0f};
10512   model->setOperandValue(param57, param57_init, sizeof(float) * 1);
10513   static int32_t param58_init[] = {4};
10514   model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
10515   static int32_t param59_init[] = {4};
10516   model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
10517   static bool8 layout_init[] = {false};
10518   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
10519   static float param60_init[] = {1.6f};
10520   model->setOperandValue(param60, param60_init, sizeof(float) * 1);
10521   static float param61_init[] = {1.6f};
10522   model->setOperandValue(param61, param61_init, sizeof(float) * 1);
10523   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param47, param48, param49, param50, param51, param52, param53}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
10524   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in9, roiOut1, batchSplitOut1, param54, param55, param56, param57, param58, param59, layout}, {featureMap1});
10525   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap1, param60, param61, layout}, {out9});
10526   // Phase 3, inputs and outputs
10527   model->identifyInputsAndOutputs(
10528     {in9},
10529     {scoresOut1, classesOut1, out9});
10530   assert(model->isValid());
10531 }
10532 
is_ignored_zero_sized_dynamic_output_shape_nhwc_quant8_2(int i)10533 inline bool is_ignored_zero_sized_dynamic_output_shape_nhwc_quant8_2(int i) {
10534   static std::set<int> ignore = {};
10535   return ignore.find(i) != ignore.end();
10536 }
10537 
CreateModel_zero_sized_dynamic_output_shape_nhwc_float16_2(Model * model)10538 void CreateModel_zero_sized_dynamic_output_shape_nhwc_float16_2(Model *model) {
10539   OperandType type0(Type::BOOL, {});
10540   OperandType type14(Type::TENSOR_INT32, {0});
10541   OperandType type16(Type::TENSOR_INT32, {1});
10542   OperandType type22(Type::TENSOR_FLOAT16, {1, 1, 1, 1});
10543   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
10544   OperandType type29(Type::FLOAT16, {});
10545   OperandType type3(Type::INT32, {});
10546   OperandType type72(Type::TENSOR_FLOAT16, {0, 2, 2, 1});
10547   OperandType type74(Type::TENSOR_FLOAT16, {1, 8});
10548   OperandType type75(Type::TENSOR_FLOAT16, {0, 4});
10549   OperandType type76(Type::TENSOR_FLOAT16, {1, 2});
10550   OperandType type85(Type::TENSOR_FLOAT16, {0});
10551   // Phase 1, operands
10552   auto scores1 = model->addOperand(&type76);
10553   auto roi1 = model->addOperand(&type74);
10554   auto param47 = model->addOperand(&type16);
10555   auto param48 = model->addOperand(&type29);
10556   auto param49 = model->addOperand(&type3);
10557   auto param50 = model->addOperand(&type3);
10558   auto param51 = model->addOperand(&type29);
10559   auto param52 = model->addOperand(&type29);
10560   auto param53 = model->addOperand(&type29);
10561   auto scoresOut1 = model->addOperand(&type85);
10562   auto roiOut1 = model->addOperand(&type75);
10563   auto classesOut1 = model->addOperand(&type14);
10564   auto batchSplitOut1 = model->addOperand(&type14);
10565   auto in9 = model->addOperand(&type22);
10566   auto param54 = model->addOperand(&type3);
10567   auto param55 = model->addOperand(&type3);
10568   auto param56 = model->addOperand(&type29);
10569   auto param57 = model->addOperand(&type29);
10570   auto param58 = model->addOperand(&type3);
10571   auto param59 = model->addOperand(&type3);
10572   auto layout = model->addOperand(&type0);
10573   auto featureMap1 = model->addOperand(&type72);
10574   auto param60 = model->addOperand(&type29);
10575   auto param61 = model->addOperand(&type29);
10576   auto out9 = model->addOperand(&type28);
10577   // Phase 2, operations
10578   static _Float16 scores1_init[] = {0.8999999761581421f, 0.10000000149011612f};
10579   model->setOperandValue(scores1, scores1_init, sizeof(_Float16) * 2);
10580   static _Float16 roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
10581   model->setOperandValue(roi1, roi1_init, sizeof(_Float16) * 8);
10582   static int32_t param47_init[] = {0};
10583   model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
10584   static _Float16 param48_init[] = {0.30000001192092896f};
10585   model->setOperandValue(param48, param48_init, sizeof(_Float16) * 1);
10586   static int32_t param49_init[] = {-1};
10587   model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
10588   static int32_t param50_init[] = {0};
10589   model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
10590   static _Float16 param51_init[] = {0.4000000059604645f};
10591   model->setOperandValue(param51, param51_init, sizeof(_Float16) * 1);
10592   static _Float16 param52_init[] = {1.0f};
10593   model->setOperandValue(param52, param52_init, sizeof(_Float16) * 1);
10594   static _Float16 param53_init[] = {0.30000001192092896f};
10595   model->setOperandValue(param53, param53_init, sizeof(_Float16) * 1);
10596   static int32_t param54_init[] = {2};
10597   model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
10598   static int32_t param55_init[] = {2};
10599   model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
10600   static _Float16 param56_init[] = {2.0f};
10601   model->setOperandValue(param56, param56_init, sizeof(_Float16) * 1);
10602   static _Float16 param57_init[] = {2.0f};
10603   model->setOperandValue(param57, param57_init, sizeof(_Float16) * 1);
10604   static int32_t param58_init[] = {4};
10605   model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
10606   static int32_t param59_init[] = {4};
10607   model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
10608   static bool8 layout_init[] = {false};
10609   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
10610   static _Float16 param60_init[] = {1.600000023841858f};
10611   model->setOperandValue(param60, param60_init, sizeof(_Float16) * 1);
10612   static _Float16 param61_init[] = {1.600000023841858f};
10613   model->setOperandValue(param61, param61_init, sizeof(_Float16) * 1);
10614   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param47, param48, param49, param50, param51, param52, param53}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
10615   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in9, roiOut1, batchSplitOut1, param54, param55, param56, param57, param58, param59, layout}, {featureMap1});
10616   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap1, param60, param61, layout}, {out9});
10617   // Phase 3, inputs and outputs
10618   model->identifyInputsAndOutputs(
10619     {in9},
10620     {scoresOut1, classesOut1, out9});
10621   assert(model->isValid());
10622 }
10623 
is_ignored_zero_sized_dynamic_output_shape_nhwc_float16_2(int i)10624 inline bool is_ignored_zero_sized_dynamic_output_shape_nhwc_float16_2(int i) {
10625   static std::set<int> ignore = {};
10626   return ignore.find(i) != ignore.end();
10627 }
10628 
CreateModel_zero_sized_dynamic_output_shape_nchw_2(Model * model)10629 void CreateModel_zero_sized_dynamic_output_shape_nchw_2(Model *model) {
10630   OperandType type0(Type::BOOL, {});
10631   OperandType type11(Type::TENSOR_FLOAT32, {1, 2});
10632   OperandType type12(Type::TENSOR_FLOAT32, {1, 8});
10633   OperandType type13(Type::TENSOR_FLOAT32, {0});
10634   OperandType type14(Type::TENSOR_INT32, {0});
10635   OperandType type15(Type::TENSOR_FLOAT32, {0, 4});
10636   OperandType type16(Type::TENSOR_INT32, {1});
10637   OperandType type2(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
10638   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
10639   OperandType type3(Type::INT32, {});
10640   OperandType type4(Type::FLOAT32, {});
10641   OperandType type78(Type::TENSOR_FLOAT32, {0, 1, 2, 2});
10642   // Phase 1, operands
10643   auto scores1 = model->addOperand(&type11);
10644   auto roi1 = model->addOperand(&type12);
10645   auto param47 = model->addOperand(&type16);
10646   auto param48 = model->addOperand(&type4);
10647   auto param49 = model->addOperand(&type3);
10648   auto param50 = model->addOperand(&type3);
10649   auto param51 = model->addOperand(&type4);
10650   auto param52 = model->addOperand(&type4);
10651   auto param53 = model->addOperand(&type4);
10652   auto scoresOut1 = model->addOperand(&type13);
10653   auto roiOut1 = model->addOperand(&type15);
10654   auto classesOut1 = model->addOperand(&type14);
10655   auto batchSplitOut1 = model->addOperand(&type14);
10656   auto in9 = model->addOperand(&type2);
10657   auto param54 = model->addOperand(&type3);
10658   auto param55 = model->addOperand(&type3);
10659   auto param56 = model->addOperand(&type4);
10660   auto param57 = model->addOperand(&type4);
10661   auto param58 = model->addOperand(&type3);
10662   auto param59 = model->addOperand(&type3);
10663   auto layout = model->addOperand(&type0);
10664   auto featureMap1 = model->addOperand(&type78);
10665   auto param60 = model->addOperand(&type4);
10666   auto param61 = model->addOperand(&type4);
10667   auto out9 = model->addOperand(&type26);
10668   // Phase 2, operations
10669   static float scores1_init[] = {0.9f, 0.1f};
10670   model->setOperandValue(scores1, scores1_init, sizeof(float) * 2);
10671   static float roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
10672   model->setOperandValue(roi1, roi1_init, sizeof(float) * 8);
10673   static int32_t param47_init[] = {0};
10674   model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
10675   static float param48_init[] = {0.3f};
10676   model->setOperandValue(param48, param48_init, sizeof(float) * 1);
10677   static int32_t param49_init[] = {-1};
10678   model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
10679   static int32_t param50_init[] = {0};
10680   model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
10681   static float param51_init[] = {0.4f};
10682   model->setOperandValue(param51, param51_init, sizeof(float) * 1);
10683   static float param52_init[] = {1.0f};
10684   model->setOperandValue(param52, param52_init, sizeof(float) * 1);
10685   static float param53_init[] = {0.3f};
10686   model->setOperandValue(param53, param53_init, sizeof(float) * 1);
10687   static int32_t param54_init[] = {2};
10688   model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
10689   static int32_t param55_init[] = {2};
10690   model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
10691   static float param56_init[] = {2.0f};
10692   model->setOperandValue(param56, param56_init, sizeof(float) * 1);
10693   static float param57_init[] = {2.0f};
10694   model->setOperandValue(param57, param57_init, sizeof(float) * 1);
10695   static int32_t param58_init[] = {4};
10696   model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
10697   static int32_t param59_init[] = {4};
10698   model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
10699   static bool8 layout_init[] = {true};
10700   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
10701   static float param60_init[] = {1.6f};
10702   model->setOperandValue(param60, param60_init, sizeof(float) * 1);
10703   static float param61_init[] = {1.6f};
10704   model->setOperandValue(param61, param61_init, sizeof(float) * 1);
10705   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param47, param48, param49, param50, param51, param52, param53}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
10706   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in9, roiOut1, batchSplitOut1, param54, param55, param56, param57, param58, param59, layout}, {featureMap1});
10707   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap1, param60, param61, layout}, {out9});
10708   // Phase 3, inputs and outputs
10709   model->identifyInputsAndOutputs(
10710     {in9},
10711     {scoresOut1, classesOut1, out9});
10712   assert(model->isValid());
10713 }
10714 
is_ignored_zero_sized_dynamic_output_shape_nchw_2(int i)10715 inline bool is_ignored_zero_sized_dynamic_output_shape_nchw_2(int i) {
10716   static std::set<int> ignore = {};
10717   return ignore.find(i) != ignore.end();
10718 }
10719 
CreateModel_zero_sized_dynamic_output_shape_nchw_relaxed_2(Model * model)10720 void CreateModel_zero_sized_dynamic_output_shape_nchw_relaxed_2(Model *model) {
10721   OperandType type0(Type::BOOL, {});
10722   OperandType type11(Type::TENSOR_FLOAT32, {1, 2});
10723   OperandType type12(Type::TENSOR_FLOAT32, {1, 8});
10724   OperandType type13(Type::TENSOR_FLOAT32, {0});
10725   OperandType type14(Type::TENSOR_INT32, {0});
10726   OperandType type15(Type::TENSOR_FLOAT32, {0, 4});
10727   OperandType type16(Type::TENSOR_INT32, {1});
10728   OperandType type2(Type::TENSOR_FLOAT32, {1, 1, 1, 1});
10729   OperandType type26(Type::TENSOR_FLOAT32, {0, 0, 0, 0});
10730   OperandType type3(Type::INT32, {});
10731   OperandType type4(Type::FLOAT32, {});
10732   OperandType type78(Type::TENSOR_FLOAT32, {0, 1, 2, 2});
10733   // Phase 1, operands
10734   auto scores1 = model->addOperand(&type11);
10735   auto roi1 = model->addOperand(&type12);
10736   auto param47 = model->addOperand(&type16);
10737   auto param48 = model->addOperand(&type4);
10738   auto param49 = model->addOperand(&type3);
10739   auto param50 = model->addOperand(&type3);
10740   auto param51 = model->addOperand(&type4);
10741   auto param52 = model->addOperand(&type4);
10742   auto param53 = model->addOperand(&type4);
10743   auto scoresOut1 = model->addOperand(&type13);
10744   auto roiOut1 = model->addOperand(&type15);
10745   auto classesOut1 = model->addOperand(&type14);
10746   auto batchSplitOut1 = model->addOperand(&type14);
10747   auto in9 = model->addOperand(&type2);
10748   auto param54 = model->addOperand(&type3);
10749   auto param55 = model->addOperand(&type3);
10750   auto param56 = model->addOperand(&type4);
10751   auto param57 = model->addOperand(&type4);
10752   auto param58 = model->addOperand(&type3);
10753   auto param59 = model->addOperand(&type3);
10754   auto layout = model->addOperand(&type0);
10755   auto featureMap1 = model->addOperand(&type78);
10756   auto param60 = model->addOperand(&type4);
10757   auto param61 = model->addOperand(&type4);
10758   auto out9 = model->addOperand(&type26);
10759   // Phase 2, operations
10760   static float scores1_init[] = {0.9f, 0.1f};
10761   model->setOperandValue(scores1, scores1_init, sizeof(float) * 2);
10762   static float roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
10763   model->setOperandValue(roi1, roi1_init, sizeof(float) * 8);
10764   static int32_t param47_init[] = {0};
10765   model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
10766   static float param48_init[] = {0.3f};
10767   model->setOperandValue(param48, param48_init, sizeof(float) * 1);
10768   static int32_t param49_init[] = {-1};
10769   model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
10770   static int32_t param50_init[] = {0};
10771   model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
10772   static float param51_init[] = {0.4f};
10773   model->setOperandValue(param51, param51_init, sizeof(float) * 1);
10774   static float param52_init[] = {1.0f};
10775   model->setOperandValue(param52, param52_init, sizeof(float) * 1);
10776   static float param53_init[] = {0.3f};
10777   model->setOperandValue(param53, param53_init, sizeof(float) * 1);
10778   static int32_t param54_init[] = {2};
10779   model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
10780   static int32_t param55_init[] = {2};
10781   model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
10782   static float param56_init[] = {2.0f};
10783   model->setOperandValue(param56, param56_init, sizeof(float) * 1);
10784   static float param57_init[] = {2.0f};
10785   model->setOperandValue(param57, param57_init, sizeof(float) * 1);
10786   static int32_t param58_init[] = {4};
10787   model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
10788   static int32_t param59_init[] = {4};
10789   model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
10790   static bool8 layout_init[] = {true};
10791   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
10792   static float param60_init[] = {1.6f};
10793   model->setOperandValue(param60, param60_init, sizeof(float) * 1);
10794   static float param61_init[] = {1.6f};
10795   model->setOperandValue(param61, param61_init, sizeof(float) * 1);
10796   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param47, param48, param49, param50, param51, param52, param53}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
10797   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in9, roiOut1, batchSplitOut1, param54, param55, param56, param57, param58, param59, layout}, {featureMap1});
10798   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap1, param60, param61, layout}, {out9});
10799   // Phase 3, inputs and outputs
10800   model->identifyInputsAndOutputs(
10801     {in9},
10802     {scoresOut1, classesOut1, out9});
10803   // Phase 4: set relaxed execution
10804   model->relaxComputationFloat32toFloat16(true);
10805   assert(model->isValid());
10806 }
10807 
is_ignored_zero_sized_dynamic_output_shape_nchw_relaxed_2(int i)10808 inline bool is_ignored_zero_sized_dynamic_output_shape_nchw_relaxed_2(int i) {
10809   static std::set<int> ignore = {};
10810   return ignore.find(i) != ignore.end();
10811 }
10812 
CreateModel_zero_sized_dynamic_output_shape_nchw_quant8_2(Model * model)10813 void CreateModel_zero_sized_dynamic_output_shape_nchw_quant8_2(Model *model) {
10814   OperandType type0(Type::BOOL, {});
10815   OperandType type14(Type::TENSOR_INT32, {0});
10816   OperandType type16(Type::TENSOR_INT32, {1});
10817   OperandType type3(Type::INT32, {});
10818   OperandType type4(Type::FLOAT32, {});
10819   OperandType type66(Type::TENSOR_QUANT8_ASYMM, {1, 1, 1, 1}, 0.1f, 128);
10820   OperandType type68(Type::TENSOR_QUANT16_ASYMM, {1, 8}, 0.125f, 0);
10821   OperandType type69(Type::TENSOR_QUANT16_ASYMM, {0, 4}, 0.125f, 0);
10822   OperandType type70(Type::TENSOR_QUANT8_ASYMM, {1, 2}, 0.1f, 128);
10823   OperandType type71(Type::TENSOR_QUANT8_ASYMM, {0}, 0.1f, 128);
10824   OperandType type80(Type::TENSOR_QUANT8_ASYMM, {0, 1, 2, 2}, 0.1f, 128);
10825   OperandType type84(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0, 0}, 0.1f, 128);
10826   // Phase 1, operands
10827   auto scores1 = model->addOperand(&type70);
10828   auto roi1 = model->addOperand(&type68);
10829   auto param47 = model->addOperand(&type16);
10830   auto param48 = model->addOperand(&type4);
10831   auto param49 = model->addOperand(&type3);
10832   auto param50 = model->addOperand(&type3);
10833   auto param51 = model->addOperand(&type4);
10834   auto param52 = model->addOperand(&type4);
10835   auto param53 = model->addOperand(&type4);
10836   auto scoresOut1 = model->addOperand(&type71);
10837   auto roiOut1 = model->addOperand(&type69);
10838   auto classesOut1 = model->addOperand(&type14);
10839   auto batchSplitOut1 = model->addOperand(&type14);
10840   auto in9 = model->addOperand(&type66);
10841   auto param54 = model->addOperand(&type3);
10842   auto param55 = model->addOperand(&type3);
10843   auto param56 = model->addOperand(&type4);
10844   auto param57 = model->addOperand(&type4);
10845   auto param58 = model->addOperand(&type3);
10846   auto param59 = model->addOperand(&type3);
10847   auto layout = model->addOperand(&type0);
10848   auto featureMap1 = model->addOperand(&type80);
10849   auto param60 = model->addOperand(&type4);
10850   auto param61 = model->addOperand(&type4);
10851   auto out9 = model->addOperand(&type84);
10852   // Phase 2, operations
10853   static uint8_t scores1_init[] = {137, 129};
10854   model->setOperandValue(scores1, scores1_init, sizeof(uint8_t) * 2);
10855   static uint16_t roi1_init[] = {8, 8, 80, 80, 0, 0, 80, 80};
10856   model->setOperandValue(roi1, roi1_init, sizeof(uint16_t) * 8);
10857   static int32_t param47_init[] = {0};
10858   model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
10859   static float param48_init[] = {0.3f};
10860   model->setOperandValue(param48, param48_init, sizeof(float) * 1);
10861   static int32_t param49_init[] = {-1};
10862   model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
10863   static int32_t param50_init[] = {0};
10864   model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
10865   static float param51_init[] = {0.4f};
10866   model->setOperandValue(param51, param51_init, sizeof(float) * 1);
10867   static float param52_init[] = {1.0f};
10868   model->setOperandValue(param52, param52_init, sizeof(float) * 1);
10869   static float param53_init[] = {0.3f};
10870   model->setOperandValue(param53, param53_init, sizeof(float) * 1);
10871   static int32_t param54_init[] = {2};
10872   model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
10873   static int32_t param55_init[] = {2};
10874   model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
10875   static float param56_init[] = {2.0f};
10876   model->setOperandValue(param56, param56_init, sizeof(float) * 1);
10877   static float param57_init[] = {2.0f};
10878   model->setOperandValue(param57, param57_init, sizeof(float) * 1);
10879   static int32_t param58_init[] = {4};
10880   model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
10881   static int32_t param59_init[] = {4};
10882   model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
10883   static bool8 layout_init[] = {true};
10884   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
10885   static float param60_init[] = {1.6f};
10886   model->setOperandValue(param60, param60_init, sizeof(float) * 1);
10887   static float param61_init[] = {1.6f};
10888   model->setOperandValue(param61, param61_init, sizeof(float) * 1);
10889   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param47, param48, param49, param50, param51, param52, param53}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
10890   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in9, roiOut1, batchSplitOut1, param54, param55, param56, param57, param58, param59, layout}, {featureMap1});
10891   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap1, param60, param61, layout}, {out9});
10892   // Phase 3, inputs and outputs
10893   model->identifyInputsAndOutputs(
10894     {in9},
10895     {scoresOut1, classesOut1, out9});
10896   assert(model->isValid());
10897 }
10898 
is_ignored_zero_sized_dynamic_output_shape_nchw_quant8_2(int i)10899 inline bool is_ignored_zero_sized_dynamic_output_shape_nchw_quant8_2(int i) {
10900   static std::set<int> ignore = {};
10901   return ignore.find(i) != ignore.end();
10902 }
10903 
CreateModel_zero_sized_dynamic_output_shape_nchw_float16_2(Model * model)10904 void CreateModel_zero_sized_dynamic_output_shape_nchw_float16_2(Model *model) {
10905   OperandType type0(Type::BOOL, {});
10906   OperandType type14(Type::TENSOR_INT32, {0});
10907   OperandType type16(Type::TENSOR_INT32, {1});
10908   OperandType type22(Type::TENSOR_FLOAT16, {1, 1, 1, 1});
10909   OperandType type28(Type::TENSOR_FLOAT16, {0, 0, 0, 0});
10910   OperandType type29(Type::FLOAT16, {});
10911   OperandType type3(Type::INT32, {});
10912   OperandType type74(Type::TENSOR_FLOAT16, {1, 8});
10913   OperandType type75(Type::TENSOR_FLOAT16, {0, 4});
10914   OperandType type76(Type::TENSOR_FLOAT16, {1, 2});
10915   OperandType type82(Type::TENSOR_FLOAT16, {0, 1, 2, 2});
10916   OperandType type85(Type::TENSOR_FLOAT16, {0});
10917   // Phase 1, operands
10918   auto scores1 = model->addOperand(&type76);
10919   auto roi1 = model->addOperand(&type74);
10920   auto param47 = model->addOperand(&type16);
10921   auto param48 = model->addOperand(&type29);
10922   auto param49 = model->addOperand(&type3);
10923   auto param50 = model->addOperand(&type3);
10924   auto param51 = model->addOperand(&type29);
10925   auto param52 = model->addOperand(&type29);
10926   auto param53 = model->addOperand(&type29);
10927   auto scoresOut1 = model->addOperand(&type85);
10928   auto roiOut1 = model->addOperand(&type75);
10929   auto classesOut1 = model->addOperand(&type14);
10930   auto batchSplitOut1 = model->addOperand(&type14);
10931   auto in9 = model->addOperand(&type22);
10932   auto param54 = model->addOperand(&type3);
10933   auto param55 = model->addOperand(&type3);
10934   auto param56 = model->addOperand(&type29);
10935   auto param57 = model->addOperand(&type29);
10936   auto param58 = model->addOperand(&type3);
10937   auto param59 = model->addOperand(&type3);
10938   auto layout = model->addOperand(&type0);
10939   auto featureMap1 = model->addOperand(&type82);
10940   auto param60 = model->addOperand(&type29);
10941   auto param61 = model->addOperand(&type29);
10942   auto out9 = model->addOperand(&type28);
10943   // Phase 2, operations
10944   static _Float16 scores1_init[] = {0.8999999761581421f, 0.10000000149011612f};
10945   model->setOperandValue(scores1, scores1_init, sizeof(_Float16) * 2);
10946   static _Float16 roi1_init[] = {1.0f, 1.0f, 10.0f, 10.0f, 0.0f, 0.0f, 10.0f, 10.0f};
10947   model->setOperandValue(roi1, roi1_init, sizeof(_Float16) * 8);
10948   static int32_t param47_init[] = {0};
10949   model->setOperandValue(param47, param47_init, sizeof(int32_t) * 1);
10950   static _Float16 param48_init[] = {0.30000001192092896f};
10951   model->setOperandValue(param48, param48_init, sizeof(_Float16) * 1);
10952   static int32_t param49_init[] = {-1};
10953   model->setOperandValue(param49, param49_init, sizeof(int32_t) * 1);
10954   static int32_t param50_init[] = {0};
10955   model->setOperandValue(param50, param50_init, sizeof(int32_t) * 1);
10956   static _Float16 param51_init[] = {0.4000000059604645f};
10957   model->setOperandValue(param51, param51_init, sizeof(_Float16) * 1);
10958   static _Float16 param52_init[] = {1.0f};
10959   model->setOperandValue(param52, param52_init, sizeof(_Float16) * 1);
10960   static _Float16 param53_init[] = {0.30000001192092896f};
10961   model->setOperandValue(param53, param53_init, sizeof(_Float16) * 1);
10962   static int32_t param54_init[] = {2};
10963   model->setOperandValue(param54, param54_init, sizeof(int32_t) * 1);
10964   static int32_t param55_init[] = {2};
10965   model->setOperandValue(param55, param55_init, sizeof(int32_t) * 1);
10966   static _Float16 param56_init[] = {2.0f};
10967   model->setOperandValue(param56, param56_init, sizeof(_Float16) * 1);
10968   static _Float16 param57_init[] = {2.0f};
10969   model->setOperandValue(param57, param57_init, sizeof(_Float16) * 1);
10970   static int32_t param58_init[] = {4};
10971   model->setOperandValue(param58, param58_init, sizeof(int32_t) * 1);
10972   static int32_t param59_init[] = {4};
10973   model->setOperandValue(param59, param59_init, sizeof(int32_t) * 1);
10974   static bool8 layout_init[] = {true};
10975   model->setOperandValue(layout, layout_init, sizeof(bool8) * 1);
10976   static _Float16 param60_init[] = {1.600000023841858f};
10977   model->setOperandValue(param60, param60_init, sizeof(_Float16) * 1);
10978   static _Float16 param61_init[] = {1.600000023841858f};
10979   model->setOperandValue(param61, param61_init, sizeof(_Float16) * 1);
10980   model->addOperation(ANEURALNETWORKS_BOX_WITH_NMS_LIMIT, {scores1, roi1, param47, param48, param49, param50, param51, param52, param53}, {scoresOut1, roiOut1, classesOut1, batchSplitOut1});
10981   model->addOperation(ANEURALNETWORKS_ROI_ALIGN, {in9, roiOut1, batchSplitOut1, param54, param55, param56, param57, param58, param59, layout}, {featureMap1});
10982   model->addOperation(ANEURALNETWORKS_RESIZE_NEAREST_NEIGHBOR, {featureMap1, param60, param61, layout}, {out9});
10983   // Phase 3, inputs and outputs
10984   model->identifyInputsAndOutputs(
10985     {in9},
10986     {scoresOut1, classesOut1, out9});
10987   assert(model->isValid());
10988 }
10989 
is_ignored_zero_sized_dynamic_output_shape_nchw_float16_2(int i)10990 inline bool is_ignored_zero_sized_dynamic_output_shape_nchw_float16_2(int i) {
10991   static std::set<int> ignore = {};
10992   return ignore.find(i) != ignore.end();
10993 }
10994 
10995