Skip to content

Commit 38c9afa

Browse files
committed
Rename to m_MaskedLoad/Store, remove reverse matchers
1 parent f1eaf97 commit 38c9afa

File tree

2 files changed

+27
-38
lines changed

2 files changed

+27
-38
lines changed

llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h

Lines changed: 15 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -687,37 +687,29 @@ m_DerivedIV(const Op0_t &Op0, const Op1_t &Op1, const Op2_t &Op2) {
687687
return VPDerivedIV_match<Op0_t, Op1_t, Op2_t>({Op0, Op1, Op2});
688688
}
689689

690-
template <typename Addr_t, typename Mask_t, bool Reverse> struct Load_match {
690+
template <typename Addr_t, typename Mask_t> struct Load_match {
691691
Addr_t Addr;
692692
Mask_t Mask;
693693

694694
Load_match(Addr_t Addr, Mask_t Mask) : Addr(Addr), Mask(Mask) {}
695695

696696
template <typename OpTy> bool match(const OpTy *V) const {
697697
auto *Load = dyn_cast<VPWidenLoadRecipe>(V);
698-
if (!Load || Load->isReverse() != Reverse || !Addr.match(Load->getAddr()) ||
699-
!Load->isMasked() || !Mask.match(Load->getMask()))
698+
if (!Load || !Addr.match(Load->getAddr()) || !Load->isMasked() ||
699+
!Mask.match(Load->getMask()))
700700
return false;
701701
return true;
702702
}
703703
};
704704

705-
/// Match a non-reversed masked load.
705+
/// Match a (possibly reversed) masked load.
706706
template <typename Addr_t, typename Mask_t>
707-
inline Load_match<Addr_t, Mask_t, false> m_Load(const Addr_t &Addr,
708-
const Mask_t &Mask) {
709-
return Load_match<Addr_t, Mask_t, false>(Addr, Mask);
707+
inline Load_match<Addr_t, Mask_t> m_MaskedLoad(const Addr_t &Addr,
708+
const Mask_t &Mask) {
709+
return Load_match<Addr_t, Mask_t>(Addr, Mask);
710710
}
711711

712-
/// Match a reversed masked load.
713-
template <typename Addr_t, typename Mask_t>
714-
inline Load_match<Addr_t, Mask_t, true> m_ReverseLoad(const Addr_t &Addr,
715-
const Mask_t &Mask) {
716-
return Load_match<Addr_t, Mask_t, true>(Addr, Mask);
717-
}
718-
719-
template <typename Addr_t, typename Val_t, typename Mask_t, bool Reverse>
720-
struct Store_match {
712+
template <typename Addr_t, typename Val_t, typename Mask_t> struct Store_match {
721713
Addr_t Addr;
722714
Val_t Val;
723715
Mask_t Mask;
@@ -727,26 +719,19 @@ struct Store_match {
727719

728720
template <typename OpTy> bool match(const OpTy *V) const {
729721
auto *Store = dyn_cast<VPWidenStoreRecipe>(V);
730-
if (!Store || Store->isReverse() != Reverse ||
731-
!Addr.match(Store->getAddr()) || !Val.match(Store->getStoredValue()) ||
732-
!Store->isMasked() || !Mask.match(Store->getMask()))
722+
if (!Store || !Addr.match(Store->getAddr()) ||
723+
!Val.match(Store->getStoredValue()) || !Store->isMasked() ||
724+
!Mask.match(Store->getMask()))
733725
return false;
734726
return true;
735727
}
736728
};
737729

738-
/// Match a non-reversed masked store.
739-
template <typename Addr_t, typename Val_t, typename Mask_t>
740-
inline Store_match<Addr_t, Val_t, Mask_t, false>
741-
m_Store(const Addr_t &Addr, const Val_t &Val, const Mask_t &Mask) {
742-
return Store_match<Addr_t, Val_t, Mask_t, false>(Addr, Val, Mask);
743-
}
744-
745-
/// Match a reversed masked store.
730+
/// Match a (possibly reversed) masked store.
746731
template <typename Addr_t, typename Val_t, typename Mask_t>
747-
inline Store_match<Addr_t, Val_t, Mask_t, true>
748-
m_ReverseStore(const Addr_t &Addr, const Val_t &Val, const Mask_t &Mask) {
749-
return Store_match<Addr_t, Val_t, Mask_t, true>(Addr, Val, Mask);
732+
inline Store_match<Addr_t, Val_t, Mask_t>
733+
m_MaskedStore(const Addr_t &Addr, const Val_t &Val, const Mask_t &Mask) {
734+
return Store_match<Addr_t, Val_t, Mask_t>(Addr, Val, Mask);
750735
}
751736

752737
template <typename Op0_t, typename Op1_t>

llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2563,24 +2563,28 @@ static VPRecipeBase *optimizeMaskToEVL(VPValue *HeaderMask,
25632563
};
25642564

25652565
if (match(&CurRecipe,
2566-
m_Load(m_VPValue(Addr), m_RemoveMask(HeaderMask, Mask))))
2566+
m_MaskedLoad(m_VPValue(Addr), m_RemoveMask(HeaderMask, Mask))) &&
2567+
!cast<VPWidenLoadRecipe>(CurRecipe).isReverse())
25672568
return new VPWidenLoadEVLRecipe(cast<VPWidenLoadRecipe>(CurRecipe), Addr,
25682569
EVL, Mask);
25692570

25702571
if (match(&CurRecipe,
2571-
m_ReverseLoad(m_VPValue(EndPtr), m_RemoveMask(HeaderMask, Mask))) &&
2572-
match(EndPtr, m_VecEndPtr(m_VPValue(Addr), m_Specific(&Plan->getVF()))))
2572+
m_MaskedLoad(m_VPValue(EndPtr), m_RemoveMask(HeaderMask, Mask))) &&
2573+
match(EndPtr, m_VecEndPtr(m_VPValue(Addr), m_Specific(&Plan->getVF()))) &&
2574+
cast<VPWidenLoadRecipe>(CurRecipe).isReverse())
25732575
return new VPWidenLoadEVLRecipe(cast<VPWidenLoadRecipe>(CurRecipe),
25742576
AdjustEndPtr(EndPtr), EVL, Mask);
25752577

2576-
if (match(&CurRecipe, m_Store(m_VPValue(Addr), m_VPValue(),
2577-
m_RemoveMask(HeaderMask, Mask))))
2578+
if (match(&CurRecipe, m_MaskedStore(m_VPValue(Addr), m_VPValue(),
2579+
m_RemoveMask(HeaderMask, Mask))) &&
2580+
!cast<VPWidenStoreRecipe>(CurRecipe).isReverse())
25782581
return new VPWidenStoreEVLRecipe(cast<VPWidenStoreRecipe>(CurRecipe), Addr,
25792582
EVL, Mask);
25802583

2581-
if (match(&CurRecipe, m_ReverseStore(m_VPValue(EndPtr), m_VPValue(),
2582-
m_RemoveMask(HeaderMask, Mask))) &&
2583-
match(EndPtr, m_VecEndPtr(m_VPValue(Addr), m_Specific(&Plan->getVF()))))
2584+
if (match(&CurRecipe, m_MaskedStore(m_VPValue(EndPtr), m_VPValue(),
2585+
m_RemoveMask(HeaderMask, Mask))) &&
2586+
match(EndPtr, m_VecEndPtr(m_VPValue(Addr), m_Specific(&Plan->getVF()))) &&
2587+
cast<VPWidenStoreRecipe>(CurRecipe).isReverse())
25842588
return new VPWidenStoreEVLRecipe(cast<VPWidenStoreRecipe>(CurRecipe),
25852589
AdjustEndPtr(EndPtr), EVL, Mask);
25862590

0 commit comments

Comments
 (0)