Jit_FloatingPoint: FloatCompare

This commit is contained in:
MerryMage 2018-10-15 21:02:00 +01:00
parent 55c21a15a2
commit 457327cbc4
1 changed files with 6 additions and 7 deletions

View File

@ -508,22 +508,22 @@ void Jit64::FloatCompare(UGeckoInstruction inst, bool upper)
output[3 - (next.CRBB & 3)] |= 1 << dst; output[3 - (next.CRBB & 3)] |= 1 << dst;
} }
fpr.Lock(a, b); RCOpArg Ra = upper ? fpr.Bind(a, RCMode::Read) : fpr.Use(a, RCMode::Read);
fpr.BindToRegister(b, true, false); RCX64Reg Rb = fpr.Bind(b, RCMode::Read);
RegCache::Realize(Ra, Rb);
if (fprf) if (fprf)
AND(32, PPCSTATE(fpscr), Imm32(~FPRF_MASK)); AND(32, PPCSTATE(fpscr), Imm32(~FPRF_MASK));
if (upper) if (upper)
{ {
fpr.BindToRegister(a, true, false); MOVHLPS(XMM0, Ra.GetSimpleReg());
MOVHLPS(XMM0, fpr.RX(a)); MOVHLPS(XMM1, Rb);
MOVHLPS(XMM1, fpr.RX(b));
UCOMISD(XMM1, R(XMM0)); UCOMISD(XMM1, R(XMM0));
} }
else else
{ {
UCOMISD(fpr.RX(b), fpr.R(a)); UCOMISD(Rb, Ra);
} }
FixupBranch pNaN, pLesser, pGreater; FixupBranch pNaN, pLesser, pGreater;
@ -580,7 +580,6 @@ void Jit64::FloatCompare(UGeckoInstruction inst, bool upper)
} }
MOV(64, PPCSTATE(cr_val[crf]), R(RSCRATCH)); MOV(64, PPCSTATE(cr_val[crf]), R(RSCRATCH));
fpr.UnlockAll();
} }
void Jit64::fcmpX(UGeckoInstruction inst) void Jit64::fcmpX(UGeckoInstruction inst)