int i = phys.getFPRIndex(result.asRegister().register);
int i = OPT_PhysicalRegisterSet.getFPRIndex(result.asRegister().register);
  private static void expandFmov(OPT_Instruction s,                                  OPT_PhysicalRegisterSet phys) {    OPT_Operand result = MIR_Move.getResult(s);     OPT_Operand value = MIR_Move.getValue(s);     if (result.isRegister() && value.isRegister()) {      if (result.similar(value)) {        // eliminate useless move        s.remove();       } else {         int i = phys.getFPRIndex(result.asRegister().register);           int j = phys.getFPRIndex(value.asRegister().register);           if (j == 0) {          // We have FMOV Fi, F0          // Expand as:          //        FST F(i)  (copy F0 to F(i))          MIR_Move.mutate(s,IA32_FST,D(phys.getFPR(i)),D(phys.getFPR(0)));        } else {          // We have FMOV Fi, Fj          // Expand as:          //        FLD Fj  (push Fj on FP stack).          //        FSTP F(i+1)  (copy F0 to F(i+1) and then pop register stack)          s.insertBefore(MIR_Move.create(IA32_FLD,D(phys.getFPR(0)),value));          MIR_Move.mutate(s,IA32_FSTP,D(phys.getFPR(i+1)),D(phys.getFPR(0)));        }      }    } else if (value instanceof OPT_MemoryOperand) {      if (result instanceof OPT_MemoryOperand) {        // We have FMOV M1, M2        // Expand as:        //        FLD M1   (push M1 on FP stack).        //        FSTP M2  (copy F0 to M2 and pop register stack)        s.insertBefore(MIR_Move.create(IA32_FLD,D(phys.getFPR(0)),value));        MIR_Move.mutate(s,IA32_FSTP,result,D(phys.getFPR(0)));      } else {        // We have FMOV Fi, M        // Expand as:        //        FLD M    (push M on FP stack).        //        FSTP F(i+1)  (copy F0 to F(i+1) and pop register stack)        if (VM.VerifyAssertions) VM._assert(result.isRegister());        int i = phys.getFPRIndex(result.asRegister().register);           s.insertBefore(MIR_Move.create(IA32_FLD,D(phys.getFPR(0)),value));        MIR_Move.mutate(s,IA32_FSTP,D(phys.getFPR(i+1)),D(phys.getFPR(0)));      }    } else {      // We have FMOV M, Fi      if (VM.VerifyAssertions) VM._assert(value.isRegister());      if (VM.VerifyAssertions)         VM._assert(result instanceof OPT_MemoryOperand);      int i = phys.getFPRIndex(value.asRegister().register);         if (i!=0) {        // Expand as:        //        FLD Fi    (push Fi on FP stack).        //        FSTP M    (store F0 in M and pop register stack);        s.insertBefore(MIR_Move.create(IA32_FLD,D(phys.getFPR(0)),value));        MIR_Move.mutate(s,IA32_FSTP,result,D(phys.getFPR(0)));      } else {        // Expand as:        //        FST M    (store F0 in M);        MIR_Move.mutate(s,IA32_FST,result,value);      }    }  }