[llvm] [VPlan] Add m_Sub to VPlanPatternMatch. NFC (PR #154705)
Luke Lau via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 21 02:05:59 PDT 2025
https://github.com/lukel97 created https://github.com/llvm/llvm-project/pull/154705
To mirror PatternMatch.h, and we'll also be able to use it in #152167
>From 170ac72e764ed48a70d9f8dc2e6b5190714a1dfa Mon Sep 17 00:00:00 2001
From: Luke Lau <luke at igalia.com>
Date: Thu, 21 Aug 2025 17:04:02 +0800
Subject: [PATCH] [VPlan] Add m_Sub to VPlanPatternMatch. NFC
To mirror PatternMatch.h, and we'll also be able to use it in #152167
---
llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h | 6 ++++++
llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp | 3 +--
llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp | 3 +--
3 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h b/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h
index 9f036fbd569b6..18ab7ddb425ab 100644
--- a/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h
+++ b/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h
@@ -361,6 +361,12 @@ m_c_Binary(const Op0_t &Op0, const Op1_t &Op1) {
return AllRecipe_commutative_match<Opcode, Op0_t, Op1_t>(Op0, Op1);
}
+template <typename Op0_t, typename Op1_t>
+inline AllRecipe_match<Instruction::Sub, Op0_t, Op1_t> m_Sub(const Op0_t &Op0,
+ const Op1_t &Op1) {
+ return m_Binary<Instruction::Sub, Op0_t, Op1_t>(Op0, Op1);
+}
+
template <typename Op0_t, typename Op1_t>
inline AllRecipe_match<Instruction::Mul, Op0_t, Op1_t> m_Mul(const Op0_t &Op0,
const Op1_t &Op1) {
diff --git a/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp b/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
index 7ca9b230f5aae..d7de7bb4f3a39 100644
--- a/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
+++ b/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
@@ -326,8 +326,7 @@ VPPartialReductionRecipe::computeCost(ElementCount VF,
// Pick out opcode, type/ext information and use sub side effects from a widen
// recipe.
auto HandleWiden = [&](VPWidenRecipe *Widen) {
- if (match(Widen,
- m_Binary<Instruction::Sub>(m_SpecificInt(0), m_VPValue(Op)))) {
+ if (match(Widen, m_Sub(m_SpecificInt(0), m_VPValue(Op)))) {
Widen = dyn_cast<VPWidenRecipe>(Op->getDefiningRecipe());
}
Opcode = Widen->getOpcode();
diff --git a/llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp b/llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
index cff43c2742a6b..e2a9fc50cb910 100644
--- a/llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+++ b/llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
@@ -753,8 +753,7 @@ static VPWidenInductionRecipe *getOptimizableIVOf(VPValue *VPV) {
// IVStep will be the negated step of the subtraction. Check if Step == -1
// * IVStep.
VPValue *Step;
- if (!match(VPV,
- m_Binary<Instruction::Sub>(m_VPValue(), m_VPValue(Step))) ||
+ if (!match(VPV, m_Sub(m_VPValue(), m_VPValue(Step))) ||
!Step->isLiveIn() || !IVStep->isLiveIn())
return false;
auto *StepCI = dyn_cast<ConstantInt>(Step->getLiveInIRValue());
More information about the llvm-commits
mailing list