inst.insertBack(MIR_Load.create(PPC64_LWA, L(temp), L(FP), I(saveXERLocation))); inst.insertBack(MIR_Move.create(PPC_MTSPR, L(phys.getXER()), L(temp)));  inst.insertBack(MIR_Load.create(PPC64_LD, L(temp), L(FP), I(saveCTRLocation))); inst.insertBack(MIR_Move.create(PPC_MTSPR, L(phys.getCTR()), L(temp)));
  private void restoreVolatileRegisters(OPT_Instruction inst) {    OPT_PhysicalRegisterSet phys = ir.regpool.getPhysicalRegisterSet();    int nNonvolatileGPRS = ir.compiledMethod.getNumberOfNonvolatileGPRs();    // 1. restore the volatile GPRs    OPT_Register FP = phys.getFP();    int i = 0;    for (Enumeration e = phys.enumerateVolatileGPRs();         e.hasMoreElements(); i++) {      OPT_Register r = (OPT_Register)e.nextElement();      int location = saveVolatileGPRLocation[i];      inst.insertBefore(MIR_Load.create(PPC_LWZ, R(r), R(FP),I(location)));    }    // 2. restore the volatile FPRs    i = 0;    for (Enumeration e = phys.enumerateVolatileFPRs();         e.hasMoreElements(); i++) {      OPT_Register r = (OPT_Register)e.nextElement();      int location = saveVolatileFPRLocation[i];      inst.insertBefore(MIR_Load.create(PPC_LFD, D(r), R(FP),I(location)));    }    // 3. Restore some special registers    OPT_Register temp = phys.getTemp();    inst.insertBack(MIR_Load.create(PPC_LWZ, R(temp), R(FP), I(saveXERLocation)));    inst.insertBack(MIR_Move.create(PPC_MTSPR,                                 R(phys.getXER()), R(temp)));    inst.insertBack(MIR_Load.create(PPC_LWZ, R(temp), R(FP),                                     I(saveCTRLocation)));    inst.insertBack(MIR_Move.create(PPC_MTSPR,                                 R(phys.getCTR()), R(temp)));  }