From 97eb616719f81b008bd8beab5340d998d565c75b Mon Sep 17 00:00:00 2001 From: Sintendo Date: Mon, 21 Dec 2020 11:01:42 +0100 Subject: [PATCH] JitArm64: srawx - Fix undefined behavior Signed bitwise left shift invokes UB when shifting a negative value. --- Source/Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp b/Source/Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp index 192261f46d..56e567a372 100644 --- a/Source/Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp +++ b/Source/Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp @@ -1353,7 +1353,7 @@ void JitArm64::srawx(UGeckoInstruction inst) { amount &= 0x1F; gpr.SetImmediate(a, i >> amount); - ComputeCarry(amount != 0 && i < 0 && (i << (32 - amount))); + ComputeCarry(amount != 0 && i < 0 && (u32(i) << (32 - amount))); } if (inst.Rc)