From 864081d1a06099467b6a6df488cdce36662dad2c Mon Sep 17 00:00:00 2001 From: MerryMage Date: Tue, 2 Aug 2016 12:00:11 +0100 Subject: [PATCH] BackendX64: ArithmeticShiftRight: Fix incorrect immediate size for SAR --- src/backend_x64/emit_x64.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backend_x64/emit_x64.cpp b/src/backend_x64/emit_x64.cpp index 2a274126..9d260a7a 100644 --- a/src/backend_x64/emit_x64.cpp +++ b/src/backend_x64/emit_x64.cpp @@ -497,10 +497,10 @@ void EmitX64::EmitArithmeticShiftRight(IR::Block& block, IR::Inst* inst) { auto shift_arg = inst->GetArg(1); if (shift_arg.IsImmediate()) { - u32 shift = shift_arg.GetU8(); + u8 shift = shift_arg.GetU8(); X64Reg result = reg_alloc.UseDefRegister(inst->GetArg(0), inst); - code->SAR(32, R(result), Imm32(shift < 31 ? shift : 31)); + code->SAR(32, R(result), Imm8(shift < 31 ? shift : 31)); } else { X64Reg shift = reg_alloc.UseScratchRegister(shift_arg.GetInst(), {HostLoc::RCX}); X64Reg result = reg_alloc.UseDefRegister(inst->GetArg(0), inst);