From e63f7c01a32c6088bd67d3e934bba6328d6622f1 Mon Sep 17 00:00:00 2001 From: Zhuowei Zhang Date: Sun, 7 Sep 2014 13:21:29 -0400 Subject: [PATCH] Fix twi/tw instructions being switched in Jit64 and JitArm; downgrade the ERROR_LOG printed when tw is ran in the interpreter to DEBUG --- .../Core/Core/PowerPC/Interpreter/Interpreter_Integer.cpp | 2 +- Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp | 4 ++-- Source/Core/Core/PowerPC/JitArm32/JitArm_Integer.cpp | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Source/Core/Core/PowerPC/Interpreter/Interpreter_Integer.cpp b/Source/Core/Core/PowerPC/Interpreter/Interpreter_Integer.cpp index 35ecb9f810..555cd7e54b 100644 --- a/Source/Core/Core/PowerPC/Interpreter/Interpreter_Integer.cpp +++ b/Source/Core/Core/PowerPC/Interpreter/Interpreter_Integer.cpp @@ -413,7 +413,7 @@ void Interpreter::tw(UGeckoInstruction _inst) s32 b = m_GPR[_inst.RB]; s32 TO = _inst.TO; - ERROR_LOG(POWERPC, "tw rA %0x rB %0x TO %0x", a, b, TO); + DEBUG_LOG(POWERPC, "tw rA %0x rB %0x TO %0x", a, b, TO); if (((a < b) && (TO & 0x10)) || ((a > b) && (TO & 0x08)) || diff --git a/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp b/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp index 0909559f7f..b5f97742a6 100644 --- a/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp +++ b/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp @@ -2000,9 +2000,9 @@ void Jit64::twx(UGeckoInstruction inst) gpr.KillImmediate(a, true, false); if (inst.OPCD == 3) // twi - CMP(32, gpr.R(a), gpr.R(inst.RB)); - else // tw CMP(32, gpr.R(a), Imm32((s32)(s16)inst.SIMM_16)); + else // tw + CMP(32, gpr.R(a), gpr.R(inst.RB)); std::vector fixups; CCFlags conditions[] = { CC_A, CC_B, CC_E, CC_G, CC_L }; diff --git a/Source/Core/Core/PowerPC/JitArm32/JitArm_Integer.cpp b/Source/Core/Core/PowerPC/JitArm32/JitArm_Integer.cpp index 6e6bdb3b36..0c181c7f07 100644 --- a/Source/Core/Core/PowerPC/JitArm32/JitArm_Integer.cpp +++ b/Source/Core/Core/PowerPC/JitArm32/JitArm_Integer.cpp @@ -915,12 +915,12 @@ void JitArm::twx(UGeckoInstruction inst) if (inst.OPCD == 3) // twi { - CMP(gpr.R(a), gpr.R(inst.RB)); + MOVI2R(RB, (s32)(s16)inst.SIMM_16); + CMP(gpr.R(a), RB); } else // tw { - MOVI2R(RB, (s32)(s16)inst.SIMM_16); - CMP(gpr.R(a), RB); + CMP(gpr.R(a), gpr.R(inst.RB)); } FixupBranch al = B_CC(CC_LT);