From b9506c9568e535b3b52b564f1ffc932a358d859c Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Thu, 14 Feb 2013 23:47:03 -0800 Subject: [PATCH] Minor cleanup for vdot in x86 jit. --- Core/MIPS/x86/CompVFPU.cpp | 7 ++++++- Core/MIPS/x86/Jit.h | 11 +++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/Core/MIPS/x86/CompVFPU.cpp b/Core/MIPS/x86/CompVFPU.cpp index 5ef039b99f..a0698aee82 100644 --- a/Core/MIPS/x86/CompVFPU.cpp +++ b/Core/MIPS/x86/CompVFPU.cpp @@ -288,7 +288,13 @@ void Jit::Comp_SVQ(u32 op) void Jit::Comp_VDot(u32 op) { DISABLE; + // WARNING: No prefix support! + if (js.MayHavePrefix()) { + Comp_Generic(op); + js.EatPrefix(); + return; + } int vd = _VD; int vs = _VS; @@ -306,7 +312,6 @@ void Jit::Comp_VDot(u32 op) { MOVSS(XMM0, fpr.V(sregs[0])); MULSS(XMM0, fpr.V(tregs[0])); - float sum = 0.0f; int n = GetNumVectorElements(sz); for (int i = 1; i < n; i++) { diff --git a/Core/MIPS/x86/Jit.h b/Core/MIPS/x86/Jit.h index 080375ba7b..b452f9ad97 100644 --- a/Core/MIPS/x86/Jit.h +++ b/Core/MIPS/x86/Jit.h @@ -78,6 +78,17 @@ struct JitState prefixTFlag = PREFIX_UNKNOWN; prefixDFlag = PREFIX_UNKNOWN; } + bool MayHavePrefix() const { + if (!(prefixSFlag & PREFIX_KNOWN) || !(prefixTFlag & PREFIX_KNOWN) || !(prefixDFlag & PREFIX_KNOWN)) { + return true; + } else if (prefixS != 0xE4 || prefixT != 0xE4 || prefixD != 0) { + return true; + } else if (writeMask[0] || writeMask[1] || writeMask[2] || writeMask[3]) { + return true; + } + + return false; + } void EatPrefix() { if ((prefixSFlag & PREFIX_KNOWN) == 0 || prefixS != 0xE4) { prefixSFlag = PREFIX_KNOWN_DIRTY;