long value = left.value; int bytes01 = (int) (value & 0x000000000000ffffL); int bytes23 = (int) ((value & 0x00000000ffff0000L) >>> 16); int bytes45 = (int) ((value & 0x0000ffff00000000L) >>> 32); int bytes67 = (int) ((value & 0xffff000000000000L) >>> 48);  OPT_Register register = def.register; OPT_Register temp1 = regpool.getLong(); if (fits(value, 16)){ EMIT(MIR_Unary.create(PPC_LDI, R(register), I(bytes01))); } else if (fits(value, 32)) { EMIT(MIR_Unary.create(PPC_LDIS, R(register), I(bytes23))); if (bytes01 != 0) EMIT(MIR_Binary.create(PPC_ORI, R(register), R(register), I(bytes01))); } else if (fits(value, 48)) { EMIT(MIR_Unary.create(PPC_LDI, R(register), I(bytes45))); EMIT(MIR_Binary.create(PPC64_SLDI, R(register), R(register), I(32))); if (bytes23 != 0) EMIT(MIR_Binary.create(PPC_ORIS, R(register), R(register), I(bytes23))); if (bytes01 != 0) EMIT(MIR_Binary.create(PPC_ORI, R(register), R(register), I(bytes01))); } else { EMIT(MIR_Unary.create(PPC_LDIS, R(register), I(bytes67))); if (bytes45 != 0) EMIT(MIR_Binary.create(PPC_ORI, R(register), R(register), I(bytes45))); EMIT(MIR_Binary.create(PPC64_SLDI, R(register), R(register), I(32))); if (bytes23 != 0) EMIT(MIR_Binary.create(PPC_ORIS, R(register), R(register), I(bytes23))); if (bytes01 != 0) EMIT(MIR_Binary.create(PPC_ORI, R(register), R(register), I(bytes01))); }
  protected final void LONG_CONSTANT(OPT_Instruction s,                                      OPT_RegisterOperand def,                                      OPT_LongConstantOperand left) {    long value = left.value;    int valueHigh = (int)(value >> 32);    int valueLow = (int)(value & 0xffffffff);    OPT_Register register = def.register;    IntConstant(register, valueHigh);    IntConstant(regpool.getSecondReg(register), valueLow);  }