[llvm] [VPlan] Perform optimizeMaskToEVL in terms of pattern matching (PR #155394)

Ramkumar Ramachandra via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 1 10:22:40 PDT 2025


================
@@ -2272,90 +2272,98 @@ void VPlanTransforms::addActiveLaneMask(
   HeaderMask->eraseFromParent();
 }
 
+template <typename Op0_t, typename Op1_t> struct RemoveMask_match {
+  Op0_t In;
+  Op1_t &Out;
+
+  RemoveMask_match(const Op0_t &In, Op1_t &Out) : In(In), Out(Out) {}
+
+  template <typename OpTy> bool match(OpTy *V) const {
+    if (m_Specific(In).match(V)) {
+      Out = nullptr;
+      return true;
+    }
+    if (m_LogicalAnd(m_Specific(In), m_VPValue(Out)).match(V))
+      return true;
+    return false;
+  }
+};
+
+/// Match a specific mask \p in, or a combination of it (logical-and in, out).
+/// Returns the remaining part \p out if so, or nullptr otherwise.
----------------
artagnon wrote:

```suggestion
/// Match a specific mask \p In, or a combination of it (logical-and In, Out).
/// Returns the remaining part \p Out if so, or nullptr otherwise.
```

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


More information about the llvm-commits mailing list