EMIT(MIR_CondMove.mutate(s, IA32_FCMOV, result.copy(),
EMIT(MIR_CondMove.mutate(s, IA32_FCMOV, result.copyRO(),
  protected final void CMOV_FMOV(OPT_Instruction s,                                OPT_RegisterOperand result,                                OPT_ConditionOperand cond,                                OPT_Operand trueValue,                                OPT_Operand falseValue) {    if (result.similar(trueValue)) {      // in this case, only need a conditional move for the false branch.      EMIT(MIR_CondMove.mutate(s, IA32_FCMOV, result,                                      asReg(s, IA32_FMOV, falseValue),                                      COND(cond.flipCode())));    } else if (result.similar(falseValue)) {      // in this case, only need a conditional move for the true branch.      EMIT(MIR_CondMove.mutate(s, IA32_FCMOV, result,                                       asReg(s, IA32_FMOV, trueValue),                                      COND(cond)));    } else {      // need to handle both possible assignments. Unconditionally      // assign one value then conditionally assign the other.      if (falseValue.isRegister()) {        EMIT(CPOS(s,MIR_Move.create(IA32_FMOV, result, trueValue)));        EMIT(MIR_CondMove.mutate(s, IA32_FCMOV, result.copy(),                                         falseValue,                                        COND(cond.flipCode())));      } else {        EMIT(CPOS(s,MIR_Move.create(IA32_FMOV, result, falseValue)));        EMIT(MIR_CondMove.mutate(s, IA32_FCMOV, result.copy(),                                         asReg(s, IA32_FMOV, trueValue),                                        COND(cond)));      }    }  }