// clang-format off // Generated file (from: quantize.mod.py). Do not edit // Create the model Model createTestModel_quant8() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {300}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_INPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {300}, .numberOfConsumers = 0, .scale = 1.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::QUANTIZE, .inputs = {0}, .outputs = {1}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {1}; std::vector<uint8_t> operandValues = {}; const std::vector<hidl_memory> pools = {}; return { .operands = operands, .operations = operations, .inputIndexes = inputIndexes, .outputIndexes = outputIndexes, .operandValues = operandValues, .pools = pools, }; } inline bool is_ignored_quant8(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_quant8() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {300}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_INPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {0}, .numberOfConsumers = 0, .scale = 1.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::QUANTIZE, .inputs = {0}, .outputs = {1}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {1}; std::vector<uint8_t> operandValues = {}; const std::vector<hidl_memory> pools = {}; return { .operands = operands, .operations = operations, .inputIndexes = inputIndexes, .outputIndexes = outputIndexes, .operandValues = operandValues, .pools = pools, }; } inline bool is_ignored_dynamic_output_shape_quant8(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_quant8_2() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {300}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_INPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {300}, .numberOfConsumers = 0, .scale = 1.0f, .zeroPoint = 1, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::QUANTIZE, .inputs = {0}, .outputs = {1}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {1}; std::vector<uint8_t> operandValues = {}; const std::vector<hidl_memory> pools = {}; return { .operands = operands, .operations = operations, .inputIndexes = inputIndexes, .outputIndexes = outputIndexes, .operandValues = operandValues, .pools = pools, }; } inline bool is_ignored_quant8_2(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_quant8_2() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {300}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_INPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {0}, .numberOfConsumers = 0, .scale = 1.0f, .zeroPoint = 1, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::QUANTIZE, .inputs = {0}, .outputs = {1}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {1}; std::vector<uint8_t> operandValues = {}; const std::vector<hidl_memory> pools = {}; return { .operands = operands, .operations = operations, .inputIndexes = inputIndexes, .outputIndexes = outputIndexes, .operandValues = operandValues, .pools = pools, }; } inline bool is_ignored_dynamic_output_shape_quant8_2(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_quant8_3() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {300}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_INPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {300}, .numberOfConsumers = 0, .scale = 0.01f, .zeroPoint = 120, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::QUANTIZE, .inputs = {0}, .outputs = {1}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {1}; std::vector<uint8_t> operandValues = {}; const std::vector<hidl_memory> pools = {}; return { .operands = operands, .operations = operations, .inputIndexes = inputIndexes, .outputIndexes = outputIndexes, .operandValues = operandValues, .pools = pools, }; } inline bool is_ignored_quant8_3(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_quant8_3() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {300}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_INPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {0}, .numberOfConsumers = 0, .scale = 0.01f, .zeroPoint = 120, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::QUANTIZE, .inputs = {0}, .outputs = {1}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {1}; std::vector<uint8_t> operandValues = {}; const std::vector<hidl_memory> pools = {}; return { .operands = operands, .operations = operations, .inputIndexes = inputIndexes, .outputIndexes = outputIndexes, .operandValues = operandValues, .pools = pools, }; } inline bool is_ignored_dynamic_output_shape_quant8_3(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_quant8_4() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {300}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_INPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {300}, .numberOfConsumers = 0, .scale = 10.0f, .zeroPoint = 120, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::QUANTIZE, .inputs = {0}, .outputs = {1}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {1}; std::vector<uint8_t> operandValues = {}; const std::vector<hidl_memory> pools = {}; return { .operands = operands, .operations = operations, .inputIndexes = inputIndexes, .outputIndexes = outputIndexes, .operandValues = operandValues, .pools = pools, }; } inline bool is_ignored_quant8_4(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_quant8_4() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {300}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_INPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {0}, .numberOfConsumers = 0, .scale = 10.0f, .zeroPoint = 120, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::QUANTIZE, .inputs = {0}, .outputs = {1}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {1}; std::vector<uint8_t> operandValues = {}; const std::vector<hidl_memory> pools = {}; return { .operands = operands, .operations = operations, .inputIndexes = inputIndexes, .outputIndexes = outputIndexes, .operandValues = operandValues, .pools = pools, }; } inline bool is_ignored_dynamic_output_shape_quant8_4(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_quant8_5() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT16, .dimensions = {300}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_INPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {300}, .numberOfConsumers = 0, .scale = 1.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::QUANTIZE, .inputs = {0}, .outputs = {1}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {1}; std::vector<uint8_t> operandValues = {}; const std::vector<hidl_memory> pools = {}; return { .operands = operands, .operations = operations, .inputIndexes = inputIndexes, .outputIndexes = outputIndexes, .operandValues = operandValues, .pools = pools, }; } inline bool is_ignored_quant8_5(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_quant8_5() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT16, .dimensions = {300}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_INPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {0}, .numberOfConsumers = 0, .scale = 1.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::QUANTIZE, .inputs = {0}, .outputs = {1}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {1}; std::vector<uint8_t> operandValues = {}; const std::vector<hidl_memory> pools = {}; return { .operands = operands, .operations = operations, .inputIndexes = inputIndexes, .outputIndexes = outputIndexes, .operandValues = operandValues, .pools = pools, }; } inline bool is_ignored_dynamic_output_shape_quant8_5(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_quant8_6() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT16, .dimensions = {300}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_INPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {300}, .numberOfConsumers = 0, .scale = 1.0f, .zeroPoint = 1, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::QUANTIZE, .inputs = {0}, .outputs = {1}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {1}; std::vector<uint8_t> operandValues = {}; const std::vector<hidl_memory> pools = {}; return { .operands = operands, .operations = operations, .inputIndexes = inputIndexes, .outputIndexes = outputIndexes, .operandValues = operandValues, .pools = pools, }; } inline bool is_ignored_quant8_6(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_quant8_6() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT16, .dimensions = {300}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_INPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {0}, .numberOfConsumers = 0, .scale = 1.0f, .zeroPoint = 1, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::QUANTIZE, .inputs = {0}, .outputs = {1}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {1}; std::vector<uint8_t> operandValues = {}; const std::vector<hidl_memory> pools = {}; return { .operands = operands, .operations = operations, .inputIndexes = inputIndexes, .outputIndexes = outputIndexes, .operandValues = operandValues, .pools = pools, }; } inline bool is_ignored_dynamic_output_shape_quant8_6(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_quant8_7() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT16, .dimensions = {300}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_INPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {300}, .numberOfConsumers = 0, .scale = 0.01f, .zeroPoint = 120, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::QUANTIZE, .inputs = {0}, .outputs = {1}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {1}; std::vector<uint8_t> operandValues = {}; const std::vector<hidl_memory> pools = {}; return { .operands = operands, .operations = operations, .inputIndexes = inputIndexes, .outputIndexes = outputIndexes, .operandValues = operandValues, .pools = pools, }; } inline bool is_ignored_quant8_7(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_quant8_7() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT16, .dimensions = {300}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_INPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {0}, .numberOfConsumers = 0, .scale = 0.01f, .zeroPoint = 120, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::QUANTIZE, .inputs = {0}, .outputs = {1}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {1}; std::vector<uint8_t> operandValues = {}; const std::vector<hidl_memory> pools = {}; return { .operands = operands, .operations = operations, .inputIndexes = inputIndexes, .outputIndexes = outputIndexes, .operandValues = operandValues, .pools = pools, }; } inline bool is_ignored_dynamic_output_shape_quant8_7(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_quant8_8() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT16, .dimensions = {300}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_INPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {300}, .numberOfConsumers = 0, .scale = 10.0f, .zeroPoint = 120, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::QUANTIZE, .inputs = {0}, .outputs = {1}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {1}; std::vector<uint8_t> operandValues = {}; const std::vector<hidl_memory> pools = {}; return { .operands = operands, .operations = operations, .inputIndexes = inputIndexes, .outputIndexes = outputIndexes, .operandValues = operandValues, .pools = pools, }; } inline bool is_ignored_quant8_8(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_quant8_8() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT16, .dimensions = {300}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_INPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {0}, .numberOfConsumers = 0, .scale = 10.0f, .zeroPoint = 120, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::QUANTIZE, .inputs = {0}, .outputs = {1}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {1}; std::vector<uint8_t> operandValues = {}; const std::vector<hidl_memory> pools = {}; return { .operands = operands, .operations = operations, .inputIndexes = inputIndexes, .outputIndexes = outputIndexes, .operandValues = operandValues, .pools = pools, }; } inline bool is_ignored_dynamic_output_shape_quant8_8(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_zero_sized() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 0, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 8}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 8, .length = 32}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 40, .length = 4}, }, { .type = OperandType::FLOAT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 44, .length = 4}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 48, .length = 4}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 52, .length = 4}, }, { .type = OperandType::FLOAT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 56, .length = 4}, }, { .type = OperandType::FLOAT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 60, .length = 4}, }, { .type = OperandType::FLOAT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 64, .length = 4}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {0, 4}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::TEMPORARY_VARIABLE, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {0}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::TEMPORARY_VARIABLE, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 1, 1, 1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_INPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 68, .length = 4}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 72, .length = 4}, }, { .type = OperandType::FLOAT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 76, .length = 4}, }, { .type = OperandType::FLOAT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 80, .length = 4}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 84, .length = 4}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 88, .length = 4}, }, { .type = OperandType::BOOL, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 92, .length = 1}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {0, 2, 2, 1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::TEMPORARY_VARIABLE, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {0, 2, 2, 1}, .numberOfConsumers = 0, .scale = 0.1f, .zeroPoint = 128, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::BOX_WITH_NMS_LIMIT, .inputs = {0, 1, 2, 3, 4, 5, 6, 7, 8}, .outputs = {9, 10, 11, 12}, }, { .type = OperationType::ROI_ALIGN, .inputs = {13, 10, 12, 14, 15, 16, 17, 18, 19, 20}, .outputs = {21}, }, { .type = OperationType::QUANTIZE, .inputs = {21}, .outputs = {22}, } }; const std::vector<uint32_t> inputIndexes = {13}; const std::vector<uint32_t> outputIndexes = {9, 11, 22}; std::vector<uint8_t> operandValues = { 102, 102, 102, 63, 205, 204, 204, 61, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 32, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 32, 65, 0, 0, 0, 0, 154, 153, 153, 62, 255, 255, 255, 255, 0, 0, 0, 0, 205, 204, 204, 62, 0, 0, 128, 63, 154, 153, 153, 62, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 64, 4, 0, 0, 0, 4, 0, 0, 0, 0 }; const std::vector<hidl_memory> pools = {}; return { .operands = operands, .operations = operations, .inputIndexes = inputIndexes, .outputIndexes = outputIndexes, .operandValues = operandValues, .pools = pools, }; } inline bool is_ignored_zero_sized(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_zero_sized_relaxed() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 0, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 8}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 8, .length = 32}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 40, .length = 4}, }, { .type = OperandType::FLOAT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 44, .length = 4}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 48, .length = 4}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 52, .length = 4}, }, { .type = OperandType::FLOAT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 56, .length = 4}, }, { .type = OperandType::FLOAT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 60, .length = 4}, }, { .type = OperandType::FLOAT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 64, .length = 4}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {0, 4}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::TEMPORARY_VARIABLE, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {0}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::TEMPORARY_VARIABLE, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 1, 1, 1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_INPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 68, .length = 4}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 72, .length = 4}, }, { .type = OperandType::FLOAT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 76, .length = 4}, }, { .type = OperandType::FLOAT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 80, .length = 4}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 84, .length = 4}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 88, .length = 4}, }, { .type = OperandType::BOOL, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 92, .length = 1}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {0, 2, 2, 1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::TEMPORARY_VARIABLE, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {0, 2, 2, 1}, .numberOfConsumers = 0, .scale = 0.1f, .zeroPoint = 128, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::BOX_WITH_NMS_LIMIT, .inputs = {0, 1, 2, 3, 4, 5, 6, 7, 8}, .outputs = {9, 10, 11, 12}, }, { .type = OperationType::ROI_ALIGN, .inputs = {13, 10, 12, 14, 15, 16, 17, 18, 19, 20}, .outputs = {21}, }, { .type = OperationType::QUANTIZE, .inputs = {21}, .outputs = {22}, } }; const std::vector<uint32_t> inputIndexes = {13}; const std::vector<uint32_t> outputIndexes = {9, 11, 22}; std::vector<uint8_t> operandValues = { 102, 102, 102, 63, 205, 204, 204, 61, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 32, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 32, 65, 0, 0, 0, 0, 154, 153, 153, 62, 255, 255, 255, 255, 0, 0, 0, 0, 205, 204, 204, 62, 0, 0, 128, 63, 154, 153, 153, 62, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 64, 4, 0, 0, 0, 4, 0, 0, 0, 0 }; const std::vector<hidl_memory> pools = {}; return { .operands = operands, .operations = operations, .inputIndexes = inputIndexes, .outputIndexes = outputIndexes, .operandValues = operandValues, .pools = pools, .relaxComputationFloat32toFloat16 = true, }; } inline bool is_ignored_zero_sized_relaxed(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_zero_sized_float16() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT16, .dimensions = {1, 2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 0, .length = 4}, }, { .type = OperandType::TENSOR_FLOAT16, .dimensions = {1, 8}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 16}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 20, .length = 4}, }, { .type = OperandType::FLOAT16, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 24, .length = 2}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 26, .length = 4}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 30, .length = 4}, }, { .type = OperandType::FLOAT16, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 34, .length = 2}, }, { .type = OperandType::FLOAT16, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 36, .length = 2}, }, { .type = OperandType::FLOAT16, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 38, .length = 2}, }, { .type = OperandType::TENSOR_FLOAT16, .dimensions = {0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_FLOAT16, .dimensions = {0, 4}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::TEMPORARY_VARIABLE, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {0}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::TEMPORARY_VARIABLE, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_FLOAT16, .dimensions = {1, 1, 1, 1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_INPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 40, .length = 4}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 44, .length = 4}, }, { .type = OperandType::FLOAT16, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 48, .length = 2}, }, { .type = OperandType::FLOAT16, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 50, .length = 2}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 52, .length = 4}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 56, .length = 4}, }, { .type = OperandType::BOOL, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 60, .length = 1}, }, { .type = OperandType::TENSOR_FLOAT16, .dimensions = {0, 2, 2, 1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::TEMPORARY_VARIABLE, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {0, 2, 2, 1}, .numberOfConsumers = 0, .scale = 0.1f, .zeroPoint = 128, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::BOX_WITH_NMS_LIMIT, .inputs = {0, 1, 2, 3, 4, 5, 6, 7, 8}, .outputs = {9, 10, 11, 12}, }, { .type = OperationType::ROI_ALIGN, .inputs = {13, 10, 12, 14, 15, 16, 17, 18, 19, 20}, .outputs = {21}, }, { .type = OperationType::QUANTIZE, .inputs = {21}, .outputs = {22}, } }; const std::vector<uint32_t> inputIndexes = {13}; const std::vector<uint32_t> outputIndexes = {9, 11, 22}; std::vector<uint8_t> operandValues = { 51, 59, 102, 46, 0, 60, 0, 60, 0, 73, 0, 73, 0, 0, 0, 0, 0, 73, 0, 73, 0, 0, 0, 0, 205, 52, 255, 255, 255, 255, 0, 0, 0, 0, 102, 54, 0, 60, 205, 52, 2, 0, 0, 0, 2, 0, 0, 0, 0, 64, 0, 64, 4, 0, 0, 0, 4, 0, 0, 0, 0 }; const std::vector<hidl_memory> pools = {}; return { .operands = operands, .operations = operations, .inputIndexes = inputIndexes, .outputIndexes = outputIndexes, .operandValues = operandValues, .pools = pools, }; } inline bool is_ignored_zero_sized_float16(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_zero_sized_dynamic_output_shape() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 0, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 8}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 8, .length = 32}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 40, .length = 4}, }, { .type = OperandType::FLOAT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 44, .length = 4}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 48, .length = 4}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 52, .length = 4}, }, { .type = OperandType::FLOAT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 56, .length = 4}, }, { .type = OperandType::FLOAT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 60, .length = 4}, }, { .type = OperandType::FLOAT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 64, .length = 4}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {0, 4}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::TEMPORARY_VARIABLE, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {0}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::TEMPORARY_VARIABLE, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 1, 1, 1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_INPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 68, .length = 4}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 72, .length = 4}, }, { .type = OperandType::FLOAT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 76, .length = 4}, }, { .type = OperandType::FLOAT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 80, .length = 4}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 84, .length = 4}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 88, .length = 4}, }, { .type = OperandType::BOOL, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 92, .length = 1}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {0, 2, 2, 1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::TEMPORARY_VARIABLE, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {0, 0, 0, 0}, .numberOfConsumers = 0, .scale = 0.1f, .zeroPoint = 128, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::BOX_WITH_NMS_LIMIT, .inputs = {0, 1, 2, 3, 4, 5, 6, 7, 8}, .outputs = {9, 10, 11, 12}, }, { .type = OperationType::ROI_ALIGN, .inputs = {13, 10, 12, 14, 15, 16, 17, 18, 19, 20}, .outputs = {21}, }, { .type = OperationType::QUANTIZE, .inputs = {21}, .outputs = {22}, } }; const std::vector<uint32_t> inputIndexes = {13}; const std::vector<uint32_t> outputIndexes = {9, 11, 22}; std::vector<uint8_t> operandValues = { 102, 102, 102, 63, 205, 204, 204, 61, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 32, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 32, 65, 0, 0, 0, 0, 154, 153, 153, 62, 255, 255, 255, 255, 0, 0, 0, 0, 205, 204, 204, 62, 0, 0, 128, 63, 154, 153, 153, 62, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 64, 4, 0, 0, 0, 4, 0, 0, 0, 0 }; const std::vector<hidl_memory> pools = {}; return { .operands = operands, .operations = operations, .inputIndexes = inputIndexes, .outputIndexes = outputIndexes, .operandValues = operandValues, .pools = pools, }; } inline bool is_ignored_zero_sized_dynamic_output_shape(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_zero_sized_dynamic_output_shape_relaxed() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 0, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 8}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 8, .length = 32}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 40, .length = 4}, }, { .type = OperandType::FLOAT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 44, .length = 4}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 48, .length = 4}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 52, .length = 4}, }, { .type = OperandType::FLOAT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 56, .length = 4}, }, { .type = OperandType::FLOAT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 60, .length = 4}, }, { .type = OperandType::FLOAT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 64, .length = 4}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {0, 4}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::TEMPORARY_VARIABLE, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {0}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::TEMPORARY_VARIABLE, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 1, 1, 1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_INPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 68, .length = 4}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 72, .length = 4}, }, { .type = OperandType::FLOAT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 76, .length = 4}, }, { .type = OperandType::FLOAT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 80, .length = 4}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 84, .length = 4}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 88, .length = 4}, }, { .type = OperandType::BOOL, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 92, .length = 1}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {0, 2, 2, 1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::TEMPORARY_VARIABLE, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {0, 0, 0, 0}, .numberOfConsumers = 0, .scale = 0.1f, .zeroPoint = 128, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::BOX_WITH_NMS_LIMIT, .inputs = {0, 1, 2, 3, 4, 5, 6, 7, 8}, .outputs = {9, 10, 11, 12}, }, { .type = OperationType::ROI_ALIGN, .inputs = {13, 10, 12, 14, 15, 16, 17, 18, 19, 20}, .outputs = {21}, }, { .type = OperationType::QUANTIZE, .inputs = {21}, .outputs = {22}, } }; const std::vector<uint32_t> inputIndexes = {13}; const std::vector<uint32_t> outputIndexes = {9, 11, 22}; std::vector<uint8_t> operandValues = { 102, 102, 102, 63, 205, 204, 204, 61, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 32, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 32, 65, 0, 0, 0, 0, 154, 153, 153, 62, 255, 255, 255, 255, 0, 0, 0, 0, 205, 204, 204, 62, 0, 0, 128, 63, 154, 153, 153, 62, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 64, 4, 0, 0, 0, 4, 0, 0, 0, 0 }; const std::vector<hidl_memory> pools = {}; return { .operands = operands, .operations = operations, .inputIndexes = inputIndexes, .outputIndexes = outputIndexes, .operandValues = operandValues, .pools = pools, .relaxComputationFloat32toFloat16 = true, }; } inline bool is_ignored_zero_sized_dynamic_output_shape_relaxed(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_zero_sized_dynamic_output_shape_float16() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT16, .dimensions = {1, 2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 0, .length = 4}, }, { .type = OperandType::TENSOR_FLOAT16, .dimensions = {1, 8}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 16}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 20, .length = 4}, }, { .type = OperandType::FLOAT16, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 24, .length = 2}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 26, .length = 4}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 30, .length = 4}, }, { .type = OperandType::FLOAT16, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 34, .length = 2}, }, { .type = OperandType::FLOAT16, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 36, .length = 2}, }, { .type = OperandType::FLOAT16, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 38, .length = 2}, }, { .type = OperandType::TENSOR_FLOAT16, .dimensions = {0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_FLOAT16, .dimensions = {0, 4}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::TEMPORARY_VARIABLE, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {0}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::TEMPORARY_VARIABLE, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_FLOAT16, .dimensions = {1, 1, 1, 1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_INPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 40, .length = 4}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 44, .length = 4}, }, { .type = OperandType::FLOAT16, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 48, .length = 2}, }, { .type = OperandType::FLOAT16, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 50, .length = 2}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 52, .length = 4}, }, { .type = OperandType::INT32, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 56, .length = 4}, }, { .type = OperandType::BOOL, .dimensions = {}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 60, .length = 1}, }, { .type = OperandType::TENSOR_FLOAT16, .dimensions = {0, 2, 2, 1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::TEMPORARY_VARIABLE, .location = {.poolIndex = 0, .offset = 0, .length = 0}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {0, 0, 0, 0}, .numberOfConsumers = 0, .scale = 0.1f, .zeroPoint = 128, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::BOX_WITH_NMS_LIMIT, .inputs = {0, 1, 2, 3, 4, 5, 6, 7, 8}, .outputs = {9, 10, 11, 12}, }, { .type = OperationType::ROI_ALIGN, .inputs = {13, 10, 12, 14, 15, 16, 17, 18, 19, 20}, .outputs = {21}, }, { .type = OperationType::QUANTIZE, .inputs = {21}, .outputs = {22}, } }; const std::vector<uint32_t> inputIndexes = {13}; const std::vector<uint32_t> outputIndexes = {9, 11, 22}; std::vector<uint8_t> operandValues = { 51, 59, 102, 46, 0, 60, 0, 60, 0, 73, 0, 73, 0, 0, 0, 0, 0, 73, 0, 73, 0, 0, 0, 0, 205, 52, 255, 255, 255, 255, 0, 0, 0, 0, 102, 54, 0, 60, 205, 52, 2, 0, 0, 0, 2, 0, 0, 0, 0, 64, 0, 64, 4, 0, 0, 0, 4, 0, 0, 0, 0 }; const std::vector<hidl_memory> pools = {}; return { .operands = operands, .operations = operations, .inputIndexes = inputIndexes, .outputIndexes = outputIndexes, .operandValues = operandValues, .pools = pools, }; } inline bool is_ignored_zero_sized_dynamic_output_shape_float16(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); }