Home | History | Annotate | Download | only in models
      1 // clang-format off
      2 // Generated file (from: bidirectional_sequence_rnn.mod.py). Do not edit
      3 void CreateModel(Model *model) {
      4   OperandType type0(Type::TENSOR_FLOAT32, {2, 16, 8});
      5   OperandType type1(Type::TENSOR_FLOAT32, {16, 8});
      6   OperandType type2(Type::TENSOR_FLOAT32, {16, 16});
      7   OperandType type3(Type::TENSOR_FLOAT32, {16});
      8   OperandType type4(Type::TENSOR_FLOAT32, {2, 16});
      9   OperandType type5(Type::TENSOR_FLOAT32, {0});
     10   OperandType type6(Type::TENSOR_FLOAT32, {2, 16, 16});
     11   OperandType type7(Type::INT32, {});
     12   OperandType type8(Type::BOOL, {});
     13   // Phase 1, operands
     14   auto input = model->addOperand(&type0);
     15   auto fw_weights = model->addOperand(&type1);
     16   auto fw_recurrent_weights = model->addOperand(&type2);
     17   auto fw_bias = model->addOperand(&type3);
     18   auto fw_hidden_state = model->addOperand(&type4);
     19   auto bw_weights = model->addOperand(&type1);
     20   auto bw_recurrent_weights = model->addOperand(&type2);
     21   auto bw_bias = model->addOperand(&type3);
     22   auto bw_hidden_state = model->addOperand(&type4);
     23   auto aux_input = model->addOperand(&type5);
     24   auto fw_aux_weights = model->addOperand(&type5);
     25   auto bw_aux_weights = model->addOperand(&type5);
     26   auto activation = model->addOperand(&type7);
     27   auto time_major = model->addOperand(&type8);
     28   auto merge_outputs = model->addOperand(&type8);
     29   auto fw_output = model->addOperand(&type6);
     30   auto bw_output = model->addOperand(&type6);
     31   // Phase 2, operations
     32   static int32_t activation_init[] = {1};
     33   model->setOperandValue(activation, activation_init, sizeof(int32_t) * 1);
     34   static bool8 time_major_init[] = {false};
     35   model->setOperandValue(time_major, time_major_init, sizeof(bool8) * 1);
     36   static bool8 merge_outputs_init[] = {false};
     37   model->setOperandValue(merge_outputs, merge_outputs_init, sizeof(bool8) * 1);
     38   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input, fw_weights, fw_recurrent_weights, fw_bias, fw_hidden_state, bw_weights, bw_recurrent_weights, bw_bias, bw_hidden_state, aux_input, fw_aux_weights, bw_aux_weights, activation, time_major, merge_outputs}, {fw_output, bw_output});
     39   // Phase 3, inputs and outputs
     40   model->identifyInputsAndOutputs(
     41     {input, fw_weights, fw_recurrent_weights, fw_bias, fw_hidden_state, bw_weights, bw_recurrent_weights, bw_bias, bw_hidden_state, aux_input, fw_aux_weights, bw_aux_weights},
     42     {fw_output, bw_output});
     43   assert(model->isValid());
     44 }
     45 
     46 inline bool is_ignored(int i) {
     47   static std::set<int> ignore = {};
     48   return ignore.find(i) != ignore.end();
     49 }
     50 
     51 void CreateModel_relaxed(Model *model) {
     52   OperandType type0(Type::TENSOR_FLOAT32, {2, 16, 8});
     53   OperandType type1(Type::TENSOR_FLOAT32, {16, 8});
     54   OperandType type2(Type::TENSOR_FLOAT32, {16, 16});
     55   OperandType type3(Type::TENSOR_FLOAT32, {16});
     56   OperandType type4(Type::TENSOR_FLOAT32, {2, 16});
     57   OperandType type5(Type::TENSOR_FLOAT32, {0});
     58   OperandType type6(Type::TENSOR_FLOAT32, {2, 16, 16});
     59   OperandType type7(Type::INT32, {});
     60   OperandType type8(Type::BOOL, {});
     61   // Phase 1, operands
     62   auto input = model->addOperand(&type0);
     63   auto fw_weights = model->addOperand(&type1);
     64   auto fw_recurrent_weights = model->addOperand(&type2);
     65   auto fw_bias = model->addOperand(&type3);
     66   auto fw_hidden_state = model->addOperand(&type4);
     67   auto bw_weights = model->addOperand(&type1);
     68   auto bw_recurrent_weights = model->addOperand(&type2);
     69   auto bw_bias = model->addOperand(&type3);
     70   auto bw_hidden_state = model->addOperand(&type4);
     71   auto aux_input = model->addOperand(&type5);
     72   auto fw_aux_weights = model->addOperand(&type5);
     73   auto bw_aux_weights = model->addOperand(&type5);
     74   auto activation = model->addOperand(&type7);
     75   auto time_major = model->addOperand(&type8);
     76   auto merge_outputs = model->addOperand(&type8);
     77   auto fw_output = model->addOperand(&type6);
     78   auto bw_output = model->addOperand(&type6);
     79   // Phase 2, operations
     80   static int32_t activation_init[] = {1};
     81   model->setOperandValue(activation, activation_init, sizeof(int32_t) * 1);
     82   static bool8 time_major_init[] = {false};
     83   model->setOperandValue(time_major, time_major_init, sizeof(bool8) * 1);
     84   static bool8 merge_outputs_init[] = {false};
     85   model->setOperandValue(merge_outputs, merge_outputs_init, sizeof(bool8) * 1);
     86   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input, fw_weights, fw_recurrent_weights, fw_bias, fw_hidden_state, bw_weights, bw_recurrent_weights, bw_bias, bw_hidden_state, aux_input, fw_aux_weights, bw_aux_weights, activation, time_major, merge_outputs}, {fw_output, bw_output});
     87   // Phase 3, inputs and outputs
     88   model->identifyInputsAndOutputs(
     89     {input, fw_weights, fw_recurrent_weights, fw_bias, fw_hidden_state, bw_weights, bw_recurrent_weights, bw_bias, bw_hidden_state, aux_input, fw_aux_weights, bw_aux_weights},
     90     {fw_output, bw_output});
     91   // Phase 4: set relaxed execution
     92   model->relaxComputationFloat32toFloat16(true);
     93   assert(model->isValid());
     94 }
     95 
     96 inline bool is_ignored_relaxed(int i) {
     97   static std::set<int> ignore = {};
     98   return ignore.find(i) != ignore.end();
     99 }
    100 
    101 void CreateModel_float16(Model *model) {
    102   OperandType type14(Type::TENSOR_FLOAT16, {0});
    103   OperandType type15(Type::TENSOR_FLOAT16, {16});
    104   OperandType type16(Type::TENSOR_FLOAT16, {2, 16});
    105   OperandType type17(Type::TENSOR_FLOAT16, {2, 16, 16});
    106   OperandType type18(Type::TENSOR_FLOAT16, {16, 16});
    107   OperandType type19(Type::TENSOR_FLOAT16, {16, 8});
    108   OperandType type20(Type::TENSOR_FLOAT16, {2, 16, 8});
    109   OperandType type7(Type::INT32, {});
    110   OperandType type8(Type::BOOL, {});
    111   // Phase 1, operands
    112   auto input = model->addOperand(&type20);
    113   auto fw_weights = model->addOperand(&type19);
    114   auto fw_recurrent_weights = model->addOperand(&type18);
    115   auto fw_bias = model->addOperand(&type15);
    116   auto fw_hidden_state = model->addOperand(&type16);
    117   auto bw_weights = model->addOperand(&type19);
    118   auto bw_recurrent_weights = model->addOperand(&type18);
    119   auto bw_bias = model->addOperand(&type15);
    120   auto bw_hidden_state = model->addOperand(&type16);
    121   auto aux_input = model->addOperand(&type14);
    122   auto fw_aux_weights = model->addOperand(&type14);
    123   auto bw_aux_weights = model->addOperand(&type14);
    124   auto activation = model->addOperand(&type7);
    125   auto time_major = model->addOperand(&type8);
    126   auto merge_outputs = model->addOperand(&type8);
    127   auto fw_output = model->addOperand(&type17);
    128   auto bw_output = model->addOperand(&type17);
    129   // Phase 2, operations
    130   static int32_t activation_init[] = {1};
    131   model->setOperandValue(activation, activation_init, sizeof(int32_t) * 1);
    132   static bool8 time_major_init[] = {false};
    133   model->setOperandValue(time_major, time_major_init, sizeof(bool8) * 1);
    134   static bool8 merge_outputs_init[] = {false};
    135   model->setOperandValue(merge_outputs, merge_outputs_init, sizeof(bool8) * 1);
    136   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input, fw_weights, fw_recurrent_weights, fw_bias, fw_hidden_state, bw_weights, bw_recurrent_weights, bw_bias, bw_hidden_state, aux_input, fw_aux_weights, bw_aux_weights, activation, time_major, merge_outputs}, {fw_output, bw_output});
    137   // Phase 3, inputs and outputs
    138   model->identifyInputsAndOutputs(
    139     {input, fw_weights, fw_recurrent_weights, fw_bias, fw_hidden_state, bw_weights, bw_recurrent_weights, bw_bias, bw_hidden_state, aux_input, fw_aux_weights, bw_aux_weights},
    140     {fw_output, bw_output});
    141   assert(model->isValid());
    142 }
    143 
    144 inline bool is_ignored_float16(int i) {
    145   static std::set<int> ignore = {};
    146   return ignore.find(i) != ignore.end();
    147 }
    148 
    149 void CreateModel_dynamic_output_shape(Model *model) {
    150   OperandType type0(Type::TENSOR_FLOAT32, {2, 16, 8});
    151   OperandType type1(Type::TENSOR_FLOAT32, {16, 8});
    152   OperandType type2(Type::TENSOR_FLOAT32, {16, 16});
    153   OperandType type21(Type::TENSOR_FLOAT32, {0, 0, 0});
    154   OperandType type3(Type::TENSOR_FLOAT32, {16});
    155   OperandType type4(Type::TENSOR_FLOAT32, {2, 16});
    156   OperandType type5(Type::TENSOR_FLOAT32, {0});
    157   OperandType type7(Type::INT32, {});
    158   OperandType type8(Type::BOOL, {});
    159   // Phase 1, operands
    160   auto input = model->addOperand(&type0);
    161   auto fw_weights = model->addOperand(&type1);
    162   auto fw_recurrent_weights = model->addOperand(&type2);
    163   auto fw_bias = model->addOperand(&type3);
    164   auto fw_hidden_state = model->addOperand(&type4);
    165   auto bw_weights = model->addOperand(&type1);
    166   auto bw_recurrent_weights = model->addOperand(&type2);
    167   auto bw_bias = model->addOperand(&type3);
    168   auto bw_hidden_state = model->addOperand(&type4);
    169   auto aux_input = model->addOperand(&type5);
    170   auto fw_aux_weights = model->addOperand(&type5);
    171   auto bw_aux_weights = model->addOperand(&type5);
    172   auto activation = model->addOperand(&type7);
    173   auto time_major = model->addOperand(&type8);
    174   auto merge_outputs = model->addOperand(&type8);
    175   auto fw_output = model->addOperand(&type21);
    176   auto bw_output = model->addOperand(&type21);
    177   // Phase 2, operations
    178   static int32_t activation_init[] = {1};
    179   model->setOperandValue(activation, activation_init, sizeof(int32_t) * 1);
    180   static bool8 time_major_init[] = {false};
    181   model->setOperandValue(time_major, time_major_init, sizeof(bool8) * 1);
    182   static bool8 merge_outputs_init[] = {false};
    183   model->setOperandValue(merge_outputs, merge_outputs_init, sizeof(bool8) * 1);
    184   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input, fw_weights, fw_recurrent_weights, fw_bias, fw_hidden_state, bw_weights, bw_recurrent_weights, bw_bias, bw_hidden_state, aux_input, fw_aux_weights, bw_aux_weights, activation, time_major, merge_outputs}, {fw_output, bw_output});
    185   // Phase 3, inputs and outputs
    186   model->identifyInputsAndOutputs(
    187     {input, fw_weights, fw_recurrent_weights, fw_bias, fw_hidden_state, bw_weights, bw_recurrent_weights, bw_bias, bw_hidden_state, aux_input, fw_aux_weights, bw_aux_weights},
    188     {fw_output, bw_output});
    189   assert(model->isValid());
    190 }
    191 
    192 inline bool is_ignored_dynamic_output_shape(int i) {
    193   static std::set<int> ignore = {};
    194   return ignore.find(i) != ignore.end();
    195 }
    196 
    197 void CreateModel_dynamic_output_shape_relaxed(Model *model) {
    198   OperandType type0(Type::TENSOR_FLOAT32, {2, 16, 8});
    199   OperandType type1(Type::TENSOR_FLOAT32, {16, 8});
    200   OperandType type2(Type::TENSOR_FLOAT32, {16, 16});
    201   OperandType type21(Type::TENSOR_FLOAT32, {0, 0, 0});
    202   OperandType type3(Type::TENSOR_FLOAT32, {16});
    203   OperandType type4(Type::TENSOR_FLOAT32, {2, 16});
    204   OperandType type5(Type::TENSOR_FLOAT32, {0});
    205   OperandType type7(Type::INT32, {});
    206   OperandType type8(Type::BOOL, {});
    207   // Phase 1, operands
    208   auto input = model->addOperand(&type0);
    209   auto fw_weights = model->addOperand(&type1);
    210   auto fw_recurrent_weights = model->addOperand(&type2);
    211   auto fw_bias = model->addOperand(&type3);
    212   auto fw_hidden_state = model->addOperand(&type4);
    213   auto bw_weights = model->addOperand(&type1);
    214   auto bw_recurrent_weights = model->addOperand(&type2);
    215   auto bw_bias = model->addOperand(&type3);
    216   auto bw_hidden_state = model->addOperand(&type4);
    217   auto aux_input = model->addOperand(&type5);
    218   auto fw_aux_weights = model->addOperand(&type5);
    219   auto bw_aux_weights = model->addOperand(&type5);
    220   auto activation = model->addOperand(&type7);
    221   auto time_major = model->addOperand(&type8);
    222   auto merge_outputs = model->addOperand(&type8);
    223   auto fw_output = model->addOperand(&type21);
    224   auto bw_output = model->addOperand(&type21);
    225   // Phase 2, operations
    226   static int32_t activation_init[] = {1};
    227   model->setOperandValue(activation, activation_init, sizeof(int32_t) * 1);
    228   static bool8 time_major_init[] = {false};
    229   model->setOperandValue(time_major, time_major_init, sizeof(bool8) * 1);
    230   static bool8 merge_outputs_init[] = {false};
    231   model->setOperandValue(merge_outputs, merge_outputs_init, sizeof(bool8) * 1);
    232   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input, fw_weights, fw_recurrent_weights, fw_bias, fw_hidden_state, bw_weights, bw_recurrent_weights, bw_bias, bw_hidden_state, aux_input, fw_aux_weights, bw_aux_weights, activation, time_major, merge_outputs}, {fw_output, bw_output});
    233   // Phase 3, inputs and outputs
    234   model->identifyInputsAndOutputs(
    235     {input, fw_weights, fw_recurrent_weights, fw_bias, fw_hidden_state, bw_weights, bw_recurrent_weights, bw_bias, bw_hidden_state, aux_input, fw_aux_weights, bw_aux_weights},
    236     {fw_output, bw_output});
    237   // Phase 4: set relaxed execution
    238   model->relaxComputationFloat32toFloat16(true);
    239   assert(model->isValid());
    240 }
    241 
    242 inline bool is_ignored_dynamic_output_shape_relaxed(int i) {
    243   static std::set<int> ignore = {};
    244   return ignore.find(i) != ignore.end();
    245 }
    246 
    247 void CreateModel_dynamic_output_shape_float16(Model *model) {
    248   OperandType type14(Type::TENSOR_FLOAT16, {0});
    249   OperandType type15(Type::TENSOR_FLOAT16, {16});
    250   OperandType type16(Type::TENSOR_FLOAT16, {2, 16});
    251   OperandType type18(Type::TENSOR_FLOAT16, {16, 16});
    252   OperandType type19(Type::TENSOR_FLOAT16, {16, 8});
    253   OperandType type20(Type::TENSOR_FLOAT16, {2, 16, 8});
    254   OperandType type22(Type::TENSOR_FLOAT16, {0, 0, 0});
    255   OperandType type7(Type::INT32, {});
    256   OperandType type8(Type::BOOL, {});
    257   // Phase 1, operands
    258   auto input = model->addOperand(&type20);
    259   auto fw_weights = model->addOperand(&type19);
    260   auto fw_recurrent_weights = model->addOperand(&type18);
    261   auto fw_bias = model->addOperand(&type15);
    262   auto fw_hidden_state = model->addOperand(&type16);
    263   auto bw_weights = model->addOperand(&type19);
    264   auto bw_recurrent_weights = model->addOperand(&type18);
    265   auto bw_bias = model->addOperand(&type15);
    266   auto bw_hidden_state = model->addOperand(&type16);
    267   auto aux_input = model->addOperand(&type14);
    268   auto fw_aux_weights = model->addOperand(&type14);
    269   auto bw_aux_weights = model->addOperand(&type14);
    270   auto activation = model->addOperand(&type7);
    271   auto time_major = model->addOperand(&type8);
    272   auto merge_outputs = model->addOperand(&type8);
    273   auto fw_output = model->addOperand(&type22);
    274   auto bw_output = model->addOperand(&type22);
    275   // Phase 2, operations
    276   static int32_t activation_init[] = {1};
    277   model->setOperandValue(activation, activation_init, sizeof(int32_t) * 1);
    278   static bool8 time_major_init[] = {false};
    279   model->setOperandValue(time_major, time_major_init, sizeof(bool8) * 1);
    280   static bool8 merge_outputs_init[] = {false};
    281   model->setOperandValue(merge_outputs, merge_outputs_init, sizeof(bool8) * 1);
    282   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input, fw_weights, fw_recurrent_weights, fw_bias, fw_hidden_state, bw_weights, bw_recurrent_weights, bw_bias, bw_hidden_state, aux_input, fw_aux_weights, bw_aux_weights, activation, time_major, merge_outputs}, {fw_output, bw_output});
    283   // Phase 3, inputs and outputs
    284   model->identifyInputsAndOutputs(
    285     {input, fw_weights, fw_recurrent_weights, fw_bias, fw_hidden_state, bw_weights, bw_recurrent_weights, bw_bias, bw_hidden_state, aux_input, fw_aux_weights, bw_aux_weights},
    286     {fw_output, bw_output});
    287   assert(model->isValid());
    288 }
    289 
    290 inline bool is_ignored_dynamic_output_shape_float16(int i) {
    291   static std::set<int> ignore = {};
    292   return ignore.find(i) != ignore.end();
    293 }
    294 
    295 void CreateModel_2(Model *model) {
    296   OperandType type1(Type::TENSOR_FLOAT32, {16, 8});
    297   OperandType type10(Type::TENSOR_FLOAT32, {16, 2, 16});
    298   OperandType type2(Type::TENSOR_FLOAT32, {16, 16});
    299   OperandType type3(Type::TENSOR_FLOAT32, {16});
    300   OperandType type4(Type::TENSOR_FLOAT32, {2, 16});
    301   OperandType type5(Type::TENSOR_FLOAT32, {0});
    302   OperandType type7(Type::INT32, {});
    303   OperandType type8(Type::BOOL, {});
    304   OperandType type9(Type::TENSOR_FLOAT32, {16, 2, 8});
    305   // Phase 1, operands
    306   auto input1 = model->addOperand(&type9);
    307   auto fw_weights1 = model->addOperand(&type1);
    308   auto fw_recurrent_weights1 = model->addOperand(&type2);
    309   auto fw_bias1 = model->addOperand(&type3);
    310   auto fw_hidden_state1 = model->addOperand(&type4);
    311   auto bw_weights1 = model->addOperand(&type1);
    312   auto bw_recurrent_weights1 = model->addOperand(&type2);
    313   auto bw_bias1 = model->addOperand(&type3);
    314   auto bw_hidden_state1 = model->addOperand(&type4);
    315   auto aux_input1 = model->addOperand(&type5);
    316   auto fw_aux_weights1 = model->addOperand(&type5);
    317   auto bw_aux_weights1 = model->addOperand(&type5);
    318   auto activation1 = model->addOperand(&type7);
    319   auto time_major1 = model->addOperand(&type8);
    320   auto merge_outputs1 = model->addOperand(&type8);
    321   auto fw_output1 = model->addOperand(&type10);
    322   auto bw_output1 = model->addOperand(&type10);
    323   // Phase 2, operations
    324   static int32_t activation1_init[] = {1};
    325   model->setOperandValue(activation1, activation1_init, sizeof(int32_t) * 1);
    326   static bool8 time_major1_init[] = {true};
    327   model->setOperandValue(time_major1, time_major1_init, sizeof(bool8) * 1);
    328   static bool8 merge_outputs1_init[] = {false};
    329   model->setOperandValue(merge_outputs1, merge_outputs1_init, sizeof(bool8) * 1);
    330   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input1, fw_weights1, fw_recurrent_weights1, fw_bias1, fw_hidden_state1, bw_weights1, bw_recurrent_weights1, bw_bias1, bw_hidden_state1, aux_input1, fw_aux_weights1, bw_aux_weights1, activation1, time_major1, merge_outputs1}, {fw_output1, bw_output1});
    331   // Phase 3, inputs and outputs
    332   model->identifyInputsAndOutputs(
    333     {input1, fw_weights1, fw_recurrent_weights1, fw_bias1, fw_hidden_state1, bw_weights1, bw_recurrent_weights1, bw_bias1, bw_hidden_state1, aux_input1, fw_aux_weights1, bw_aux_weights1},
    334     {fw_output1, bw_output1});
    335   assert(model->isValid());
    336 }
    337 
    338 inline bool is_ignored_2(int i) {
    339   static std::set<int> ignore = {};
    340   return ignore.find(i) != ignore.end();
    341 }
    342 
    343 void CreateModel_relaxed_2(Model *model) {
    344   OperandType type1(Type::TENSOR_FLOAT32, {16, 8});
    345   OperandType type10(Type::TENSOR_FLOAT32, {16, 2, 16});
    346   OperandType type2(Type::TENSOR_FLOAT32, {16, 16});
    347   OperandType type3(Type::TENSOR_FLOAT32, {16});
    348   OperandType type4(Type::TENSOR_FLOAT32, {2, 16});
    349   OperandType type5(Type::TENSOR_FLOAT32, {0});
    350   OperandType type7(Type::INT32, {});
    351   OperandType type8(Type::BOOL, {});
    352   OperandType type9(Type::TENSOR_FLOAT32, {16, 2, 8});
    353   // Phase 1, operands
    354   auto input1 = model->addOperand(&type9);
    355   auto fw_weights1 = model->addOperand(&type1);
    356   auto fw_recurrent_weights1 = model->addOperand(&type2);
    357   auto fw_bias1 = model->addOperand(&type3);
    358   auto fw_hidden_state1 = model->addOperand(&type4);
    359   auto bw_weights1 = model->addOperand(&type1);
    360   auto bw_recurrent_weights1 = model->addOperand(&type2);
    361   auto bw_bias1 = model->addOperand(&type3);
    362   auto bw_hidden_state1 = model->addOperand(&type4);
    363   auto aux_input1 = model->addOperand(&type5);
    364   auto fw_aux_weights1 = model->addOperand(&type5);
    365   auto bw_aux_weights1 = model->addOperand(&type5);
    366   auto activation1 = model->addOperand(&type7);
    367   auto time_major1 = model->addOperand(&type8);
    368   auto merge_outputs1 = model->addOperand(&type8);
    369   auto fw_output1 = model->addOperand(&type10);
    370   auto bw_output1 = model->addOperand(&type10);
    371   // Phase 2, operations
    372   static int32_t activation1_init[] = {1};
    373   model->setOperandValue(activation1, activation1_init, sizeof(int32_t) * 1);
    374   static bool8 time_major1_init[] = {true};
    375   model->setOperandValue(time_major1, time_major1_init, sizeof(bool8) * 1);
    376   static bool8 merge_outputs1_init[] = {false};
    377   model->setOperandValue(merge_outputs1, merge_outputs1_init, sizeof(bool8) * 1);
    378   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input1, fw_weights1, fw_recurrent_weights1, fw_bias1, fw_hidden_state1, bw_weights1, bw_recurrent_weights1, bw_bias1, bw_hidden_state1, aux_input1, fw_aux_weights1, bw_aux_weights1, activation1, time_major1, merge_outputs1}, {fw_output1, bw_output1});
    379   // Phase 3, inputs and outputs
    380   model->identifyInputsAndOutputs(
    381     {input1, fw_weights1, fw_recurrent_weights1, fw_bias1, fw_hidden_state1, bw_weights1, bw_recurrent_weights1, bw_bias1, bw_hidden_state1, aux_input1, fw_aux_weights1, bw_aux_weights1},
    382     {fw_output1, bw_output1});
    383   // Phase 4: set relaxed execution
    384   model->relaxComputationFloat32toFloat16(true);
    385   assert(model->isValid());
    386 }
    387 
    388 inline bool is_ignored_relaxed_2(int i) {
    389   static std::set<int> ignore = {};
    390   return ignore.find(i) != ignore.end();
    391 }
    392 
    393 void CreateModel_float16_2(Model *model) {
    394   OperandType type14(Type::TENSOR_FLOAT16, {0});
    395   OperandType type15(Type::TENSOR_FLOAT16, {16});
    396   OperandType type16(Type::TENSOR_FLOAT16, {2, 16});
    397   OperandType type18(Type::TENSOR_FLOAT16, {16, 16});
    398   OperandType type19(Type::TENSOR_FLOAT16, {16, 8});
    399   OperandType type23(Type::TENSOR_FLOAT16, {16, 2, 16});
    400   OperandType type24(Type::TENSOR_FLOAT16, {16, 2, 8});
    401   OperandType type7(Type::INT32, {});
    402   OperandType type8(Type::BOOL, {});
    403   // Phase 1, operands
    404   auto input1 = model->addOperand(&type24);
    405   auto fw_weights1 = model->addOperand(&type19);
    406   auto fw_recurrent_weights1 = model->addOperand(&type18);
    407   auto fw_bias1 = model->addOperand(&type15);
    408   auto fw_hidden_state1 = model->addOperand(&type16);
    409   auto bw_weights1 = model->addOperand(&type19);
    410   auto bw_recurrent_weights1 = model->addOperand(&type18);
    411   auto bw_bias1 = model->addOperand(&type15);
    412   auto bw_hidden_state1 = model->addOperand(&type16);
    413   auto aux_input1 = model->addOperand(&type14);
    414   auto fw_aux_weights1 = model->addOperand(&type14);
    415   auto bw_aux_weights1 = model->addOperand(&type14);
    416   auto activation1 = model->addOperand(&type7);
    417   auto time_major1 = model->addOperand(&type8);
    418   auto merge_outputs1 = model->addOperand(&type8);
    419   auto fw_output1 = model->addOperand(&type23);
    420   auto bw_output1 = model->addOperand(&type23);
    421   // Phase 2, operations
    422   static int32_t activation1_init[] = {1};
    423   model->setOperandValue(activation1, activation1_init, sizeof(int32_t) * 1);
    424   static bool8 time_major1_init[] = {true};
    425   model->setOperandValue(time_major1, time_major1_init, sizeof(bool8) * 1);
    426   static bool8 merge_outputs1_init[] = {false};
    427   model->setOperandValue(merge_outputs1, merge_outputs1_init, sizeof(bool8) * 1);
    428   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input1, fw_weights1, fw_recurrent_weights1, fw_bias1, fw_hidden_state1, bw_weights1, bw_recurrent_weights1, bw_bias1, bw_hidden_state1, aux_input1, fw_aux_weights1, bw_aux_weights1, activation1, time_major1, merge_outputs1}, {fw_output1, bw_output1});
    429   // Phase 3, inputs and outputs
    430   model->identifyInputsAndOutputs(
    431     {input1, fw_weights1, fw_recurrent_weights1, fw_bias1, fw_hidden_state1, bw_weights1, bw_recurrent_weights1, bw_bias1, bw_hidden_state1, aux_input1, fw_aux_weights1, bw_aux_weights1},
    432     {fw_output1, bw_output1});
    433   assert(model->isValid());
    434 }
    435 
    436 inline bool is_ignored_float16_2(int i) {
    437   static std::set<int> ignore = {};
    438   return ignore.find(i) != ignore.end();
    439 }
    440 
    441 void CreateModel_dynamic_output_shape_2(Model *model) {
    442   OperandType type1(Type::TENSOR_FLOAT32, {16, 8});
    443   OperandType type2(Type::TENSOR_FLOAT32, {16, 16});
    444   OperandType type21(Type::TENSOR_FLOAT32, {0, 0, 0});
    445   OperandType type3(Type::TENSOR_FLOAT32, {16});
    446   OperandType type4(Type::TENSOR_FLOAT32, {2, 16});
    447   OperandType type5(Type::TENSOR_FLOAT32, {0});
    448   OperandType type7(Type::INT32, {});
    449   OperandType type8(Type::BOOL, {});
    450   OperandType type9(Type::TENSOR_FLOAT32, {16, 2, 8});
    451   // Phase 1, operands
    452   auto input1 = model->addOperand(&type9);
    453   auto fw_weights1 = model->addOperand(&type1);
    454   auto fw_recurrent_weights1 = model->addOperand(&type2);
    455   auto fw_bias1 = model->addOperand(&type3);
    456   auto fw_hidden_state1 = model->addOperand(&type4);
    457   auto bw_weights1 = model->addOperand(&type1);
    458   auto bw_recurrent_weights1 = model->addOperand(&type2);
    459   auto bw_bias1 = model->addOperand(&type3);
    460   auto bw_hidden_state1 = model->addOperand(&type4);
    461   auto aux_input1 = model->addOperand(&type5);
    462   auto fw_aux_weights1 = model->addOperand(&type5);
    463   auto bw_aux_weights1 = model->addOperand(&type5);
    464   auto activation1 = model->addOperand(&type7);
    465   auto time_major1 = model->addOperand(&type8);
    466   auto merge_outputs1 = model->addOperand(&type8);
    467   auto fw_output1 = model->addOperand(&type21);
    468   auto bw_output1 = model->addOperand(&type21);
    469   // Phase 2, operations
    470   static int32_t activation1_init[] = {1};
    471   model->setOperandValue(activation1, activation1_init, sizeof(int32_t) * 1);
    472   static bool8 time_major1_init[] = {true};
    473   model->setOperandValue(time_major1, time_major1_init, sizeof(bool8) * 1);
    474   static bool8 merge_outputs1_init[] = {false};
    475   model->setOperandValue(merge_outputs1, merge_outputs1_init, sizeof(bool8) * 1);
    476   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input1, fw_weights1, fw_recurrent_weights1, fw_bias1, fw_hidden_state1, bw_weights1, bw_recurrent_weights1, bw_bias1, bw_hidden_state1, aux_input1, fw_aux_weights1, bw_aux_weights1, activation1, time_major1, merge_outputs1}, {fw_output1, bw_output1});
    477   // Phase 3, inputs and outputs
    478   model->identifyInputsAndOutputs(
    479     {input1, fw_weights1, fw_recurrent_weights1, fw_bias1, fw_hidden_state1, bw_weights1, bw_recurrent_weights1, bw_bias1, bw_hidden_state1, aux_input1, fw_aux_weights1, bw_aux_weights1},
    480     {fw_output1, bw_output1});
    481   assert(model->isValid());
    482 }
    483 
    484 inline bool is_ignored_dynamic_output_shape_2(int i) {
    485   static std::set<int> ignore = {};
    486   return ignore.find(i) != ignore.end();
    487 }
    488 
    489 void CreateModel_dynamic_output_shape_relaxed_2(Model *model) {
    490   OperandType type1(Type::TENSOR_FLOAT32, {16, 8});
    491   OperandType type2(Type::TENSOR_FLOAT32, {16, 16});
    492   OperandType type21(Type::TENSOR_FLOAT32, {0, 0, 0});
    493   OperandType type3(Type::TENSOR_FLOAT32, {16});
    494   OperandType type4(Type::TENSOR_FLOAT32, {2, 16});
    495   OperandType type5(Type::TENSOR_FLOAT32, {0});
    496   OperandType type7(Type::INT32, {});
    497   OperandType type8(Type::BOOL, {});
    498   OperandType type9(Type::TENSOR_FLOAT32, {16, 2, 8});
    499   // Phase 1, operands
    500   auto input1 = model->addOperand(&type9);
    501   auto fw_weights1 = model->addOperand(&type1);
    502   auto fw_recurrent_weights1 = model->addOperand(&type2);
    503   auto fw_bias1 = model->addOperand(&type3);
    504   auto fw_hidden_state1 = model->addOperand(&type4);
    505   auto bw_weights1 = model->addOperand(&type1);
    506   auto bw_recurrent_weights1 = model->addOperand(&type2);
    507   auto bw_bias1 = model->addOperand(&type3);
    508   auto bw_hidden_state1 = model->addOperand(&type4);
    509   auto aux_input1 = model->addOperand(&type5);
    510   auto fw_aux_weights1 = model->addOperand(&type5);
    511   auto bw_aux_weights1 = model->addOperand(&type5);
    512   auto activation1 = model->addOperand(&type7);
    513   auto time_major1 = model->addOperand(&type8);
    514   auto merge_outputs1 = model->addOperand(&type8);
    515   auto fw_output1 = model->addOperand(&type21);
    516   auto bw_output1 = model->addOperand(&type21);
    517   // Phase 2, operations
    518   static int32_t activation1_init[] = {1};
    519   model->setOperandValue(activation1, activation1_init, sizeof(int32_t) * 1);
    520   static bool8 time_major1_init[] = {true};
    521   model->setOperandValue(time_major1, time_major1_init, sizeof(bool8) * 1);
    522   static bool8 merge_outputs1_init[] = {false};
    523   model->setOperandValue(merge_outputs1, merge_outputs1_init, sizeof(bool8) * 1);
    524   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input1, fw_weights1, fw_recurrent_weights1, fw_bias1, fw_hidden_state1, bw_weights1, bw_recurrent_weights1, bw_bias1, bw_hidden_state1, aux_input1, fw_aux_weights1, bw_aux_weights1, activation1, time_major1, merge_outputs1}, {fw_output1, bw_output1});
    525   // Phase 3, inputs and outputs
    526   model->identifyInputsAndOutputs(
    527     {input1, fw_weights1, fw_recurrent_weights1, fw_bias1, fw_hidden_state1, bw_weights1, bw_recurrent_weights1, bw_bias1, bw_hidden_state1, aux_input1, fw_aux_weights1, bw_aux_weights1},
    528     {fw_output1, bw_output1});
    529   // Phase 4: set relaxed execution
    530   model->relaxComputationFloat32toFloat16(true);
    531   assert(model->isValid());
    532 }
    533 
    534 inline bool is_ignored_dynamic_output_shape_relaxed_2(int i) {
    535   static std::set<int> ignore = {};
    536   return ignore.find(i) != ignore.end();
    537 }
    538 
    539 void CreateModel_dynamic_output_shape_float16_2(Model *model) {
    540   OperandType type14(Type::TENSOR_FLOAT16, {0});
    541   OperandType type15(Type::TENSOR_FLOAT16, {16});
    542   OperandType type16(Type::TENSOR_FLOAT16, {2, 16});
    543   OperandType type18(Type::TENSOR_FLOAT16, {16, 16});
    544   OperandType type19(Type::TENSOR_FLOAT16, {16, 8});
    545   OperandType type22(Type::TENSOR_FLOAT16, {0, 0, 0});
    546   OperandType type24(Type::TENSOR_FLOAT16, {16, 2, 8});
    547   OperandType type7(Type::INT32, {});
    548   OperandType type8(Type::BOOL, {});
    549   // Phase 1, operands
    550   auto input1 = model->addOperand(&type24);
    551   auto fw_weights1 = model->addOperand(&type19);
    552   auto fw_recurrent_weights1 = model->addOperand(&type18);
    553   auto fw_bias1 = model->addOperand(&type15);
    554   auto fw_hidden_state1 = model->addOperand(&type16);
    555   auto bw_weights1 = model->addOperand(&type19);
    556   auto bw_recurrent_weights1 = model->addOperand(&type18);
    557   auto bw_bias1 = model->addOperand(&type15);
    558   auto bw_hidden_state1 = model->addOperand(&type16);
    559   auto aux_input1 = model->addOperand(&type14);
    560   auto fw_aux_weights1 = model->addOperand(&type14);
    561   auto bw_aux_weights1 = model->addOperand(&type14);
    562   auto activation1 = model->addOperand(&type7);
    563   auto time_major1 = model->addOperand(&type8);
    564   auto merge_outputs1 = model->addOperand(&type8);
    565   auto fw_output1 = model->addOperand(&type22);
    566   auto bw_output1 = model->addOperand(&type22);
    567   // Phase 2, operations
    568   static int32_t activation1_init[] = {1};
    569   model->setOperandValue(activation1, activation1_init, sizeof(int32_t) * 1);
    570   static bool8 time_major1_init[] = {true};
    571   model->setOperandValue(time_major1, time_major1_init, sizeof(bool8) * 1);
    572   static bool8 merge_outputs1_init[] = {false};
    573   model->setOperandValue(merge_outputs1, merge_outputs1_init, sizeof(bool8) * 1);
    574   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input1, fw_weights1, fw_recurrent_weights1, fw_bias1, fw_hidden_state1, bw_weights1, bw_recurrent_weights1, bw_bias1, bw_hidden_state1, aux_input1, fw_aux_weights1, bw_aux_weights1, activation1, time_major1, merge_outputs1}, {fw_output1, bw_output1});
    575   // Phase 3, inputs and outputs
    576   model->identifyInputsAndOutputs(
    577     {input1, fw_weights1, fw_recurrent_weights1, fw_bias1, fw_hidden_state1, bw_weights1, bw_recurrent_weights1, bw_bias1, bw_hidden_state1, aux_input1, fw_aux_weights1, bw_aux_weights1},
    578     {fw_output1, bw_output1});
    579   assert(model->isValid());
    580 }
    581 
    582 inline bool is_ignored_dynamic_output_shape_float16_2(int i) {
    583   static std::set<int> ignore = {};
    584   return ignore.find(i) != ignore.end();
    585 }
    586 
    587 void CreateModel_3(Model *model) {
    588   OperandType type1(Type::TENSOR_FLOAT32, {16, 8});
    589   OperandType type11(Type::TENSOR_FLOAT32, {16, 2, 32});
    590   OperandType type2(Type::TENSOR_FLOAT32, {16, 16});
    591   OperandType type3(Type::TENSOR_FLOAT32, {16});
    592   OperandType type4(Type::TENSOR_FLOAT32, {2, 16});
    593   OperandType type5(Type::TENSOR_FLOAT32, {0});
    594   OperandType type7(Type::INT32, {});
    595   OperandType type8(Type::BOOL, {});
    596   OperandType type9(Type::TENSOR_FLOAT32, {16, 2, 8});
    597   // Phase 1, operands
    598   auto input2 = model->addOperand(&type9);
    599   auto fw_weights2 = model->addOperand(&type1);
    600   auto fw_recurrent_weights2 = model->addOperand(&type2);
    601   auto fw_bias2 = model->addOperand(&type3);
    602   auto fw_hidden_state2 = model->addOperand(&type4);
    603   auto bw_weights2 = model->addOperand(&type1);
    604   auto bw_recurrent_weights2 = model->addOperand(&type2);
    605   auto bw_bias2 = model->addOperand(&type3);
    606   auto bw_hidden_state2 = model->addOperand(&type4);
    607   auto aux_input2 = model->addOperand(&type5);
    608   auto fw_aux_weights2 = model->addOperand(&type5);
    609   auto bw_aux_weights2 = model->addOperand(&type5);
    610   auto activation2 = model->addOperand(&type7);
    611   auto time_major2 = model->addOperand(&type8);
    612   auto merge_outputs2 = model->addOperand(&type8);
    613   auto fw_output2 = model->addOperand(&type11);
    614   // Phase 2, operations
    615   static int32_t activation2_init[] = {1};
    616   model->setOperandValue(activation2, activation2_init, sizeof(int32_t) * 1);
    617   static bool8 time_major2_init[] = {true};
    618   model->setOperandValue(time_major2, time_major2_init, sizeof(bool8) * 1);
    619   static bool8 merge_outputs2_init[] = {true};
    620   model->setOperandValue(merge_outputs2, merge_outputs2_init, sizeof(bool8) * 1);
    621   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input2, fw_weights2, fw_recurrent_weights2, fw_bias2, fw_hidden_state2, bw_weights2, bw_recurrent_weights2, bw_bias2, bw_hidden_state2, aux_input2, fw_aux_weights2, bw_aux_weights2, activation2, time_major2, merge_outputs2}, {fw_output2});
    622   // Phase 3, inputs and outputs
    623   model->identifyInputsAndOutputs(
    624     {input2, fw_weights2, fw_recurrent_weights2, fw_bias2, fw_hidden_state2, bw_weights2, bw_recurrent_weights2, bw_bias2, bw_hidden_state2, aux_input2, fw_aux_weights2, bw_aux_weights2},
    625     {fw_output2});
    626   assert(model->isValid());
    627 }
    628 
    629 inline bool is_ignored_3(int i) {
    630   static std::set<int> ignore = {};
    631   return ignore.find(i) != ignore.end();
    632 }
    633 
    634 void CreateModel_relaxed_3(Model *model) {
    635   OperandType type1(Type::TENSOR_FLOAT32, {16, 8});
    636   OperandType type11(Type::TENSOR_FLOAT32, {16, 2, 32});
    637   OperandType type2(Type::TENSOR_FLOAT32, {16, 16});
    638   OperandType type3(Type::TENSOR_FLOAT32, {16});
    639   OperandType type4(Type::TENSOR_FLOAT32, {2, 16});
    640   OperandType type5(Type::TENSOR_FLOAT32, {0});
    641   OperandType type7(Type::INT32, {});
    642   OperandType type8(Type::BOOL, {});
    643   OperandType type9(Type::TENSOR_FLOAT32, {16, 2, 8});
    644   // Phase 1, operands
    645   auto input2 = model->addOperand(&type9);
    646   auto fw_weights2 = model->addOperand(&type1);
    647   auto fw_recurrent_weights2 = model->addOperand(&type2);
    648   auto fw_bias2 = model->addOperand(&type3);
    649   auto fw_hidden_state2 = model->addOperand(&type4);
    650   auto bw_weights2 = model->addOperand(&type1);
    651   auto bw_recurrent_weights2 = model->addOperand(&type2);
    652   auto bw_bias2 = model->addOperand(&type3);
    653   auto bw_hidden_state2 = model->addOperand(&type4);
    654   auto aux_input2 = model->addOperand(&type5);
    655   auto fw_aux_weights2 = model->addOperand(&type5);
    656   auto bw_aux_weights2 = model->addOperand(&type5);
    657   auto activation2 = model->addOperand(&type7);
    658   auto time_major2 = model->addOperand(&type8);
    659   auto merge_outputs2 = model->addOperand(&type8);
    660   auto fw_output2 = model->addOperand(&type11);
    661   // Phase 2, operations
    662   static int32_t activation2_init[] = {1};
    663   model->setOperandValue(activation2, activation2_init, sizeof(int32_t) * 1);
    664   static bool8 time_major2_init[] = {true};
    665   model->setOperandValue(time_major2, time_major2_init, sizeof(bool8) * 1);
    666   static bool8 merge_outputs2_init[] = {true};
    667   model->setOperandValue(merge_outputs2, merge_outputs2_init, sizeof(bool8) * 1);
    668   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input2, fw_weights2, fw_recurrent_weights2, fw_bias2, fw_hidden_state2, bw_weights2, bw_recurrent_weights2, bw_bias2, bw_hidden_state2, aux_input2, fw_aux_weights2, bw_aux_weights2, activation2, time_major2, merge_outputs2}, {fw_output2});
    669   // Phase 3, inputs and outputs
    670   model->identifyInputsAndOutputs(
    671     {input2, fw_weights2, fw_recurrent_weights2, fw_bias2, fw_hidden_state2, bw_weights2, bw_recurrent_weights2, bw_bias2, bw_hidden_state2, aux_input2, fw_aux_weights2, bw_aux_weights2},
    672     {fw_output2});
    673   // Phase 4: set relaxed execution
    674   model->relaxComputationFloat32toFloat16(true);
    675   assert(model->isValid());
    676 }
    677 
    678 inline bool is_ignored_relaxed_3(int i) {
    679   static std::set<int> ignore = {};
    680   return ignore.find(i) != ignore.end();
    681 }
    682 
    683 void CreateModel_float16_3(Model *model) {
    684   OperandType type14(Type::TENSOR_FLOAT16, {0});
    685   OperandType type15(Type::TENSOR_FLOAT16, {16});
    686   OperandType type16(Type::TENSOR_FLOAT16, {2, 16});
    687   OperandType type18(Type::TENSOR_FLOAT16, {16, 16});
    688   OperandType type19(Type::TENSOR_FLOAT16, {16, 8});
    689   OperandType type24(Type::TENSOR_FLOAT16, {16, 2, 8});
    690   OperandType type25(Type::TENSOR_FLOAT16, {16, 2, 32});
    691   OperandType type7(Type::INT32, {});
    692   OperandType type8(Type::BOOL, {});
    693   // Phase 1, operands
    694   auto input2 = model->addOperand(&type24);
    695   auto fw_weights2 = model->addOperand(&type19);
    696   auto fw_recurrent_weights2 = model->addOperand(&type18);
    697   auto fw_bias2 = model->addOperand(&type15);
    698   auto fw_hidden_state2 = model->addOperand(&type16);
    699   auto bw_weights2 = model->addOperand(&type19);
    700   auto bw_recurrent_weights2 = model->addOperand(&type18);
    701   auto bw_bias2 = model->addOperand(&type15);
    702   auto bw_hidden_state2 = model->addOperand(&type16);
    703   auto aux_input2 = model->addOperand(&type14);
    704   auto fw_aux_weights2 = model->addOperand(&type14);
    705   auto bw_aux_weights2 = model->addOperand(&type14);
    706   auto activation2 = model->addOperand(&type7);
    707   auto time_major2 = model->addOperand(&type8);
    708   auto merge_outputs2 = model->addOperand(&type8);
    709   auto fw_output2 = model->addOperand(&type25);
    710   // Phase 2, operations
    711   static int32_t activation2_init[] = {1};
    712   model->setOperandValue(activation2, activation2_init, sizeof(int32_t) * 1);
    713   static bool8 time_major2_init[] = {true};
    714   model->setOperandValue(time_major2, time_major2_init, sizeof(bool8) * 1);
    715   static bool8 merge_outputs2_init[] = {true};
    716   model->setOperandValue(merge_outputs2, merge_outputs2_init, sizeof(bool8) * 1);
    717   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input2, fw_weights2, fw_recurrent_weights2, fw_bias2, fw_hidden_state2, bw_weights2, bw_recurrent_weights2, bw_bias2, bw_hidden_state2, aux_input2, fw_aux_weights2, bw_aux_weights2, activation2, time_major2, merge_outputs2}, {fw_output2});
    718   // Phase 3, inputs and outputs
    719   model->identifyInputsAndOutputs(
    720     {input2, fw_weights2, fw_recurrent_weights2, fw_bias2, fw_hidden_state2, bw_weights2, bw_recurrent_weights2, bw_bias2, bw_hidden_state2, aux_input2, fw_aux_weights2, bw_aux_weights2},
    721     {fw_output2});
    722   assert(model->isValid());
    723 }
    724 
    725 inline bool is_ignored_float16_3(int i) {
    726   static std::set<int> ignore = {};
    727   return ignore.find(i) != ignore.end();
    728 }
    729 
    730 void CreateModel_dynamic_output_shape_3(Model *model) {
    731   OperandType type1(Type::TENSOR_FLOAT32, {16, 8});
    732   OperandType type2(Type::TENSOR_FLOAT32, {16, 16});
    733   OperandType type21(Type::TENSOR_FLOAT32, {0, 0, 0});
    734   OperandType type3(Type::TENSOR_FLOAT32, {16});
    735   OperandType type4(Type::TENSOR_FLOAT32, {2, 16});
    736   OperandType type5(Type::TENSOR_FLOAT32, {0});
    737   OperandType type7(Type::INT32, {});
    738   OperandType type8(Type::BOOL, {});
    739   OperandType type9(Type::TENSOR_FLOAT32, {16, 2, 8});
    740   // Phase 1, operands
    741   auto input2 = model->addOperand(&type9);
    742   auto fw_weights2 = model->addOperand(&type1);
    743   auto fw_recurrent_weights2 = model->addOperand(&type2);
    744   auto fw_bias2 = model->addOperand(&type3);
    745   auto fw_hidden_state2 = model->addOperand(&type4);
    746   auto bw_weights2 = model->addOperand(&type1);
    747   auto bw_recurrent_weights2 = model->addOperand(&type2);
    748   auto bw_bias2 = model->addOperand(&type3);
    749   auto bw_hidden_state2 = model->addOperand(&type4);
    750   auto aux_input2 = model->addOperand(&type5);
    751   auto fw_aux_weights2 = model->addOperand(&type5);
    752   auto bw_aux_weights2 = model->addOperand(&type5);
    753   auto activation2 = model->addOperand(&type7);
    754   auto time_major2 = model->addOperand(&type8);
    755   auto merge_outputs2 = model->addOperand(&type8);
    756   auto fw_output2 = model->addOperand(&type21);
    757   // Phase 2, operations
    758   static int32_t activation2_init[] = {1};
    759   model->setOperandValue(activation2, activation2_init, sizeof(int32_t) * 1);
    760   static bool8 time_major2_init[] = {true};
    761   model->setOperandValue(time_major2, time_major2_init, sizeof(bool8) * 1);
    762   static bool8 merge_outputs2_init[] = {true};
    763   model->setOperandValue(merge_outputs2, merge_outputs2_init, sizeof(bool8) * 1);
    764   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input2, fw_weights2, fw_recurrent_weights2, fw_bias2, fw_hidden_state2, bw_weights2, bw_recurrent_weights2, bw_bias2, bw_hidden_state2, aux_input2, fw_aux_weights2, bw_aux_weights2, activation2, time_major2, merge_outputs2}, {fw_output2});
    765   // Phase 3, inputs and outputs
    766   model->identifyInputsAndOutputs(
    767     {input2, fw_weights2, fw_recurrent_weights2, fw_bias2, fw_hidden_state2, bw_weights2, bw_recurrent_weights2, bw_bias2, bw_hidden_state2, aux_input2, fw_aux_weights2, bw_aux_weights2},
    768     {fw_output2});
    769   assert(model->isValid());
    770 }
    771 
    772 inline bool is_ignored_dynamic_output_shape_3(int i) {
    773   static std::set<int> ignore = {};
    774   return ignore.find(i) != ignore.end();
    775 }
    776 
    777 void CreateModel_dynamic_output_shape_relaxed_3(Model *model) {
    778   OperandType type1(Type::TENSOR_FLOAT32, {16, 8});
    779   OperandType type2(Type::TENSOR_FLOAT32, {16, 16});
    780   OperandType type21(Type::TENSOR_FLOAT32, {0, 0, 0});
    781   OperandType type3(Type::TENSOR_FLOAT32, {16});
    782   OperandType type4(Type::TENSOR_FLOAT32, {2, 16});
    783   OperandType type5(Type::TENSOR_FLOAT32, {0});
    784   OperandType type7(Type::INT32, {});
    785   OperandType type8(Type::BOOL, {});
    786   OperandType type9(Type::TENSOR_FLOAT32, {16, 2, 8});
    787   // Phase 1, operands
    788   auto input2 = model->addOperand(&type9);
    789   auto fw_weights2 = model->addOperand(&type1);
    790   auto fw_recurrent_weights2 = model->addOperand(&type2);
    791   auto fw_bias2 = model->addOperand(&type3);
    792   auto fw_hidden_state2 = model->addOperand(&type4);
    793   auto bw_weights2 = model->addOperand(&type1);
    794   auto bw_recurrent_weights2 = model->addOperand(&type2);
    795   auto bw_bias2 = model->addOperand(&type3);
    796   auto bw_hidden_state2 = model->addOperand(&type4);
    797   auto aux_input2 = model->addOperand(&type5);
    798   auto fw_aux_weights2 = model->addOperand(&type5);
    799   auto bw_aux_weights2 = model->addOperand(&type5);
    800   auto activation2 = model->addOperand(&type7);
    801   auto time_major2 = model->addOperand(&type8);
    802   auto merge_outputs2 = model->addOperand(&type8);
    803   auto fw_output2 = model->addOperand(&type21);
    804   // Phase 2, operations
    805   static int32_t activation2_init[] = {1};
    806   model->setOperandValue(activation2, activation2_init, sizeof(int32_t) * 1);
    807   static bool8 time_major2_init[] = {true};
    808   model->setOperandValue(time_major2, time_major2_init, sizeof(bool8) * 1);
    809   static bool8 merge_outputs2_init[] = {true};
    810   model->setOperandValue(merge_outputs2, merge_outputs2_init, sizeof(bool8) * 1);
    811   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input2, fw_weights2, fw_recurrent_weights2, fw_bias2, fw_hidden_state2, bw_weights2, bw_recurrent_weights2, bw_bias2, bw_hidden_state2, aux_input2, fw_aux_weights2, bw_aux_weights2, activation2, time_major2, merge_outputs2}, {fw_output2});
    812   // Phase 3, inputs and outputs
    813   model->identifyInputsAndOutputs(
    814     {input2, fw_weights2, fw_recurrent_weights2, fw_bias2, fw_hidden_state2, bw_weights2, bw_recurrent_weights2, bw_bias2, bw_hidden_state2, aux_input2, fw_aux_weights2, bw_aux_weights2},
    815     {fw_output2});
    816   // Phase 4: set relaxed execution
    817   model->relaxComputationFloat32toFloat16(true);
    818   assert(model->isValid());
    819 }
    820 
    821 inline bool is_ignored_dynamic_output_shape_relaxed_3(int i) {
    822   static std::set<int> ignore = {};
    823   return ignore.find(i) != ignore.end();
    824 }
    825 
    826 void CreateModel_dynamic_output_shape_float16_3(Model *model) {
    827   OperandType type14(Type::TENSOR_FLOAT16, {0});
    828   OperandType type15(Type::TENSOR_FLOAT16, {16});
    829   OperandType type16(Type::TENSOR_FLOAT16, {2, 16});
    830   OperandType type18(Type::TENSOR_FLOAT16, {16, 16});
    831   OperandType type19(Type::TENSOR_FLOAT16, {16, 8});
    832   OperandType type22(Type::TENSOR_FLOAT16, {0, 0, 0});
    833   OperandType type24(Type::TENSOR_FLOAT16, {16, 2, 8});
    834   OperandType type7(Type::INT32, {});
    835   OperandType type8(Type::BOOL, {});
    836   // Phase 1, operands
    837   auto input2 = model->addOperand(&type24);
    838   auto fw_weights2 = model->addOperand(&type19);
    839   auto fw_recurrent_weights2 = model->addOperand(&type18);
    840   auto fw_bias2 = model->addOperand(&type15);
    841   auto fw_hidden_state2 = model->addOperand(&type16);
    842   auto bw_weights2 = model->addOperand(&type19);
    843   auto bw_recurrent_weights2 = model->addOperand(&type18);
    844   auto bw_bias2 = model->addOperand(&type15);
    845   auto bw_hidden_state2 = model->addOperand(&type16);
    846   auto aux_input2 = model->addOperand(&type14);
    847   auto fw_aux_weights2 = model->addOperand(&type14);
    848   auto bw_aux_weights2 = model->addOperand(&type14);
    849   auto activation2 = model->addOperand(&type7);
    850   auto time_major2 = model->addOperand(&type8);
    851   auto merge_outputs2 = model->addOperand(&type8);
    852   auto fw_output2 = model->addOperand(&type22);
    853   // Phase 2, operations
    854   static int32_t activation2_init[] = {1};
    855   model->setOperandValue(activation2, activation2_init, sizeof(int32_t) * 1);
    856   static bool8 time_major2_init[] = {true};
    857   model->setOperandValue(time_major2, time_major2_init, sizeof(bool8) * 1);
    858   static bool8 merge_outputs2_init[] = {true};
    859   model->setOperandValue(merge_outputs2, merge_outputs2_init, sizeof(bool8) * 1);
    860   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input2, fw_weights2, fw_recurrent_weights2, fw_bias2, fw_hidden_state2, bw_weights2, bw_recurrent_weights2, bw_bias2, bw_hidden_state2, aux_input2, fw_aux_weights2, bw_aux_weights2, activation2, time_major2, merge_outputs2}, {fw_output2});
    861   // Phase 3, inputs and outputs
    862   model->identifyInputsAndOutputs(
    863     {input2, fw_weights2, fw_recurrent_weights2, fw_bias2, fw_hidden_state2, bw_weights2, bw_recurrent_weights2, bw_bias2, bw_hidden_state2, aux_input2, fw_aux_weights2, bw_aux_weights2},
    864     {fw_output2});
    865   assert(model->isValid());
    866 }
    867 
    868 inline bool is_ignored_dynamic_output_shape_float16_3(int i) {
    869   static std::set<int> ignore = {};
    870   return ignore.find(i) != ignore.end();
    871 }
    872 
    873 void CreateModel_4(Model *model) {
    874   OperandType type0(Type::TENSOR_FLOAT32, {2, 16, 8});
    875   OperandType type1(Type::TENSOR_FLOAT32, {16, 8});
    876   OperandType type2(Type::TENSOR_FLOAT32, {16, 16});
    877   OperandType type3(Type::TENSOR_FLOAT32, {16});
    878   OperandType type4(Type::TENSOR_FLOAT32, {2, 16});
    879   OperandType type5(Type::TENSOR_FLOAT32, {0});
    880   OperandType type6(Type::TENSOR_FLOAT32, {2, 16, 16});
    881   OperandType type7(Type::INT32, {});
    882   OperandType type8(Type::BOOL, {});
    883   // Phase 1, operands
    884   auto input3 = model->addOperand(&type0);
    885   auto fw_weights3 = model->addOperand(&type1);
    886   auto fw_recurrent_weights3 = model->addOperand(&type2);
    887   auto fw_bias3 = model->addOperand(&type3);
    888   auto fw_hidden_state3 = model->addOperand(&type4);
    889   auto bw_weights3 = model->addOperand(&type1);
    890   auto bw_recurrent_weights3 = model->addOperand(&type2);
    891   auto bw_bias3 = model->addOperand(&type3);
    892   auto bw_hidden_state3 = model->addOperand(&type4);
    893   auto aux_input3 = model->addOperand(&type5);
    894   auto fw_aux_weights3 = model->addOperand(&type5);
    895   auto bw_aux_weights3 = model->addOperand(&type5);
    896   auto activation3 = model->addOperand(&type7);
    897   auto time_major3 = model->addOperand(&type8);
    898   auto merge_outputs3 = model->addOperand(&type8);
    899   auto fw_output3 = model->addOperand(&type6);
    900   auto bw_output2 = model->addOperand(&type6);
    901   // Phase 2, operations
    902   static int32_t activation3_init[] = {1};
    903   model->setOperandValue(activation3, activation3_init, sizeof(int32_t) * 1);
    904   static bool8 time_major3_init[] = {false};
    905   model->setOperandValue(time_major3, time_major3_init, sizeof(bool8) * 1);
    906   static bool8 merge_outputs3_init[] = {false};
    907   model->setOperandValue(merge_outputs3, merge_outputs3_init, sizeof(bool8) * 1);
    908   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input3, fw_weights3, fw_recurrent_weights3, fw_bias3, fw_hidden_state3, bw_weights3, bw_recurrent_weights3, bw_bias3, bw_hidden_state3, aux_input3, fw_aux_weights3, bw_aux_weights3, activation3, time_major3, merge_outputs3}, {fw_output3, bw_output2});
    909   // Phase 3, inputs and outputs
    910   model->identifyInputsAndOutputs(
    911     {input3, fw_weights3, fw_recurrent_weights3, fw_bias3, fw_hidden_state3, bw_weights3, bw_recurrent_weights3, bw_bias3, bw_hidden_state3, aux_input3, fw_aux_weights3, bw_aux_weights3},
    912     {fw_output3, bw_output2});
    913   assert(model->isValid());
    914 }
    915 
    916 inline bool is_ignored_4(int i) {
    917   static std::set<int> ignore = {};
    918   return ignore.find(i) != ignore.end();
    919 }
    920 
    921 void CreateModel_relaxed_4(Model *model) {
    922   OperandType type0(Type::TENSOR_FLOAT32, {2, 16, 8});
    923   OperandType type1(Type::TENSOR_FLOAT32, {16, 8});
    924   OperandType type2(Type::TENSOR_FLOAT32, {16, 16});
    925   OperandType type3(Type::TENSOR_FLOAT32, {16});
    926   OperandType type4(Type::TENSOR_FLOAT32, {2, 16});
    927   OperandType type5(Type::TENSOR_FLOAT32, {0});
    928   OperandType type6(Type::TENSOR_FLOAT32, {2, 16, 16});
    929   OperandType type7(Type::INT32, {});
    930   OperandType type8(Type::BOOL, {});
    931   // Phase 1, operands
    932   auto input3 = model->addOperand(&type0);
    933   auto fw_weights3 = model->addOperand(&type1);
    934   auto fw_recurrent_weights3 = model->addOperand(&type2);
    935   auto fw_bias3 = model->addOperand(&type3);
    936   auto fw_hidden_state3 = model->addOperand(&type4);
    937   auto bw_weights3 = model->addOperand(&type1);
    938   auto bw_recurrent_weights3 = model->addOperand(&type2);
    939   auto bw_bias3 = model->addOperand(&type3);
    940   auto bw_hidden_state3 = model->addOperand(&type4);
    941   auto aux_input3 = model->addOperand(&type5);
    942   auto fw_aux_weights3 = model->addOperand(&type5);
    943   auto bw_aux_weights3 = model->addOperand(&type5);
    944   auto activation3 = model->addOperand(&type7);
    945   auto time_major3 = model->addOperand(&type8);
    946   auto merge_outputs3 = model->addOperand(&type8);
    947   auto fw_output3 = model->addOperand(&type6);
    948   auto bw_output2 = model->addOperand(&type6);
    949   // Phase 2, operations
    950   static int32_t activation3_init[] = {1};
    951   model->setOperandValue(activation3, activation3_init, sizeof(int32_t) * 1);
    952   static bool8 time_major3_init[] = {false};
    953   model->setOperandValue(time_major3, time_major3_init, sizeof(bool8) * 1);
    954   static bool8 merge_outputs3_init[] = {false};
    955   model->setOperandValue(merge_outputs3, merge_outputs3_init, sizeof(bool8) * 1);
    956   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input3, fw_weights3, fw_recurrent_weights3, fw_bias3, fw_hidden_state3, bw_weights3, bw_recurrent_weights3, bw_bias3, bw_hidden_state3, aux_input3, fw_aux_weights3, bw_aux_weights3, activation3, time_major3, merge_outputs3}, {fw_output3, bw_output2});
    957   // Phase 3, inputs and outputs
    958   model->identifyInputsAndOutputs(
    959     {input3, fw_weights3, fw_recurrent_weights3, fw_bias3, fw_hidden_state3, bw_weights3, bw_recurrent_weights3, bw_bias3, bw_hidden_state3, aux_input3, fw_aux_weights3, bw_aux_weights3},
    960     {fw_output3, bw_output2});
    961   // Phase 4: set relaxed execution
    962   model->relaxComputationFloat32toFloat16(true);
    963   assert(model->isValid());
    964 }
    965 
    966 inline bool is_ignored_relaxed_4(int i) {
    967   static std::set<int> ignore = {};
    968   return ignore.find(i) != ignore.end();
    969 }
    970 
    971 void CreateModel_float16_4(Model *model) {
    972   OperandType type14(Type::TENSOR_FLOAT16, {0});
    973   OperandType type15(Type::TENSOR_FLOAT16, {16});
    974   OperandType type16(Type::TENSOR_FLOAT16, {2, 16});
    975   OperandType type17(Type::TENSOR_FLOAT16, {2, 16, 16});
    976   OperandType type18(Type::TENSOR_FLOAT16, {16, 16});
    977   OperandType type19(Type::TENSOR_FLOAT16, {16, 8});
    978   OperandType type20(Type::TENSOR_FLOAT16, {2, 16, 8});
    979   OperandType type7(Type::INT32, {});
    980   OperandType type8(Type::BOOL, {});
    981   // Phase 1, operands
    982   auto input3 = model->addOperand(&type20);
    983   auto fw_weights3 = model->addOperand(&type19);
    984   auto fw_recurrent_weights3 = model->addOperand(&type18);
    985   auto fw_bias3 = model->addOperand(&type15);
    986   auto fw_hidden_state3 = model->addOperand(&type16);
    987   auto bw_weights3 = model->addOperand(&type19);
    988   auto bw_recurrent_weights3 = model->addOperand(&type18);
    989   auto bw_bias3 = model->addOperand(&type15);
    990   auto bw_hidden_state3 = model->addOperand(&type16);
    991   auto aux_input3 = model->addOperand(&type14);
    992   auto fw_aux_weights3 = model->addOperand(&type14);
    993   auto bw_aux_weights3 = model->addOperand(&type14);
    994   auto activation3 = model->addOperand(&type7);
    995   auto time_major3 = model->addOperand(&type8);
    996   auto merge_outputs3 = model->addOperand(&type8);
    997   auto fw_output3 = model->addOperand(&type17);
    998   auto bw_output2 = model->addOperand(&type17);
    999   // Phase 2, operations
   1000   static int32_t activation3_init[] = {1};
   1001   model->setOperandValue(activation3, activation3_init, sizeof(int32_t) * 1);
   1002   static bool8 time_major3_init[] = {false};
   1003   model->setOperandValue(time_major3, time_major3_init, sizeof(bool8) * 1);
   1004   static bool8 merge_outputs3_init[] = {false};
   1005   model->setOperandValue(merge_outputs3, merge_outputs3_init, sizeof(bool8) * 1);
   1006   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input3, fw_weights3, fw_recurrent_weights3, fw_bias3, fw_hidden_state3, bw_weights3, bw_recurrent_weights3, bw_bias3, bw_hidden_state3, aux_input3, fw_aux_weights3, bw_aux_weights3, activation3, time_major3, merge_outputs3}, {fw_output3, bw_output2});
   1007   // Phase 3, inputs and outputs
   1008   model->identifyInputsAndOutputs(
   1009     {input3, fw_weights3, fw_recurrent_weights3, fw_bias3, fw_hidden_state3, bw_weights3, bw_recurrent_weights3, bw_bias3, bw_hidden_state3, aux_input3, fw_aux_weights3, bw_aux_weights3},
   1010     {fw_output3, bw_output2});
   1011   assert(model->isValid());
   1012 }
   1013 
   1014 inline bool is_ignored_float16_4(int i) {
   1015   static std::set<int> ignore = {};
   1016   return ignore.find(i) != ignore.end();
   1017 }
   1018 
   1019 void CreateModel_dynamic_output_shape_4(Model *model) {
   1020   OperandType type0(Type::TENSOR_FLOAT32, {2, 16, 8});
   1021   OperandType type1(Type::TENSOR_FLOAT32, {16, 8});
   1022   OperandType type2(Type::TENSOR_FLOAT32, {16, 16});
   1023   OperandType type21(Type::TENSOR_FLOAT32, {0, 0, 0});
   1024   OperandType type3(Type::TENSOR_FLOAT32, {16});
   1025   OperandType type4(Type::TENSOR_FLOAT32, {2, 16});
   1026   OperandType type5(Type::TENSOR_FLOAT32, {0});
   1027   OperandType type7(Type::INT32, {});
   1028   OperandType type8(Type::BOOL, {});
   1029   // Phase 1, operands
   1030   auto input3 = model->addOperand(&type0);
   1031   auto fw_weights3 = model->addOperand(&type1);
   1032   auto fw_recurrent_weights3 = model->addOperand(&type2);
   1033   auto fw_bias3 = model->addOperand(&type3);
   1034   auto fw_hidden_state3 = model->addOperand(&type4);
   1035   auto bw_weights3 = model->addOperand(&type1);
   1036   auto bw_recurrent_weights3 = model->addOperand(&type2);
   1037   auto bw_bias3 = model->addOperand(&type3);
   1038   auto bw_hidden_state3 = model->addOperand(&type4);
   1039   auto aux_input3 = model->addOperand(&type5);
   1040   auto fw_aux_weights3 = model->addOperand(&type5);
   1041   auto bw_aux_weights3 = model->addOperand(&type5);
   1042   auto activation3 = model->addOperand(&type7);
   1043   auto time_major3 = model->addOperand(&type8);
   1044   auto merge_outputs3 = model->addOperand(&type8);
   1045   auto fw_output3 = model->addOperand(&type21);
   1046   auto bw_output2 = model->addOperand(&type21);
   1047   // Phase 2, operations
   1048   static int32_t activation3_init[] = {1};
   1049   model->setOperandValue(activation3, activation3_init, sizeof(int32_t) * 1);
   1050   static bool8 time_major3_init[] = {false};
   1051   model->setOperandValue(time_major3, time_major3_init, sizeof(bool8) * 1);
   1052   static bool8 merge_outputs3_init[] = {false};
   1053   model->setOperandValue(merge_outputs3, merge_outputs3_init, sizeof(bool8) * 1);
   1054   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input3, fw_weights3, fw_recurrent_weights3, fw_bias3, fw_hidden_state3, bw_weights3, bw_recurrent_weights3, bw_bias3, bw_hidden_state3, aux_input3, fw_aux_weights3, bw_aux_weights3, activation3, time_major3, merge_outputs3}, {fw_output3, bw_output2});
   1055   // Phase 3, inputs and outputs
   1056   model->identifyInputsAndOutputs(
   1057     {input3, fw_weights3, fw_recurrent_weights3, fw_bias3, fw_hidden_state3, bw_weights3, bw_recurrent_weights3, bw_bias3, bw_hidden_state3, aux_input3, fw_aux_weights3, bw_aux_weights3},
   1058     {fw_output3, bw_output2});
   1059   assert(model->isValid());
   1060 }
   1061 
   1062 inline bool is_ignored_dynamic_output_shape_4(int i) {
   1063   static std::set<int> ignore = {};
   1064   return ignore.find(i) != ignore.end();
   1065 }
   1066 
   1067 void CreateModel_dynamic_output_shape_relaxed_4(Model *model) {
   1068   OperandType type0(Type::TENSOR_FLOAT32, {2, 16, 8});
   1069   OperandType type1(Type::TENSOR_FLOAT32, {16, 8});
   1070   OperandType type2(Type::TENSOR_FLOAT32, {16, 16});
   1071   OperandType type21(Type::TENSOR_FLOAT32, {0, 0, 0});
   1072   OperandType type3(Type::TENSOR_FLOAT32, {16});
   1073   OperandType type4(Type::TENSOR_FLOAT32, {2, 16});
   1074   OperandType type5(Type::TENSOR_FLOAT32, {0});
   1075   OperandType type7(Type::INT32, {});
   1076   OperandType type8(Type::BOOL, {});
   1077   // Phase 1, operands
   1078   auto input3 = model->addOperand(&type0);
   1079   auto fw_weights3 = model->addOperand(&type1);
   1080   auto fw_recurrent_weights3 = model->addOperand(&type2);
   1081   auto fw_bias3 = model->addOperand(&type3);
   1082   auto fw_hidden_state3 = model->addOperand(&type4);
   1083   auto bw_weights3 = model->addOperand(&type1);
   1084   auto bw_recurrent_weights3 = model->addOperand(&type2);
   1085   auto bw_bias3 = model->addOperand(&type3);
   1086   auto bw_hidden_state3 = model->addOperand(&type4);
   1087   auto aux_input3 = model->addOperand(&type5);
   1088   auto fw_aux_weights3 = model->addOperand(&type5);
   1089   auto bw_aux_weights3 = model->addOperand(&type5);
   1090   auto activation3 = model->addOperand(&type7);
   1091   auto time_major3 = model->addOperand(&type8);
   1092   auto merge_outputs3 = model->addOperand(&type8);
   1093   auto fw_output3 = model->addOperand(&type21);
   1094   auto bw_output2 = model->addOperand(&type21);
   1095   // Phase 2, operations
   1096   static int32_t activation3_init[] = {1};
   1097   model->setOperandValue(activation3, activation3_init, sizeof(int32_t) * 1);
   1098   static bool8 time_major3_init[] = {false};
   1099   model->setOperandValue(time_major3, time_major3_init, sizeof(bool8) * 1);
   1100   static bool8 merge_outputs3_init[] = {false};
   1101   model->setOperandValue(merge_outputs3, merge_outputs3_init, sizeof(bool8) * 1);
   1102   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input3, fw_weights3, fw_recurrent_weights3, fw_bias3, fw_hidden_state3, bw_weights3, bw_recurrent_weights3, bw_bias3, bw_hidden_state3, aux_input3, fw_aux_weights3, bw_aux_weights3, activation3, time_major3, merge_outputs3}, {fw_output3, bw_output2});
   1103   // Phase 3, inputs and outputs
   1104   model->identifyInputsAndOutputs(
   1105     {input3, fw_weights3, fw_recurrent_weights3, fw_bias3, fw_hidden_state3, bw_weights3, bw_recurrent_weights3, bw_bias3, bw_hidden_state3, aux_input3, fw_aux_weights3, bw_aux_weights3},
   1106     {fw_output3, bw_output2});
   1107   // Phase 4: set relaxed execution
   1108   model->relaxComputationFloat32toFloat16(true);
   1109   assert(model->isValid());
   1110 }
   1111 
   1112 inline bool is_ignored_dynamic_output_shape_relaxed_4(int i) {
   1113   static std::set<int> ignore = {};
   1114   return ignore.find(i) != ignore.end();
   1115 }
   1116 
   1117 void CreateModel_dynamic_output_shape_float16_4(Model *model) {
   1118   OperandType type14(Type::TENSOR_FLOAT16, {0});
   1119   OperandType type15(Type::TENSOR_FLOAT16, {16});
   1120   OperandType type16(Type::TENSOR_FLOAT16, {2, 16});
   1121   OperandType type18(Type::TENSOR_FLOAT16, {16, 16});
   1122   OperandType type19(Type::TENSOR_FLOAT16, {16, 8});
   1123   OperandType type20(Type::TENSOR_FLOAT16, {2, 16, 8});
   1124   OperandType type22(Type::TENSOR_FLOAT16, {0, 0, 0});
   1125   OperandType type7(Type::INT32, {});
   1126   OperandType type8(Type::BOOL, {});
   1127   // Phase 1, operands
   1128   auto input3 = model->addOperand(&type20);
   1129   auto fw_weights3 = model->addOperand(&type19);
   1130   auto fw_recurrent_weights3 = model->addOperand(&type18);
   1131   auto fw_bias3 = model->addOperand(&type15);
   1132   auto fw_hidden_state3 = model->addOperand(&type16);
   1133   auto bw_weights3 = model->addOperand(&type19);
   1134   auto bw_recurrent_weights3 = model->addOperand(&type18);
   1135   auto bw_bias3 = model->addOperand(&type15);
   1136   auto bw_hidden_state3 = model->addOperand(&type16);
   1137   auto aux_input3 = model->addOperand(&type14);
   1138   auto fw_aux_weights3 = model->addOperand(&type14);
   1139   auto bw_aux_weights3 = model->addOperand(&type14);
   1140   auto activation3 = model->addOperand(&type7);
   1141   auto time_major3 = model->addOperand(&type8);
   1142   auto merge_outputs3 = model->addOperand(&type8);
   1143   auto fw_output3 = model->addOperand(&type22);
   1144   auto bw_output2 = model->addOperand(&type22);
   1145   // Phase 2, operations
   1146   static int32_t activation3_init[] = {1};
   1147   model->setOperandValue(activation3, activation3_init, sizeof(int32_t) * 1);
   1148   static bool8 time_major3_init[] = {false};
   1149   model->setOperandValue(time_major3, time_major3_init, sizeof(bool8) * 1);
   1150   static bool8 merge_outputs3_init[] = {false};
   1151   model->setOperandValue(merge_outputs3, merge_outputs3_init, sizeof(bool8) * 1);
   1152   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input3, fw_weights3, fw_recurrent_weights3, fw_bias3, fw_hidden_state3, bw_weights3, bw_recurrent_weights3, bw_bias3, bw_hidden_state3, aux_input3, fw_aux_weights3, bw_aux_weights3, activation3, time_major3, merge_outputs3}, {fw_output3, bw_output2});
   1153   // Phase 3, inputs and outputs
   1154   model->identifyInputsAndOutputs(
   1155     {input3, fw_weights3, fw_recurrent_weights3, fw_bias3, fw_hidden_state3, bw_weights3, bw_recurrent_weights3, bw_bias3, bw_hidden_state3, aux_input3, fw_aux_weights3, bw_aux_weights3},
   1156     {fw_output3, bw_output2});
   1157   assert(model->isValid());
   1158 }
   1159 
   1160 inline bool is_ignored_dynamic_output_shape_float16_4(int i) {
   1161   static std::set<int> ignore = {};
   1162   return ignore.find(i) != ignore.end();
   1163 }
   1164 
   1165 void CreateModel_5(Model *model) {
   1166   OperandType type0(Type::TENSOR_FLOAT32, {2, 16, 8});
   1167   OperandType type1(Type::TENSOR_FLOAT32, {16, 8});
   1168   OperandType type2(Type::TENSOR_FLOAT32, {16, 16});
   1169   OperandType type3(Type::TENSOR_FLOAT32, {16});
   1170   OperandType type4(Type::TENSOR_FLOAT32, {2, 16});
   1171   OperandType type6(Type::TENSOR_FLOAT32, {2, 16, 16});
   1172   OperandType type7(Type::INT32, {});
   1173   OperandType type8(Type::BOOL, {});
   1174   // Phase 1, operands
   1175   auto input4 = model->addOperand(&type0);
   1176   auto fw_weights4 = model->addOperand(&type1);
   1177   auto fw_recurrent_weights4 = model->addOperand(&type2);
   1178   auto fw_bias4 = model->addOperand(&type3);
   1179   auto fw_hidden_state4 = model->addOperand(&type4);
   1180   auto bw_weights4 = model->addOperand(&type1);
   1181   auto bw_recurrent_weights4 = model->addOperand(&type2);
   1182   auto bw_bias4 = model->addOperand(&type3);
   1183   auto bw_hidden_state4 = model->addOperand(&type4);
   1184   auto aux_input4 = model->addOperand(&type0);
   1185   auto fw_aux_weights4 = model->addOperand(&type1);
   1186   auto bw_aux_weights4 = model->addOperand(&type1);
   1187   auto activation4 = model->addOperand(&type7);
   1188   auto time_major4 = model->addOperand(&type8);
   1189   auto merge_outputs4 = model->addOperand(&type8);
   1190   auto fw_output4 = model->addOperand(&type6);
   1191   auto bw_output3 = model->addOperand(&type6);
   1192   // Phase 2, operations
   1193   static int32_t activation4_init[] = {1};
   1194   model->setOperandValue(activation4, activation4_init, sizeof(int32_t) * 1);
   1195   static bool8 time_major4_init[] = {false};
   1196   model->setOperandValue(time_major4, time_major4_init, sizeof(bool8) * 1);
   1197   static bool8 merge_outputs4_init[] = {false};
   1198   model->setOperandValue(merge_outputs4, merge_outputs4_init, sizeof(bool8) * 1);
   1199   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input4, fw_weights4, fw_recurrent_weights4, fw_bias4, fw_hidden_state4, bw_weights4, bw_recurrent_weights4, bw_bias4, bw_hidden_state4, aux_input4, fw_aux_weights4, bw_aux_weights4, activation4, time_major4, merge_outputs4}, {fw_output4, bw_output3});
   1200   // Phase 3, inputs and outputs
   1201   model->identifyInputsAndOutputs(
   1202     {input4, fw_weights4, fw_recurrent_weights4, fw_bias4, fw_hidden_state4, bw_weights4, bw_recurrent_weights4, bw_bias4, bw_hidden_state4, aux_input4, fw_aux_weights4, bw_aux_weights4},
   1203     {fw_output4, bw_output3});
   1204   assert(model->isValid());
   1205 }
   1206 
   1207 inline bool is_ignored_5(int i) {
   1208   static std::set<int> ignore = {};
   1209   return ignore.find(i) != ignore.end();
   1210 }
   1211 
   1212 void CreateModel_relaxed_5(Model *model) {
   1213   OperandType type0(Type::TENSOR_FLOAT32, {2, 16, 8});
   1214   OperandType type1(Type::TENSOR_FLOAT32, {16, 8});
   1215   OperandType type2(Type::TENSOR_FLOAT32, {16, 16});
   1216   OperandType type3(Type::TENSOR_FLOAT32, {16});
   1217   OperandType type4(Type::TENSOR_FLOAT32, {2, 16});
   1218   OperandType type6(Type::TENSOR_FLOAT32, {2, 16, 16});
   1219   OperandType type7(Type::INT32, {});
   1220   OperandType type8(Type::BOOL, {});
   1221   // Phase 1, operands
   1222   auto input4 = model->addOperand(&type0);
   1223   auto fw_weights4 = model->addOperand(&type1);
   1224   auto fw_recurrent_weights4 = model->addOperand(&type2);
   1225   auto fw_bias4 = model->addOperand(&type3);
   1226   auto fw_hidden_state4 = model->addOperand(&type4);
   1227   auto bw_weights4 = model->addOperand(&type1);
   1228   auto bw_recurrent_weights4 = model->addOperand(&type2);
   1229   auto bw_bias4 = model->addOperand(&type3);
   1230   auto bw_hidden_state4 = model->addOperand(&type4);
   1231   auto aux_input4 = model->addOperand(&type0);
   1232   auto fw_aux_weights4 = model->addOperand(&type1);
   1233   auto bw_aux_weights4 = model->addOperand(&type1);
   1234   auto activation4 = model->addOperand(&type7);
   1235   auto time_major4 = model->addOperand(&type8);
   1236   auto merge_outputs4 = model->addOperand(&type8);
   1237   auto fw_output4 = model->addOperand(&type6);
   1238   auto bw_output3 = model->addOperand(&type6);
   1239   // Phase 2, operations
   1240   static int32_t activation4_init[] = {1};
   1241   model->setOperandValue(activation4, activation4_init, sizeof(int32_t) * 1);
   1242   static bool8 time_major4_init[] = {false};
   1243   model->setOperandValue(time_major4, time_major4_init, sizeof(bool8) * 1);
   1244   static bool8 merge_outputs4_init[] = {false};
   1245   model->setOperandValue(merge_outputs4, merge_outputs4_init, sizeof(bool8) * 1);
   1246   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input4, fw_weights4, fw_recurrent_weights4, fw_bias4, fw_hidden_state4, bw_weights4, bw_recurrent_weights4, bw_bias4, bw_hidden_state4, aux_input4, fw_aux_weights4, bw_aux_weights4, activation4, time_major4, merge_outputs4}, {fw_output4, bw_output3});
   1247   // Phase 3, inputs and outputs
   1248   model->identifyInputsAndOutputs(
   1249     {input4, fw_weights4, fw_recurrent_weights4, fw_bias4, fw_hidden_state4, bw_weights4, bw_recurrent_weights4, bw_bias4, bw_hidden_state4, aux_input4, fw_aux_weights4, bw_aux_weights4},
   1250     {fw_output4, bw_output3});
   1251   // Phase 4: set relaxed execution
   1252   model->relaxComputationFloat32toFloat16(true);
   1253   assert(model->isValid());
   1254 }
   1255 
   1256 inline bool is_ignored_relaxed_5(int i) {
   1257   static std::set<int> ignore = {};
   1258   return ignore.find(i) != ignore.end();
   1259 }
   1260 
   1261 void CreateModel_float16_5(Model *model) {
   1262   OperandType type15(Type::TENSOR_FLOAT16, {16});
   1263   OperandType type16(Type::TENSOR_FLOAT16, {2, 16});
   1264   OperandType type17(Type::TENSOR_FLOAT16, {2, 16, 16});
   1265   OperandType type18(Type::TENSOR_FLOAT16, {16, 16});
   1266   OperandType type19(Type::TENSOR_FLOAT16, {16, 8});
   1267   OperandType type20(Type::TENSOR_FLOAT16, {2, 16, 8});
   1268   OperandType type7(Type::INT32, {});
   1269   OperandType type8(Type::BOOL, {});
   1270   // Phase 1, operands
   1271   auto input4 = model->addOperand(&type20);
   1272   auto fw_weights4 = model->addOperand(&type19);
   1273   auto fw_recurrent_weights4 = model->addOperand(&type18);
   1274   auto fw_bias4 = model->addOperand(&type15);
   1275   auto fw_hidden_state4 = model->addOperand(&type16);
   1276   auto bw_weights4 = model->addOperand(&type19);
   1277   auto bw_recurrent_weights4 = model->addOperand(&type18);
   1278   auto bw_bias4 = model->addOperand(&type15);
   1279   auto bw_hidden_state4 = model->addOperand(&type16);
   1280   auto aux_input4 = model->addOperand(&type20);
   1281   auto fw_aux_weights4 = model->addOperand(&type19);
   1282   auto bw_aux_weights4 = model->addOperand(&type19);
   1283   auto activation4 = model->addOperand(&type7);
   1284   auto time_major4 = model->addOperand(&type8);
   1285   auto merge_outputs4 = model->addOperand(&type8);
   1286   auto fw_output4 = model->addOperand(&type17);
   1287   auto bw_output3 = model->addOperand(&type17);
   1288   // Phase 2, operations
   1289   static int32_t activation4_init[] = {1};
   1290   model->setOperandValue(activation4, activation4_init, sizeof(int32_t) * 1);
   1291   static bool8 time_major4_init[] = {false};
   1292   model->setOperandValue(time_major4, time_major4_init, sizeof(bool8) * 1);
   1293   static bool8 merge_outputs4_init[] = {false};
   1294   model->setOperandValue(merge_outputs4, merge_outputs4_init, sizeof(bool8) * 1);
   1295   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input4, fw_weights4, fw_recurrent_weights4, fw_bias4, fw_hidden_state4, bw_weights4, bw_recurrent_weights4, bw_bias4, bw_hidden_state4, aux_input4, fw_aux_weights4, bw_aux_weights4, activation4, time_major4, merge_outputs4}, {fw_output4, bw_output3});
   1296   // Phase 3, inputs and outputs
   1297   model->identifyInputsAndOutputs(
   1298     {input4, fw_weights4, fw_recurrent_weights4, fw_bias4, fw_hidden_state4, bw_weights4, bw_recurrent_weights4, bw_bias4, bw_hidden_state4, aux_input4, fw_aux_weights4, bw_aux_weights4},
   1299     {fw_output4, bw_output3});
   1300   assert(model->isValid());
   1301 }
   1302 
   1303 inline bool is_ignored_float16_5(int i) {
   1304   static std::set<int> ignore = {};
   1305   return ignore.find(i) != ignore.end();
   1306 }
   1307 
   1308 void CreateModel_dynamic_output_shape_5(Model *model) {
   1309   OperandType type0(Type::TENSOR_FLOAT32, {2, 16, 8});
   1310   OperandType type1(Type::TENSOR_FLOAT32, {16, 8});
   1311   OperandType type2(Type::TENSOR_FLOAT32, {16, 16});
   1312   OperandType type21(Type::TENSOR_FLOAT32, {0, 0, 0});
   1313   OperandType type3(Type::TENSOR_FLOAT32, {16});
   1314   OperandType type4(Type::TENSOR_FLOAT32, {2, 16});
   1315   OperandType type7(Type::INT32, {});
   1316   OperandType type8(Type::BOOL, {});
   1317   // Phase 1, operands
   1318   auto input4 = model->addOperand(&type0);
   1319   auto fw_weights4 = model->addOperand(&type1);
   1320   auto fw_recurrent_weights4 = model->addOperand(&type2);
   1321   auto fw_bias4 = model->addOperand(&type3);
   1322   auto fw_hidden_state4 = model->addOperand(&type4);
   1323   auto bw_weights4 = model->addOperand(&type1);
   1324   auto bw_recurrent_weights4 = model->addOperand(&type2);
   1325   auto bw_bias4 = model->addOperand(&type3);
   1326   auto bw_hidden_state4 = model->addOperand(&type4);
   1327   auto aux_input4 = model->addOperand(&type0);
   1328   auto fw_aux_weights4 = model->addOperand(&type1);
   1329   auto bw_aux_weights4 = model->addOperand(&type1);
   1330   auto activation4 = model->addOperand(&type7);
   1331   auto time_major4 = model->addOperand(&type8);
   1332   auto merge_outputs4 = model->addOperand(&type8);
   1333   auto fw_output4 = model->addOperand(&type21);
   1334   auto bw_output3 = model->addOperand(&type21);
   1335   // Phase 2, operations
   1336   static int32_t activation4_init[] = {1};
   1337   model->setOperandValue(activation4, activation4_init, sizeof(int32_t) * 1);
   1338   static bool8 time_major4_init[] = {false};
   1339   model->setOperandValue(time_major4, time_major4_init, sizeof(bool8) * 1);
   1340   static bool8 merge_outputs4_init[] = {false};
   1341   model->setOperandValue(merge_outputs4, merge_outputs4_init, sizeof(bool8) * 1);
   1342   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input4, fw_weights4, fw_recurrent_weights4, fw_bias4, fw_hidden_state4, bw_weights4, bw_recurrent_weights4, bw_bias4, bw_hidden_state4, aux_input4, fw_aux_weights4, bw_aux_weights4, activation4, time_major4, merge_outputs4}, {fw_output4, bw_output3});
   1343   // Phase 3, inputs and outputs
   1344   model->identifyInputsAndOutputs(
   1345     {input4, fw_weights4, fw_recurrent_weights4, fw_bias4, fw_hidden_state4, bw_weights4, bw_recurrent_weights4, bw_bias4, bw_hidden_state4, aux_input4, fw_aux_weights4, bw_aux_weights4},
   1346     {fw_output4, bw_output3});
   1347   assert(model->isValid());
   1348 }
   1349 
   1350 inline bool is_ignored_dynamic_output_shape_5(int i) {
   1351   static std::set<int> ignore = {};
   1352   return ignore.find(i) != ignore.end();
   1353 }
   1354 
   1355 void CreateModel_dynamic_output_shape_relaxed_5(Model *model) {
   1356   OperandType type0(Type::TENSOR_FLOAT32, {2, 16, 8});
   1357   OperandType type1(Type::TENSOR_FLOAT32, {16, 8});
   1358   OperandType type2(Type::TENSOR_FLOAT32, {16, 16});
   1359   OperandType type21(Type::TENSOR_FLOAT32, {0, 0, 0});
   1360   OperandType type3(Type::TENSOR_FLOAT32, {16});
   1361   OperandType type4(Type::TENSOR_FLOAT32, {2, 16});
   1362   OperandType type7(Type::INT32, {});
   1363   OperandType type8(Type::BOOL, {});
   1364   // Phase 1, operands
   1365   auto input4 = model->addOperand(&type0);
   1366   auto fw_weights4 = model->addOperand(&type1);
   1367   auto fw_recurrent_weights4 = model->addOperand(&type2);
   1368   auto fw_bias4 = model->addOperand(&type3);
   1369   auto fw_hidden_state4 = model->addOperand(&type4);
   1370   auto bw_weights4 = model->addOperand(&type1);
   1371   auto bw_recurrent_weights4 = model->addOperand(&type2);
   1372   auto bw_bias4 = model->addOperand(&type3);
   1373   auto bw_hidden_state4 = model->addOperand(&type4);
   1374   auto aux_input4 = model->addOperand(&type0);
   1375   auto fw_aux_weights4 = model->addOperand(&type1);
   1376   auto bw_aux_weights4 = model->addOperand(&type1);
   1377   auto activation4 = model->addOperand(&type7);
   1378   auto time_major4 = model->addOperand(&type8);
   1379   auto merge_outputs4 = model->addOperand(&type8);
   1380   auto fw_output4 = model->addOperand(&type21);
   1381   auto bw_output3 = model->addOperand(&type21);
   1382   // Phase 2, operations
   1383   static int32_t activation4_init[] = {1};
   1384   model->setOperandValue(activation4, activation4_init, sizeof(int32_t) * 1);
   1385   static bool8 time_major4_init[] = {false};
   1386   model->setOperandValue(time_major4, time_major4_init, sizeof(bool8) * 1);
   1387   static bool8 merge_outputs4_init[] = {false};
   1388   model->setOperandValue(merge_outputs4, merge_outputs4_init, sizeof(bool8) * 1);
   1389   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input4, fw_weights4, fw_recurrent_weights4, fw_bias4, fw_hidden_state4, bw_weights4, bw_recurrent_weights4, bw_bias4, bw_hidden_state4, aux_input4, fw_aux_weights4, bw_aux_weights4, activation4, time_major4, merge_outputs4}, {fw_output4, bw_output3});
   1390   // Phase 3, inputs and outputs
   1391   model->identifyInputsAndOutputs(
   1392     {input4, fw_weights4, fw_recurrent_weights4, fw_bias4, fw_hidden_state4, bw_weights4, bw_recurrent_weights4, bw_bias4, bw_hidden_state4, aux_input4, fw_aux_weights4, bw_aux_weights4},
   1393     {fw_output4, bw_output3});
   1394   // Phase 4: set relaxed execution
   1395   model->relaxComputationFloat32toFloat16(true);
   1396   assert(model->isValid());
   1397 }
   1398 
   1399 inline bool is_ignored_dynamic_output_shape_relaxed_5(int i) {
   1400   static std::set<int> ignore = {};
   1401   return ignore.find(i) != ignore.end();
   1402 }
   1403 
   1404 void CreateModel_dynamic_output_shape_float16_5(Model *model) {
   1405   OperandType type15(Type::TENSOR_FLOAT16, {16});
   1406   OperandType type16(Type::TENSOR_FLOAT16, {2, 16});
   1407   OperandType type18(Type::TENSOR_FLOAT16, {16, 16});
   1408   OperandType type19(Type::TENSOR_FLOAT16, {16, 8});
   1409   OperandType type20(Type::TENSOR_FLOAT16, {2, 16, 8});
   1410   OperandType type22(Type::TENSOR_FLOAT16, {0, 0, 0});
   1411   OperandType type7(Type::INT32, {});
   1412   OperandType type8(Type::BOOL, {});
   1413   // Phase 1, operands
   1414   auto input4 = model->addOperand(&type20);
   1415   auto fw_weights4 = model->addOperand(&type19);
   1416   auto fw_recurrent_weights4 = model->addOperand(&type18);
   1417   auto fw_bias4 = model->addOperand(&type15);
   1418   auto fw_hidden_state4 = model->addOperand(&type16);
   1419   auto bw_weights4 = model->addOperand(&type19);
   1420   auto bw_recurrent_weights4 = model->addOperand(&type18);
   1421   auto bw_bias4 = model->addOperand(&type15);
   1422   auto bw_hidden_state4 = model->addOperand(&type16);
   1423   auto aux_input4 = model->addOperand(&type20);
   1424   auto fw_aux_weights4 = model->addOperand(&type19);
   1425   auto bw_aux_weights4 = model->addOperand(&type19);
   1426   auto activation4 = model->addOperand(&type7);
   1427   auto time_major4 = model->addOperand(&type8);
   1428   auto merge_outputs4 = model->addOperand(&type8);
   1429   auto fw_output4 = model->addOperand(&type22);
   1430   auto bw_output3 = model->addOperand(&type22);
   1431   // Phase 2, operations
   1432   static int32_t activation4_init[] = {1};
   1433   model->setOperandValue(activation4, activation4_init, sizeof(int32_t) * 1);
   1434   static bool8 time_major4_init[] = {false};
   1435   model->setOperandValue(time_major4, time_major4_init, sizeof(bool8) * 1);
   1436   static bool8 merge_outputs4_init[] = {false};
   1437   model->setOperandValue(merge_outputs4, merge_outputs4_init, sizeof(bool8) * 1);
   1438   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input4, fw_weights4, fw_recurrent_weights4, fw_bias4, fw_hidden_state4, bw_weights4, bw_recurrent_weights4, bw_bias4, bw_hidden_state4, aux_input4, fw_aux_weights4, bw_aux_weights4, activation4, time_major4, merge_outputs4}, {fw_output4, bw_output3});
   1439   // Phase 3, inputs and outputs
   1440   model->identifyInputsAndOutputs(
   1441     {input4, fw_weights4, fw_recurrent_weights4, fw_bias4, fw_hidden_state4, bw_weights4, bw_recurrent_weights4, bw_bias4, bw_hidden_state4, aux_input4, fw_aux_weights4, bw_aux_weights4},
   1442     {fw_output4, bw_output3});
   1443   assert(model->isValid());
   1444 }
   1445 
   1446 inline bool is_ignored_dynamic_output_shape_float16_5(int i) {
   1447   static std::set<int> ignore = {};
   1448   return ignore.find(i) != ignore.end();
   1449 }
   1450 
   1451 void CreateModel_6(Model *model) {
   1452   OperandType type12(Type::TENSOR_FLOAT32, {2, 16, 4});
   1453   OperandType type13(Type::TENSOR_FLOAT32, {16, 4});
   1454   OperandType type2(Type::TENSOR_FLOAT32, {16, 16});
   1455   OperandType type3(Type::TENSOR_FLOAT32, {16});
   1456   OperandType type4(Type::TENSOR_FLOAT32, {2, 16});
   1457   OperandType type6(Type::TENSOR_FLOAT32, {2, 16, 16});
   1458   OperandType type7(Type::INT32, {});
   1459   OperandType type8(Type::BOOL, {});
   1460   // Phase 1, operands
   1461   auto input5 = model->addOperand(&type12);
   1462   auto fw_weights5 = model->addOperand(&type13);
   1463   auto fw_recurrent_weights5 = model->addOperand(&type2);
   1464   auto fw_bias5 = model->addOperand(&type3);
   1465   auto fw_hidden_state5 = model->addOperand(&type4);
   1466   auto bw_weights5 = model->addOperand(&type13);
   1467   auto bw_recurrent_weights5 = model->addOperand(&type2);
   1468   auto bw_bias5 = model->addOperand(&type3);
   1469   auto bw_hidden_state5 = model->addOperand(&type4);
   1470   auto aux_input5 = model->addOperand(&type12);
   1471   auto fw_aux_weights5 = model->addOperand(&type13);
   1472   auto bw_aux_weights5 = model->addOperand(&type13);
   1473   auto activation5 = model->addOperand(&type7);
   1474   auto time_major5 = model->addOperand(&type8);
   1475   auto merge_outputs5 = model->addOperand(&type8);
   1476   auto fw_output5 = model->addOperand(&type6);
   1477   auto bw_output4 = model->addOperand(&type6);
   1478   // Phase 2, operations
   1479   static int32_t activation5_init[] = {1};
   1480   model->setOperandValue(activation5, activation5_init, sizeof(int32_t) * 1);
   1481   static bool8 time_major5_init[] = {false};
   1482   model->setOperandValue(time_major5, time_major5_init, sizeof(bool8) * 1);
   1483   static bool8 merge_outputs5_init[] = {false};
   1484   model->setOperandValue(merge_outputs5, merge_outputs5_init, sizeof(bool8) * 1);
   1485   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input5, fw_weights5, fw_recurrent_weights5, fw_bias5, fw_hidden_state5, bw_weights5, bw_recurrent_weights5, bw_bias5, bw_hidden_state5, aux_input5, fw_aux_weights5, bw_aux_weights5, activation5, time_major5, merge_outputs5}, {fw_output5, bw_output4});
   1486   // Phase 3, inputs and outputs
   1487   model->identifyInputsAndOutputs(
   1488     {input5, fw_weights5, fw_recurrent_weights5, fw_bias5, fw_hidden_state5, bw_weights5, bw_recurrent_weights5, bw_bias5, bw_hidden_state5, aux_input5, fw_aux_weights5, bw_aux_weights5},
   1489     {fw_output5, bw_output4});
   1490   assert(model->isValid());
   1491 }
   1492 
   1493 inline bool is_ignored_6(int i) {
   1494   static std::set<int> ignore = {};
   1495   return ignore.find(i) != ignore.end();
   1496 }
   1497 
   1498 void CreateModel_relaxed_6(Model *model) {
   1499   OperandType type12(Type::TENSOR_FLOAT32, {2, 16, 4});
   1500   OperandType type13(Type::TENSOR_FLOAT32, {16, 4});
   1501   OperandType type2(Type::TENSOR_FLOAT32, {16, 16});
   1502   OperandType type3(Type::TENSOR_FLOAT32, {16});
   1503   OperandType type4(Type::TENSOR_FLOAT32, {2, 16});
   1504   OperandType type6(Type::TENSOR_FLOAT32, {2, 16, 16});
   1505   OperandType type7(Type::INT32, {});
   1506   OperandType type8(Type::BOOL, {});
   1507   // Phase 1, operands
   1508   auto input5 = model->addOperand(&type12);
   1509   auto fw_weights5 = model->addOperand(&type13);
   1510   auto fw_recurrent_weights5 = model->addOperand(&type2);
   1511   auto fw_bias5 = model->addOperand(&type3);
   1512   auto fw_hidden_state5 = model->addOperand(&type4);
   1513   auto bw_weights5 = model->addOperand(&type13);
   1514   auto bw_recurrent_weights5 = model->addOperand(&type2);
   1515   auto bw_bias5 = model->addOperand(&type3);
   1516   auto bw_hidden_state5 = model->addOperand(&type4);
   1517   auto aux_input5 = model->addOperand(&type12);
   1518   auto fw_aux_weights5 = model->addOperand(&type13);
   1519   auto bw_aux_weights5 = model->addOperand(&type13);
   1520   auto activation5 = model->addOperand(&type7);
   1521   auto time_major5 = model->addOperand(&type8);
   1522   auto merge_outputs5 = model->addOperand(&type8);
   1523   auto fw_output5 = model->addOperand(&type6);
   1524   auto bw_output4 = model->addOperand(&type6);
   1525   // Phase 2, operations
   1526   static int32_t activation5_init[] = {1};
   1527   model->setOperandValue(activation5, activation5_init, sizeof(int32_t) * 1);
   1528   static bool8 time_major5_init[] = {false};
   1529   model->setOperandValue(time_major5, time_major5_init, sizeof(bool8) * 1);
   1530   static bool8 merge_outputs5_init[] = {false};
   1531   model->setOperandValue(merge_outputs5, merge_outputs5_init, sizeof(bool8) * 1);
   1532   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input5, fw_weights5, fw_recurrent_weights5, fw_bias5, fw_hidden_state5, bw_weights5, bw_recurrent_weights5, bw_bias5, bw_hidden_state5, aux_input5, fw_aux_weights5, bw_aux_weights5, activation5, time_major5, merge_outputs5}, {fw_output5, bw_output4});
   1533   // Phase 3, inputs and outputs
   1534   model->identifyInputsAndOutputs(
   1535     {input5, fw_weights5, fw_recurrent_weights5, fw_bias5, fw_hidden_state5, bw_weights5, bw_recurrent_weights5, bw_bias5, bw_hidden_state5, aux_input5, fw_aux_weights5, bw_aux_weights5},
   1536     {fw_output5, bw_output4});
   1537   // Phase 4: set relaxed execution
   1538   model->relaxComputationFloat32toFloat16(true);
   1539   assert(model->isValid());
   1540 }
   1541 
   1542 inline bool is_ignored_relaxed_6(int i) {
   1543   static std::set<int> ignore = {};
   1544   return ignore.find(i) != ignore.end();
   1545 }
   1546 
   1547 void CreateModel_float16_6(Model *model) {
   1548   OperandType type15(Type::TENSOR_FLOAT16, {16});
   1549   OperandType type16(Type::TENSOR_FLOAT16, {2, 16});
   1550   OperandType type17(Type::TENSOR_FLOAT16, {2, 16, 16});
   1551   OperandType type18(Type::TENSOR_FLOAT16, {16, 16});
   1552   OperandType type26(Type::TENSOR_FLOAT16, {2, 16, 4});
   1553   OperandType type27(Type::TENSOR_FLOAT16, {16, 4});
   1554   OperandType type7(Type::INT32, {});
   1555   OperandType type8(Type::BOOL, {});
   1556   // Phase 1, operands
   1557   auto input5 = model->addOperand(&type26);
   1558   auto fw_weights5 = model->addOperand(&type27);
   1559   auto fw_recurrent_weights5 = model->addOperand(&type18);
   1560   auto fw_bias5 = model->addOperand(&type15);
   1561   auto fw_hidden_state5 = model->addOperand(&type16);
   1562   auto bw_weights5 = model->addOperand(&type27);
   1563   auto bw_recurrent_weights5 = model->addOperand(&type18);
   1564   auto bw_bias5 = model->addOperand(&type15);
   1565   auto bw_hidden_state5 = model->addOperand(&type16);
   1566   auto aux_input5 = model->addOperand(&type26);
   1567   auto fw_aux_weights5 = model->addOperand(&type27);
   1568   auto bw_aux_weights5 = model->addOperand(&type27);
   1569   auto activation5 = model->addOperand(&type7);
   1570   auto time_major5 = model->addOperand(&type8);
   1571   auto merge_outputs5 = model->addOperand(&type8);
   1572   auto fw_output5 = model->addOperand(&type17);
   1573   auto bw_output4 = model->addOperand(&type17);
   1574   // Phase 2, operations
   1575   static int32_t activation5_init[] = {1};
   1576   model->setOperandValue(activation5, activation5_init, sizeof(int32_t) * 1);
   1577   static bool8 time_major5_init[] = {false};
   1578   model->setOperandValue(time_major5, time_major5_init, sizeof(bool8) * 1);
   1579   static bool8 merge_outputs5_init[] = {false};
   1580   model->setOperandValue(merge_outputs5, merge_outputs5_init, sizeof(bool8) * 1);
   1581   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input5, fw_weights5, fw_recurrent_weights5, fw_bias5, fw_hidden_state5, bw_weights5, bw_recurrent_weights5, bw_bias5, bw_hidden_state5, aux_input5, fw_aux_weights5, bw_aux_weights5, activation5, time_major5, merge_outputs5}, {fw_output5, bw_output4});
   1582   // Phase 3, inputs and outputs
   1583   model->identifyInputsAndOutputs(
   1584     {input5, fw_weights5, fw_recurrent_weights5, fw_bias5, fw_hidden_state5, bw_weights5, bw_recurrent_weights5, bw_bias5, bw_hidden_state5, aux_input5, fw_aux_weights5, bw_aux_weights5},
   1585     {fw_output5, bw_output4});
   1586   assert(model->isValid());
   1587 }
   1588 
   1589 inline bool is_ignored_float16_6(int i) {
   1590   static std::set<int> ignore = {};
   1591   return ignore.find(i) != ignore.end();
   1592 }
   1593 
   1594 void CreateModel_dynamic_output_shape_6(Model *model) {
   1595   OperandType type12(Type::TENSOR_FLOAT32, {2, 16, 4});
   1596   OperandType type13(Type::TENSOR_FLOAT32, {16, 4});
   1597   OperandType type2(Type::TENSOR_FLOAT32, {16, 16});
   1598   OperandType type21(Type::TENSOR_FLOAT32, {0, 0, 0});
   1599   OperandType type3(Type::TENSOR_FLOAT32, {16});
   1600   OperandType type4(Type::TENSOR_FLOAT32, {2, 16});
   1601   OperandType type7(Type::INT32, {});
   1602   OperandType type8(Type::BOOL, {});
   1603   // Phase 1, operands
   1604   auto input5 = model->addOperand(&type12);
   1605   auto fw_weights5 = model->addOperand(&type13);
   1606   auto fw_recurrent_weights5 = model->addOperand(&type2);
   1607   auto fw_bias5 = model->addOperand(&type3);
   1608   auto fw_hidden_state5 = model->addOperand(&type4);
   1609   auto bw_weights5 = model->addOperand(&type13);
   1610   auto bw_recurrent_weights5 = model->addOperand(&type2);
   1611   auto bw_bias5 = model->addOperand(&type3);
   1612   auto bw_hidden_state5 = model->addOperand(&type4);
   1613   auto aux_input5 = model->addOperand(&type12);
   1614   auto fw_aux_weights5 = model->addOperand(&type13);
   1615   auto bw_aux_weights5 = model->addOperand(&type13);
   1616   auto activation5 = model->addOperand(&type7);
   1617   auto time_major5 = model->addOperand(&type8);
   1618   auto merge_outputs5 = model->addOperand(&type8);
   1619   auto fw_output5 = model->addOperand(&type21);
   1620   auto bw_output4 = model->addOperand(&type21);
   1621   // Phase 2, operations
   1622   static int32_t activation5_init[] = {1};
   1623   model->setOperandValue(activation5, activation5_init, sizeof(int32_t) * 1);
   1624   static bool8 time_major5_init[] = {false};
   1625   model->setOperandValue(time_major5, time_major5_init, sizeof(bool8) * 1);
   1626   static bool8 merge_outputs5_init[] = {false};
   1627   model->setOperandValue(merge_outputs5, merge_outputs5_init, sizeof(bool8) * 1);
   1628   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input5, fw_weights5, fw_recurrent_weights5, fw_bias5, fw_hidden_state5, bw_weights5, bw_recurrent_weights5, bw_bias5, bw_hidden_state5, aux_input5, fw_aux_weights5, bw_aux_weights5, activation5, time_major5, merge_outputs5}, {fw_output5, bw_output4});
   1629   // Phase 3, inputs and outputs
   1630   model->identifyInputsAndOutputs(
   1631     {input5, fw_weights5, fw_recurrent_weights5, fw_bias5, fw_hidden_state5, bw_weights5, bw_recurrent_weights5, bw_bias5, bw_hidden_state5, aux_input5, fw_aux_weights5, bw_aux_weights5},
   1632     {fw_output5, bw_output4});
   1633   assert(model->isValid());
   1634 }
   1635 
   1636 inline bool is_ignored_dynamic_output_shape_6(int i) {
   1637   static std::set<int> ignore = {};
   1638   return ignore.find(i) != ignore.end();
   1639 }
   1640 
   1641 void CreateModel_dynamic_output_shape_relaxed_6(Model *model) {
   1642   OperandType type12(Type::TENSOR_FLOAT32, {2, 16, 4});
   1643   OperandType type13(Type::TENSOR_FLOAT32, {16, 4});
   1644   OperandType type2(Type::TENSOR_FLOAT32, {16, 16});
   1645   OperandType type21(Type::TENSOR_FLOAT32, {0, 0, 0});
   1646   OperandType type3(Type::TENSOR_FLOAT32, {16});
   1647   OperandType type4(Type::TENSOR_FLOAT32, {2, 16});
   1648   OperandType type7(Type::INT32, {});
   1649   OperandType type8(Type::BOOL, {});
   1650   // Phase 1, operands
   1651   auto input5 = model->addOperand(&type12);
   1652   auto fw_weights5 = model->addOperand(&type13);
   1653   auto fw_recurrent_weights5 = model->addOperand(&type2);
   1654   auto fw_bias5 = model->addOperand(&type3);
   1655   auto fw_hidden_state5 = model->addOperand(&type4);
   1656   auto bw_weights5 = model->addOperand(&type13);
   1657   auto bw_recurrent_weights5 = model->addOperand(&type2);
   1658   auto bw_bias5 = model->addOperand(&type3);
   1659   auto bw_hidden_state5 = model->addOperand(&type4);
   1660   auto aux_input5 = model->addOperand(&type12);
   1661   auto fw_aux_weights5 = model->addOperand(&type13);
   1662   auto bw_aux_weights5 = model->addOperand(&type13);
   1663   auto activation5 = model->addOperand(&type7);
   1664   auto time_major5 = model->addOperand(&type8);
   1665   auto merge_outputs5 = model->addOperand(&type8);
   1666   auto fw_output5 = model->addOperand(&type21);
   1667   auto bw_output4 = model->addOperand(&type21);
   1668   // Phase 2, operations
   1669   static int32_t activation5_init[] = {1};
   1670   model->setOperandValue(activation5, activation5_init, sizeof(int32_t) * 1);
   1671   static bool8 time_major5_init[] = {false};
   1672   model->setOperandValue(time_major5, time_major5_init, sizeof(bool8) * 1);
   1673   static bool8 merge_outputs5_init[] = {false};
   1674   model->setOperandValue(merge_outputs5, merge_outputs5_init, sizeof(bool8) * 1);
   1675   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input5, fw_weights5, fw_recurrent_weights5, fw_bias5, fw_hidden_state5, bw_weights5, bw_recurrent_weights5, bw_bias5, bw_hidden_state5, aux_input5, fw_aux_weights5, bw_aux_weights5, activation5, time_major5, merge_outputs5}, {fw_output5, bw_output4});
   1676   // Phase 3, inputs and outputs
   1677   model->identifyInputsAndOutputs(
   1678     {input5, fw_weights5, fw_recurrent_weights5, fw_bias5, fw_hidden_state5, bw_weights5, bw_recurrent_weights5, bw_bias5, bw_hidden_state5, aux_input5, fw_aux_weights5, bw_aux_weights5},
   1679     {fw_output5, bw_output4});
   1680   // Phase 4: set relaxed execution
   1681   model->relaxComputationFloat32toFloat16(true);
   1682   assert(model->isValid());
   1683 }
   1684 
   1685 inline bool is_ignored_dynamic_output_shape_relaxed_6(int i) {
   1686   static std::set<int> ignore = {};
   1687   return ignore.find(i) != ignore.end();
   1688 }
   1689 
   1690 void CreateModel_dynamic_output_shape_float16_6(Model *model) {
   1691   OperandType type15(Type::TENSOR_FLOAT16, {16});
   1692   OperandType type16(Type::TENSOR_FLOAT16, {2, 16});
   1693   OperandType type18(Type::TENSOR_FLOAT16, {16, 16});
   1694   OperandType type22(Type::TENSOR_FLOAT16, {0, 0, 0});
   1695   OperandType type26(Type::TENSOR_FLOAT16, {2, 16, 4});
   1696   OperandType type27(Type::TENSOR_FLOAT16, {16, 4});
   1697   OperandType type7(Type::INT32, {});
   1698   OperandType type8(Type::BOOL, {});
   1699   // Phase 1, operands
   1700   auto input5 = model->addOperand(&type26);
   1701   auto fw_weights5 = model->addOperand(&type27);
   1702   auto fw_recurrent_weights5 = model->addOperand(&type18);
   1703   auto fw_bias5 = model->addOperand(&type15);
   1704   auto fw_hidden_state5 = model->addOperand(&type16);
   1705   auto bw_weights5 = model->addOperand(&type27);
   1706   auto bw_recurrent_weights5 = model->addOperand(&type18);
   1707   auto bw_bias5 = model->addOperand(&type15);
   1708   auto bw_hidden_state5 = model->addOperand(&type16);
   1709   auto aux_input5 = model->addOperand(&type26);
   1710   auto fw_aux_weights5 = model->addOperand(&type27);
   1711   auto bw_aux_weights5 = model->addOperand(&type27);
   1712   auto activation5 = model->addOperand(&type7);
   1713   auto time_major5 = model->addOperand(&type8);
   1714   auto merge_outputs5 = model->addOperand(&type8);
   1715   auto fw_output5 = model->addOperand(&type22);
   1716   auto bw_output4 = model->addOperand(&type22);
   1717   // Phase 2, operations
   1718   static int32_t activation5_init[] = {1};
   1719   model->setOperandValue(activation5, activation5_init, sizeof(int32_t) * 1);
   1720   static bool8 time_major5_init[] = {false};
   1721   model->setOperandValue(time_major5, time_major5_init, sizeof(bool8) * 1);
   1722   static bool8 merge_outputs5_init[] = {false};
   1723   model->setOperandValue(merge_outputs5, merge_outputs5_init, sizeof(bool8) * 1);
   1724   model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_RNN, {input5, fw_weights5, fw_recurrent_weights5, fw_bias5, fw_hidden_state5, bw_weights5, bw_recurrent_weights5, bw_bias5, bw_hidden_state5, aux_input5, fw_aux_weights5, bw_aux_weights5, activation5, time_major5, merge_outputs5}, {fw_output5, bw_output4});
   1725   // Phase 3, inputs and outputs
   1726   model->identifyInputsAndOutputs(
   1727     {input5, fw_weights5, fw_recurrent_weights5, fw_bias5, fw_hidden_state5, bw_weights5, bw_recurrent_weights5, bw_bias5, bw_hidden_state5, aux_input5, fw_aux_weights5, bw_aux_weights5},
   1728     {fw_output5, bw_output4});
   1729   assert(model->isValid());
   1730 }
   1731 
   1732 inline bool is_ignored_dynamic_output_shape_float16_6(int i) {
   1733   static std::set<int> ignore = {};
   1734   return ignore.find(i) != ignore.end();
   1735 }
   1736 
   1737