From 9999913a31a82c9ac657ed54338535a546efdbd2 Mon Sep 17 00:00:00 2001 From: bjorn3 Date: Tue, 1 Sep 2020 23:02:29 +0200 Subject: [PATCH] Fix sign extension Co-authored-by: Max Graey --- cranelift/codegen/src/isa/aarch64/lower_inst.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cranelift/codegen/src/isa/aarch64/lower_inst.rs b/cranelift/codegen/src/isa/aarch64/lower_inst.rs index 743a9a81ea..c434159916 100644 --- a/cranelift/codegen/src/isa/aarch64/lower_inst.rs +++ b/cranelift/codegen/src/isa/aarch64/lower_inst.rs @@ -52,8 +52,8 @@ pub(crate) fn lower_insn_to_regs>( let value = ctx.get_constant(insn).unwrap(); // Sign extend constant if necessary let value = match ty.unwrap() { - I8 => (((value as i64) << 8) >> 8) as u64, - I16 => (((value as i64) << 16) >> 16) as u64, + I8 => (((value as i64) << 56) >> 56) as u64, + I16 => (((value as i64) << 48) >> 48) as u64, I32 => (((value as i64) << 32) >> 32) as u64, I64 | R64 => value, ty if ty.is_bool() => value,