x86jit: Avoid mem temp for float cmp/loads.

This commit is contained in:
Unknown W. Brackets committed 2014-03-22 15:56:28 -07:00
1 parent b53143bb33
commit 246eaeb209
2 files changed
+4 -12

No files matched your search

+2 -8
View File
@@ -113,10 +113,7 @@ void Jit::Comp_FPULS(MIPSOpcode op)
if (safe.PrepareRead(src, 4))
MOVSS(fpr.RX(ft), src);
if (safe.PrepareSlowRead(&Memory::Read_U32))
{
MOV(32, M(&ssLoadStoreTemp), R(EAX));
MOVSS(fpr.RX(ft), M(&ssLoadStoreTemp));
}
MOVD_xmm(fpr.RX(ft), R(EAX));
safe.Finish();
gpr.UnlockAll();
@@ -155,8 +152,6 @@ static const u64 MEMORY_ALIGNED16(ssOneBits[2]) = {0x0000000100000001ULL, 0x0000
static const u64 MEMORY_ALIGNED16(ssSignBits2[2]) = {0x8000000080000000ULL, 0x8000000080000000ULL};
static const u64 MEMORY_ALIGNED16(ssNoSignMask[2]) = {0x7FFFFFFF7FFFFFFFULL, 0x7FFFFFFF7FFFFFFFULL};
static u32 ssCompareTemp;
void Jit::CompFPComp(int lhs, int rhs, u8 compare, bool allowNaN)
{
MOVSS(XMM0, fpr.R(lhs));
@@ -168,9 +163,8 @@ void Jit::CompFPComp(int lhs, int rhs, u8 compare, bool allowNaN)
{
MOVSS(XMM0, fpr.R(lhs));
CMPUNORDSS(XMM0, fpr.R(rhs));
MOVSS(M(&ssCompareTemp), XMM0);
MOV(32, R(EAX), M(&ssCompareTemp));
MOVD_xmm(R(EAX), XMM0);
OR(32, M(&currentMIPS->fpcond), R(EAX));
}
}
+2 -4
View File
@@ -226,8 +226,7 @@ void Jit::Comp_SV(MIPSOpcode op) {
}
if (safe.PrepareSlowRead(&Memory::Read_U32))
{
MOV(32, M(&ssLoadStoreTemp), R(EAX));
MOVSS(fpr.VX(vt), M(&ssLoadStoreTemp));
MOVD_xmm(fpr.VX(vt), R(EAX));
}
safe.Finish();
@@ -366,8 +365,7 @@ void Jit::Comp_SVQ(MIPSOpcode op)
for (int i = 0; i < 4; i++)
{
safe.NextSlowRead(&Memory::Read_U32, i * 4);
MOV(32, M(&ssLoadStoreTemp), R(EAX));
MOVSS(fpr.VX(vregs[i]), M(&ssLoadStoreTemp));
MOVD_xmm(fpr.VX(vregs[i]), R(EAX));
}
}
safe.Finish();