1 // clang-format off 2 // Generated file (from: reduce_sum.mod.py). Do not edit 3 void CreateModel(Model *model) { 4 OperandType type0(Type::TENSOR_FLOAT32, {3, 2}); 5 OperandType type1(Type::TENSOR_FLOAT32, {3}); 6 OperandType type2(Type::TENSOR_INT32, {1}); 7 OperandType type3(Type::BOOL, {}); 8 // Phase 1, operands 9 auto input0 = model->addOperand(&type0); 10 auto param = model->addOperand(&type2); 11 auto param1 = model->addOperand(&type3); 12 auto output0 = model->addOperand(&type1); 13 // Phase 2, operations 14 static int32_t param_init[] = {-1}; 15 model->setOperandValue(param, param_init, sizeof(int32_t) * 1); 16 static bool8 param1_init[] = {false}; 17 model->setOperandValue(param1, param1_init, sizeof(bool8) * 1); 18 model->addOperation(ANEURALNETWORKS_REDUCE_SUM, {input0, param, param1}, {output0}); 19 // Phase 3, inputs and outputs 20 model->identifyInputsAndOutputs( 21 {input0}, 22 {output0}); 23 assert(model->isValid()); 24 } 25 26 inline bool is_ignored(int i) { 27 static std::set<int> ignore = {}; 28 return ignore.find(i) != ignore.end(); 29 } 30 31 void CreateModel_relaxed(Model *model) { 32 OperandType type0(Type::TENSOR_FLOAT32, {3, 2}); 33 OperandType type1(Type::TENSOR_FLOAT32, {3}); 34 OperandType type2(Type::TENSOR_INT32, {1}); 35 OperandType type3(Type::BOOL, {}); 36 // Phase 1, operands 37 auto input0 = model->addOperand(&type0); 38 auto param = model->addOperand(&type2); 39 auto param1 = model->addOperand(&type3); 40 auto output0 = model->addOperand(&type1); 41 // Phase 2, operations 42 static int32_t param_init[] = {-1}; 43 model->setOperandValue(param, param_init, sizeof(int32_t) * 1); 44 static bool8 param1_init[] = {false}; 45 model->setOperandValue(param1, param1_init, sizeof(bool8) * 1); 46 model->addOperation(ANEURALNETWORKS_REDUCE_SUM, {input0, param, param1}, {output0}); 47 // Phase 3, inputs and outputs 48 model->identifyInputsAndOutputs( 49 {input0}, 50 {output0}); 51 // Phase 4: set relaxed execution 52 model->relaxComputationFloat32toFloat16(true); 53 assert(model->isValid()); 54 } 55 56 inline bool is_ignored_relaxed(int i) { 57 static std::set<int> ignore = {}; 58 return ignore.find(i) != ignore.end(); 59 } 60 61 void CreateModel_float16(Model *model) { 62 OperandType type10(Type::TENSOR_FLOAT16, {3, 2}); 63 OperandType type11(Type::TENSOR_FLOAT16, {3}); 64 OperandType type2(Type::TENSOR_INT32, {1}); 65 OperandType type3(Type::BOOL, {}); 66 // Phase 1, operands 67 auto input0 = model->addOperand(&type10); 68 auto param = model->addOperand(&type2); 69 auto param1 = model->addOperand(&type3); 70 auto output0 = model->addOperand(&type11); 71 // Phase 2, operations 72 static int32_t param_init[] = {-1}; 73 model->setOperandValue(param, param_init, sizeof(int32_t) * 1); 74 static bool8 param1_init[] = {false}; 75 model->setOperandValue(param1, param1_init, sizeof(bool8) * 1); 76 model->addOperation(ANEURALNETWORKS_REDUCE_SUM, {input0, param, param1}, {output0}); 77 // Phase 3, inputs and outputs 78 model->identifyInputsAndOutputs( 79 {input0}, 80 {output0}); 81 assert(model->isValid()); 82 } 83 84 inline bool is_ignored_float16(int i) { 85 static std::set<int> ignore = {}; 86 return ignore.find(i) != ignore.end(); 87 } 88 89 void CreateModel_dynamic_output_shape(Model *model) { 90 OperandType type0(Type::TENSOR_FLOAT32, {3, 2}); 91 OperandType type12(Type::TENSOR_FLOAT32, {0}); 92 OperandType type2(Type::TENSOR_INT32, {1}); 93 OperandType type3(Type::BOOL, {}); 94 // Phase 1, operands 95 auto input0 = model->addOperand(&type0); 96 auto param = model->addOperand(&type2); 97 auto param1 = model->addOperand(&type3); 98 auto output0 = model->addOperand(&type12); 99 // Phase 2, operations 100 static int32_t param_init[] = {-1}; 101 model->setOperandValue(param, param_init, sizeof(int32_t) * 1); 102 static bool8 param1_init[] = {false}; 103 model->setOperandValue(param1, param1_init, sizeof(bool8) * 1); 104 model->addOperation(ANEURALNETWORKS_REDUCE_SUM, {input0, param, param1}, {output0}); 105 // Phase 3, inputs and outputs 106 model->identifyInputsAndOutputs( 107 {input0}, 108 {output0}); 109 assert(model->isValid()); 110 } 111 112 inline bool is_ignored_dynamic_output_shape(int i) { 113 static std::set<int> ignore = {}; 114 return ignore.find(i) != ignore.end(); 115 } 116 117 void CreateModel_dynamic_output_shape_relaxed(Model *model) { 118 OperandType type0(Type::TENSOR_FLOAT32, {3, 2}); 119 OperandType type12(Type::TENSOR_FLOAT32, {0}); 120 OperandType type2(Type::TENSOR_INT32, {1}); 121 OperandType type3(Type::BOOL, {}); 122 // Phase 1, operands 123 auto input0 = model->addOperand(&type0); 124 auto param = model->addOperand(&type2); 125 auto param1 = model->addOperand(&type3); 126 auto output0 = model->addOperand(&type12); 127 // Phase 2, operations 128 static int32_t param_init[] = {-1}; 129 model->setOperandValue(param, param_init, sizeof(int32_t) * 1); 130 static bool8 param1_init[] = {false}; 131 model->setOperandValue(param1, param1_init, sizeof(bool8) * 1); 132 model->addOperation(ANEURALNETWORKS_REDUCE_SUM, {input0, param, param1}, {output0}); 133 // Phase 3, inputs and outputs 134 model->identifyInputsAndOutputs( 135 {input0}, 136 {output0}); 137 // Phase 4: set relaxed execution 138 model->relaxComputationFloat32toFloat16(true); 139 assert(model->isValid()); 140 } 141 142 inline bool is_ignored_dynamic_output_shape_relaxed(int i) { 143 static std::set<int> ignore = {}; 144 return ignore.find(i) != ignore.end(); 145 } 146 147 void CreateModel_dynamic_output_shape_float16(Model *model) { 148 OperandType type10(Type::TENSOR_FLOAT16, {3, 2}); 149 OperandType type13(Type::TENSOR_FLOAT16, {0}); 150 OperandType type2(Type::TENSOR_INT32, {1}); 151 OperandType type3(Type::BOOL, {}); 152 // Phase 1, operands 153 auto input0 = model->addOperand(&type10); 154 auto param = model->addOperand(&type2); 155 auto param1 = model->addOperand(&type3); 156 auto output0 = model->addOperand(&type13); 157 // Phase 2, operations 158 static int32_t param_init[] = {-1}; 159 model->setOperandValue(param, param_init, sizeof(int32_t) * 1); 160 static bool8 param1_init[] = {false}; 161 model->setOperandValue(param1, param1_init, sizeof(bool8) * 1); 162 model->addOperation(ANEURALNETWORKS_REDUCE_SUM, {input0, param, param1}, {output0}); 163 // Phase 3, inputs and outputs 164 model->identifyInputsAndOutputs( 165 {input0}, 166 {output0}); 167 assert(model->isValid()); 168 } 169 170 inline bool is_ignored_dynamic_output_shape_float16(int i) { 171 static std::set<int> ignore = {}; 172 return ignore.find(i) != ignore.end(); 173 } 174 175 void CreateModel_2(Model *model) { 176 OperandType type2(Type::TENSOR_INT32, {1}); 177 OperandType type3(Type::BOOL, {}); 178 OperandType type4(Type::TENSOR_FLOAT32, {1}); 179 // Phase 1, operands 180 auto input01 = model->addOperand(&type4); 181 auto param2 = model->addOperand(&type2); 182 auto param3 = model->addOperand(&type3); 183 auto output01 = model->addOperand(&type4); 184 // Phase 2, operations 185 static int32_t param2_init[] = {0}; 186 model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1); 187 static bool8 param3_init[] = {true}; 188 model->setOperandValue(param3, param3_init, sizeof(bool8) * 1); 189 model->addOperation(ANEURALNETWORKS_REDUCE_SUM, {input01, param2, param3}, {output01}); 190 // Phase 3, inputs and outputs 191 model->identifyInputsAndOutputs( 192 {input01}, 193 {output01}); 194 assert(model->isValid()); 195 } 196 197 inline bool is_ignored_2(int i) { 198 static std::set<int> ignore = {}; 199 return ignore.find(i) != ignore.end(); 200 } 201 202 void CreateModel_relaxed_2(Model *model) { 203 OperandType type2(Type::TENSOR_INT32, {1}); 204 OperandType type3(Type::BOOL, {}); 205 OperandType type4(Type::TENSOR_FLOAT32, {1}); 206 // Phase 1, operands 207 auto input01 = model->addOperand(&type4); 208 auto param2 = model->addOperand(&type2); 209 auto param3 = model->addOperand(&type3); 210 auto output01 = model->addOperand(&type4); 211 // Phase 2, operations 212 static int32_t param2_init[] = {0}; 213 model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1); 214 static bool8 param3_init[] = {true}; 215 model->setOperandValue(param3, param3_init, sizeof(bool8) * 1); 216 model->addOperation(ANEURALNETWORKS_REDUCE_SUM, {input01, param2, param3}, {output01}); 217 // Phase 3, inputs and outputs 218 model->identifyInputsAndOutputs( 219 {input01}, 220 {output01}); 221 // Phase 4: set relaxed execution 222 model->relaxComputationFloat32toFloat16(true); 223 assert(model->isValid()); 224 } 225 226 inline bool is_ignored_relaxed_2(int i) { 227 static std::set<int> ignore = {}; 228 return ignore.find(i) != ignore.end(); 229 } 230 231 void CreateModel_float16_2(Model *model) { 232 OperandType type14(Type::TENSOR_FLOAT16, {1}); 233 OperandType type2(Type::TENSOR_INT32, {1}); 234 OperandType type3(Type::BOOL, {}); 235 // Phase 1, operands 236 auto input01 = model->addOperand(&type14); 237 auto param2 = model->addOperand(&type2); 238 auto param3 = model->addOperand(&type3); 239 auto output01 = model->addOperand(&type14); 240 // Phase 2, operations 241 static int32_t param2_init[] = {0}; 242 model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1); 243 static bool8 param3_init[] = {true}; 244 model->setOperandValue(param3, param3_init, sizeof(bool8) * 1); 245 model->addOperation(ANEURALNETWORKS_REDUCE_SUM, {input01, param2, param3}, {output01}); 246 // Phase 3, inputs and outputs 247 model->identifyInputsAndOutputs( 248 {input01}, 249 {output01}); 250 assert(model->isValid()); 251 } 252 253 inline bool is_ignored_float16_2(int i) { 254 static std::set<int> ignore = {}; 255 return ignore.find(i) != ignore.end(); 256 } 257 258 void CreateModel_dynamic_output_shape_2(Model *model) { 259 OperandType type12(Type::TENSOR_FLOAT32, {0}); 260 OperandType type2(Type::TENSOR_INT32, {1}); 261 OperandType type3(Type::BOOL, {}); 262 OperandType type4(Type::TENSOR_FLOAT32, {1}); 263 // Phase 1, operands 264 auto input01 = model->addOperand(&type4); 265 auto param2 = model->addOperand(&type2); 266 auto param3 = model->addOperand(&type3); 267 auto output01 = model->addOperand(&type12); 268 // Phase 2, operations 269 static int32_t param2_init[] = {0}; 270 model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1); 271 static bool8 param3_init[] = {true}; 272 model->setOperandValue(param3, param3_init, sizeof(bool8) * 1); 273 model->addOperation(ANEURALNETWORKS_REDUCE_SUM, {input01, param2, param3}, {output01}); 274 // Phase 3, inputs and outputs 275 model->identifyInputsAndOutputs( 276 {input01}, 277 {output01}); 278 assert(model->isValid()); 279 } 280 281 inline bool is_ignored_dynamic_output_shape_2(int i) { 282 static std::set<int> ignore = {}; 283 return ignore.find(i) != ignore.end(); 284 } 285 286 void CreateModel_dynamic_output_shape_relaxed_2(Model *model) { 287 OperandType type12(Type::TENSOR_FLOAT32, {0}); 288 OperandType type2(Type::TENSOR_INT32, {1}); 289 OperandType type3(Type::BOOL, {}); 290 OperandType type4(Type::TENSOR_FLOAT32, {1}); 291 // Phase 1, operands 292 auto input01 = model->addOperand(&type4); 293 auto param2 = model->addOperand(&type2); 294 auto param3 = model->addOperand(&type3); 295 auto output01 = model->addOperand(&type12); 296 // Phase 2, operations 297 static int32_t param2_init[] = {0}; 298 model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1); 299 static bool8 param3_init[] = {true}; 300 model->setOperandValue(param3, param3_init, sizeof(bool8) * 1); 301 model->addOperation(ANEURALNETWORKS_REDUCE_SUM, {input01, param2, param3}, {output01}); 302 // Phase 3, inputs and outputs 303 model->identifyInputsAndOutputs( 304 {input01}, 305 {output01}); 306 // Phase 4: set relaxed execution 307 model->relaxComputationFloat32toFloat16(true); 308 assert(model->isValid()); 309 } 310 311 inline bool is_ignored_dynamic_output_shape_relaxed_2(int i) { 312 static std::set<int> ignore = {}; 313 return ignore.find(i) != ignore.end(); 314 } 315 316 void CreateModel_dynamic_output_shape_float16_2(Model *model) { 317 OperandType type13(Type::TENSOR_FLOAT16, {0}); 318 OperandType type14(Type::TENSOR_FLOAT16, {1}); 319 OperandType type2(Type::TENSOR_INT32, {1}); 320 OperandType type3(Type::BOOL, {}); 321 // Phase 1, operands 322 auto input01 = model->addOperand(&type14); 323 auto param2 = model->addOperand(&type2); 324 auto param3 = model->addOperand(&type3); 325 auto output01 = model->addOperand(&type13); 326 // Phase 2, operations 327 static int32_t param2_init[] = {0}; 328 model->setOperandValue(param2, param2_init, sizeof(int32_t) * 1); 329 static bool8 param3_init[] = {true}; 330 model->setOperandValue(param3, param3_init, sizeof(bool8) * 1); 331 model->addOperation(ANEURALNETWORKS_REDUCE_SUM, {input01, param2, param3}, {output01}); 332 // Phase 3, inputs and outputs 333 model->identifyInputsAndOutputs( 334 {input01}, 335 {output01}); 336 assert(model->isValid()); 337 } 338 339 inline bool is_ignored_dynamic_output_shape_float16_2(int i) { 340 static std::set<int> ignore = {}; 341 return ignore.find(i) != ignore.end(); 342 } 343 344 void CreateModel_3(Model *model) { 345 OperandType type3(Type::BOOL, {}); 346 OperandType type5(Type::TENSOR_FLOAT32, {4, 3, 2}); 347 OperandType type6(Type::TENSOR_FLOAT32, {2}); 348 OperandType type7(Type::TENSOR_INT32, {4}); 349 // Phase 1, operands 350 auto input02 = model->addOperand(&type5); 351 auto param4 = model->addOperand(&type7); 352 auto param5 = model->addOperand(&type3); 353 auto output02 = model->addOperand(&type6); 354 // Phase 2, operations 355 static int32_t param4_init[] = {1, 0, -3, -3}; 356 model->setOperandValue(param4, param4_init, sizeof(int32_t) * 4); 357 static bool8 param5_init[] = {false}; 358 model->setOperandValue(param5, param5_init, sizeof(bool8) * 1); 359 model->addOperation(ANEURALNETWORKS_REDUCE_SUM, {input02, param4, param5}, {output02}); 360 // Phase 3, inputs and outputs 361 model->identifyInputsAndOutputs( 362 {input02}, 363 {output02}); 364 assert(model->isValid()); 365 } 366 367 inline bool is_ignored_3(int i) { 368 static std::set<int> ignore = {}; 369 return ignore.find(i) != ignore.end(); 370 } 371 372 void CreateModel_relaxed_3(Model *model) { 373 OperandType type3(Type::BOOL, {}); 374 OperandType type5(Type::TENSOR_FLOAT32, {4, 3, 2}); 375 OperandType type6(Type::TENSOR_FLOAT32, {2}); 376 OperandType type7(Type::TENSOR_INT32, {4}); 377 // Phase 1, operands 378 auto input02 = model->addOperand(&type5); 379 auto param4 = model->addOperand(&type7); 380 auto param5 = model->addOperand(&type3); 381 auto output02 = model->addOperand(&type6); 382 // Phase 2, operations 383 static int32_t param4_init[] = {1, 0, -3, -3}; 384 model->setOperandValue(param4, param4_init, sizeof(int32_t) * 4); 385 static bool8 param5_init[] = {false}; 386 model->setOperandValue(param5, param5_init, sizeof(bool8) * 1); 387 model->addOperation(ANEURALNETWORKS_REDUCE_SUM, {input02, param4, param5}, {output02}); 388 // Phase 3, inputs and outputs 389 model->identifyInputsAndOutputs( 390 {input02}, 391 {output02}); 392 // Phase 4: set relaxed execution 393 model->relaxComputationFloat32toFloat16(true); 394 assert(model->isValid()); 395 } 396 397 inline bool is_ignored_relaxed_3(int i) { 398 static std::set<int> ignore = {}; 399 return ignore.find(i) != ignore.end(); 400 } 401 402 void CreateModel_float16_3(Model *model) { 403 OperandType type15(Type::TENSOR_FLOAT16, {4, 3, 2}); 404 OperandType type16(Type::TENSOR_FLOAT16, {2}); 405 OperandType type3(Type::BOOL, {}); 406 OperandType type7(Type::TENSOR_INT32, {4}); 407 // Phase 1, operands 408 auto input02 = model->addOperand(&type15); 409 auto param4 = model->addOperand(&type7); 410 auto param5 = model->addOperand(&type3); 411 auto output02 = model->addOperand(&type16); 412 // Phase 2, operations 413 static int32_t param4_init[] = {1, 0, -3, -3}; 414 model->setOperandValue(param4, param4_init, sizeof(int32_t) * 4); 415 static bool8 param5_init[] = {false}; 416 model->setOperandValue(param5, param5_init, sizeof(bool8) * 1); 417 model->addOperation(ANEURALNETWORKS_REDUCE_SUM, {input02, param4, param5}, {output02}); 418 // Phase 3, inputs and outputs 419 model->identifyInputsAndOutputs( 420 {input02}, 421 {output02}); 422 assert(model->isValid()); 423 } 424 425 inline bool is_ignored_float16_3(int i) { 426 static std::set<int> ignore = {}; 427 return ignore.find(i) != ignore.end(); 428 } 429 430 void CreateModel_dynamic_output_shape_3(Model *model) { 431 OperandType type12(Type::TENSOR_FLOAT32, {0}); 432 OperandType type3(Type::BOOL, {}); 433 OperandType type5(Type::TENSOR_FLOAT32, {4, 3, 2}); 434 OperandType type7(Type::TENSOR_INT32, {4}); 435 // Phase 1, operands 436 auto input02 = model->addOperand(&type5); 437 auto param4 = model->addOperand(&type7); 438 auto param5 = model->addOperand(&type3); 439 auto output02 = model->addOperand(&type12); 440 // Phase 2, operations 441 static int32_t param4_init[] = {1, 0, -3, -3}; 442 model->setOperandValue(param4, param4_init, sizeof(int32_t) * 4); 443 static bool8 param5_init[] = {false}; 444 model->setOperandValue(param5, param5_init, sizeof(bool8) * 1); 445 model->addOperation(ANEURALNETWORKS_REDUCE_SUM, {input02, param4, param5}, {output02}); 446 // Phase 3, inputs and outputs 447 model->identifyInputsAndOutputs( 448 {input02}, 449 {output02}); 450 assert(model->isValid()); 451 } 452 453 inline bool is_ignored_dynamic_output_shape_3(int i) { 454 static std::set<int> ignore = {}; 455 return ignore.find(i) != ignore.end(); 456 } 457 458 void CreateModel_dynamic_output_shape_relaxed_3(Model *model) { 459 OperandType type12(Type::TENSOR_FLOAT32, {0}); 460 OperandType type3(Type::BOOL, {}); 461 OperandType type5(Type::TENSOR_FLOAT32, {4, 3, 2}); 462 OperandType type7(Type::TENSOR_INT32, {4}); 463 // Phase 1, operands 464 auto input02 = model->addOperand(&type5); 465 auto param4 = model->addOperand(&type7); 466 auto param5 = model->addOperand(&type3); 467 auto output02 = model->addOperand(&type12); 468 // Phase 2, operations 469 static int32_t param4_init[] = {1, 0, -3, -3}; 470 model->setOperandValue(param4, param4_init, sizeof(int32_t) * 4); 471 static bool8 param5_init[] = {false}; 472 model->setOperandValue(param5, param5_init, sizeof(bool8) * 1); 473 model->addOperation(ANEURALNETWORKS_REDUCE_SUM, {input02, param4, param5}, {output02}); 474 // Phase 3, inputs and outputs 475 model->identifyInputsAndOutputs( 476 {input02}, 477 {output02}); 478 // Phase 4: set relaxed execution 479 model->relaxComputationFloat32toFloat16(true); 480 assert(model->isValid()); 481 } 482 483 inline bool is_ignored_dynamic_output_shape_relaxed_3(int i) { 484 static std::set<int> ignore = {}; 485 return ignore.find(i) != ignore.end(); 486 } 487 488 void CreateModel_dynamic_output_shape_float16_3(Model *model) { 489 OperandType type13(Type::TENSOR_FLOAT16, {0}); 490 OperandType type15(Type::TENSOR_FLOAT16, {4, 3, 2}); 491 OperandType type3(Type::BOOL, {}); 492 OperandType type7(Type::TENSOR_INT32, {4}); 493 // Phase 1, operands 494 auto input02 = model->addOperand(&type15); 495 auto param4 = model->addOperand(&type7); 496 auto param5 = model->addOperand(&type3); 497 auto output02 = model->addOperand(&type13); 498 // Phase 2, operations 499 static int32_t param4_init[] = {1, 0, -3, -3}; 500 model->setOperandValue(param4, param4_init, sizeof(int32_t) * 4); 501 static bool8 param5_init[] = {false}; 502 model->setOperandValue(param5, param5_init, sizeof(bool8) * 1); 503 model->addOperation(ANEURALNETWORKS_REDUCE_SUM, {input02, param4, param5}, {output02}); 504 // Phase 3, inputs and outputs 505 model->identifyInputsAndOutputs( 506 {input02}, 507 {output02}); 508 assert(model->isValid()); 509 } 510 511 inline bool is_ignored_dynamic_output_shape_float16_3(int i) { 512 static std::set<int> ignore = {}; 513 return ignore.find(i) != ignore.end(); 514 } 515 516 void CreateModel_4(Model *model) { 517 OperandType type3(Type::BOOL, {}); 518 OperandType type5(Type::TENSOR_FLOAT32, {4, 3, 2}); 519 OperandType type8(Type::TENSOR_FLOAT32, {1, 3, 1}); 520 OperandType type9(Type::TENSOR_INT32, {2}); 521 // Phase 1, operands 522 auto input03 = model->addOperand(&type5); 523 auto param6 = model->addOperand(&type9); 524 auto param7 = model->addOperand(&type3); 525 auto output03 = model->addOperand(&type8); 526 // Phase 2, operations 527 static int32_t param6_init[] = {0, 2}; 528 model->setOperandValue(param6, param6_init, sizeof(int32_t) * 2); 529 static bool8 param7_init[] = {true}; 530 model->setOperandValue(param7, param7_init, sizeof(bool8) * 1); 531 model->addOperation(ANEURALNETWORKS_REDUCE_SUM, {input03, param6, param7}, {output03}); 532 // Phase 3, inputs and outputs 533 model->identifyInputsAndOutputs( 534 {input03}, 535 {output03}); 536 assert(model->isValid()); 537 } 538 539 inline bool is_ignored_4(int i) { 540 static std::set<int> ignore = {}; 541 return ignore.find(i) != ignore.end(); 542 } 543 544 void CreateModel_relaxed_4(Model *model) { 545 OperandType type3(Type::BOOL, {}); 546 OperandType type5(Type::TENSOR_FLOAT32, {4, 3, 2}); 547 OperandType type8(Type::TENSOR_FLOAT32, {1, 3, 1}); 548 OperandType type9(Type::TENSOR_INT32, {2}); 549 // Phase 1, operands 550 auto input03 = model->addOperand(&type5); 551 auto param6 = model->addOperand(&type9); 552 auto param7 = model->addOperand(&type3); 553 auto output03 = model->addOperand(&type8); 554 // Phase 2, operations 555 static int32_t param6_init[] = {0, 2}; 556 model->setOperandValue(param6, param6_init, sizeof(int32_t) * 2); 557 static bool8 param7_init[] = {true}; 558 model->setOperandValue(param7, param7_init, sizeof(bool8) * 1); 559 model->addOperation(ANEURALNETWORKS_REDUCE_SUM, {input03, param6, param7}, {output03}); 560 // Phase 3, inputs and outputs 561 model->identifyInputsAndOutputs( 562 {input03}, 563 {output03}); 564 // Phase 4: set relaxed execution 565 model->relaxComputationFloat32toFloat16(true); 566 assert(model->isValid()); 567 } 568 569 inline bool is_ignored_relaxed_4(int i) { 570 static std::set<int> ignore = {}; 571 return ignore.find(i) != ignore.end(); 572 } 573 574 void CreateModel_float16_4(Model *model) { 575 OperandType type15(Type::TENSOR_FLOAT16, {4, 3, 2}); 576 OperandType type17(Type::TENSOR_FLOAT16, {1, 3, 1}); 577 OperandType type3(Type::BOOL, {}); 578 OperandType type9(Type::TENSOR_INT32, {2}); 579 // Phase 1, operands 580 auto input03 = model->addOperand(&type15); 581 auto param6 = model->addOperand(&type9); 582 auto param7 = model->addOperand(&type3); 583 auto output03 = model->addOperand(&type17); 584 // Phase 2, operations 585 static int32_t param6_init[] = {0, 2}; 586 model->setOperandValue(param6, param6_init, sizeof(int32_t) * 2); 587 static bool8 param7_init[] = {true}; 588 model->setOperandValue(param7, param7_init, sizeof(bool8) * 1); 589 model->addOperation(ANEURALNETWORKS_REDUCE_SUM, {input03, param6, param7}, {output03}); 590 // Phase 3, inputs and outputs 591 model->identifyInputsAndOutputs( 592 {input03}, 593 {output03}); 594 assert(model->isValid()); 595 } 596 597 inline bool is_ignored_float16_4(int i) { 598 static std::set<int> ignore = {}; 599 return ignore.find(i) != ignore.end(); 600 } 601 602 void CreateModel_dynamic_output_shape_4(Model *model) { 603 OperandType type18(Type::TENSOR_FLOAT32, {0, 0, 0}); 604 OperandType type3(Type::BOOL, {}); 605 OperandType type5(Type::TENSOR_FLOAT32, {4, 3, 2}); 606 OperandType type9(Type::TENSOR_INT32, {2}); 607 // Phase 1, operands 608 auto input03 = model->addOperand(&type5); 609 auto param6 = model->addOperand(&type9); 610 auto param7 = model->addOperand(&type3); 611 auto output03 = model->addOperand(&type18); 612 // Phase 2, operations 613 static int32_t param6_init[] = {0, 2}; 614 model->setOperandValue(param6, param6_init, sizeof(int32_t) * 2); 615 static bool8 param7_init[] = {true}; 616 model->setOperandValue(param7, param7_init, sizeof(bool8) * 1); 617 model->addOperation(ANEURALNETWORKS_REDUCE_SUM, {input03, param6, param7}, {output03}); 618 // Phase 3, inputs and outputs 619 model->identifyInputsAndOutputs( 620 {input03}, 621 {output03}); 622 assert(model->isValid()); 623 } 624 625 inline bool is_ignored_dynamic_output_shape_4(int i) { 626 static std::set<int> ignore = {}; 627 return ignore.find(i) != ignore.end(); 628 } 629 630 void CreateModel_dynamic_output_shape_relaxed_4(Model *model) { 631 OperandType type18(Type::TENSOR_FLOAT32, {0, 0, 0}); 632 OperandType type3(Type::BOOL, {}); 633 OperandType type5(Type::TENSOR_FLOAT32, {4, 3, 2}); 634 OperandType type9(Type::TENSOR_INT32, {2}); 635 // Phase 1, operands 636 auto input03 = model->addOperand(&type5); 637 auto param6 = model->addOperand(&type9); 638 auto param7 = model->addOperand(&type3); 639 auto output03 = model->addOperand(&type18); 640 // Phase 2, operations 641 static int32_t param6_init[] = {0, 2}; 642 model->setOperandValue(param6, param6_init, sizeof(int32_t) * 2); 643 static bool8 param7_init[] = {true}; 644 model->setOperandValue(param7, param7_init, sizeof(bool8) * 1); 645 model->addOperation(ANEURALNETWORKS_REDUCE_SUM, {input03, param6, param7}, {output03}); 646 // Phase 3, inputs and outputs 647 model->identifyInputsAndOutputs( 648 {input03}, 649 {output03}); 650 // Phase 4: set relaxed execution 651 model->relaxComputationFloat32toFloat16(true); 652 assert(model->isValid()); 653 } 654 655 inline bool is_ignored_dynamic_output_shape_relaxed_4(int i) { 656 static std::set<int> ignore = {}; 657 return ignore.find(i) != ignore.end(); 658 } 659 660 void CreateModel_dynamic_output_shape_float16_4(Model *model) { 661 OperandType type15(Type::TENSOR_FLOAT16, {4, 3, 2}); 662 OperandType type19(Type::TENSOR_FLOAT16, {0, 0, 0}); 663 OperandType type3(Type::BOOL, {}); 664 OperandType type9(Type::TENSOR_INT32, {2}); 665 // Phase 1, operands 666 auto input03 = model->addOperand(&type15); 667 auto param6 = model->addOperand(&type9); 668 auto param7 = model->addOperand(&type3); 669 auto output03 = model->addOperand(&type19); 670 // Phase 2, operations 671 static int32_t param6_init[] = {0, 2}; 672 model->setOperandValue(param6, param6_init, sizeof(int32_t) * 2); 673 static bool8 param7_init[] = {true}; 674 model->setOperandValue(param7, param7_init, sizeof(bool8) * 1); 675 model->addOperation(ANEURALNETWORKS_REDUCE_SUM, {input03, param6, param7}, {output03}); 676 // Phase 3, inputs and outputs 677 model->identifyInputsAndOutputs( 678 {input03}, 679 {output03}); 680 assert(model->isValid()); 681 } 682 683 inline bool is_ignored_dynamic_output_shape_float16_4(int i) { 684 static std::set<int> ignore = {}; 685 return ignore.find(i) != ignore.end(); 686 } 687 688