The tests for the SIMD floating-point maximum and minimum operations require particular care because the handling of the NaN values is non-deterministic and may vary between platforms. There is no way to match several NaN values in a test, so the solution is to extract the non-deterministic test cases into a separate file that is subsequently replicated for every backend under test, with adjustments made to the expected results. Copyright (c) 2021, Arm Limited.
83 lines
1.5 KiB
Plaintext
83 lines
1.5 KiB
Plaintext
; Test code generation for WebAssembly i64 comparison operators.
|
|
test compile
|
|
|
|
target aarch64
|
|
target x86_64 haswell
|
|
|
|
function %i64_eqz(i64) -> i32 {
|
|
block0(v0: i64):
|
|
v1 = icmp_imm eq v0, 0
|
|
v2 = bint.i32 v1
|
|
return v2
|
|
}
|
|
|
|
function %i64_eq(i64, i64) -> i32 {
|
|
block0(v0: i64, v1: i64):
|
|
v2 = icmp eq v0, v1
|
|
v3 = bint.i32 v2
|
|
return v3
|
|
}
|
|
|
|
function %i64_ne(i64, i64) -> i32 {
|
|
block0(v0: i64, v1: i64):
|
|
v2 = icmp ne v0, v1
|
|
v3 = bint.i32 v2
|
|
return v3
|
|
}
|
|
|
|
function %i64_lt_s(i64, i64) -> i32 {
|
|
block0(v0: i64, v1: i64):
|
|
v2 = icmp slt v0, v1
|
|
v3 = bint.i32 v2
|
|
return v3
|
|
}
|
|
|
|
function %i64_lt_u(i64, i64) -> i32 {
|
|
block0(v0: i64, v1: i64):
|
|
v2 = icmp ult v0, v1
|
|
v3 = bint.i32 v2
|
|
return v3
|
|
}
|
|
|
|
function %i64_gt_s(i64, i64) -> i32 {
|
|
block0(v0: i64, v1: i64):
|
|
v2 = icmp sgt v0, v1
|
|
v3 = bint.i32 v2
|
|
return v3
|
|
}
|
|
|
|
function %i64_gt_u(i64, i64) -> i32 {
|
|
block0(v0: i64, v1: i64):
|
|
v2 = icmp ugt v0, v1
|
|
v3 = bint.i32 v2
|
|
return v3
|
|
}
|
|
|
|
function %i64_le_s(i64, i64) -> i32 {
|
|
block0(v0: i64, v1: i64):
|
|
v2 = icmp sle v0, v1
|
|
v3 = bint.i32 v2
|
|
return v3
|
|
}
|
|
|
|
function %i64_le_u(i64, i64) -> i32 {
|
|
block0(v0: i64, v1: i64):
|
|
v2 = icmp ule v0, v1
|
|
v3 = bint.i32 v2
|
|
return v3
|
|
}
|
|
|
|
function %i64_ge_s(i64, i64) -> i32 {
|
|
block0(v0: i64, v1: i64):
|
|
v2 = icmp sge v0, v1
|
|
v3 = bint.i32 v2
|
|
return v3
|
|
}
|
|
|
|
function %i64_ge_u(i64, i64) -> i32 {
|
|
block0(v0: i64, v1: i64):
|
|
v2 = icmp uge v0, v1
|
|
v3 = bint.i32 v2
|
|
return v3
|
|
}
|