diff --git a/cranelift/filetests/filetests/runtests/extend.clif b/cranelift/filetests/filetests/runtests/extend.clif index 42e77f7f0b..4ce87b411f 100644 --- a/cranelift/filetests/filetests/runtests/extend.clif +++ b/cranelift/filetests/filetests/runtests/extend.clif @@ -1,3 +1,4 @@ +test interpret test run target aarch64 target s390x @@ -210,4 +211,3 @@ block0(v0: i32, v1: i32): } ; run: %add_sextend32_64(0xffff_ee00, 0x1000_0001) == 0x0000_0000_0fff_ee01 ; run: %add_sextend32_64(0xffff_ee00, 0x9000_0001) == 0xffff_ffff_8fff_ee01 - diff --git a/cranelift/filetests/filetests/runtests/i128-extend.clif b/cranelift/filetests/filetests/runtests/i128-extend.clif index a0d1b67276..72b9876414 100644 --- a/cranelift/filetests/filetests/runtests/i128-extend.clif +++ b/cranelift/filetests/filetests/runtests/i128-extend.clif @@ -1,3 +1,4 @@ +test interpret test run set enable_llvm_abi_extensions=true target aarch64 diff --git a/cranelift/interpreter/src/value.rs b/cranelift/interpreter/src/value.rs index e90da9e223..cb7ac98321 100644 --- a/cranelift/interpreter/src/value.rs +++ b/cranelift/interpreter/src/value.rs @@ -343,15 +343,22 @@ impl Value for DataValue { (DataValue::U8(n), types::I16) => DataValue::U16(n as u16), (DataValue::U8(n), types::I32) => DataValue::U32(n as u32), (DataValue::U8(n), types::I64) => DataValue::U64(n as u64), + (DataValue::U8(n), types::I128) => DataValue::U128(n as u128), (DataValue::I8(n), types::I16) => DataValue::I16(n as i16), (DataValue::I8(n), types::I32) => DataValue::I32(n as i32), (DataValue::I8(n), types::I64) => DataValue::I64(n as i64), + (DataValue::I8(n), types::I128) => DataValue::I128(n as i128), (DataValue::U16(n), types::I32) => DataValue::U32(n as u32), (DataValue::U16(n), types::I64) => DataValue::U64(n as u64), + (DataValue::U16(n), types::I128) => DataValue::U128(n as u128), (DataValue::I16(n), types::I32) => DataValue::I32(n as i32), (DataValue::I16(n), types::I64) => DataValue::I64(n as i64), + (DataValue::I16(n), types::I128) => DataValue::I128(n as i128), (DataValue::U32(n), types::I64) => DataValue::U64(n as u64), + (DataValue::U32(n), types::I128) => DataValue::U128(n as u128), (DataValue::I32(n), types::I64) => DataValue::I64(n as i64), + (DataValue::I32(n), types::I128) => DataValue::I128(n as i128), + (DataValue::U64(n), types::I128) => DataValue::U128(n as u128), (DataValue::I64(n), types::I128) => DataValue::I128(n as i128), (dv, _) => unimplemented!("conversion: {} -> {:?}", dv.ty(), kind), }, @@ -359,15 +366,22 @@ impl Value for DataValue { (DataValue::U8(n), types::I16) => DataValue::U16(n as u16), (DataValue::U8(n), types::I32) => DataValue::U32(n as u32), (DataValue::U8(n), types::I64) => DataValue::U64(n as u64), + (DataValue::U8(n), types::I128) => DataValue::U128(n as u128), (DataValue::I8(n), types::I16) => DataValue::I16(n as u8 as i16), (DataValue::I8(n), types::I32) => DataValue::I32(n as u8 as i32), (DataValue::I8(n), types::I64) => DataValue::I64(n as u8 as i64), + (DataValue::I8(n), types::I128) => DataValue::I128(n as u8 as i128), (DataValue::U16(n), types::I32) => DataValue::U32(n as u32), (DataValue::U16(n), types::I64) => DataValue::U64(n as u64), + (DataValue::U16(n), types::I128) => DataValue::U128(n as u128), (DataValue::I16(n), types::I32) => DataValue::I32(n as u16 as i32), (DataValue::I16(n), types::I64) => DataValue::I64(n as u16 as i64), + (DataValue::I16(n), types::I128) => DataValue::I128(n as u16 as i128), (DataValue::U32(n), types::I64) => DataValue::U64(n as u64), + (DataValue::U32(n), types::I128) => DataValue::U128(n as u128), (DataValue::I32(n), types::I64) => DataValue::I64(n as u32 as i64), + (DataValue::I32(n), types::I128) => DataValue::I128(n as u32 as i128), + (DataValue::U64(n), types::I128) => DataValue::U128(n as u128), (DataValue::I64(n), types::I128) => DataValue::I128(n as u64 as i128), (from, to) if from.ty() == to => from, (dv, _) => unimplemented!("conversion: {} -> {:?}", dv.ty(), kind),