cranelift: Fix icmp.i128 eq for aarch64 (#4706)
* cranelift: Fix `icmp.i128 eq` for aarch64 * cranelift: Use ccmp in `icmp.i128 eq` for aarch64
This commit is contained in:
@@ -20,9 +20,8 @@ block0(v0: i128, v1: i128):
|
||||
}
|
||||
|
||||
; block0:
|
||||
; eor x10, x0, x2
|
||||
; eor x12, x1, x3
|
||||
; adds xzr, x10, x12
|
||||
; subs xzr, x0, x2
|
||||
; ccmp x1, x3, #nzcv, eq
|
||||
; cset x0, eq
|
||||
; ret
|
||||
|
||||
@@ -33,9 +32,8 @@ block0(v0: i128, v1: i128):
|
||||
}
|
||||
|
||||
; block0:
|
||||
; eor x10, x0, x2
|
||||
; eor x12, x1, x3
|
||||
; adds xzr, x10, x12
|
||||
; subs xzr, x0, x2
|
||||
; ccmp x1, x3, #nzcv, eq
|
||||
; cset x0, ne
|
||||
; ret
|
||||
|
||||
@@ -278,9 +276,8 @@ block1:
|
||||
}
|
||||
|
||||
; block0:
|
||||
; eor x8, x0, x2
|
||||
; eor x10, x1, x3
|
||||
; adds xzr, x8, x10
|
||||
; subs xzr, x0, x2
|
||||
; ccmp x1, x3, #nzcv, eq
|
||||
; b.eq label1 ; b label2
|
||||
; block1:
|
||||
; b label3
|
||||
@@ -299,9 +296,8 @@ block1:
|
||||
}
|
||||
|
||||
; block0:
|
||||
; eor x8, x0, x2
|
||||
; eor x10, x1, x3
|
||||
; adds xzr, x8, x10
|
||||
; subs xzr, x0, x2
|
||||
; ccmp x1, x3, #nzcv, eq
|
||||
; b.ne label1 ; b label2
|
||||
; block1:
|
||||
; b label3
|
||||
|
||||
@@ -20,6 +20,9 @@ block0(v0: i128, v1: i128):
|
||||
; run: %icmp_eq_i128(0xFFFFFFFF_FFFFFFFF_FFFFFFFF_FFFFFFFF, 0x00000000_00000001_00000000_00000001) == false
|
||||
; run: %icmp_eq_i128(0x00000000_00000001_FFFFFFFF_FFFFFFFF, 0x00000000_00000001_00000000_00000001) == false
|
||||
|
||||
; This is a regression test for aarch64, see: https://github.com/bytecodealliance/wasmtime/issues/4705
|
||||
; run: %icmp_eq_i128(36893488147419103231, 0) == false
|
||||
|
||||
|
||||
function %icmp_ne_i128(i128, i128) -> b1 {
|
||||
block0(v0: i128, v1: i128):
|
||||
|
||||
Reference in New Issue
Block a user