inst.insertBack(MIR_Store.create(PPC_STFD, D(nv), L(FP),I(offset)));
  private void saveNonVolatiles(OPT_Instruction inst) {    OPT_PhysicalRegisterSet phys = ir.regpool.getPhysicalRegisterSet();    int nNonvolatileGPRS = ir.compiledMethod.getNumberOfNonvolatileGPRs();    if (ir.compiledMethod.isSaveVolatile()) {      // pretend we use all non-volatiles      nNonvolatileGPRS = phys.getNumberOfNonvolatileGPRs();    }    // 1. save the nonvolatile GPRs    int n = nNonvolatileGPRS - 1;    OPT_Register FP = phys.getFP();    if (n <= MULTIPLE_CUTOFF) {      // use a sequence of load instructions      for (Enumeration e = phys.enumerateNonvolatileGPRsBackwards();            e.hasMoreElements() && n >= 0 ; n--) {        OPT_Register nv = (OPT_Register)e.nextElement();        int offset = getNonvolatileGPROffset(n);        inst.insertBack(MIR_Store.create (PPC_STW, R(nv), R(FP), I(offset)));      }    } else {      // use a stm      OPT_Register nv = null;      for (Enumeration e = phys.enumerateNonvolatileGPRsBackwards();            e.hasMoreElements() && n >= 0 ; n--) {        nv = (OPT_Register)e.nextElement();      }      n++;      OPT_RegisterOperand range = R(nv);      // YUCK!!! Why is this crap in register operand??      range.setRange(FIRST_INT + LAST_NONVOLATILE_GPR - nv.number);      int offset = getNonvolatileGPROffset(n);      inst.insertBack(MIR_Store.create(PPC_STMW, range, R(FP), I(offset)));    }    // 1. save the nonvolatile FPRs    if (ir.compiledMethod.isSaveVolatile()) {      // DANGER: as an optimization, we assume that a SaveVolatile method      // will never use nonvolatile FPRs.      // this invariant is not checked!!!!!      // TODO: We really need some way to verify that this is true.    } else {      int nNonvolatileFPRS = ir.compiledMethod.getNumberOfNonvolatileFPRs();      n = nNonvolatileFPRS - 1;      // use a sequence of load instructions      for (Enumeration e = phys.enumerateNonvolatileFPRsBackwards();          e.hasMoreElements() && n >= 0 ; n--) {        OPT_Register nv = (OPT_Register)e.nextElement();        int offset = getNonvolatileFPROffset(n);        inst.insertBack(MIR_Store.create(PPC_STFD, D(nv), R(FP),I(offset)));      }    }  }