From 5a8c52ce3a7200ab7014973cc9d1e60a00240a57 Mon Sep 17 00:00:00 2001 From: degasus Date: Tue, 1 Nov 2016 11:53:22 +0100 Subject: [PATCH] JitArm64: Fix srawx. --- Source/Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Source/Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp b/Source/Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp index 1daecfd7e0..124f354184 100644 --- a/Source/Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp +++ b/Source/Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp @@ -1305,10 +1305,16 @@ void JitArm64::srawx(UGeckoInstruction inst) ComputeRC(gpr.GetImm(a), 0); return; } - else if (gpr.IsImm(b) && (gpr.GetImm(b) & 0x20) == 0 && !js.op->wantsCA) + + if (gpr.IsImm(b) && !js.op->wantsCA) { + int amount = gpr.GetImm(b); + if (amount & 0x20) + amount = 0x1F; + else + amount &= 0x1F; gpr.BindToRegister(a, a == s); - ASR(gpr.R(a), gpr.R(a), gpr.GetImm(b) & 0x1F); + ASR(gpr.R(a), gpr.R(s), amount); } else if (!js.op->wantsCA) {