Jit64: Fix minor fmaddXX inefficiencies

This commit is contained in:
JosJuice 2021-07-29 12:27:31 +02:00
parent 93e636abc3
commit 08b358a829
1 changed files with 5 additions and 9 deletions

View File

@ -421,7 +421,7 @@ void Jit64::fmaddXX(UGeckoInstruction inst)
} }
else else
{ {
if (single && round_input) if (round_input)
Force25BitPrecision(result_xmm, Rc, scratch_xmm); Force25BitPrecision(result_xmm, Rc, scratch_xmm);
else else
MOVAPD(result_xmm, Rc); MOVAPD(result_xmm, Rc);
@ -475,20 +475,16 @@ void Jit64::fmaddXX(UGeckoInstruction inst)
if (SConfig::GetInstance().bAccurateNaNs && result_xmm == XMM0) if (SConfig::GetInstance().bAccurateNaNs && result_xmm == XMM0)
{ {
// HandleNaNs needs to clobber XMM0 // HandleNaNs needs to clobber XMM0
MOVAPD(XMM1, R(result_xmm)); MOVAPD(Rd, R(result_xmm));
result_xmm = XMM1; result_xmm = Rd;
} }
HandleNaNs(inst, result_xmm, result_xmm, XMM0);
if (single) if (single)
{
HandleNaNs(inst, result_xmm, result_xmm, XMM0);
FinalizeSingleResult(Rd, R(result_xmm), packed, true); FinalizeSingleResult(Rd, R(result_xmm), packed, true);
}
else else
{
HandleNaNs(inst, result_xmm, result_xmm, XMM0);
FinalizeDoubleResult(Rd, R(result_xmm)); FinalizeDoubleResult(Rd, R(result_xmm));
}
} }
void Jit64::fsign(UGeckoInstruction inst) void Jit64::fsign(UGeckoInstruction inst)