From 69c3e6516c2928ae8d93c7060d95a60175424b25 Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Fri, 14 Nov 2014 15:12:25 +0000 Subject: [PATCH] Disables NEON optimized instructions. These are causing issues in games. In particular you get pink on the screen in Animal Crossing. Disable until fully investigated. This also disables fastmem on floating point loadstore instructions which are horribly broken and won't actually backpatch when an invalid read/write is encountered. --- Source/Core/Core/PowerPC/JitArm32/JitArm_FloatingPoint.cpp | 5 +++++ .../Core/Core/PowerPC/JitArm32/JitArm_LoadStoreFloating.cpp | 5 +++-- Source/Core/Core/PowerPC/JitArm32/JitArm_Paired.cpp | 2 ++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Source/Core/Core/PowerPC/JitArm32/JitArm_FloatingPoint.cpp b/Source/Core/Core/PowerPC/JitArm32/JitArm_FloatingPoint.cpp index af266e5c98..41a11a10c2 100644 --- a/Source/Core/Core/PowerPC/JitArm32/JitArm_FloatingPoint.cpp +++ b/Source/Core/Core/PowerPC/JitArm32/JitArm_FloatingPoint.cpp @@ -27,6 +27,7 @@ void JitArm::fctiwx(UGeckoInstruction inst) { INSTRUCTION_START JITDISABLE(bJITFloatingPointOff); + FALLBACK_IF(true); u32 b = inst.FB; u32 d = inst.FD; @@ -134,6 +135,8 @@ void JitArm::fctiwzx(UGeckoInstruction inst) { INSTRUCTION_START JITDISABLE(bJITFloatingPointOff); + FALLBACK_IF(true); + u32 b = inst.FB; u32 d = inst.FD; @@ -493,6 +496,8 @@ void JitArm::frsqrtex(UGeckoInstruction inst) { INSTRUCTION_START JITDISABLE(bJITPairedOff); + FALLBACK_IF(true); + FALLBACK_IF(inst.Rc); u32 b = inst.FB, d = inst.FD; diff --git a/Source/Core/Core/PowerPC/JitArm32/JitArm_LoadStoreFloating.cpp b/Source/Core/Core/PowerPC/JitArm32/JitArm_LoadStoreFloating.cpp index f54b8ed635..e9588b1c62 100644 --- a/Source/Core/Core/PowerPC/JitArm32/JitArm_LoadStoreFloating.cpp +++ b/Source/Core/Core/PowerPC/JitArm32/JitArm_LoadStoreFloating.cpp @@ -134,7 +134,7 @@ void JitArm::lfXX(UGeckoInstruction inst) if (update) MOV(RA, rB); - if (SConfig::GetInstance().m_LocalCoreStartupParameter.bFastmem) + if (false) { Operand2 mask(2, 1); // ~(Memory::MEMVIEW32_MASK) BIC(rB, rB, mask); // 1 @@ -301,7 +301,8 @@ void JitArm::stfXX(UGeckoInstruction inst) MOV(RA, rB); SetCC(); } - if (SConfig::GetInstance().m_LocalCoreStartupParameter.bFastmem) + + if (false) { Operand2 mask(2, 1); // ~(Memory::MEMVIEW32_MASK) BIC(rB, rB, mask); // 1 diff --git a/Source/Core/Core/PowerPC/JitArm32/JitArm_Paired.cpp b/Source/Core/Core/PowerPC/JitArm32/JitArm_Paired.cpp index cd4a28cd00..eeeb743f69 100644 --- a/Source/Core/Core/PowerPC/JitArm32/JitArm_Paired.cpp +++ b/Source/Core/Core/PowerPC/JitArm32/JitArm_Paired.cpp @@ -21,6 +21,8 @@ void JitArm::ps_rsqrte(UGeckoInstruction inst) { INSTRUCTION_START JITDISABLE(bJITPairedOff); + FALLBACK_IF(true); + FALLBACK_IF(inst.Rc); u32 b = inst.FB, d = inst.FD;