JitArm64: Track singles in fcmpX.

This commit is contained in:
degasus 2016-02-11 17:17:19 +01:00
parent c8948ff8c7
commit 5fad3d94a0
1 changed files with 7 additions and 3 deletions

View File

@ -196,8 +196,12 @@ void JitArm64::fcmpX(UGeckoInstruction inst)
u32 a = inst.FA, b = inst.FB;
int crf = inst.CRFD;
ARM64Reg VA = fpr.R(a, REG_IS_LOADED);
ARM64Reg VB = fpr.R(b, REG_IS_LOADED);
bool singles = fpr.IsSingle(a) && fpr.IsSingle(b);
RegType type = singles ? REG_IS_LOADED_SINGLE : REG_IS_LOADED;
ARM64Reg (*reg_encoder)(ARM64Reg) = singles ? EncodeRegToSingle : EncodeRegToDouble;
ARM64Reg VA = reg_encoder(fpr.R(a, type));
ARM64Reg VB = reg_encoder(fpr.R(b, type));
ARM64Reg WA = gpr.GetReg();
ARM64Reg XA = EncodeRegTo64(WA);
@ -206,7 +210,7 @@ void JitArm64::fcmpX(UGeckoInstruction inst)
FixupBranch continue1, continue2, continue3;
ORR(XA, ZR, 32, 0, true);
m_float_emit.FCMP(EncodeRegToDouble(VA), EncodeRegToDouble(VB));
m_float_emit.FCMP(VA, VB);
if (a != b)
{