EMIT(MIR_Binary.create(PPC_SUBFIC, I(zero), one.copyRO(), IC(value - 1)));
t1 = regpool.getAddress(); EMIT(MIR_Unary.create(PPC64_EXTSW, A(t1), one.copyRO())); EMIT(MIR_Binary.create(PPC_SUBFIC, A(zero), A(t1), IC(value - 1)));  EMIT(MIR_Binary.create(PPC_SUBFIC, A(zero), one.copyRO(), IC(value - 1)));
  protected final void BOOLEAN_CMP_INT_IMM(OPT_RegisterOperand def,                                        OPT_ConditionOperand cmp,                                       OPT_RegisterOperand one,                                        OPT_IntConstantOperand two) {    OPT_Register t1, t = regpool.getInteger();    OPT_Register zero = regpool.getPhysicalRegisterSet().getTemp();    int value = two.value;    switch (cmp.value) {    case OPT_ConditionOperand.EQUAL:      if (value == 0) {        EMIT(MIR_Unary.create(PPC_CNTLZW, I(t), one));       } else {        EMIT(MIR_Binary.create(PPC_SUBFIC, I(t), one, IC(value)));        EMIT(MIR_Unary.create(PPC_CNTLZW, I(t), I(t)));      }      EMIT(MIR_Binary.create(PPC_SRWI, def, I(t), IC(LOG_BITS_IN_INT)));      break;    case OPT_ConditionOperand.NOT_EQUAL:      if (value == 0) {        EMIT(MIR_Binary.create(PPC_ADDIC, I(t), one, IC(-1)));        EMIT(MIR_Binary.create(PPC_SUBFE, def, I(t), one.copyRO()));      } else {        t1 = regpool.getInteger();        EMIT(MIR_Binary.create(PPC_SUBFIC, I(t1), one, IC(value)));        EMIT(MIR_Binary.create(PPC_ADDIC, I(t), I(t1), IC(-1)));        EMIT(MIR_Binary.create(PPC_SUBFE, def, I(t), I(t1)));      }      break;    case OPT_ConditionOperand.LESS:      if (value == 0) {        EMIT(MIR_Binary.create(PPC_SRWI, def, one, IC(BITS_IN_INT - 1)));      } else if (value > 0) {        EMIT(MIR_Binary.create(PPC_SRWI, I(t), one, IC(BITS_IN_INT - 1)));        EMIT(MIR_Binary.create(PPC_SUBFIC, I(zero), one,                                IC(value - 1)));        EMIT(MIR_Unary.create(PPC_ADDZE, def, I(t)));      } else if (value != 0xFFFF8000) {        EMIT(MIR_Binary.create(PPC_SRWI, I(t), one, IC(BITS_IN_INT - 1)));        EMIT(MIR_Binary.create(PPC_SUBFIC, I(zero), one.copyRO(),                                IC(value - 1)));        EMIT(MIR_Unary.create(PPC_ADDME, def, I(t)));      } else {                  // value = 0xFFFF8000        EMIT(MIR_Binary.create(PPC_SRWI, I(t), one, IC(BITS_IN_INT - 1)));        EMIT(MIR_Unary.create(PPC_LDIS, I(zero), IC(1)));        EMIT(MIR_Binary.create(PPC_SUBFC, I(zero), one.copyRO(), I(zero)));        EMIT(MIR_Unary.create(PPC_ADDME, def, I(t)));      }      break;    case OPT_ConditionOperand.GREATER:      if (value == 0) {        EMIT(MIR_Unary.create(PPC_NEG, I(t), one));        EMIT(MIR_Binary.create(PPC_ANDC, I(t), I(t), one.copyRO()));        EMIT(MIR_Binary.create(PPC_SRWI, def, I(t), IC(BITS_IN_INT - 1)));      } else if (value >= 0) {        EMIT(MIR_Binary.create(PPC_SRAWI, I(t), one, IC(BITS_IN_INT - 1)));        EMIT(MIR_Binary.create(PPC_ADDIC, I(zero), one.copyRO(),                                IC(-value - 1)));        EMIT(MIR_Unary.create(PPC_ADDZE, def, I(t)));      } else {        t1 = regpool.getInteger();        EMIT(MIR_Unary.create(PPC_LDI, I(t1), IC(1)));        EMIT(MIR_Binary.create(PPC_SRAWI, I(t), one, IC(BITS_IN_INT - 1)));        EMIT(MIR_Binary.create(PPC_ADDIC, I(zero), one.copyRO(),                                IC(-value - 1)));        EMIT(MIR_Binary.create(PPC_ADDE, def, I(t), I(t1)));      }      break;    case OPT_ConditionOperand.LESS_EQUAL:      if (value == 0) {        EMIT(MIR_Binary.create(PPC_ADDI, I(t), one, IC(-1)));        EMIT(MIR_Binary.create(PPC_OR, I(t), I(t), one.copyRO()));        EMIT(MIR_Binary.create(PPC_SRWI, def, I(t), IC(BITS_IN_INT - 1)));      } else if (value >= 0) {        EMIT(MIR_Binary.create(PPC_SRWI, I(t), one, IC(BITS_IN_INT - 1)));        EMIT(MIR_Binary.create(PPC_SUBFIC, I(zero), one.copyRO(), IC(value)));        EMIT(MIR_Unary.create(PPC_ADDZE, def, I(t)));      } else {        EMIT(MIR_Binary.create(PPC_SRWI, I(t), one, IC(BITS_IN_INT - 1)));        EMIT(MIR_Binary.create(PPC_SUBFIC, I(zero), one.copyRO(), IC(value)));        EMIT(MIR_Unary.create(PPC_ADDME, def, I(t)));      }      break;    case OPT_ConditionOperand.GREATER_EQUAL:      if (value == 0) {        EMIT(MIR_Binary.create(PPC_SRWI, I(t), one, IC(BITS_IN_INT - 1)));        EMIT(MIR_Binary.create(PPC_XORI, def, I(t), IC(1)));      } else if (value >= 0) {        EMIT(MIR_Binary.create(PPC_SRAWI, I(t), one, IC(BITS_IN_INT - 1)));        EMIT(MIR_Binary.create(PPC_ADDIC, I(zero), one.copyRO(), IC(-value)));        EMIT(MIR_Unary.create(PPC_ADDZE, def, I(t)));      } else if (value != 0xFFFF8000) {        t1 = regpool.getInteger();        EMIT(MIR_Unary.create(PPC_LDI, I(t1), IC(1)));        EMIT(MIR_Binary.create(PPC_SRAWI, I(t), one, IC(BITS_IN_INT - 1)));        EMIT(MIR_Binary.create(PPC_ADDIC, I(zero), one.copyRO(), IC(-value)));        EMIT(MIR_Binary.create(PPC_ADDE, def, I(t), I(t1)));      } else {        EMIT(BooleanCmp.create(BOOLEAN_CMP_INT, def, one, two, cmp, null));        // value == 0xFFFF8000; code sequence below does not work --dave 7/25/02        break;        /*          t1 = regpool.getInteger();          EMIT(MIR_Unary.create(PPC_LDI, I(t1), IC(1)));          EMIT(MIR_Binary.create(PPC_SRAWI, I(t), one, IC(31)));          EMIT(MIR_Unary.create(PPC_LDIS, I(zero), IC(1)));          EMIT(MIR_Binary.create(PPC_ADDC, I(zero), one.copyRO(), I(zero)));          EMIT(MIR_Binary.create(PPC_ADDE, def, I(t), I(t1)));        */      }      break;    case OPT_ConditionOperand.HIGHER:      EMIT(BooleanCmp.create(BOOLEAN_CMP_INT, def, one, two, cmp, null)); // todo      break;    case OPT_ConditionOperand.LOWER:      EMIT(BooleanCmp.create(BOOLEAN_CMP_INT, def, one, two, cmp, null)); // todo      break;    case OPT_ConditionOperand.HIGHER_EQUAL:      EMIT(BooleanCmp.create(BOOLEAN_CMP_INT, def, one, two, cmp, null)); // todo      break;    case OPT_ConditionOperand.LOWER_EQUAL:      EMIT(MIR_Unary.create(PPC_LDI, I(t), IC(-1)));      EMIT(MIR_Binary.create(PPC_SUBFIC, I(zero), one, IC(value)));      EMIT(MIR_Unary.create(PPC_SUBFZE, def, I(t)));      break;    default:      EMIT(BooleanCmp.create(BOOLEAN_CMP_INT, def, one, two, cmp, null)); // todo    }  }