Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions cranelift/codegen/src/opts/icmp.isle
Original file line number Diff line number Diff line change
Expand Up @@ -387,33 +387,33 @@
;; constants can directly use the inner select condition.
;; See: https://github.com/bytecodealliance/wasmtime/issues/11578
(rule (simplify (eq _
(select select_ty inner_cond
(select select_ty inner_cond @ (value_type inner_ty)
(iconst_u _ k1)
(iconst_u _ k2))
(iconst_u _ k1)))
(if-let false (u64_eq k1 k2))
(ne select_ty inner_cond (iconst_u select_ty 0)))
(ne select_ty inner_cond (iconst_u inner_ty 0)))

(rule (simplify (eq _
(select select_ty inner_cond
(select select_ty inner_cond @ (value_type inner_ty)
(iconst_u _ k1)
(iconst_u _ k2))
(iconst_u _ k2)))
(if-let false (u64_eq k1 k2))
(eq select_ty inner_cond (iconst_u select_ty 0)))
(eq select_ty inner_cond (iconst_u inner_ty 0)))

(rule (simplify (ne _
(select select_ty inner_cond
(select select_ty inner_cond @ (value_type inner_ty)
(iconst_u _ k1)
(iconst_u _ k2))
(iconst_u _ k1)))
(if-let false (u64_eq k1 k2))
(eq select_ty inner_cond (iconst_u select_ty 0)))
(eq select_ty inner_cond (iconst_u inner_ty 0)))

(rule (simplify (ne _
(select select_ty inner_cond
(select select_ty inner_cond @ (value_type inner_ty)
(iconst_u _ k1)
(iconst_u _ k2))
(iconst_u _ k2)))
(if-let false (u64_eq k1 k2))
(ne select_ty inner_cond (iconst_u select_ty 0)))
(ne select_ty inner_cond (iconst_u inner_ty 0)))
8 changes: 4 additions & 4 deletions cranelift/filetests/filetests/egraph/issue-11578-opt.clif
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ block0(v2: i64):
; nextln: v14 = iconst.i64 -562949953421310
; nextln: v3 = band v2, v14 ; v14 = -562949953421310
; nextln: v16 = iconst.i64 0
; nextln: v18 = icmp ne v3, v16 ; v16 = 0
; nextln: return v18
; nextln: v19 = icmp ne v3, v16 ; v16 = 0
; nextln: return v19
; nextln: }

function %ne_k1(i64) -> i8 {
Expand All @@ -65,8 +65,8 @@ block0(v2: i64):
; nextln: v14 = iconst.i64 -562949953421310
; nextln: v3 = band v2, v14 ; v14 = -562949953421310
; nextln: v16 = iconst.i64 0
; nextln: v18 = icmp ne v3, v16 ; v16 = 0
; nextln: return v18
; nextln: v19 = icmp ne v3, v16 ; v16 = 0
; nextln: return v19
; nextln: }

function %ne_k2(i64) -> i8 {
Expand Down
12 changes: 12 additions & 0 deletions cranelift/filetests/filetests/egraph/issue-12503.clif
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
test compile
set opt_level=speed_and_size
target aarch64

function u0:1360(i8) -> i8 system_v {
block0(v0: i8):
v1 = iconst.i64 0
v2 = iconst.i64 1
v3 = select v0, v1, v2
v4 = icmp_imm eq v3, 1
return v4
}