diff options
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/Core/Src/PowerPC/Jit64/Jit_Integer.cpp | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/Source/Core/Core/Src/PowerPC/Jit64/Jit_Integer.cpp b/Source/Core/Core/Src/PowerPC/Jit64/Jit_Integer.cpp index 885a2d44d6..1920703474 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64/Jit_Integer.cpp +++ b/Source/Core/Core/Src/PowerPC/Jit64/Jit_Integer.cpp @@ -673,20 +673,18 @@ int s = inst.RS; if (gpr.R(s).IsImm() && !inst.Rc) { - unsigned mask = Helper_Mask(inst.MB, inst.ME); unsigned result = gpr.R(s).offset; if (inst.SH != 0) - result = (result << inst.SH) | - (result >> (32 - inst.SH)); - result &= mask; + result = _rotl(result, inst.SH); + result &= Helper_Mask(inst.MB, inst.ME); gpr.SetImmediate32(a, result); return; } + gpr.Lock(a, s); + gpr.LoadToX64(a, a == s); if (a != s) { - gpr.Lock(a, s); - gpr.LoadToX64(a, false); MOV(32, gpr.R(a), gpr.R(s)); } |
