return MOVE_REDUCED;
return DefUseEffect.MOVE_REDUCED;
  private static byte intMul(OPT_AbstractRegisterPool regpool, OPT_Instruction s) {   if (CF_INT) {      canonicalizeCommutativeOperator(s);      OPT_Operand op2 = Binary.getVal2(s);      if (op2.isIntConstant()) {        int val2 = op2.asIntConstant().value;        OPT_Operand op1 = Binary.getVal1(s);        if (op1.isIntConstant()) {          // BOTH CONSTANTS: FOLD          int val1 = op1.asIntConstant().value;          Move.mutate(s, INT_MOVE, Binary.getClearResult(s), IC(val1*val2));          return MOVE_FOLDED;        } else {          // ONLY OP2 IS CONSTANT: ATTEMPT TO APPLY AXIOMS          if (val2 == -1) {                 // x * -1 == -x            Unary.mutate(s, INT_NEG, Binary.getClearResult(s),                          Binary.getClearVal1(s));            return REDUCED;          }          if (val2 == 0) {                  // x * 0 == 0            Move.mutate(s, INT_MOVE, Binary.getClearResult(s), IC(0));            return MOVE_FOLDED;          }          if (val2 == 1) {                  // x * 1 == x            Move.mutate(s, INT_MOVE, Binary.getClearResult(s),                         Binary.getClearVal1(s));            return MOVE_REDUCED;          }                 // try to reduce x*c into shift and adds, but only if cost is cheap          if (s.getPrev() != null) {            // don't attempt to reduce if this instruction isn't            // part of a well-formed sequence            int cost = 0;            for(int i=1; i < BITS_IN_INT; i++) {              if((val2 & (1 << i)) != 0) {                // each 1 requires a shift and add                cost++;              }            }            if (cost < 5) {              // generate shift and adds              OPT_RegisterOperand val1Operand = Binary.getClearVal1(s).asRegister();              OPT_RegisterOperand resultOperand = regpool.makeTempInt();              OPT_Instruction move;              if ((val2 & 1) == 1) {                // result = val1 * 1                move = Move.create(INT_MOVE, resultOperand, val1Operand);              } else {                // result = 0                move = Move.create(INT_MOVE, resultOperand, IC(0));              }              move.copyPosition(s);              s.insertBefore(move);              for(int i=1; i < BITS_IN_INT; i++) {                if((val2 & (1 << i)) != 0) {                  OPT_RegisterOperand tempInt = regpool.makeTempInt();                  OPT_Instruction shift = Binary.create(INT_SHL,                                                        tempInt,                                                        val1Operand.copyRO(),                                                        IC(i)                                                        );                  shift.copyPosition(s);                  s.insertBefore(shift);                  OPT_Instruction add = Binary.create(INT_ADD,                                                      resultOperand.copyRO(),                                                      resultOperand.copyRO(),                                                      tempInt.copyRO()                                                      );                  add.copyPosition(s);                  s.insertBefore(add);                }              }              Move.mutate(s, INT_MOVE, Binary.getClearResult(s), resultOperand.copyRO());              return REDUCED;            }          }        }      }    }    return UNCHANGED;  }