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)); }