Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d67c1ee8 authored by Slava Shklyaev's avatar Slava Shklyaev Committed by Gerrit Code Review
Browse files

Merge "Exclude unused operands from removeOperandTest"

parents 5ec6625b af1c77d7
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -535,13 +535,18 @@ static void removeOperand(Model* model, uint32_t index) {
    removeValueAndDecrementGreaterValues(&model->main.outputIndexes, index);
}

static bool removeOperandSkip(size_t operand, const Model& model) {
static bool removeOperandSkip(size_t operandIndex, const Model& model) {
    const Operand& operand = model.main.operands[operandIndex];
    if (operand.numberOfConsumers == 0) {
        // Removing an unused operand has no effect.
        return true;
    }
    for (const Operation& operation : model.main.operations) {
        // Skip removeOperandTest for the following operations.
        // - SPLIT's outputs are not checked during prepareModel.
        if (operation.type == OperationType::SPLIT) {
            for (const size_t outOprand : operation.outputs) {
                if (operand == outOprand) {
            for (const size_t index : operation.outputs) {
                if (index == operandIndex) {
                    return true;
                }
            }
@@ -556,8 +561,8 @@ static bool removeOperandSkip(size_t operand, const Model& model) {
            operation.type == OperationType::UNIDIRECTIONAL_SEQUENCE_RNN ||
            operation.type == OperationType::BIDIRECTIONAL_SEQUENCE_LSTM ||
            operation.type == OperationType::BIDIRECTIONAL_SEQUENCE_RNN) {
            for (const size_t outOprand : operation.outputs) {
                if (operand == outOprand) {
            for (const size_t index : operation.outputs) {
                if (index == operandIndex) {
                    return true;
                }
            }