[llvm] [WASM] Fold bitselect with splat zero (PR #147305)
Luke Lau via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 8 04:17:08 PDT 2025
================
@@ -6,15 +6,14 @@ define void @bitselect_first_zero(ptr %output, ptr %input) {
; CHECK-LABEL: bitselect_first_zero:
; CHECK: .functype bitselect_first_zero (i32, i32) -> ()
; CHECK-NEXT: # %bb.0: # %start
-; CHECK-NEXT: v128.const $push7=, 0, 0, 0, 0
-; CHECK-NEXT: local.tee $push6=, $3=, $pop7
-; CHECK-NEXT: v128.load $push5=, 0($1)
-; CHECK-NEXT: local.tee $push4=, $2=, $pop5
+; CHECK-NEXT: v128.load $push6=, 0($1)
+; CHECK-NEXT: local.tee $push5=, $2=, $pop6
; CHECK-NEXT: v128.const $push0=, 2139095040, 2139095040, 2139095040, 2139095040
; CHECK-NEXT: v128.and $push1=, $2, $pop0
-; CHECK-NEXT: i32x4.eq $push2=, $3, $pop1
-; CHECK-NEXT: v128.bitselect $push3=, $pop6, $pop4, $pop2
-; CHECK-NEXT: v128.store 0($0), $pop3
+; CHECK-NEXT: v128.const $push2=, 0, 0, 0, 0
+; CHECK-NEXT: i32x4.ne $push3=, $pop1, $pop2
+; CHECK-NEXT: v128.and $push4=, $pop5, $pop3
+; CHECK-NEXT: v128.store 0($0), $pop4
; CHECK-NEXT: return
start:
%input.val = load <4 x i32>, ptr %input, align 16
----------------
lukel97 wrote:
No need for the load and stores, you can just pass it in as an argument and return it
https://github.com/llvm/llvm-project/pull/147305
More information about the llvm-commits
mailing list