1 // clang-format off 2 // Generated file (from: strided_slice_float16.mod.py). Do not edit 3 void CreateModel(Model *model) { 4 OperandType type0(Type::TENSOR_FLOAT16, {2, 3}); 5 OperandType type1(Type::TENSOR_INT32, {2}); 6 OperandType type2(Type::INT32, {}); 7 OperandType type3(Type::TENSOR_FLOAT16, {1, 2}); 8 // Phase 1, operands 9 auto input = model->addOperand(&type0); 10 auto begins = model->addOperand(&type1); 11 auto ends = model->addOperand(&type1); 12 auto strides = model->addOperand(&type1); 13 auto beginMask = model->addOperand(&type2); 14 auto endMask = model->addOperand(&type2); 15 auto shrinkAxisMask = model->addOperand(&type2); 16 auto output = model->addOperand(&type3); 17 // Phase 2, operations 18 static int32_t begins_init[] = {0, 0}; 19 model->setOperandValue(begins, begins_init, sizeof(int32_t) * 2); 20 static int32_t ends_init[] = {2, 3}; 21 model->setOperandValue(ends, ends_init, sizeof(int32_t) * 2); 22 static int32_t strides_init[] = {2, 2}; 23 model->setOperandValue(strides, strides_init, sizeof(int32_t) * 2); 24 static int32_t beginMask_init[] = {0}; 25 model->setOperandValue(beginMask, beginMask_init, sizeof(int32_t) * 1); 26 static int32_t endMask_init[] = {0}; 27 model->setOperandValue(endMask, endMask_init, sizeof(int32_t) * 1); 28 static int32_t shrinkAxisMask_init[] = {0}; 29 model->setOperandValue(shrinkAxisMask, shrinkAxisMask_init, sizeof(int32_t) * 1); 30 model->addOperation(ANEURALNETWORKS_STRIDED_SLICE, {input, begins, ends, strides, beginMask, endMask, shrinkAxisMask}, {output}); 31 // Phase 3, inputs and outputs 32 model->identifyInputsAndOutputs( 33 {input}, 34 {output}); 35 assert(model->isValid()); 36 } 37 38 inline bool is_ignored(int i) { 39 static std::set<int> ignore = {}; 40 return ignore.find(i) != ignore.end(); 41 } 42 43 void CreateModel_dynamic_output_shape(Model *model) { 44 OperandType type0(Type::TENSOR_FLOAT16, {2, 3}); 45 OperandType type1(Type::TENSOR_INT32, {2}); 46 OperandType type2(Type::INT32, {}); 47 OperandType type4(Type::TENSOR_FLOAT16, {0, 0}); 48 // Phase 1, operands 49 auto input = model->addOperand(&type0); 50 auto begins = model->addOperand(&type1); 51 auto ends = model->addOperand(&type1); 52 auto strides = model->addOperand(&type1); 53 auto beginMask = model->addOperand(&type2); 54 auto endMask = model->addOperand(&type2); 55 auto shrinkAxisMask = model->addOperand(&type2); 56 auto output = model->addOperand(&type4); 57 // Phase 2, operations 58 static int32_t begins_init[] = {0, 0}; 59 model->setOperandValue(begins, begins_init, sizeof(int32_t) * 2); 60 static int32_t ends_init[] = {2, 3}; 61 model->setOperandValue(ends, ends_init, sizeof(int32_t) * 2); 62 static int32_t strides_init[] = {2, 2}; 63 model->setOperandValue(strides, strides_init, sizeof(int32_t) * 2); 64 static int32_t beginMask_init[] = {0}; 65 model->setOperandValue(beginMask, beginMask_init, sizeof(int32_t) * 1); 66 static int32_t endMask_init[] = {0}; 67 model->setOperandValue(endMask, endMask_init, sizeof(int32_t) * 1); 68 static int32_t shrinkAxisMask_init[] = {0}; 69 model->setOperandValue(shrinkAxisMask, shrinkAxisMask_init, sizeof(int32_t) * 1); 70 model->addOperation(ANEURALNETWORKS_STRIDED_SLICE, {input, begins, ends, strides, beginMask, endMask, shrinkAxisMask}, {output}); 71 // Phase 3, inputs and outputs 72 model->identifyInputsAndOutputs( 73 {input}, 74 {output}); 75 assert(model->isValid()); 76 } 77 78 inline bool is_ignored_dynamic_output_shape(int i) { 79 static std::set<int> ignore = {}; 80 return ignore.find(i) != ignore.end(); 81 } 82 83