asm.emitSTW   (S0, VM_Entrypoints.scratchStorageField.getOffset(), PROCESSOR_REGISTER);
asm.emitSTW   (S0, VM_Entrypoints.scratchStorageField.getOffsetAsInt(), PROCESSOR_REGISTER);
  protected final void emit_i2d() {    if (unreachableBytecode) return;    if (VM.BuildFor64Addr) {      // XXX CJH TODO:      if (VM.VerifyAssertions) VM._assert(NOT_REACHED);    } else {      assignRegisters(1, DOUBLE_TYPE);      asm.emitLFDtoc(SF0, VM_Entrypoints.IEEEmagicField.getOffset(), S0);// F0 is MAGIC      asm.emitSTFD  (SF0, VM_Entrypoints.scratchStorageField.getOffset(), PROCESSOR_REGISTER); // MAGIC in memory      asm.emitSTW   (sri0,  VM_Entrypoints.scratchStorageField.getOffset()+4, PROCESSOR_REGISTER); // if 0 <= X, MAGIC + X       asm.emitCMPI  (sri0,  0);                   // is X < 0      VM_ForwardReference fr1 = asm.emitForwardBC(GE);      // Now, handle X < 0      asm.emitLInt   (S0, VM_Entrypoints.scratchStorageField.getOffset(), PROCESSOR_REGISTER);// S0 is top of MAGIC      asm.emitADDI   (S0, -1, S0);               // decrement top of MAGIC      asm.emitSTW   (S0, VM_Entrypoints.scratchStorageField.getOffset(), PROCESSOR_REGISTER);  // MAGIC + X is in memory      fr1.resolve(asm);      asm.emitLFD   (sro0, VM_Entrypoints.scratchStorageField.getOffset(), PROCESSOR_REGISTER);  // output is MAGIC + X    //-#if RVM_WITH_QUICK_COMPILER_MOVE_ELIMINATION    if (resultIsStackRegister)      setRetargetable(returnValue, asm.getMachineCodeIndex());    //-#endif      asm.emitFSUB     (sro0, sro0, SF0);           // output is X      cleanupRegisters();    }  }