cranelift: Fix bint implementation on interpreter (#4299)
* cranelift: Fix `bint` implementation on interpreter The interpreter was returning -1 instead of 1 for positive values. This also extends the bint test suite to cover all types. * cranelift: Restrict `bint` to scalar values only
This commit is contained in:
@@ -1,7 +1,91 @@
|
||||
test interpret
|
||||
test run
|
||||
target aarch64
|
||||
target x86_64
|
||||
|
||||
function %bint_b1_i8_true() -> i8 {
|
||||
block0:
|
||||
v0 = bconst.b1 true
|
||||
v1 = bint.i8 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b1_i8_true() == 1
|
||||
|
||||
function %bint_b1_i8_false() -> i8 {
|
||||
block0:
|
||||
v0 = bconst.b1 false
|
||||
v1 = bint.i8 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b1_i8_false() == 0
|
||||
|
||||
function %bint_b1_i16_true() -> i16 {
|
||||
block0:
|
||||
v0 = bconst.b1 true
|
||||
v1 = bint.i16 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b1_i16_true() == 1
|
||||
|
||||
function %bint_b1_i16_false() -> i16 {
|
||||
block0:
|
||||
v0 = bconst.b1 false
|
||||
v1 = bint.i16 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b1_i16_fals() == 0
|
||||
|
||||
function %bint_b1_i32_true() -> i32 {
|
||||
block0:
|
||||
v0 = bconst.b1 true
|
||||
v1 = bint.i32 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b1_i32_true() == 1
|
||||
|
||||
function %bint_b1_i32_false() -> i32 {
|
||||
block0:
|
||||
v0 = bconst.b1 false
|
||||
v1 = bint.i32 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b1_i32_fals() == 0
|
||||
|
||||
function %bint_b1_i64_true() -> i64 {
|
||||
block0:
|
||||
v0 = bconst.b1 true
|
||||
v1 = bint.i64 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b1_i64_true() == 1
|
||||
|
||||
function %bint_b1_i64_false() -> i64 {
|
||||
block0:
|
||||
v0 = bconst.b1 false
|
||||
v1 = bint.i64 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b1_i64_fals() == 0
|
||||
|
||||
|
||||
|
||||
|
||||
function %bint_b8_i8_true() -> i8 {
|
||||
block0:
|
||||
v0 = bconst.b8 true
|
||||
v1 = bint.i8 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b8_i8_true() == 1
|
||||
|
||||
function %bint_b8_i8_false() -> i8 {
|
||||
block0:
|
||||
v0 = bconst.b8 false
|
||||
v1 = bint.i8 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b8_i8_false() == 0
|
||||
|
||||
function %bint_b8_i16_true() -> i16 {
|
||||
block0:
|
||||
v0 = bconst.b8 true
|
||||
@@ -10,6 +94,65 @@ block0:
|
||||
}
|
||||
; run: %bint_b8_i16_true() == 1
|
||||
|
||||
function %bint_b8_i16_false() -> i16 {
|
||||
block0:
|
||||
v0 = bconst.b8 false
|
||||
v1 = bint.i16 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b8_i16_fals() == 0
|
||||
|
||||
function %bint_b8_i32_true() -> i32 {
|
||||
block0:
|
||||
v0 = bconst.b8 true
|
||||
v1 = bint.i32 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b8_i32_true() == 1
|
||||
|
||||
function %bint_b8_i32_false() -> i32 {
|
||||
block0:
|
||||
v0 = bconst.b8 false
|
||||
v1 = bint.i32 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b8_i32_fals() == 0
|
||||
|
||||
function %bint_b8_i64_true() -> i64 {
|
||||
block0:
|
||||
v0 = bconst.b8 true
|
||||
v1 = bint.i64 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b8_i64_true() == 1
|
||||
|
||||
function %bint_b8_i64_false() -> i64 {
|
||||
block0:
|
||||
v0 = bconst.b8 false
|
||||
v1 = bint.i64 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b8_i64_fals() == 0
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function %bint_b16_i8_true() -> i8 {
|
||||
block0:
|
||||
v0 = bconst.b16 true
|
||||
v1 = bint.i8 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b16_i8_true() == 1
|
||||
|
||||
function %bint_b16_i8_false() -> i8 {
|
||||
block0:
|
||||
v0 = bconst.b16 false
|
||||
v1 = bint.i8 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b16_i8_fals() == 0
|
||||
|
||||
function %bint_b16_i16_true() -> i16 {
|
||||
block0:
|
||||
@@ -17,16 +160,7 @@ block0:
|
||||
v1 = bint.i16 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b16_i16_true() == 1
|
||||
|
||||
function %bint_b8_i16_false() -> i16 {
|
||||
block0:
|
||||
v0 = bconst.b8 false
|
||||
v1 = bint.i16 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b8_i16_false() == 0
|
||||
|
||||
; run: %bint_b16_i16_tru() == 1
|
||||
|
||||
function %bint_b16_i16_false() -> i16 {
|
||||
block0:
|
||||
@@ -34,4 +168,172 @@ block0:
|
||||
v1 = bint.i16 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b16_i16_false() == 0
|
||||
; run: %bint_b16_i16_fal() == 0
|
||||
|
||||
function %bint_b16_i32_true() -> i32 {
|
||||
block0:
|
||||
v0 = bconst.b16 true
|
||||
v1 = bint.i32 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b16_i32_tru() == 1
|
||||
|
||||
function %bint_b16_i32_false() -> i32 {
|
||||
block0:
|
||||
v0 = bconst.b16 false
|
||||
v1 = bint.i32 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b16_i32_fal() == 0
|
||||
|
||||
function %bint_b16_i64_true() -> i64 {
|
||||
block0:
|
||||
v0 = bconst.b16 true
|
||||
v1 = bint.i64 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b16_i64_tru() == 1
|
||||
|
||||
function %bint_b16_i64_false() -> i64 {
|
||||
block0:
|
||||
v0 = bconst.b16 false
|
||||
v1 = bint.i64 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b16_i64_fal() == 0
|
||||
|
||||
|
||||
|
||||
|
||||
function %bint_b32_i8_true() -> i8 {
|
||||
block0:
|
||||
v0 = bconst.b32 true
|
||||
v1 = bint.i8 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b32_i8_true() == 1
|
||||
|
||||
function %bint_b32_i8_false() -> i8 {
|
||||
block0:
|
||||
v0 = bconst.b32 false
|
||||
v1 = bint.i8 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b32_i8_fals() == 0
|
||||
|
||||
function %bint_b32_i16_true() -> i16 {
|
||||
block0:
|
||||
v0 = bconst.b32 true
|
||||
v1 = bint.i16 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b32_i16_tru() == 1
|
||||
|
||||
function %bint_b32_i16_false() -> i16 {
|
||||
block0:
|
||||
v0 = bconst.b32 false
|
||||
v1 = bint.i16 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b32_i16_fal() == 0
|
||||
|
||||
function %bint_b32_i32_true() -> i32 {
|
||||
block0:
|
||||
v0 = bconst.b32 true
|
||||
v1 = bint.i32 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b32_i32_tru() == 1
|
||||
|
||||
function %bint_b32_i32_false() -> i32 {
|
||||
block0:
|
||||
v0 = bconst.b32 false
|
||||
v1 = bint.i32 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b32_i32_fal() == 0
|
||||
|
||||
function %bint_b32_i64_true() -> i64 {
|
||||
block0:
|
||||
v0 = bconst.b32 true
|
||||
v1 = bint.i64 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b32_i64_tru() == 1
|
||||
|
||||
function %bint_b32_i64_false() -> i64 {
|
||||
block0:
|
||||
v0 = bconst.b32 false
|
||||
v1 = bint.i64 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b32_i64_fal() == 0
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function %bint_b64_i8_true() -> i8 {
|
||||
block0:
|
||||
v0 = bconst.b64 true
|
||||
v1 = bint.i8 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b64_i8_true() == 1
|
||||
|
||||
function %bint_b64_i8_false() -> i8 {
|
||||
block0:
|
||||
v0 = bconst.b64 false
|
||||
v1 = bint.i8 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b64_i8_fals() == 0
|
||||
|
||||
function %bint_b64_i16_true() -> i16 {
|
||||
block0:
|
||||
v0 = bconst.b64 true
|
||||
v1 = bint.i16 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b64_i16_tru() == 1
|
||||
|
||||
function %bint_b64_i16_false() -> i16 {
|
||||
block0:
|
||||
v0 = bconst.b64 false
|
||||
v1 = bint.i16 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b64_i16_fal() == 0
|
||||
|
||||
function %bint_b64_i32_true() -> i32 {
|
||||
block0:
|
||||
v0 = bconst.b64 true
|
||||
v1 = bint.i32 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b64_i32_tru() == 1
|
||||
|
||||
function %bint_b64_i32_false() -> i32 {
|
||||
block0:
|
||||
v0 = bconst.b64 false
|
||||
v1 = bint.i32 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b64_i32_fal() == 0
|
||||
|
||||
function %bint_b64_i64_true() -> i64 {
|
||||
block0:
|
||||
v0 = bconst.b64 true
|
||||
v1 = bint.i64 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b64_i64_tru() == 1
|
||||
|
||||
function %bint_b64_i64_false() -> i64 {
|
||||
block0:
|
||||
v0 = bconst.b64 false
|
||||
v1 = bint.i64 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b64_i64_fal() == 0
|
||||
|
||||
@@ -1,12 +1,85 @@
|
||||
test interpret
|
||||
test run
|
||||
set enable_llvm_abi_extensions=true
|
||||
target aarch64
|
||||
target x86_64
|
||||
|
||||
function %bint_b8_i128() -> i128 {
|
||||
function %bint_b1_i128_true() -> i128 {
|
||||
block0:
|
||||
v0 = bconst.b1 true
|
||||
v1 = bint.i128 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b1_i128_tru() == 1
|
||||
|
||||
function %bint_b1_i128_false() -> i128 {
|
||||
block0:
|
||||
v0 = bconst.b1 false
|
||||
v1 = bint.i128 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b1_i128_fal() == 0
|
||||
|
||||
function %bint_b8_i128_true() -> i128 {
|
||||
block0:
|
||||
v0 = bconst.b8 true
|
||||
v1 = bint.i128 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b8_i128() == 1
|
||||
; run: %bint_b8_i128_tru() == 1
|
||||
|
||||
function %bint_b8_i128_false() -> i128 {
|
||||
block0:
|
||||
v0 = bconst.b8 false
|
||||
v1 = bint.i128 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b8_i128_fal() == 0
|
||||
|
||||
function %bint_b16_i128_true() -> i128 {
|
||||
block0:
|
||||
v0 = bconst.b16 true
|
||||
v1 = bint.i128 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b16_i128_tr() == 1
|
||||
|
||||
function %bint_b16_i128_false() -> i128 {
|
||||
block0:
|
||||
v0 = bconst.b16 false
|
||||
v1 = bint.i128 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b16_i128_fa() == 0
|
||||
|
||||
function %bint_b32_i128_true() -> i128 {
|
||||
block0:
|
||||
v0 = bconst.b32 true
|
||||
v1 = bint.i128 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b32_i128_tr() == 1
|
||||
|
||||
function %bint_b32_i128_false() -> i128 {
|
||||
block0:
|
||||
v0 = bconst.b32 false
|
||||
v1 = bint.i128 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b32_i128_fa() == 0
|
||||
|
||||
function %bint_b64_i128_true() -> i128 {
|
||||
block0:
|
||||
v0 = bconst.b64 true
|
||||
v1 = bint.i128 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b64_i128_tr() == 1
|
||||
|
||||
function %bint_b64_i128_false() -> i128 {
|
||||
block0:
|
||||
v0 = bconst.b64 false
|
||||
v1 = bint.i128 v0
|
||||
return v1
|
||||
}
|
||||
; run: %bint_b64_i128_fa() == 0
|
||||
|
||||
Reference in New Issue
Block a user