From 246eaeb209fa6708a14bba7c4ce7eff973bab144 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Wed, 19 Mar 2014 22:08:02 -0700 Subject: [PATCH] x86jit: Avoid mem temp for float cmp/loads. --- Core/MIPS/x86/CompFPU.cpp | 10 ++-------- Core/MIPS/x86/CompVFPU.cpp | 6 ++---- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/Core/MIPS/x86/CompFPU.cpp b/Core/MIPS/x86/CompFPU.cpp index abc8a1c520..251f2ca7f9 100644 --- a/Core/MIPS/x86/CompFPU.cpp +++ b/Core/MIPS/x86/CompFPU.cpp @@ -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(¤tMIPS->fpcond), R(EAX)); } } diff --git a/Core/MIPS/x86/CompVFPU.cpp b/Core/MIPS/x86/CompVFPU.cpp index 1e5e3932b8..15e999e4d8 100644 --- a/Core/MIPS/x86/CompVFPU.cpp +++ b/Core/MIPS/x86/CompVFPU.cpp @@ -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();