From ba39c35f246c5f95320f16a57bd84eed2181960a Mon Sep 17 00:00:00 2001 From: Fiora Date: Thu, 25 Sep 2014 22:33:40 -0700 Subject: [PATCH] JIT: fix branch merging, take 2 NOT doesn't set flags. --- Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp b/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp index 065b2cd65c..4136a89621 100644 --- a/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp +++ b/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp @@ -612,6 +612,7 @@ void Jit64::boolX(UGeckoInstruction inst) gpr.KillImmediate(a, true, true); } NOT(32, gpr.R(a)); + needs_test = true; } else if ((inst.SUBOP10 == 412 /* orcx */) || (inst.SUBOP10 == 284 /* eqvx */)) { @@ -640,6 +641,7 @@ void Jit64::boolX(UGeckoInstruction inst) { AND(32, gpr.R(a), operand); NOT(32, gpr.R(a)); + needs_test = true; } else if (inst.SUBOP10 == 60) // andcx { @@ -663,6 +665,7 @@ void Jit64::boolX(UGeckoInstruction inst) { OR(32, gpr.R(a), operand); NOT(32, gpr.R(a)); + needs_test = true; } else if (inst.SUBOP10 == 412) // orcx { @@ -707,6 +710,7 @@ void Jit64::boolX(UGeckoInstruction inst) MOV(32, gpr.R(a), gpr.R(s)); AND(32, gpr.R(a), gpr.R(b)); NOT(32, gpr.R(a)); + needs_test = true; } else if (inst.SUBOP10 == 60) // andcx { @@ -724,6 +728,7 @@ void Jit64::boolX(UGeckoInstruction inst) MOV(32, gpr.R(a), gpr.R(s)); OR(32, gpr.R(a), gpr.R(b)); NOT(32, gpr.R(a)); + needs_test = true; } else if (inst.SUBOP10 == 412) // orcx {