cranelift: Implement {u,s}extend.i128 in interpreter (#4505)
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
test interpret
|
||||
test run
|
||||
set enable_llvm_abi_extensions=true
|
||||
target aarch64
|
||||
|
||||
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user