Files
wasmtime/cranelift/filetests/filetests/runtests/extend.clif
yuyang-ok cdecc858b4 add riscv64 backend for cranelift. (#4271)
Add a RISC-V 64 (`riscv64`, RV64GC) backend.

Co-authored-by: yuyang <756445638@qq.com>
Co-authored-by: Chris Fallin <chris@cfallin.org>
Co-authored-by: Afonso Bordado <afonsobordado@az8.co>
2022-09-27 17:30:31 -07:00

215 lines
5.0 KiB
Plaintext

test interpret
test run
target aarch64
target s390x
target x86_64
target riscv64
;;;; basic uextend
function %uextend8_16(i8) -> i16 {
block0(v0: i8):
v1 = uextend.i16 v0
return v1
}
; run: %uextend8_16(0xfe) == 0xfe
; run: %uextend8_16(0x7e) == 0x7e
function %uextend8_32(i8) -> i32 {
block0(v0: i8):
v1 = uextend.i32 v0
return v1
}
; run: %uextend8_32(0xfe) == 0xfe
; run: %uextend8_32(0x7e) == 0x7e
function %uextend16_32(i16) -> i32 {
block0(v0: i16):
v1 = uextend.i32 v0
return v1
}
; run: %uextend16_32(0xfe00) == 0xfe00
; run: %uextend16_32(0x7e00) == 0x7e00
function %uextend8_64(i8) -> i64 {
block0(v0: i8):
v1 = uextend.i64 v0
return v1
}
; run: %uextend8_64(0xfe) == 0xfe
; run: %uextend8_64(0x7e) == 0x7e
function %uextend16_64(i16) -> i64 {
block0(v0: i16):
v1 = uextend.i64 v0
return v1
}
; run: %uextend16_64(0xfe00) == 0xfe00
; run: %uextend16_64(0x7e00) == 0x7e00
function %uextend32_64(i32) -> i64 {
block0(v0: i32):
v1 = uextend.i64 v0
return v1
}
; run: %uextend32_64(0xffff_ee00) == 0xffff_ee00
; run: %uextend32_64(0x7fff_ee00) == 0x7fff_ee00
;;;; basic sextend
function %sextend8_16(i8) -> i16 {
block0(v0: i8):
v1 = sextend.i16 v0
return v1
}
; run: %sextend8_16(0xff) == 0xffff
; run: %sextend8_16(0x7f) == 0x7f
function %sextend8_32(i8) -> i32 {
block0(v0: i8):
v1 = sextend.i32 v0
return v1
}
; run: %sextend8_32(0xff) == 0xffff_ffff
; run: %sextend8_32(0x7f) == 0x7f
function %sextend16_32(i16) -> i32 {
block0(v0: i16):
v1 = sextend.i32 v0
return v1
}
; run: %sextend16_32(0xfe00) == 0xffff_fe00
; run: %sextend16_32(0x7e00) == 0x7e00
function %sextend8_64(i8) -> i64 {
block0(v0: i8):
v1 = sextend.i64 v0
return v1
}
; run: %sextend8_64(0xff) == 0xffff_ffff_ffff_ffff
; run: %sextend8_64(0x7f) == 0x7f
function %sextend16_64(i16) -> i64 {
block0(v0: i16):
v1 = sextend.i64 v0
return v1
}
; run: %sextend16_64(0xfe00) == 0xffff_ffff_ffff_fe00
; run: %sextend16_64(0x7e00) == 0x7e00
function %sextend32_64(i32) -> i64 {
block0(v0: i32):
v1 = sextend.i64 v0
return v1
}
; run: %sextend32_64(0xffff_ee00) == 0xffff_ffff_ffff_ee00
; run: %sextend32_64(0x7fff_ee00) == 0x7fff_ee00
;; uextend of an `add` that we know is likely to set undefined bits
;; above the narrow value
function %add_uextend8_16(i8, i8) -> i16 {
block0(v0: i8, v1: i8):
v2 = iadd.i8 v0, v1
v3 = uextend.i16 v2
return v3
}
; run: %add_uextend8_16(0xfe, 0x03) == 0x0001
function %add_uextend8_32(i8, i8) -> i32 {
block0(v0: i8, v1: i8):
v2 = iadd.i8 v0, v1
v3 = uextend.i32 v2
return v3
}
; run: %add_uextend8_32(0xfe, 0x03) == 0x0000_0001
function %add_uextend16_32(i16, i16) -> i32 {
block0(v0: i16, v1: i16):
v2 = iadd.i16 v0, v1
v3 = uextend.i32 v2
return v3
}
; run: %add_uextend16_32(0xfe00, 0x302) == 0x0000_0102
function %add_uextend8_64(i8, i8) -> i64 {
block0(v0: i8, v1: i8):
v2 = iadd.i8 v0, v1
v3 = uextend.i64 v2
return v3
}
; run: %add_uextend8_64(0xfe, 0x03) == 0x0000_0000_0000_0001
function %add_uextend16_64(i16, i16) -> i64 {
block0(v0: i16, v1: i16):
v2 = iadd.i16 v0, v1
v3 = uextend.i64 v2
return v3
}
; run: %add_uextend16_64(0xfe00, 0x302) == 0x0000_0000_0000_0102
function %add_uextend32_64(i32, i32) -> i64 {
block0(v0: i32, v1: i32):
v2 = iadd.i32 v0, v1
v3 = uextend.i64 v2
return v3
}
; run: %add_uextend32_64(0xffff_ee00, 0x1000_0001) == 0x0000_0000_0fff_ee01
;; sextend of an `add` that we know is likely to set undefined bits
;; above the narrow value
function %add_sextend8_16(i8, i8) -> i16 {
block0(v0: i8, v1: i8):
v2 = iadd.i8 v0, v1
v3 = sextend.i16 v2
return v3
}
; run: %add_sextend8_16(0xfe, 0x03) == 0x0001
; run: %add_sextend8_16(0xfe, 0x83) == 0xff81
function %add_sextend8_32(i8, i8) -> i32 {
block0(v0: i8, v1: i8):
v2 = iadd.i8 v0, v1
v3 = sextend.i32 v2
return v3
}
; run: %add_sextend8_32(0xfe, 0x03) == 0x0000_0001
; run: %add_sextend8_32(0xfe, 0x83) == 0xffff_ff81
function %add_sextend16_32(i16, i16) -> i32 {
block0(v0: i16, v1: i16):
v2 = iadd.i16 v0, v1
v3 = sextend.i32 v2
return v3
}
; run: %add_sextend16_32(0xfe00, 0x302) == 0x0000_0102
; run: %add_sextend16_32(0xfe00, 0x8302) == 0xffff_8102
function %add_sextend8_64(i8, i8) -> i64 {
block0(v0: i8, v1: i8):
v2 = iadd.i8 v0, v1
v3 = sextend.i64 v2
return v3
}
; run: %add_sextend8_64(0xfe, 0x03) == 0x0000_0000_0000_0001
; run: %add_sextend8_64(0xfe, 0x83) == 0xffff_ffff_ffff_ff81
function %add_sextend16_64(i16, i16) -> i64 {
block0(v0: i16, v1: i16):
v2 = iadd.i16 v0, v1
v3 = sextend.i64 v2
return v3
}
; run: %add_sextend16_64(0xfe00, 0x302) == 0x0000_0000_0000_0102
; run: %add_sextend16_64(0xfe00, 0x8302) == 0xffff_ffff_ffff_8102
function %add_sextend32_64(i32, i32) -> i64 {
block0(v0: i32, v1: i32):
v2 = iadd.i32 v0, v1
v3 = sextend.i64 v2
return v3
}
; run: %add_sextend32_64(0xffff_ee00, 0x1000_0001) == 0x0000_0000_0fff_ee01
; run: %add_sextend32_64(0xffff_ee00, 0x9000_0001) == 0xffff_ffff_8fff_ee01