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