From 7702771d61dd9cc5ce507a2d1da2ebb765e4d1a0 Mon Sep 17 00:00:00 2001 From: Tillmann Karras Date: Tue, 6 Jun 2017 11:05:33 +0100 Subject: [PATCH] Interpreter: simplify srawx/srawix This also avoids -Wint-in-bool-context warnings in GCC 7. --- .../Interpreter/Interpreter_Integer.cpp | 34 ++++--------------- 1 file changed, 6 insertions(+), 28 deletions(-) diff --git a/Source/Core/Core/PowerPC/Interpreter/Interpreter_Integer.cpp b/Source/Core/Core/PowerPC/Interpreter/Interpreter_Integer.cpp index f49ced547e..406814ac77 100644 --- a/Source/Core/Core/PowerPC/Interpreter/Interpreter_Integer.cpp +++ b/Source/Core/Core/PowerPC/Interpreter/Interpreter_Integer.cpp @@ -356,21 +356,10 @@ void Interpreter::srawx(UGeckoInstruction inst) else { int amount = rb & 0x1f; - if (amount == 0) - { - rGPR[inst.RA] = rGPR[inst.RS]; - SetCarry(0); - } - else - { - s32 rrs = rGPR[inst.RS]; - rGPR[inst.RA] = rrs >> amount; + s32 rrs = rGPR[inst.RS]; + rGPR[inst.RA] = rrs >> amount; - if ((rrs < 0) && (rrs << (32 - amount))) - SetCarry(1); - else - SetCarry(0); - } + SetCarry(rrs < 0 && (u32(rrs) << (32 - amount)) != 0); } if (inst.Rc) @@ -381,21 +370,10 @@ void Interpreter::srawix(UGeckoInstruction inst) { int amount = inst.SH; - if (amount != 0) - { - s32 rrs = rGPR[inst.RS]; - rGPR[inst.RA] = rrs >> amount; + s32 rrs = rGPR[inst.RS]; + rGPR[inst.RA] = rrs >> amount; - if ((rrs < 0) && (rrs << (32 - amount))) - SetCarry(1); - else - SetCarry(0); - } - else - { - SetCarry(0); - rGPR[inst.RA] = rGPR[inst.RS]; - } + SetCarry(rrs < 0 && (u32(rrs) << (32 - amount)) != 0); if (inst.Rc) Helper_UpdateCR0(rGPR[inst.RA]);