From 5f6f8ac0a2637ebce15940340aaf6b39f8ce0be8 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Wed, 31 Dec 2014 22:43:31 -0800 Subject: [PATCH] x86jit: Fix another sequential detect problem. Arg. Maybe should use voffset after all, but it won't fit in a u8 anyway... --- Core/MIPS/x86/Jit.cpp | 3 +-- Core/MIPS/x86/RegCacheFPU.cpp | 7 +++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Core/MIPS/x86/Jit.cpp b/Core/MIPS/x86/Jit.cpp index 9cde7c98f3..53b71334b5 100644 --- a/Core/MIPS/x86/Jit.cpp +++ b/Core/MIPS/x86/Jit.cpp @@ -121,8 +121,7 @@ JitOptions::JitOptions() continueBranches = false; continueJumps = false; continueMaxInstructions = 300; - // TODO: breaks something in Monhun Nikki Poka Poka Ailu Mura G (see #7245.) - enableVFPUSIMD = false; + enableVFPUSIMD = true; // Set by Asm if needed. reserveR15ForAsm = false; } diff --git a/Core/MIPS/x86/RegCacheFPU.cpp b/Core/MIPS/x86/RegCacheFPU.cpp index 84a4c765bc..cf8b2a49cc 100644 --- a/Core/MIPS/x86/RegCacheFPU.cpp +++ b/Core/MIPS/x86/RegCacheFPU.cpp @@ -332,14 +332,17 @@ X64Reg FPURegCache::LoadRegsVS(const u8 *v, int n) { // Let's also check if the memory addresses are sequential. int sequential = 1; for (int i = 1; i < n; ++i) { - if (v[i] < 128) { + if (v[i] < 128 && v[i - 1] < 128) { if (voffset[v[i]] != voffset[v[i - 1]] + 1) { break; } - } else { + } else if (v[i] >= 128 && v[i - 1] >= 128) { if (v[i] != v[i - 1] + 1) { break; } + } else { + // Temps can't be sequential with non-temps. + break; } ++sequential; }