@yuyang-ok reported via zulip that i128 overflow tests were: 1. different from the interpreter implementation 2. wrong on some of the test cases This fixes both the tests and the aarch64 implementation and adds the interpreter to the testsuite.
44 lines
2.2 KiB
Plaintext
44 lines
2.2 KiB
Plaintext
test interpret
|
|
test run
|
|
target aarch64
|
|
|
|
function %icmp_of_i128(i128, i128) -> b1 {
|
|
block0(v0: i128, v1: i128):
|
|
v2 = icmp.i128 of v0, v1
|
|
return v2
|
|
}
|
|
; run: %icmp_of_i128(0, 0) == false
|
|
; run: %icmp_of_i128(0, 1) == false
|
|
; run: %icmp_of_i128(0, -1) == false
|
|
; run: %icmp_of_i128(-1, -1) == false
|
|
; run: %icmp_of_i128(0x80000000_00000000_00000000_00000000, 0) == false
|
|
; run: %icmp_of_i128(0x7FFFFFFF_FFFFFFFF_FFFFFFFF_FFFFFFFF, 0) == false
|
|
; run: %icmp_of_i128(1, 0x7FFFFFFF_FFFFFFFF_FFFFFFFF_FFFFFFFF) == false
|
|
; run: %icmp_of_i128(0x7FFFFFFF_FFFFFFFF_FFFFFFFF_FFFFFFFF, 1) == false
|
|
; run: %icmp_of_i128(0x80000000_00000000_00000000_00000000, 1) == true
|
|
; run: %icmp_of_i128(1, 0x80000000_00000000_00000000_00000000) == true
|
|
; run: %icmp_of_i128(0x7FFFFFFF_FFFFFFFF_FFFFFFFF_FFFFFFFF, 0x80000000_00000000_00000000_00000000) == true
|
|
; run: %icmp_of_i128(0x80000000_00000000_00000000_00000000, 0x7FFFFFFF_FFFFFFFF_FFFFFFFF_FFFFFFFF) == true
|
|
; run: %icmp_of_i128(0x4FFFFFFF_FFFFFFFF_FFFFFFFF_FFFFFFFF, 0x30000000_00000000_00000000_00000000) == false
|
|
; run: %icmp_of_i128(0x4FFFFFFF_FFFFFFFF_FFFFFFFF_FFFFFFFF, 0x30000000_00000000_00000000_00000001) == false
|
|
|
|
function %icmp_nof_i128(i128, i128) -> b1 {
|
|
block0(v0: i128, v1: i128):
|
|
v2 = icmp.i128 nof v0, v1
|
|
return v2
|
|
}
|
|
; run: %icmp_nof_i128(0, 0) == true
|
|
; run: %icmp_nof_i128(0, 1) == true
|
|
; run: %icmp_nof_i128(0, -1) == true
|
|
; run: %icmp_nof_i128(-1, -1) == true
|
|
; run: %icmp_nof_i128(0x80000000_00000000_00000000_00000000, 0) == true
|
|
; run: %icmp_nof_i128(0x7FFFFFFF_FFFFFFFF_FFFFFFFF_FFFFFFFF, 0) == true
|
|
; run: %icmp_nof_i128(1, 0x7FFFFFFF_FFFFFFFF_FFFFFFFF_FFFFFFFF) == true
|
|
; run: %icmp_nof_i128(0x7FFFFFFF_FFFFFFFF_FFFFFFFF_FFFFFFFF, 1) == true
|
|
; run: %icmp_nof_i128(0x80000000_00000000_00000000_00000000, 1) == false
|
|
; run: %icmp_nof_i128(1, 0x80000000_00000000_00000000_00000000) == false
|
|
; run: %icmp_nof_i128(0x7FFFFFFF_FFFFFFFF_FFFFFFFF_FFFFFFFF, 0x80000000_00000000_00000000_00000000) == false
|
|
; run: %icmp_nof_i128(0x80000000_00000000_00000000_00000000, 0x7FFFFFFF_FFFFFFFF_FFFFFFFF_FFFFFFFF) == false
|
|
; run: %icmp_nof_i128(0x4FFFFFFF_FFFFFFFF_FFFFFFFF_FFFFFFFF, 0x30000000_00000000_00000000_00000000) == true
|
|
; run: %icmp_nof_i128(0x4FFFFFFF_FFFFFFFF_FFFFFFFF_FFFFFFFF, 0x30000000_00000000_00000000_00000001) == true
|