diff options
| author | Tillmann Karras <tilkax@gmail.com> | 2017-06-06 11:05:33 +0100 |
|---|---|---|
| committer | Tillmann Karras <tilkax@gmail.com> | 2017-06-06 11:05:33 +0100 |
| commit | 7702771d61dd9cc5ce507a2d1da2ebb765e4d1a0 (patch) | |
| tree | ec23634b01fa7cd29e2d560c7511056ee9e13cd7 /Source | |
| parent | 1113b131f209c6b0c8095c4c8155371ae2cb9de9 (diff) | |
Interpreter: simplify srawx/srawix
This also avoids -Wint-in-bool-context warnings in GCC 7.
Diffstat (limited to 'Source')
| -rw-r--r-- | Source/Core/Core/PowerPC/Interpreter/Interpreter_Integer.cpp | 34 |
1 files 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]); |
