Remove the boolean types from cranelift, and the associated instructions breduce, bextend, bconst, and bint. Standardize on using 1/0 for the return value from instructions that produce scalar boolean results, and -1/0 for boolean vector elements. Fixes #3205 Co-authored-by: Afonso Bordado <afonso360@users.noreply.github.com> Co-authored-by: Ulrich Weigand <ulrich.weigand@de.ibm.com> Co-authored-by: Chris Fallin <chris@cfallin.org>
20 lines
517 B
Plaintext
20 lines
517 B
Plaintext
test interpret
|
|
test run
|
|
target aarch64
|
|
target s390x
|
|
target x86_64
|
|
target riscv64
|
|
|
|
; This test is also a regression test for aarch64.
|
|
; We were not correctly handling the fact that the rhs constant value
|
|
; overflows its type when viewed as a signed value, and thus encoding the wrong
|
|
; value into the resulting instruction.
|
|
function %overflow_rhs_const(i8) -> i8 {
|
|
block0(v0: i8):
|
|
v1 = iconst.i8 192
|
|
v2 = icmp sge v0, v1
|
|
return v2
|
|
}
|
|
; run: %overflow_rhs_const(49) == 1
|
|
; run: %overflow_rhs_const(-65) == 0
|