Home | History | Annotate | Download | only in models
      1 // clang-format off
      2 // Generated file (from: reduce_min.mod.py). Do not edit
      3 void CreateModel(Model *model) {
      4   OperandType type0(Type::TENSOR_FLOAT32, {3, 2});
      5   OperandType type1(Type::TENSOR_FLOAT32, {3});
      6   OperandType type2(Type::TENSOR_INT32, {1});
      7   OperandType type3(Type::BOOL, {});
      8   // Phase 1, operands
      9   auto input0 = model->addOperand(&type0);
     10   auto param = model->addOperand(&type2);
     11   auto param1 = model->addOperand(&type3);
     12   auto output0 = model->addOperand(&type1);
     13   // Phase 2, operations
     14   static int32_t param_init[] = {-1};
     15   model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
     16   static bool8 param1_init[] = {false};
     17   model->setOperandValue(param1, param1_init, sizeof(bool8) * 1);
     18   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input0, param, param1}, {output0});
     19   // Phase 3, inputs and outputs
     20   model->identifyInputsAndOutputs(
     21     {input0},
     22     {output0});
     23   assert(model->isValid());
     24 }
     25 
     26 inline bool is_ignored(int i) {
     27   static std::set<int> ignore = {};
     28   return ignore.find(i) != ignore.end();
     29 }
     30 
     31 void CreateModel_relaxed(Model *model) {
     32   OperandType type0(Type::TENSOR_FLOAT32, {3, 2});
     33   OperandType type1(Type::TENSOR_FLOAT32, {3});
     34   OperandType type2(Type::TENSOR_INT32, {1});
     35   OperandType type3(Type::BOOL, {});
     36   // Phase 1, operands
     37   auto input0 = model->addOperand(&type0);
     38   auto param = model->addOperand(&type2);
     39   auto param1 = model->addOperand(&type3);
     40   auto output0 = model->addOperand(&type1);
     41   // Phase 2, operations
     42   static int32_t param_init[] = {-1};
     43   model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
     44   static bool8 param1_init[] = {false};
     45   model->setOperandValue(param1, param1_init, sizeof(bool8) * 1);
     46   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input0, param, param1}, {output0});
     47   // Phase 3, inputs and outputs
     48   model->identifyInputsAndOutputs(
     49     {input0},
     50     {output0});
     51   // Phase 4: set relaxed execution
     52   model->relaxComputationFloat32toFloat16(true);
     53   assert(model->isValid());
     54 }
     55 
     56 inline bool is_ignored_relaxed(int i) {
     57   static std::set<int> ignore = {};
     58   return ignore.find(i) != ignore.end();
     59 }
     60 
     61 void CreateModel_float16(Model *model) {
     62   OperandType type10(Type::TENSOR_FLOAT16, {3, 2});
     63   OperandType type11(Type::TENSOR_FLOAT16, {3});
     64   OperandType type2(Type::TENSOR_INT32, {1});
     65   OperandType type3(Type::BOOL, {});
     66   // Phase 1, operands
     67   auto input0 = model->addOperand(&type10);
     68   auto param = model->addOperand(&type2);
     69   auto param1 = model->addOperand(&type3);
     70   auto output0 = model->addOperand(&type11);
     71   // Phase 2, operations
     72   static int32_t param_init[] = {-1};
     73   model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
     74   static bool8 param1_init[] = {false};
     75   model->setOperandValue(param1, param1_init, sizeof(bool8) * 1);
     76   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input0, param, param1}, {output0});
     77   // Phase 3, inputs and outputs
     78   model->identifyInputsAndOutputs(
     79     {input0},
     80     {output0});
     81   assert(model->isValid());
     82 }
     83 
     84 inline bool is_ignored_float16(int i) {
     85   static std::set<int> ignore = {};
     86   return ignore.find(i) != ignore.end();
     87 }
     88 
     89 void CreateModel_quant8(Model *model) {
     90   OperandType type12(Type::TENSOR_QUANT8_ASYMM, {3, 2}, 0.5f, 127);
     91   OperandType type13(Type::TENSOR_QUANT8_ASYMM, {3}, 0.5f, 127);
     92   OperandType type2(Type::TENSOR_INT32, {1});
     93   OperandType type3(Type::BOOL, {});
     94   // Phase 1, operands
     95   auto input0 = model->addOperand(&type12);
     96   auto param = model->addOperand(&type2);
     97   auto param1 = model->addOperand(&type3);
     98   auto output0 = model->addOperand(&type13);
     99   // Phase 2, operations
    100   static int32_t param_init[] = {-1};
    101   model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
    102   static bool8 param1_init[] = {false};
    103   model->setOperandValue(param1, param1_init, sizeof(bool8) * 1);
    104   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input0, param, param1}, {output0});
    105   // Phase 3, inputs and outputs
    106   model->identifyInputsAndOutputs(
    107     {input0},
    108     {output0});
    109   assert(model->isValid());
    110 }
    111 
    112 inline bool is_ignored_quant8(int i) {
    113   static std::set<int> ignore = {};
    114   return ignore.find(i) != ignore.end();
    115 }
    116 
    117 void CreateModel_dynamic_output_shape(Model *model) {
    118   OperandType type0(Type::TENSOR_FLOAT32, {3, 2});
    119   OperandType type14(Type::TENSOR_FLOAT32, {0});
    120   OperandType type2(Type::TENSOR_INT32, {1});
    121   OperandType type3(Type::BOOL, {});
    122   // Phase 1, operands
    123   auto input0 = model->addOperand(&type0);
    124   auto param = model->addOperand(&type2);
    125   auto param1 = model->addOperand(&type3);
    126   auto output0 = model->addOperand(&type14);
    127   // Phase 2, operations
    128   static int32_t param_init[] = {-1};
    129   model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
    130   static bool8 param1_init[] = {false};
    131   model->setOperandValue(param1, param1_init, sizeof(bool8) * 1);
    132   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input0, param, param1}, {output0});
    133   // Phase 3, inputs and outputs
    134   model->identifyInputsAndOutputs(
    135     {input0},
    136     {output0});
    137   assert(model->isValid());
    138 }
    139 
    140 inline bool is_ignored_dynamic_output_shape(int i) {
    141   static std::set<int> ignore = {};
    142   return ignore.find(i) != ignore.end();
    143 }
    144 
    145 void CreateModel_dynamic_output_shape_relaxed(Model *model) {
    146   OperandType type0(Type::TENSOR_FLOAT32, {3, 2});
    147   OperandType type14(Type::TENSOR_FLOAT32, {0});
    148   OperandType type2(Type::TENSOR_INT32, {1});
    149   OperandType type3(Type::BOOL, {});
    150   // Phase 1, operands
    151   auto input0 = model->addOperand(&type0);
    152   auto param = model->addOperand(&type2);
    153   auto param1 = model->addOperand(&type3);
    154   auto output0 = model->addOperand(&type14);
    155   // Phase 2, operations
    156   static int32_t param_init[] = {-1};
    157   model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
    158   static bool8 param1_init[] = {false};
    159   model->setOperandValue(param1, param1_init, sizeof(bool8) * 1);
    160   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input0, param, param1}, {output0});
    161   // Phase 3, inputs and outputs
    162   model->identifyInputsAndOutputs(
    163     {input0},
    164     {output0});
    165   // Phase 4: set relaxed execution
    166   model->relaxComputationFloat32toFloat16(true);
    167   assert(model->isValid());
    168 }
    169 
    170 inline bool is_ignored_dynamic_output_shape_relaxed(int i) {
    171   static std::set<int> ignore = {};
    172   return ignore.find(i) != ignore.end();
    173 }
    174 
    175 void CreateModel_dynamic_output_shape_float16(Model *model) {
    176   OperandType type10(Type::TENSOR_FLOAT16, {3, 2});
    177   OperandType type15(Type::TENSOR_FLOAT16, {0});
    178   OperandType type2(Type::TENSOR_INT32, {1});
    179   OperandType type3(Type::BOOL, {});
    180   // Phase 1, operands
    181   auto input0 = model->addOperand(&type10);
    182   auto param = model->addOperand(&type2);
    183   auto param1 = model->addOperand(&type3);
    184   auto output0 = model->addOperand(&type15);
    185   // Phase 2, operations
    186   static int32_t param_init[] = {-1};
    187   model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
    188   static bool8 param1_init[] = {false};
    189   model->setOperandValue(param1, param1_init, sizeof(bool8) * 1);
    190   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input0, param, param1}, {output0});
    191   // Phase 3, inputs and outputs
    192   model->identifyInputsAndOutputs(
    193     {input0},
    194     {output0});
    195   assert(model->isValid());
    196 }
    197 
    198 inline bool is_ignored_dynamic_output_shape_float16(int i) {
    199   static std::set<int> ignore = {};
    200   return ignore.find(i) != ignore.end();
    201 }
    202 
    203 void CreateModel_dynamic_output_shape_quant8(Model *model) {
    204   OperandType type12(Type::TENSOR_QUANT8_ASYMM, {3, 2}, 0.5f, 127);
    205   OperandType type16(Type::TENSOR_QUANT8_ASYMM, {0}, 0.5f, 127);
    206   OperandType type2(Type::TENSOR_INT32, {1});
    207   OperandType type3(Type::BOOL, {});
    208   // Phase 1, operands
    209   auto input0 = model->addOperand(&type12);
    210   auto param = model->addOperand(&type2);
    211   auto param1 = model->addOperand(&type3);
    212   auto output0 = model->addOperand(&type16);
    213   // Phase 2, operations
    214   static int32_t param_init[] = {-1};
    215   model->setOperandValue(param, param_init, sizeof(int32_t) * 1);
    216   static bool8 param1_init[] = {false};
    217   model->setOperandValue(param1, param1_init, sizeof(bool8) * 1);
    218   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input0, param, param1}, {output0});
    219   // Phase 3, inputs and outputs
    220   model->identifyInputsAndOutputs(
    221     {input0},
    222     {output0});
    223   assert(model->isValid());
    224 }
    225 
    226 inline bool is_ignored_dynamic_output_shape_quant8(int i) {
    227   static std::set<int> ignore = {};
    228   return ignore.find(i) != ignore.end();
    229 }
    230 
    231 void CreateModel_2(Model *model) {
    232   OperandType type2(Type::TENSOR_INT32, {1});
    233   OperandType type3(Type::BOOL, {});
    234   OperandType type4(Type::TENSOR_FLOAT32, {1});
    235   // Phase 1, operands
    236   auto input01 = model->addOperand(&type4);
    237   auto param2 = model->addOperand(&type2);
    238   auto param3 = model->addOperand(&type3);
    239   auto output01 = model->addOperand(&type4);
    240   // Phase 2, operations
    241   static int32_t param2_init[] = {0};
    242   model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1);
    243   static bool8 param3_init[] = {true};
    244   model->setOperandValue(param3, param3_init, sizeof(bool8) * 1);
    245   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input01, param2, param3}, {output01});
    246   // Phase 3, inputs and outputs
    247   model->identifyInputsAndOutputs(
    248     {input01},
    249     {output01});
    250   assert(model->isValid());
    251 }
    252 
    253 inline bool is_ignored_2(int i) {
    254   static std::set<int> ignore = {};
    255   return ignore.find(i) != ignore.end();
    256 }
    257 
    258 void CreateModel_relaxed_2(Model *model) {
    259   OperandType type2(Type::TENSOR_INT32, {1});
    260   OperandType type3(Type::BOOL, {});
    261   OperandType type4(Type::TENSOR_FLOAT32, {1});
    262   // Phase 1, operands
    263   auto input01 = model->addOperand(&type4);
    264   auto param2 = model->addOperand(&type2);
    265   auto param3 = model->addOperand(&type3);
    266   auto output01 = model->addOperand(&type4);
    267   // Phase 2, operations
    268   static int32_t param2_init[] = {0};
    269   model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1);
    270   static bool8 param3_init[] = {true};
    271   model->setOperandValue(param3, param3_init, sizeof(bool8) * 1);
    272   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input01, param2, param3}, {output01});
    273   // Phase 3, inputs and outputs
    274   model->identifyInputsAndOutputs(
    275     {input01},
    276     {output01});
    277   // Phase 4: set relaxed execution
    278   model->relaxComputationFloat32toFloat16(true);
    279   assert(model->isValid());
    280 }
    281 
    282 inline bool is_ignored_relaxed_2(int i) {
    283   static std::set<int> ignore = {};
    284   return ignore.find(i) != ignore.end();
    285 }
    286 
    287 void CreateModel_float16_2(Model *model) {
    288   OperandType type17(Type::TENSOR_FLOAT16, {1});
    289   OperandType type2(Type::TENSOR_INT32, {1});
    290   OperandType type3(Type::BOOL, {});
    291   // Phase 1, operands
    292   auto input01 = model->addOperand(&type17);
    293   auto param2 = model->addOperand(&type2);
    294   auto param3 = model->addOperand(&type3);
    295   auto output01 = model->addOperand(&type17);
    296   // Phase 2, operations
    297   static int32_t param2_init[] = {0};
    298   model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1);
    299   static bool8 param3_init[] = {true};
    300   model->setOperandValue(param3, param3_init, sizeof(bool8) * 1);
    301   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input01, param2, param3}, {output01});
    302   // Phase 3, inputs and outputs
    303   model->identifyInputsAndOutputs(
    304     {input01},
    305     {output01});
    306   assert(model->isValid());
    307 }
    308 
    309 inline bool is_ignored_float16_2(int i) {
    310   static std::set<int> ignore = {};
    311   return ignore.find(i) != ignore.end();
    312 }
    313 
    314 void CreateModel_quant8_2(Model *model) {
    315   OperandType type18(Type::TENSOR_QUANT8_ASYMM, {1}, 0.5f, 127);
    316   OperandType type2(Type::TENSOR_INT32, {1});
    317   OperandType type3(Type::BOOL, {});
    318   // Phase 1, operands
    319   auto input01 = model->addOperand(&type18);
    320   auto param2 = model->addOperand(&type2);
    321   auto param3 = model->addOperand(&type3);
    322   auto output01 = model->addOperand(&type18);
    323   // Phase 2, operations
    324   static int32_t param2_init[] = {0};
    325   model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1);
    326   static bool8 param3_init[] = {true};
    327   model->setOperandValue(param3, param3_init, sizeof(bool8) * 1);
    328   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input01, param2, param3}, {output01});
    329   // Phase 3, inputs and outputs
    330   model->identifyInputsAndOutputs(
    331     {input01},
    332     {output01});
    333   assert(model->isValid());
    334 }
    335 
    336 inline bool is_ignored_quant8_2(int i) {
    337   static std::set<int> ignore = {};
    338   return ignore.find(i) != ignore.end();
    339 }
    340 
    341 void CreateModel_dynamic_output_shape_2(Model *model) {
    342   OperandType type14(Type::TENSOR_FLOAT32, {0});
    343   OperandType type2(Type::TENSOR_INT32, {1});
    344   OperandType type3(Type::BOOL, {});
    345   OperandType type4(Type::TENSOR_FLOAT32, {1});
    346   // Phase 1, operands
    347   auto input01 = model->addOperand(&type4);
    348   auto param2 = model->addOperand(&type2);
    349   auto param3 = model->addOperand(&type3);
    350   auto output01 = model->addOperand(&type14);
    351   // Phase 2, operations
    352   static int32_t param2_init[] = {0};
    353   model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1);
    354   static bool8 param3_init[] = {true};
    355   model->setOperandValue(param3, param3_init, sizeof(bool8) * 1);
    356   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input01, param2, param3}, {output01});
    357   // Phase 3, inputs and outputs
    358   model->identifyInputsAndOutputs(
    359     {input01},
    360     {output01});
    361   assert(model->isValid());
    362 }
    363 
    364 inline bool is_ignored_dynamic_output_shape_2(int i) {
    365   static std::set<int> ignore = {};
    366   return ignore.find(i) != ignore.end();
    367 }
    368 
    369 void CreateModel_dynamic_output_shape_relaxed_2(Model *model) {
    370   OperandType type14(Type::TENSOR_FLOAT32, {0});
    371   OperandType type2(Type::TENSOR_INT32, {1});
    372   OperandType type3(Type::BOOL, {});
    373   OperandType type4(Type::TENSOR_FLOAT32, {1});
    374   // Phase 1, operands
    375   auto input01 = model->addOperand(&type4);
    376   auto param2 = model->addOperand(&type2);
    377   auto param3 = model->addOperand(&type3);
    378   auto output01 = model->addOperand(&type14);
    379   // Phase 2, operations
    380   static int32_t param2_init[] = {0};
    381   model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1);
    382   static bool8 param3_init[] = {true};
    383   model->setOperandValue(param3, param3_init, sizeof(bool8) * 1);
    384   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input01, param2, param3}, {output01});
    385   // Phase 3, inputs and outputs
    386   model->identifyInputsAndOutputs(
    387     {input01},
    388     {output01});
    389   // Phase 4: set relaxed execution
    390   model->relaxComputationFloat32toFloat16(true);
    391   assert(model->isValid());
    392 }
    393 
    394 inline bool is_ignored_dynamic_output_shape_relaxed_2(int i) {
    395   static std::set<int> ignore = {};
    396   return ignore.find(i) != ignore.end();
    397 }
    398 
    399 void CreateModel_dynamic_output_shape_float16_2(Model *model) {
    400   OperandType type15(Type::TENSOR_FLOAT16, {0});
    401   OperandType type17(Type::TENSOR_FLOAT16, {1});
    402   OperandType type2(Type::TENSOR_INT32, {1});
    403   OperandType type3(Type::BOOL, {});
    404   // Phase 1, operands
    405   auto input01 = model->addOperand(&type17);
    406   auto param2 = model->addOperand(&type2);
    407   auto param3 = model->addOperand(&type3);
    408   auto output01 = model->addOperand(&type15);
    409   // Phase 2, operations
    410   static int32_t param2_init[] = {0};
    411   model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1);
    412   static bool8 param3_init[] = {true};
    413   model->setOperandValue(param3, param3_init, sizeof(bool8) * 1);
    414   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input01, param2, param3}, {output01});
    415   // Phase 3, inputs and outputs
    416   model->identifyInputsAndOutputs(
    417     {input01},
    418     {output01});
    419   assert(model->isValid());
    420 }
    421 
    422 inline bool is_ignored_dynamic_output_shape_float16_2(int i) {
    423   static std::set<int> ignore = {};
    424   return ignore.find(i) != ignore.end();
    425 }
    426 
    427 void CreateModel_dynamic_output_shape_quant8_2(Model *model) {
    428   OperandType type16(Type::TENSOR_QUANT8_ASYMM, {0}, 0.5f, 127);
    429   OperandType type18(Type::TENSOR_QUANT8_ASYMM, {1}, 0.5f, 127);
    430   OperandType type2(Type::TENSOR_INT32, {1});
    431   OperandType type3(Type::BOOL, {});
    432   // Phase 1, operands
    433   auto input01 = model->addOperand(&type18);
    434   auto param2 = model->addOperand(&type2);
    435   auto param3 = model->addOperand(&type3);
    436   auto output01 = model->addOperand(&type16);
    437   // Phase 2, operations
    438   static int32_t param2_init[] = {0};
    439   model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1);
    440   static bool8 param3_init[] = {true};
    441   model->setOperandValue(param3, param3_init, sizeof(bool8) * 1);
    442   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input01, param2, param3}, {output01});
    443   // Phase 3, inputs and outputs
    444   model->identifyInputsAndOutputs(
    445     {input01},
    446     {output01});
    447   assert(model->isValid());
    448 }
    449 
    450 inline bool is_ignored_dynamic_output_shape_quant8_2(int i) {
    451   static std::set<int> ignore = {};
    452   return ignore.find(i) != ignore.end();
    453 }
    454 
    455 void CreateModel_3(Model *model) {
    456   OperandType type3(Type::BOOL, {});
    457   OperandType type5(Type::TENSOR_FLOAT32, {4, 3, 2});
    458   OperandType type6(Type::TENSOR_FLOAT32, {2});
    459   OperandType type7(Type::TENSOR_INT32, {4});
    460   // Phase 1, operands
    461   auto input02 = model->addOperand(&type5);
    462   auto param4 = model->addOperand(&type7);
    463   auto param5 = model->addOperand(&type3);
    464   auto output02 = model->addOperand(&type6);
    465   // Phase 2, operations
    466   static int32_t param4_init[] = {1, 0, -3, -3};
    467   model->setOperandValue(param4, param4_init, sizeof(int32_t) * 4);
    468   static bool8 param5_init[] = {false};
    469   model->setOperandValue(param5, param5_init, sizeof(bool8) * 1);
    470   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input02, param4, param5}, {output02});
    471   // Phase 3, inputs and outputs
    472   model->identifyInputsAndOutputs(
    473     {input02},
    474     {output02});
    475   assert(model->isValid());
    476 }
    477 
    478 inline bool is_ignored_3(int i) {
    479   static std::set<int> ignore = {};
    480   return ignore.find(i) != ignore.end();
    481 }
    482 
    483 void CreateModel_relaxed_3(Model *model) {
    484   OperandType type3(Type::BOOL, {});
    485   OperandType type5(Type::TENSOR_FLOAT32, {4, 3, 2});
    486   OperandType type6(Type::TENSOR_FLOAT32, {2});
    487   OperandType type7(Type::TENSOR_INT32, {4});
    488   // Phase 1, operands
    489   auto input02 = model->addOperand(&type5);
    490   auto param4 = model->addOperand(&type7);
    491   auto param5 = model->addOperand(&type3);
    492   auto output02 = model->addOperand(&type6);
    493   // Phase 2, operations
    494   static int32_t param4_init[] = {1, 0, -3, -3};
    495   model->setOperandValue(param4, param4_init, sizeof(int32_t) * 4);
    496   static bool8 param5_init[] = {false};
    497   model->setOperandValue(param5, param5_init, sizeof(bool8) * 1);
    498   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input02, param4, param5}, {output02});
    499   // Phase 3, inputs and outputs
    500   model->identifyInputsAndOutputs(
    501     {input02},
    502     {output02});
    503   // Phase 4: set relaxed execution
    504   model->relaxComputationFloat32toFloat16(true);
    505   assert(model->isValid());
    506 }
    507 
    508 inline bool is_ignored_relaxed_3(int i) {
    509   static std::set<int> ignore = {};
    510   return ignore.find(i) != ignore.end();
    511 }
    512 
    513 void CreateModel_float16_3(Model *model) {
    514   OperandType type19(Type::TENSOR_FLOAT16, {4, 3, 2});
    515   OperandType type20(Type::TENSOR_FLOAT16, {2});
    516   OperandType type3(Type::BOOL, {});
    517   OperandType type7(Type::TENSOR_INT32, {4});
    518   // Phase 1, operands
    519   auto input02 = model->addOperand(&type19);
    520   auto param4 = model->addOperand(&type7);
    521   auto param5 = model->addOperand(&type3);
    522   auto output02 = model->addOperand(&type20);
    523   // Phase 2, operations
    524   static int32_t param4_init[] = {1, 0, -3, -3};
    525   model->setOperandValue(param4, param4_init, sizeof(int32_t) * 4);
    526   static bool8 param5_init[] = {false};
    527   model->setOperandValue(param5, param5_init, sizeof(bool8) * 1);
    528   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input02, param4, param5}, {output02});
    529   // Phase 3, inputs and outputs
    530   model->identifyInputsAndOutputs(
    531     {input02},
    532     {output02});
    533   assert(model->isValid());
    534 }
    535 
    536 inline bool is_ignored_float16_3(int i) {
    537   static std::set<int> ignore = {};
    538   return ignore.find(i) != ignore.end();
    539 }
    540 
    541 void CreateModel_quant8_3(Model *model) {
    542   OperandType type21(Type::TENSOR_QUANT8_ASYMM, {4, 3, 2}, 0.5f, 127);
    543   OperandType type22(Type::TENSOR_QUANT8_ASYMM, {2}, 0.5f, 127);
    544   OperandType type3(Type::BOOL, {});
    545   OperandType type7(Type::TENSOR_INT32, {4});
    546   // Phase 1, operands
    547   auto input02 = model->addOperand(&type21);
    548   auto param4 = model->addOperand(&type7);
    549   auto param5 = model->addOperand(&type3);
    550   auto output02 = model->addOperand(&type22);
    551   // Phase 2, operations
    552   static int32_t param4_init[] = {1, 0, -3, -3};
    553   model->setOperandValue(param4, param4_init, sizeof(int32_t) * 4);
    554   static bool8 param5_init[] = {false};
    555   model->setOperandValue(param5, param5_init, sizeof(bool8) * 1);
    556   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input02, param4, param5}, {output02});
    557   // Phase 3, inputs and outputs
    558   model->identifyInputsAndOutputs(
    559     {input02},
    560     {output02});
    561   assert(model->isValid());
    562 }
    563 
    564 inline bool is_ignored_quant8_3(int i) {
    565   static std::set<int> ignore = {};
    566   return ignore.find(i) != ignore.end();
    567 }
    568 
    569 void CreateModel_dynamic_output_shape_3(Model *model) {
    570   OperandType type14(Type::TENSOR_FLOAT32, {0});
    571   OperandType type3(Type::BOOL, {});
    572   OperandType type5(Type::TENSOR_FLOAT32, {4, 3, 2});
    573   OperandType type7(Type::TENSOR_INT32, {4});
    574   // Phase 1, operands
    575   auto input02 = model->addOperand(&type5);
    576   auto param4 = model->addOperand(&type7);
    577   auto param5 = model->addOperand(&type3);
    578   auto output02 = model->addOperand(&type14);
    579   // Phase 2, operations
    580   static int32_t param4_init[] = {1, 0, -3, -3};
    581   model->setOperandValue(param4, param4_init, sizeof(int32_t) * 4);
    582   static bool8 param5_init[] = {false};
    583   model->setOperandValue(param5, param5_init, sizeof(bool8) * 1);
    584   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input02, param4, param5}, {output02});
    585   // Phase 3, inputs and outputs
    586   model->identifyInputsAndOutputs(
    587     {input02},
    588     {output02});
    589   assert(model->isValid());
    590 }
    591 
    592 inline bool is_ignored_dynamic_output_shape_3(int i) {
    593   static std::set<int> ignore = {};
    594   return ignore.find(i) != ignore.end();
    595 }
    596 
    597 void CreateModel_dynamic_output_shape_relaxed_3(Model *model) {
    598   OperandType type14(Type::TENSOR_FLOAT32, {0});
    599   OperandType type3(Type::BOOL, {});
    600   OperandType type5(Type::TENSOR_FLOAT32, {4, 3, 2});
    601   OperandType type7(Type::TENSOR_INT32, {4});
    602   // Phase 1, operands
    603   auto input02 = model->addOperand(&type5);
    604   auto param4 = model->addOperand(&type7);
    605   auto param5 = model->addOperand(&type3);
    606   auto output02 = model->addOperand(&type14);
    607   // Phase 2, operations
    608   static int32_t param4_init[] = {1, 0, -3, -3};
    609   model->setOperandValue(param4, param4_init, sizeof(int32_t) * 4);
    610   static bool8 param5_init[] = {false};
    611   model->setOperandValue(param5, param5_init, sizeof(bool8) * 1);
    612   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input02, param4, param5}, {output02});
    613   // Phase 3, inputs and outputs
    614   model->identifyInputsAndOutputs(
    615     {input02},
    616     {output02});
    617   // Phase 4: set relaxed execution
    618   model->relaxComputationFloat32toFloat16(true);
    619   assert(model->isValid());
    620 }
    621 
    622 inline bool is_ignored_dynamic_output_shape_relaxed_3(int i) {
    623   static std::set<int> ignore = {};
    624   return ignore.find(i) != ignore.end();
    625 }
    626 
    627 void CreateModel_dynamic_output_shape_float16_3(Model *model) {
    628   OperandType type15(Type::TENSOR_FLOAT16, {0});
    629   OperandType type19(Type::TENSOR_FLOAT16, {4, 3, 2});
    630   OperandType type3(Type::BOOL, {});
    631   OperandType type7(Type::TENSOR_INT32, {4});
    632   // Phase 1, operands
    633   auto input02 = model->addOperand(&type19);
    634   auto param4 = model->addOperand(&type7);
    635   auto param5 = model->addOperand(&type3);
    636   auto output02 = model->addOperand(&type15);
    637   // Phase 2, operations
    638   static int32_t param4_init[] = {1, 0, -3, -3};
    639   model->setOperandValue(param4, param4_init, sizeof(int32_t) * 4);
    640   static bool8 param5_init[] = {false};
    641   model->setOperandValue(param5, param5_init, sizeof(bool8) * 1);
    642   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input02, param4, param5}, {output02});
    643   // Phase 3, inputs and outputs
    644   model->identifyInputsAndOutputs(
    645     {input02},
    646     {output02});
    647   assert(model->isValid());
    648 }
    649 
    650 inline bool is_ignored_dynamic_output_shape_float16_3(int i) {
    651   static std::set<int> ignore = {};
    652   return ignore.find(i) != ignore.end();
    653 }
    654 
    655 void CreateModel_dynamic_output_shape_quant8_3(Model *model) {
    656   OperandType type16(Type::TENSOR_QUANT8_ASYMM, {0}, 0.5f, 127);
    657   OperandType type21(Type::TENSOR_QUANT8_ASYMM, {4, 3, 2}, 0.5f, 127);
    658   OperandType type3(Type::BOOL, {});
    659   OperandType type7(Type::TENSOR_INT32, {4});
    660   // Phase 1, operands
    661   auto input02 = model->addOperand(&type21);
    662   auto param4 = model->addOperand(&type7);
    663   auto param5 = model->addOperand(&type3);
    664   auto output02 = model->addOperand(&type16);
    665   // Phase 2, operations
    666   static int32_t param4_init[] = {1, 0, -3, -3};
    667   model->setOperandValue(param4, param4_init, sizeof(int32_t) * 4);
    668   static bool8 param5_init[] = {false};
    669   model->setOperandValue(param5, param5_init, sizeof(bool8) * 1);
    670   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input02, param4, param5}, {output02});
    671   // Phase 3, inputs and outputs
    672   model->identifyInputsAndOutputs(
    673     {input02},
    674     {output02});
    675   assert(model->isValid());
    676 }
    677 
    678 inline bool is_ignored_dynamic_output_shape_quant8_3(int i) {
    679   static std::set<int> ignore = {};
    680   return ignore.find(i) != ignore.end();
    681 }
    682 
    683 void CreateModel_4(Model *model) {
    684   OperandType type3(Type::BOOL, {});
    685   OperandType type5(Type::TENSOR_FLOAT32, {4, 3, 2});
    686   OperandType type8(Type::TENSOR_FLOAT32, {1, 3, 1});
    687   OperandType type9(Type::TENSOR_INT32, {2});
    688   // Phase 1, operands
    689   auto input03 = model->addOperand(&type5);
    690   auto param6 = model->addOperand(&type9);
    691   auto param7 = model->addOperand(&type3);
    692   auto output03 = model->addOperand(&type8);
    693   // Phase 2, operations
    694   static int32_t param6_init[] = {0, 2};
    695   model->setOperandValue(param6, param6_init, sizeof(int32_t) * 2);
    696   static bool8 param7_init[] = {true};
    697   model->setOperandValue(param7, param7_init, sizeof(bool8) * 1);
    698   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input03, param6, param7}, {output03});
    699   // Phase 3, inputs and outputs
    700   model->identifyInputsAndOutputs(
    701     {input03},
    702     {output03});
    703   assert(model->isValid());
    704 }
    705 
    706 inline bool is_ignored_4(int i) {
    707   static std::set<int> ignore = {};
    708   return ignore.find(i) != ignore.end();
    709 }
    710 
    711 void CreateModel_relaxed_4(Model *model) {
    712   OperandType type3(Type::BOOL, {});
    713   OperandType type5(Type::TENSOR_FLOAT32, {4, 3, 2});
    714   OperandType type8(Type::TENSOR_FLOAT32, {1, 3, 1});
    715   OperandType type9(Type::TENSOR_INT32, {2});
    716   // Phase 1, operands
    717   auto input03 = model->addOperand(&type5);
    718   auto param6 = model->addOperand(&type9);
    719   auto param7 = model->addOperand(&type3);
    720   auto output03 = model->addOperand(&type8);
    721   // Phase 2, operations
    722   static int32_t param6_init[] = {0, 2};
    723   model->setOperandValue(param6, param6_init, sizeof(int32_t) * 2);
    724   static bool8 param7_init[] = {true};
    725   model->setOperandValue(param7, param7_init, sizeof(bool8) * 1);
    726   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input03, param6, param7}, {output03});
    727   // Phase 3, inputs and outputs
    728   model->identifyInputsAndOutputs(
    729     {input03},
    730     {output03});
    731   // Phase 4: set relaxed execution
    732   model->relaxComputationFloat32toFloat16(true);
    733   assert(model->isValid());
    734 }
    735 
    736 inline bool is_ignored_relaxed_4(int i) {
    737   static std::set<int> ignore = {};
    738   return ignore.find(i) != ignore.end();
    739 }
    740 
    741 void CreateModel_float16_4(Model *model) {
    742   OperandType type19(Type::TENSOR_FLOAT16, {4, 3, 2});
    743   OperandType type23(Type::TENSOR_FLOAT16, {1, 3, 1});
    744   OperandType type3(Type::BOOL, {});
    745   OperandType type9(Type::TENSOR_INT32, {2});
    746   // Phase 1, operands
    747   auto input03 = model->addOperand(&type19);
    748   auto param6 = model->addOperand(&type9);
    749   auto param7 = model->addOperand(&type3);
    750   auto output03 = model->addOperand(&type23);
    751   // Phase 2, operations
    752   static int32_t param6_init[] = {0, 2};
    753   model->setOperandValue(param6, param6_init, sizeof(int32_t) * 2);
    754   static bool8 param7_init[] = {true};
    755   model->setOperandValue(param7, param7_init, sizeof(bool8) * 1);
    756   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input03, param6, param7}, {output03});
    757   // Phase 3, inputs and outputs
    758   model->identifyInputsAndOutputs(
    759     {input03},
    760     {output03});
    761   assert(model->isValid());
    762 }
    763 
    764 inline bool is_ignored_float16_4(int i) {
    765   static std::set<int> ignore = {};
    766   return ignore.find(i) != ignore.end();
    767 }
    768 
    769 void CreateModel_quant8_4(Model *model) {
    770   OperandType type21(Type::TENSOR_QUANT8_ASYMM, {4, 3, 2}, 0.5f, 127);
    771   OperandType type24(Type::TENSOR_QUANT8_ASYMM, {1, 3, 1}, 0.5f, 127);
    772   OperandType type3(Type::BOOL, {});
    773   OperandType type9(Type::TENSOR_INT32, {2});
    774   // Phase 1, operands
    775   auto input03 = model->addOperand(&type21);
    776   auto param6 = model->addOperand(&type9);
    777   auto param7 = model->addOperand(&type3);
    778   auto output03 = model->addOperand(&type24);
    779   // Phase 2, operations
    780   static int32_t param6_init[] = {0, 2};
    781   model->setOperandValue(param6, param6_init, sizeof(int32_t) * 2);
    782   static bool8 param7_init[] = {true};
    783   model->setOperandValue(param7, param7_init, sizeof(bool8) * 1);
    784   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input03, param6, param7}, {output03});
    785   // Phase 3, inputs and outputs
    786   model->identifyInputsAndOutputs(
    787     {input03},
    788     {output03});
    789   assert(model->isValid());
    790 }
    791 
    792 inline bool is_ignored_quant8_4(int i) {
    793   static std::set<int> ignore = {};
    794   return ignore.find(i) != ignore.end();
    795 }
    796 
    797 void CreateModel_dynamic_output_shape_4(Model *model) {
    798   OperandType type25(Type::TENSOR_FLOAT32, {0, 0, 0});
    799   OperandType type3(Type::BOOL, {});
    800   OperandType type5(Type::TENSOR_FLOAT32, {4, 3, 2});
    801   OperandType type9(Type::TENSOR_INT32, {2});
    802   // Phase 1, operands
    803   auto input03 = model->addOperand(&type5);
    804   auto param6 = model->addOperand(&type9);
    805   auto param7 = model->addOperand(&type3);
    806   auto output03 = model->addOperand(&type25);
    807   // Phase 2, operations
    808   static int32_t param6_init[] = {0, 2};
    809   model->setOperandValue(param6, param6_init, sizeof(int32_t) * 2);
    810   static bool8 param7_init[] = {true};
    811   model->setOperandValue(param7, param7_init, sizeof(bool8) * 1);
    812   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input03, param6, param7}, {output03});
    813   // Phase 3, inputs and outputs
    814   model->identifyInputsAndOutputs(
    815     {input03},
    816     {output03});
    817   assert(model->isValid());
    818 }
    819 
    820 inline bool is_ignored_dynamic_output_shape_4(int i) {
    821   static std::set<int> ignore = {};
    822   return ignore.find(i) != ignore.end();
    823 }
    824 
    825 void CreateModel_dynamic_output_shape_relaxed_4(Model *model) {
    826   OperandType type25(Type::TENSOR_FLOAT32, {0, 0, 0});
    827   OperandType type3(Type::BOOL, {});
    828   OperandType type5(Type::TENSOR_FLOAT32, {4, 3, 2});
    829   OperandType type9(Type::TENSOR_INT32, {2});
    830   // Phase 1, operands
    831   auto input03 = model->addOperand(&type5);
    832   auto param6 = model->addOperand(&type9);
    833   auto param7 = model->addOperand(&type3);
    834   auto output03 = model->addOperand(&type25);
    835   // Phase 2, operations
    836   static int32_t param6_init[] = {0, 2};
    837   model->setOperandValue(param6, param6_init, sizeof(int32_t) * 2);
    838   static bool8 param7_init[] = {true};
    839   model->setOperandValue(param7, param7_init, sizeof(bool8) * 1);
    840   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input03, param6, param7}, {output03});
    841   // Phase 3, inputs and outputs
    842   model->identifyInputsAndOutputs(
    843     {input03},
    844     {output03});
    845   // Phase 4: set relaxed execution
    846   model->relaxComputationFloat32toFloat16(true);
    847   assert(model->isValid());
    848 }
    849 
    850 inline bool is_ignored_dynamic_output_shape_relaxed_4(int i) {
    851   static std::set<int> ignore = {};
    852   return ignore.find(i) != ignore.end();
    853 }
    854 
    855 void CreateModel_dynamic_output_shape_float16_4(Model *model) {
    856   OperandType type19(Type::TENSOR_FLOAT16, {4, 3, 2});
    857   OperandType type26(Type::TENSOR_FLOAT16, {0, 0, 0});
    858   OperandType type3(Type::BOOL, {});
    859   OperandType type9(Type::TENSOR_INT32, {2});
    860   // Phase 1, operands
    861   auto input03 = model->addOperand(&type19);
    862   auto param6 = model->addOperand(&type9);
    863   auto param7 = model->addOperand(&type3);
    864   auto output03 = model->addOperand(&type26);
    865   // Phase 2, operations
    866   static int32_t param6_init[] = {0, 2};
    867   model->setOperandValue(param6, param6_init, sizeof(int32_t) * 2);
    868   static bool8 param7_init[] = {true};
    869   model->setOperandValue(param7, param7_init, sizeof(bool8) * 1);
    870   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input03, param6, param7}, {output03});
    871   // Phase 3, inputs and outputs
    872   model->identifyInputsAndOutputs(
    873     {input03},
    874     {output03});
    875   assert(model->isValid());
    876 }
    877 
    878 inline bool is_ignored_dynamic_output_shape_float16_4(int i) {
    879   static std::set<int> ignore = {};
    880   return ignore.find(i) != ignore.end();
    881 }
    882 
    883 void CreateModel_dynamic_output_shape_quant8_4(Model *model) {
    884   OperandType type21(Type::TENSOR_QUANT8_ASYMM, {4, 3, 2}, 0.5f, 127);
    885   OperandType type27(Type::TENSOR_QUANT8_ASYMM, {0, 0, 0}, 0.5f, 127);
    886   OperandType type3(Type::BOOL, {});
    887   OperandType type9(Type::TENSOR_INT32, {2});
    888   // Phase 1, operands
    889   auto input03 = model->addOperand(&type21);
    890   auto param6 = model->addOperand(&type9);
    891   auto param7 = model->addOperand(&type3);
    892   auto output03 = model->addOperand(&type27);
    893   // Phase 2, operations
    894   static int32_t param6_init[] = {0, 2};
    895   model->setOperandValue(param6, param6_init, sizeof(int32_t) * 2);
    896   static bool8 param7_init[] = {true};
    897   model->setOperandValue(param7, param7_init, sizeof(bool8) * 1);
    898   model->addOperation(ANEURALNETWORKS_REDUCE_MIN, {input03, param6, param7}, {output03});
    899   // Phase 3, inputs and outputs
    900   model->identifyInputsAndOutputs(
    901     {input03},
    902     {output03});
    903   assert(model->isValid());
    904 }
    905 
    906 inline bool is_ignored_dynamic_output_shape_quant8_4(int i) {
    907   static std::set<int> ignore = {};
    908   return ignore.find(i) != ignore.end();
    909 }
    910 
    911