Jit_FloatingPoint: FloatCompare
This commit is contained in:
parent
55c21a15a2
commit
457327cbc4
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue