FPRRegisterParams = Math.min(FPRRegisterParams, phys.getNumberOfFPRParams());
FPRRegisterParams = Math.min(FPRRegisterParams, OPT_PhysicalRegisterSet.getNumberOfFPRParams());
  private static int expandParametersToSysCall(OPT_Instruction call, OPT_IR ir){    int nGPRParams = 0;    int nFPRParams = 0;    int parameterBytes = 0;    OPT_PhysicalRegisterSet phys = ir.regpool.getPhysicalRegisterSet();    OPT_Register ESP = phys.getESP();    // count the number FPR parameters in a pre-pass    int FPRRegisterParams= countFPRParams(call);    FPRRegisterParams = Math.min(FPRRegisterParams, phys.getNumberOfFPRParams());        // walk over the parameters in reverse order    // NOTE: All params to syscall are passed on the stack!    int numParams = MIR_Call.getNumberOfParams(call);     for (int i = numParams-1; i >=0;  i--) {      OPT_Operand param = MIR_Call.getClearParam(call,i);      MIR_Call.setParam(call,i,null);      VM_TypeReference paramType = param.getType();      if (paramType.isFloatType() || paramType.isDoubleType()) {        nFPRParams++;        int size = paramType.isFloatType() ? 4 : 8;        parameterBytes -= size;        OPT_Operand M =           new OPT_StackLocationOperand(false, parameterBytes, size);        call.insertBefore(MIR_Move.create(IA32_FMOV, M, param));      } else {        nGPRParams++;        parameterBytes -= 4;        call.insertBefore(MIR_UnaryNoRes.create(REQUIRE_ESP, IC(parameterBytes + 4)));        call.insertBefore(MIR_UnaryNoRes.create(IA32_PUSH, param));      }    }    return parameterBytes;  }