// clang-format off // Generated file (from: gather.mod.py). Do not edit // Create the model Model createTestModel() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {2, 2}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {2, 2}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 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(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_relaxed() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {2, 2}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {2, 2}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 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_relaxed(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_quant8() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {2, 2}, .numberOfConsumers = 1, .scale = 0.5f, .zeroPoint = 127, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {2, 2}, .numberOfConsumers = 0, .scale = 0.5f, .zeroPoint = 127, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 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_quant8(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_int32() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_INT32, .dimensions = {2, 2}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2, 2}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 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_int32(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_float16() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT16, .dimensions = {2, 2}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT16, .dimensions = {2, 2}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 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_float16(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {2, 2}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {0, 0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 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_dynamic_output_shape(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_relaxed() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {2, 2}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {0, 0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 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_dynamic_output_shape_relaxed(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_QUANT8_ASYMM, .dimensions = {2, 2}, .numberOfConsumers = 1, .scale = 0.5f, .zeroPoint = 127, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {0, 0}, .numberOfConsumers = 0, .scale = 0.5f, .zeroPoint = 127, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 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_dynamic_output_shape_quant8(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_int32() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_INT32, .dimensions = {2, 2}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {0, 0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 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_dynamic_output_shape_int32(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_float16() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT16, .dimensions = {2, 2}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT16, .dimensions = {0, 0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 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_dynamic_output_shape_float16(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_2() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {2, 2}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 4}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 2}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 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_2(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_relaxed_2() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {2, 2}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 4}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 2}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 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_relaxed_2(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_QUANT8_ASYMM, .dimensions = {2, 2}, .numberOfConsumers = 1, .scale = 0.5f, .zeroPoint = 127, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 4}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {1, 2}, .numberOfConsumers = 0, .scale = 0.5f, .zeroPoint = 127, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 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_quant8_2(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_int32_2() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_INT32, .dimensions = {2, 2}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1, 2}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 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_int32_2(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_float16_2() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT16, .dimensions = {2, 2}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 4}, }, { .type = OperandType::TENSOR_FLOAT16, .dimensions = {1, 2}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 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_float16_2(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_2() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {2, 2}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 4}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {0, 0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 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_dynamic_output_shape_2(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_relaxed_2() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {2, 2}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 4}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {0, 0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 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_dynamic_output_shape_relaxed_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_QUANT8_ASYMM, .dimensions = {2, 2}, .numberOfConsumers = 1, .scale = 0.5f, .zeroPoint = 127, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 4}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {0, 0}, .numberOfConsumers = 0, .scale = 0.5f, .zeroPoint = 127, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 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_dynamic_output_shape_quant8_2(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_int32_2() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_INT32, .dimensions = {2, 2}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {0, 0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 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_dynamic_output_shape_int32_2(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_float16_2() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT16, .dimensions = {2, 2}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 4}, }, { .type = OperandType::TENSOR_FLOAT16, .dimensions = {0, 0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 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_dynamic_output_shape_float16_2(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_3() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 4}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 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_3(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_relaxed_3() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 4}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 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_relaxed_3(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_QUANT8_ASYMM, .dimensions = {3}, .numberOfConsumers = 1, .scale = 0.5f, .zeroPoint = 127, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 4}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {1}, .numberOfConsumers = 0, .scale = 0.5f, .zeroPoint = 127, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 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_quant8_3(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_int32_3() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_INT32, .dimensions = {3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 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_int32_3(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_float16_3() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT16, .dimensions = {3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 4}, }, { .type = OperandType::TENSOR_FLOAT16, .dimensions = {1}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 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_float16_3(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_3() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .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}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 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_dynamic_output_shape_3(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_relaxed_3() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .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}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 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_dynamic_output_shape_relaxed_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_QUANT8_ASYMM, .dimensions = {3}, .numberOfConsumers = 1, .scale = 0.5f, .zeroPoint = 127, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 4}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {0}, .numberOfConsumers = 0, .scale = 0.5f, .zeroPoint = 127, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 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_dynamic_output_shape_quant8_3(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_int32_3() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_INT32, .dimensions = {3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 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_dynamic_output_shape_int32_3(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_float16_3() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT16, .dimensions = {3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 4}, }, { .type = OperandType::TENSOR_FLOAT16, .dimensions = {0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 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_dynamic_output_shape_float16_3(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_4() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {2}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 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_4(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_relaxed_4() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {2}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 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_relaxed_4(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_QUANT8_ASYMM, .dimensions = {3}, .numberOfConsumers = 1, .scale = 0.5f, .zeroPoint = 127, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {2}, .numberOfConsumers = 0, .scale = 0.5f, .zeroPoint = 127, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 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_quant8_4(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_int32_4() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_INT32, .dimensions = {3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 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_int32_4(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_float16_4() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT16, .dimensions = {3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT16, .dimensions = {2}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 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_float16_4(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_4() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 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_dynamic_output_shape_4(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_relaxed_4() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 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_dynamic_output_shape_relaxed_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_QUANT8_ASYMM, .dimensions = {3}, .numberOfConsumers = 1, .scale = 0.5f, .zeroPoint = 127, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {0}, .numberOfConsumers = 0, .scale = 0.5f, .zeroPoint = 127, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 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_dynamic_output_shape_quant8_4(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_int32_4() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_INT32, .dimensions = {3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 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_dynamic_output_shape_int32_4(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_float16_4() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT16, .dimensions = {3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT16, .dimensions = {0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 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_dynamic_output_shape_float16_4(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_5() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 2, 2}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {2, 2, 2}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 0, 0, 0, 0, 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_5(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_relaxed_5() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 2, 2}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {2, 2, 2}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 0, 0, 0, 0, 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_relaxed_5(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_QUANT8_ASYMM, .dimensions = {1, 2, 2}, .numberOfConsumers = 1, .scale = 0.5f, .zeroPoint = 127, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {2, 2, 2}, .numberOfConsumers = 0, .scale = 0.5f, .zeroPoint = 127, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 0, 0, 0, 0, 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_quant8_5(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_int32_5() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_INT32, .dimensions = {1, 2, 2}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2, 2, 2}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 0, 0, 0, 0, 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_int32_5(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_float16_5() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT16, .dimensions = {1, 2, 2}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT16, .dimensions = {2, 2, 2}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 0, 0, 0, 0, 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_float16_5(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_5() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 2, 2}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {0, 0, 0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 0, 0, 0, 0, 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_dynamic_output_shape_5(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_relaxed_5() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 2, 2}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {0, 0, 0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 0, 0, 0, 0, 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_dynamic_output_shape_relaxed_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_QUANT8_ASYMM, .dimensions = {1, 2, 2}, .numberOfConsumers = 1, .scale = 0.5f, .zeroPoint = 127, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {0, 0, 0}, .numberOfConsumers = 0, .scale = 0.5f, .zeroPoint = 127, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 0, 0, 0, 0, 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_dynamic_output_shape_quant8_5(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_int32_5() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_INT32, .dimensions = {1, 2, 2}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {0, 0, 0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 0, 0, 0, 0, 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_dynamic_output_shape_int32_5(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_float16_5() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT16, .dimensions = {1, 2, 2}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT16, .dimensions = {0, 0, 0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 0, 0, 0, 0, 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_dynamic_output_shape_float16_5(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_6() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {4, 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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {2, 1}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 3, 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_6(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_relaxed_6() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {4, 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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {2, 1}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 3, 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_relaxed_6(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_QUANT8_ASYMM, .dimensions = {4, 1}, .numberOfConsumers = 1, .scale = 0.5f, .zeroPoint = 127, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {2, 1}, .numberOfConsumers = 0, .scale = 0.5f, .zeroPoint = 127, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 3, 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_quant8_6(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_int32_6() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_INT32, .dimensions = {4, 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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2, 1}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 3, 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_int32_6(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_float16_6() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT16, .dimensions = {4, 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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT16, .dimensions = {2, 1}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 3, 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_float16_6(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_6() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {4, 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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {0, 0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 3, 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_dynamic_output_shape_6(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_relaxed_6() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {4, 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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {0, 0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 3, 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_dynamic_output_shape_relaxed_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_QUANT8_ASYMM, .dimensions = {4, 1}, .numberOfConsumers = 1, .scale = 0.5f, .zeroPoint = 127, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {0, 0}, .numberOfConsumers = 0, .scale = 0.5f, .zeroPoint = 127, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 3, 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_dynamic_output_shape_quant8_6(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_int32_6() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_INT32, .dimensions = {4, 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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {0, 0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 3, 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_dynamic_output_shape_int32_6(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_float16_6() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT16, .dimensions = {4, 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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT16, .dimensions = {0, 0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 0, 0, 0, 0, 1, 0, 0, 0, 3, 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_dynamic_output_shape_float16_6(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_7() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 2, 3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 2, 3}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 1, 0, 0, 0, 1, 0, 0, 0, 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_7(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_relaxed_7() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 2, 3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 2, 3}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 1, 0, 0, 0, 1, 0, 0, 0, 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_relaxed_7(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_QUANT8_ASYMM, .dimensions = {1, 2, 3}, .numberOfConsumers = 1, .scale = 0.5f, .zeroPoint = 127, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {1, 2, 3}, .numberOfConsumers = 0, .scale = 0.5f, .zeroPoint = 127, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 1, 0, 0, 0, 1, 0, 0, 0, 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_quant8_7(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_int32_7() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_INT32, .dimensions = {1, 2, 3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1, 2, 3}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 1, 0, 0, 0, 1, 0, 0, 0, 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_int32_7(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_float16_7() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT16, .dimensions = {1, 2, 3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT16, .dimensions = {1, 2, 3}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 1, 0, 0, 0, 1, 0, 0, 0, 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_float16_7(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_7() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 2, 3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {0, 0, 0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 1, 0, 0, 0, 1, 0, 0, 0, 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_dynamic_output_shape_7(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_relaxed_7() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 2, 3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {0, 0, 0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 1, 0, 0, 0, 1, 0, 0, 0, 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_dynamic_output_shape_relaxed_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_QUANT8_ASYMM, .dimensions = {1, 2, 3}, .numberOfConsumers = 1, .scale = 0.5f, .zeroPoint = 127, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {0, 0, 0}, .numberOfConsumers = 0, .scale = 0.5f, .zeroPoint = 127, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 1, 0, 0, 0, 1, 0, 0, 0, 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_dynamic_output_shape_quant8_7(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_int32_7() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_INT32, .dimensions = {1, 2, 3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {0, 0, 0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 1, 0, 0, 0, 1, 0, 0, 0, 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_dynamic_output_shape_int32_7(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_float16_7() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT16, .dimensions = {1, 2, 3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT16, .dimensions = {0, 0, 0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 1, 0, 0, 0, 1, 0, 0, 0, 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_dynamic_output_shape_float16_7(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_8() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 2, 3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 2, 2}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 255, 255, 255, 255, 2, 0, 0, 0, 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_8(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_relaxed_8() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 2, 3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 2, 2}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 255, 255, 255, 255, 2, 0, 0, 0, 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_relaxed_8(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_QUANT8_ASYMM, .dimensions = {1, 2, 3}, .numberOfConsumers = 1, .scale = 0.5f, .zeroPoint = 127, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {1, 2, 2}, .numberOfConsumers = 0, .scale = 0.5f, .zeroPoint = 127, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 255, 255, 255, 255, 2, 0, 0, 0, 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_quant8_8(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_int32_8() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_INT32, .dimensions = {1, 2, 3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {1, 2, 2}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 255, 255, 255, 255, 2, 0, 0, 0, 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_int32_8(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_float16_8() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT16, .dimensions = {1, 2, 3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT16, .dimensions = {1, 2, 2}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 255, 255, 255, 255, 2, 0, 0, 0, 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_float16_8(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_8() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 2, 3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {0, 0, 0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 255, 255, 255, 255, 2, 0, 0, 0, 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_dynamic_output_shape_8(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_relaxed_8() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT32, .dimensions = {1, 2, 3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT32, .dimensions = {0, 0, 0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 255, 255, 255, 255, 2, 0, 0, 0, 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_dynamic_output_shape_relaxed_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_QUANT8_ASYMM, .dimensions = {1, 2, 3}, .numberOfConsumers = 1, .scale = 0.5f, .zeroPoint = 127, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_QUANT8_ASYMM, .dimensions = {0, 0, 0}, .numberOfConsumers = 0, .scale = 0.5f, .zeroPoint = 127, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 255, 255, 255, 255, 2, 0, 0, 0, 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_dynamic_output_shape_quant8_8(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_int32_8() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_INT32, .dimensions = {1, 2, 3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {0, 0, 0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 255, 255, 255, 255, 2, 0, 0, 0, 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_dynamic_output_shape_int32_8(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); } // Create the model Model createTestModel_dynamic_output_shape_float16_8() { const std::vector<Operand> operands = { { .type = OperandType::TENSOR_FLOAT16, .dimensions = {1, 2, 3}, .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 = 0, .length = 4}, }, { .type = OperandType::TENSOR_INT32, .dimensions = {2}, .numberOfConsumers = 1, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::CONSTANT_COPY, .location = {.poolIndex = 0, .offset = 4, .length = 8}, }, { .type = OperandType::TENSOR_FLOAT16, .dimensions = {0, 0, 0}, .numberOfConsumers = 0, .scale = 0.0f, .zeroPoint = 0, .lifetime = OperandLifeTime::MODEL_OUTPUT, .location = {.poolIndex = 0, .offset = 0, .length = 0}, } }; const std::vector<Operation> operations = { { .type = OperationType::GATHER, .inputs = {0, 1, 2}, .outputs = {3}, } }; const std::vector<uint32_t> inputIndexes = {0}; const std::vector<uint32_t> outputIndexes = {3}; std::vector<uint8_t> operandValues = { 255, 255, 255, 255, 2, 0, 0, 0, 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_dynamic_output_shape_float16_8(int i) { static std::set<int> ignore = {}; return ignore.find(i) != ignore.end(); }