diff options
| author | magumagu9 <magumagu9@gmail.com> | 2008-12-23 22:34:58 +0000 |
|---|---|---|
| committer | magumagu9 <magumagu9@gmail.com> | 2008-12-23 22:34:58 +0000 |
| commit | 4aa693ea54dc3fe178ce4b1dbdcb9d937dad7924 (patch) | |
| tree | f8d2fa862bb4f69f8d5788953270192db1deba8c | |
| parent | 42dc237d7ff134288a5b586af570f0cc5afc607d (diff) | |
Fix a regression exposed by my previous changes to rlwinm. Also, some
minor cleanup.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1643 8ced0084-cf51-0410-be5f-012b33b47a6e
| -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)); } |
