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,