cranelift: Implement {u,s}extend.i128 in interpreter (#4505)
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
test interpret
|
||||||
test run
|
test run
|
||||||
target aarch64
|
target aarch64
|
||||||
target s390x
|
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, 0x1000_0001) == 0x0000_0000_0fff_ee01
|
||||||
; run: %add_sextend32_64(0xffff_ee00, 0x9000_0001) == 0xffff_ffff_8fff_ee01
|
; run: %add_sextend32_64(0xffff_ee00, 0x9000_0001) == 0xffff_ffff_8fff_ee01
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
test interpret
|
||||||
test run
|
test run
|
||||||
set enable_llvm_abi_extensions=true
|
set enable_llvm_abi_extensions=true
|
||||||
target aarch64
|
target aarch64
|
||||||
|
|||||||
@@ -343,15 +343,22 @@ impl Value for DataValue {
|
|||||||
(DataValue::U8(n), types::I16) => DataValue::U16(n as u16),
|
(DataValue::U8(n), types::I16) => DataValue::U16(n as u16),
|
||||||
(DataValue::U8(n), types::I32) => DataValue::U32(n as u32),
|
(DataValue::U8(n), types::I32) => DataValue::U32(n as u32),
|
||||||
(DataValue::U8(n), types::I64) => DataValue::U64(n as u64),
|
(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::I16) => DataValue::I16(n as i16),
|
||||||
(DataValue::I8(n), types::I32) => DataValue::I32(n as i32),
|
(DataValue::I8(n), types::I32) => DataValue::I32(n as i32),
|
||||||
(DataValue::I8(n), types::I64) => DataValue::I64(n as i64),
|
(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::I32) => DataValue::U32(n as u32),
|
||||||
(DataValue::U16(n), types::I64) => DataValue::U64(n as u64),
|
(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::I32) => DataValue::I32(n as i32),
|
||||||
(DataValue::I16(n), types::I64) => DataValue::I64(n as i64),
|
(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::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::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),
|
(DataValue::I64(n), types::I128) => DataValue::I128(n as i128),
|
||||||
(dv, _) => unimplemented!("conversion: {} -> {:?}", dv.ty(), kind),
|
(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::I16) => DataValue::U16(n as u16),
|
||||||
(DataValue::U8(n), types::I32) => DataValue::U32(n as u32),
|
(DataValue::U8(n), types::I32) => DataValue::U32(n as u32),
|
||||||
(DataValue::U8(n), types::I64) => DataValue::U64(n as u64),
|
(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::I16) => DataValue::I16(n as u8 as i16),
|
||||||
(DataValue::I8(n), types::I32) => DataValue::I32(n as u8 as i32),
|
(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::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::I32) => DataValue::U32(n as u32),
|
||||||
(DataValue::U16(n), types::I64) => DataValue::U64(n as u64),
|
(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::I32) => DataValue::I32(n as u16 as i32),
|
||||||
(DataValue::I16(n), types::I64) => DataValue::I64(n as u16 as i64),
|
(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::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::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),
|
(DataValue::I64(n), types::I128) => DataValue::I128(n as u64 as i128),
|
||||||
(from, to) if from.ty() == to => from,
|
(from, to) if from.ty() == to => from,
|
||||||
(dv, _) => unimplemented!("conversion: {} -> {:?}", dv.ty(), kind),
|
(dv, _) => unimplemented!("conversion: {} -> {:?}", dv.ty(), kind),
|
||||||
|
|||||||
Reference in New Issue
Block a user