[llvm] wasm: recognize `any_true` and `all_true` (PR #155885)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 2 00:44:04 PST 2026


================
@@ -2718,6 +2729,61 @@ WebAssemblyTargetLowering::LowerVECTOR_SHUFFLE(SDValue Op,
   return DAG.getNode(WebAssemblyISD::SHUFFLE, DL, Op.getValueType(), Ops);
 }
 
+static SDValue emitShuffleReduceTree(SelectionDAG &DAG, const SDLoc &DL,
+                                     SDValue Vec, unsigned BaseOpc) {
+  EVT VecVT = Vec.getValueType();
+  assert(VecVT.isVector() && "expected vector");
+
+  auto foldInHalf = [&](ArrayRef<int> Mask) -> void {
+    SDValue Shuf = DAG.getVectorShuffle(VecVT, DL, Vec, Vec, Mask);
+    Vec = DAG.getNode(BaseOpc, DL, VecVT, Vec, Shuf);
+  };
+
+  if (VecVT == MVT::v16i8) {
+    foldInHalf({8, 9, 10, 11, 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0});
+    foldInHalf({4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0});
+    foldInHalf({2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0});
+    foldInHalf({1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0});
+    return Vec;
+  } else if (VecVT == MVT::v8i16) {
----------------
arsenm wrote:

No else after return 

https://github.com/llvm/llvm-project/pull/155885


More information about the llvm-commits mailing list