[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