x86jit: Avoid mem temp for float cmp/loads.

This commit is contained in:
Unknown W. Brackets 2014-03-19 22:08:02 -07:00
parent b53143bb33
commit 246eaeb209
2 changed files with 4 additions and 12 deletions

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));
}
}

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();