summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/Src/PowerPC/Jit64/Jit_Integer.cpp10
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));
}