private static byte intDiv(OPT_Instruction s) {
private static DefUseEffect intDiv(OPT_Instruction s) {
  private static byte intDiv(OPT_Instruction s) {   if (CF_INT) {      OPT_Operand op1 = GuardedBinary.getVal1(s);      OPT_Operand op2 = GuardedBinary.getVal2(s);      if (op1.similar(op2)) {        // THE SAME OPERAND: x / x == 1        Move.mutate(s, INT_MOVE, GuardedBinary.getClearResult(s),                     IC(1));        return MOVE_FOLDED;      }      if (op2.isIntConstant()) {        int val2 = op2.asIntConstant().value;        if (val2 == 0) {          // TODO: This instruction is actually unreachable.            // There will be an INT_ZERO_CHECK          // guarding this instruction that will result in an           // ArithmeticException.  We          // should probabbly just remove the INT_DIV as dead code.          return UNCHANGED;        }        if (op1.isIntConstant()) {          // BOTH CONSTANTS: FOLD          int val1 = op1.asIntConstant().value;          Move.mutate(s, INT_MOVE, GuardedBinary.getClearResult(s),                       IC(val1/val2));          return MOVE_FOLDED;        } else {          // ONLY OP2 IS CONSTANT: ATTEMPT TO APPLY AXIOMS          if (val2 == 1) {                  // x / 1 == x;            Move.mutate(s, INT_MOVE, GuardedBinary.getClearResult(s),                         GuardedBinary.getClearVal1(s));            return MOVE_REDUCED;          }          // x / c == x >> (log c) if c is power of 2          int power = PowerOf2(val2);          if (power != -1) {            Binary.mutate(s, INT_SHR, GuardedBinary.getClearResult(s),                           GuardedBinary.getClearVal1(s), IC(power));            return REDUCED;          }        }      }    }    return UNCHANGED;  }