[llvm-branch-commits] [llvm] [NFC][VPlan] Move `m_RemoveMask` to `VPlanPatternMatch.h` (PR #219059)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri Aug 28 08:37:04 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-llvm-transforms
Author: Andrei Elovikov (eas)
<details>
<summary>Changes</summary>
I plan to use it in the `VPlanPredicator.cpp`.
AI-assisted.
---
Full diff: https://github.com/llvm/llvm-project/pull/219059.diff
2 Files Affected:
- (modified) llvm/lib/Transforms/Vectorize/VPlanEVLTailFolding.cpp (-23)
- (modified) llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h (+23)
``````````diff
diff --git a/llvm/lib/Transforms/Vectorize/VPlanEVLTailFolding.cpp b/llvm/lib/Transforms/Vectorize/VPlanEVLTailFolding.cpp
index 9d8e55137025f..61bb7b35469bd 100644
--- a/llvm/lib/Transforms/Vectorize/VPlanEVLTailFolding.cpp
+++ b/llvm/lib/Transforms/Vectorize/VPlanEVLTailFolding.cpp
@@ -61,29 +61,6 @@ bool VPlanTransforms::simplifyKnownEVL(VPlan &Plan, ElementCount VF,
return false;
}
-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;
- }
- return m_LogicalAnd(m_Specific(In), m_VPValue(Out)).match(V);
- }
-};
-
-/// 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.
-template <typename Op0_t, typename Op1_t>
-static inline RemoveMask_match<Op0_t, Op1_t> m_RemoveMask(const Op0_t &In,
- Op1_t &Out) {
- return RemoveMask_match<Op0_t, Op1_t>(In, Out);
-}
-
static std::optional<Intrinsic::ID> getVPDivRemIntrinsic(Intrinsic::ID IntrID) {
switch (IntrID) {
case Intrinsic::masked_udiv:
diff --git a/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h b/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h
index 648ffa2b11a4f..b7f7a41a14a63 100644
--- a/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h
+++ b/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h
@@ -864,6 +864,29 @@ inline auto m_LogicalAnd(const Op0_t &Op0, const Op1_t &Op1) {
m_Select(Op0, Op1, m_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.
+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;
+ }
+ return m_LogicalAnd(m_Specific(In), m_VPValue(Out)).match(V);
+ }
+};
+
+template <typename Op0_t, typename Op1_t>
+inline RemoveMask_match<Op0_t, Op1_t> m_RemoveMask(const Op0_t &In,
+ Op1_t &Out) {
+ return RemoveMask_match<Op0_t, Op1_t>(In, Out);
+}
+
template <typename Op0_t, typename Op1_t>
inline auto m_c_LogicalAnd(const Op0_t &Op0, const Op1_t &Op1) {
return m_CombineOr(
``````````
</details>
https://github.com/llvm/llvm-project/pull/219059
More information about the llvm-branch-commits
mailing list