Files
wasmtime/cranelift/filetests/filetests/runtests/i128-extend.clif
Afonso Bordado f6c6bc2155 riscv64: Improve signed and zero extend codegen (#5844)
* riscv64: Remove unused code

* riscv64: Group extend rules

* riscv64: Remove more unused rules

* riscv64: Cleanup existing extension rules

* riscv64: Move the existing Extend rules to ISLE

* riscv64: Use `sext.w` when extending

* riscv64: Remove duplicate extend tests

* riscv64: Use `zbb` instructions when extending values

* riscv64: Use `zbkb` extensions when zero extending

* riscv64: Enable additional tests for extend i128

* riscv64: Fix formatting for `Inst::Extend`

* riscv64: Reverse register for pack

* riscv64: Misc Cleanups

* riscv64: Cleanup extend rules
2023-02-22 17:41:14 +00:00

88 lines
2.5 KiB
Plaintext

test interpret
test run
set enable_llvm_abi_extensions=true
target aarch64
target s390x
target x86_64
target riscv64
target riscv64 has_zbb
target riscv64 has_zbkb
function %i128_uextend_i64(i64) -> i128 {
block0(v0: i64):
v1 = uextend.i128 v0
return v1
}
; run: %i128_uextend_i64(0) == 0
; run: %i128_uextend_i64(-1) == 0x00000000_00000000_ffffffff_ffffffff
; run: %i128_uextend_i64(0xffff_ffff_eeee_0000) == 0x00000000_00000000_ffff_ffff_eeee_0000
function %i128_sextend_i64(i64) -> i128 {
block0(v0: i64):
v1 = sextend.i128 v0
return v1
}
; run: %i128_sextend_i64(0) == 0
; run: %i128_sextend_i64(-1) == -1
; run: %i128_sextend_i64(0x7fff_ffff_ffff_ffff) == 0x00000000_00000000_7fffffffffffffff
; run: %i128_sextend_i64(0xffff_ffff_eeee_0000) == 0xffffffff_ffffffff_ffffffff_eeee0000
function %i128_uextend_i32(i32) -> i128 {
block0(v0: i32):
v1 = uextend.i128 v0
return v1
}
; run: %i128_uextend_i32(0) == 0
; run: %i128_uextend_i32(-1) == 0x00000000_00000000_00000000_ffffffff
; run: %i128_uextend_i32(0xffff_eeee) == 0x00000000_00000000_00000000_ffffeeee
function %i128_sextend_i32(i32) -> i128 {
block0(v0: i32):
v1 = sextend.i128 v0
return v1
}
; run: %i128_sextend_i32(0) == 0
; run: %i128_sextend_i32(-1) == -1
; run: %i128_sextend_i32(0x7fff_ffff) == 0x00000000_00000000_00000000_7fffffff
; run: %i128_sextend_i32(0xffff_eeee) == 0xffffffff_ffffffff_ffffffff_ffff_eeee
function %i128_uextend_i16(i16) -> i128 {
block0(v0: i16):
v1 = uextend.i128 v0
return v1
}
; run: %i128_uextend_i16(0) == 0
; run: %i128_uextend_i16(-1) == 0x00000000_00000000_00000000_0000ffff
; run: %i128_uextend_i16(0xffee) == 0x00000000_00000000_00000000_0000ffee
function %i128_sextend_i16(i16) -> i128 {
block0(v0: i16):
v1 = sextend.i128 v0
return v1
}
; run: %i128_sextend_i16(0) == 0
; run: %i128_sextend_i16(-1) == -1
; run: %i128_sextend_i16(0x7fff) == 0x00000000_00000000_00000000_00007fff
; run: %i128_sextend_i16(0xffee) == 0xffffffff_ffffffff_ffffffff_ffffffee
function %i128_uextend_i8(i8) -> i128 {
block0(v0: i8):
v1 = uextend.i128 v0
return v1
}
; run: %i128_uextend_i8(0) == 0
; run: %i128_uextend_i8(-1) == 0x00000000_00000000_00000000_000000ff
; run: %i128_uextend_i8(0xfe) == 0x00000000_00000000_00000000_000000fe
function %i128_sextend_i8(i8) -> i128 {
block0(v0: i8):
v1 = sextend.i128 v0
return v1
}
; run: %i128_sextend_i8(0) == 0
; run: %i128_sextend_i8(-1) == -1
; run: %i128_sextend_i8(0x7f) == 0x00000000_00000000_00000000_0000007f
; run: %i128_sextend_i8(0xfe) == 0xffffffff_ffffffff_ffffffff_fffffffe