From 97beea196343817aef5bd56cfb733149e6bde4d2 Mon Sep 17 00:00:00 2001 From: Fiora Date: Thu, 14 Aug 2014 07:34:54 -0700 Subject: [PATCH] JIT: Don't needlessly flush register state in merged integer+branch code The actual branch code doesn't flush the register state, so it doesn't make much sense for the merged optimization to do so either. --- Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp b/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp index 0568b29a43..d374e2b7e8 100644 --- a/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp +++ b/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp @@ -339,13 +339,13 @@ void Jit64::cmpXX(UGeckoInstruction inst) { js.downcountAmount++; - gpr.Flush(); - fpr.Flush(); - int test_bit = 8 >> (js.next_inst.BI & 3); u8 conditionResult = (js.next_inst.BO & BO_BRANCH_IF_TRUE) ? test_bit : 0; if ((compareResult & test_bit) == conditionResult) { + gpr.Flush(); + fpr.Flush(); + if (js.next_inst.OPCD == 16) // bcx { if (js.next_inst.LK) @@ -430,8 +430,8 @@ void Jit64::cmpXX(UGeckoInstruction inst) // std::swap(destination1, destination2), condition = !condition; gpr.UnlockAll(); - gpr.Flush(); - fpr.Flush(); + gpr.Flush(FLUSH_MAINTAIN_STATE); + fpr.Flush(FLUSH_MAINTAIN_STATE); FixupBranch pDontBranch; if (test_bit & 8) pDontBranch = J_CC(condition ? CC_GE : CC_L); // Test < 0, so jump over if >= 0.