From 27148d3712adbcc07c5896efec9b2a5cc5eb2e5e Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Sun, 16 Nov 2014 10:13:02 -0800 Subject: [PATCH] x86jit: Add some helpers to check state. --- Core/MIPS/x86/RegCacheFPU.cpp | 12 ++++++++++++ Core/MIPS/x86/RegCacheFPU.h | 11 +++++++++++ 2 files changed, 23 insertions(+) diff --git a/Core/MIPS/x86/RegCacheFPU.cpp b/Core/MIPS/x86/RegCacheFPU.cpp index dab9b032ec..3469487183 100644 --- a/Core/MIPS/x86/RegCacheFPU.cpp +++ b/Core/MIPS/x86/RegCacheFPU.cpp @@ -111,6 +111,18 @@ void FPURegCache::MapRegsV(const u8 *r, VectorSize sz, int flags) { } } +bool FPURegCache::IsMappedVS(u8 *r, VectorSize vsz) { + const int n = GetNumVectorElements(vsz); + if (!IsMappedVS(r[0])) + return false; + X64Reg xr = VSX(r[0]); + for (int i = 0; i < n; ++i) { + if (!IsMappedVS(r[i]) || VSX(r[i]) != xr) + return false; + } + return true; +} + void FPURegCache::MapRegsVS(const u8 *r, VectorSize vsz, int flags) { const int n = GetNumVectorElements(vsz); if (!TryMapRegsVS(r, vsz, flags)) { diff --git a/Core/MIPS/x86/RegCacheFPU.h b/Core/MIPS/x86/RegCacheFPU.h index b8ed0695dd..eb457b907c 100644 --- a/Core/MIPS/x86/RegCacheFPU.h +++ b/Core/MIPS/x86/RegCacheFPU.h @@ -162,6 +162,17 @@ public: void ReleaseSpillLock(int mipsrega); void ReleaseSpillLocks(); + bool IsMapped(int r) { + return R(r).IsSimpleReg(); + } + bool IsMappedV(int v) { + return vregs[v].lane == 0 && V(v).IsSimpleReg(); + } + bool IsMappedVS(int v) { + return vregs[v].lane != 0 && VS(v).IsSimpleReg(); + } + bool IsMappedVS(u8 *r, VectorSize vsz); + void MapRegV(int vreg, int flags); void MapRegsV(int vec, VectorSize vsz, int flags); void MapRegsV(const u8 *v, VectorSize vsz, int flags);