EMIT(CPOS(s, MIR_Move.create(IA32_MOV, one, R(val1_reg)))); EMIT(CPOS(s, MIR_Move.create(IA32_MOV, lone, R(regpool.getSecondReg(val1_reg)))));
EMIT(CPOS(s, MIR_Move.create(IA32_MOV, one, new OPT_RegisterOperand(val1_reg, VM_TypeReference.Int)))); EMIT(CPOS(s, MIR_Move.create(IA32_MOV, lone, new OPT_RegisterOperand(regpool.getSecondReg(val1_reg), VM_TypeReference.Int))));
  protected final void LCMP_CMOV(OPT_Instruction s,											OPT_RegisterOperand result,											OPT_Operand val1,											OPT_Operand val2,											OPT_ConditionOperand cond,											OPT_Operand trueValue,											OPT_Operand falseValue) {	 // Long comparison is a subtraction:	 // <, >= : easy to compute as SF !=/== OF	 // >, <= : flipOperands and treat as a </>=	 // ==/!= : do subtract then OR 2 32-bit quantities test for zero/non-zero	 if(cond.isGREATER() || cond.isLESS_EQUAL()){		OPT_Operand swap_temp;		cond.flipOperands();		swap_temp = val1;		val1 = val2;		val2 = swap_temp;	 }	 if (VM.VerifyAssertions){		VM._assert(cond.isEQUAL() || cond.isNOT_EQUAL() || cond.isLESS() || cond.isGREATER_EQUAL());	 }	 OPT_RegisterOperand one = regpool.makeTempInt();	 OPT_RegisterOperand lone = regpool.makeTempInt();    OPT_Operand two, ltwo;    if (val1 instanceof OPT_RegisterOperand) {		OPT_Register val1_reg = val1.asRegister().register;		EMIT(CPOS(s, MIR_Move.create(IA32_MOV, one, R(val1_reg))));		EMIT(CPOS(s, MIR_Move.create(IA32_MOV, lone, R(regpool.getSecondReg(val1_reg)))));    } else {      OPT_LongConstantOperand tmp = (OPT_LongConstantOperand)val1;		EMIT(CPOS(s, MIR_Move.create(IA32_MOV, one, IC(tmp.upper32()))));		EMIT(CPOS(s, MIR_Move.create(IA32_MOV, lone, IC(tmp.lower32()))));    }    if (val2 instanceof OPT_RegisterOperand) {		two = val2;      ltwo = L(burs.ir.regpool.getSecondReg(val2.asRegister().register));    } else {      OPT_LongConstantOperand tmp = (OPT_LongConstantOperand)val2;      two = IC(tmp.upper32());      ltwo = IC(tmp.lower32());    }	 if (cond.isEQUAL() || cond.isNOT_EQUAL()) {		EMIT(CPOS(s,MIR_BinaryAcc.create(IA32_SUB, lone.copyRO(), ltwo)));		EMIT(CPOS(s,MIR_BinaryAcc.create(IA32_SBB, one.copyRO(), two)));		EMIT(CPOS(s, MIR_BinaryAcc.create(IA32_OR, one.copyRO(), lone.copyRO())));	 }	 else {		EMIT(CPOS(s,MIR_Compare.create(IA32_CMP, lone.copyRO(), ltwo)));		EMIT(CPOS(s,MIR_BinaryAcc.create(IA32_SBB, one.copyRO(), two)));	 }	 CMOV_MOV(s, result, cond, trueValue, falseValue);  }