Skip to content

Commit d9c5ddc

Browse files
committed
updated the pattern match for masked store
1 parent 628a79e commit d9c5ddc

File tree

1 file changed

+11
-14
lines changed

1 file changed

+11
-14
lines changed

llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2876,22 +2876,19 @@ static VPRecipeBase *optimizeMaskToEVL(VPValue *HeaderMask,
28762876
return new VPWidenStoreEVLRecipe(cast<VPWidenStoreRecipe>(CurRecipe), Addr,
28772877
EVL, Mask);
28782878

2879-
VPValue *StoredVal;
2880-
if (match(&CurRecipe, m_MaskedStore(m_VPValue(EndPtr), m_VPValue(StoredVal),
2881-
m_RemoveMask(HeaderMask, Mask))) &&
2879+
if (match(&CurRecipe,
2880+
m_MaskedStore(m_VPValue(EndPtr), m_Reverse(m_VPValue(ReversedVal)),
2881+
m_RemoveMask(HeaderMask, Mask))) &&
28822882
match(EndPtr, m_VecEndPtr(m_VPValue(Addr), m_Specific(&Plan->getVF()))) &&
28832883
cast<VPWidenStoreRecipe>(CurRecipe).isReverse()) {
2884-
if (match(StoredVal, m_Reverse(m_VPValue(ReversedVal)))) {
2885-
auto *NewReverse = new VPWidenIntrinsicRecipe(
2886-
Intrinsic::experimental_vp_reverse,
2887-
{ReversedVal, Plan->getTrue(), &EVL},
2888-
TypeInfo.inferScalarType(ReversedVal), {}, {},
2889-
cast<VPInstruction>(StoredVal)->getDebugLoc());
2890-
NewReverse->insertBefore(&CurRecipe);
2891-
return new VPWidenStoreEVLRecipe(cast<VPWidenStoreRecipe>(CurRecipe),
2892-
AdjustEndPtr(EndPtr), NewReverse, EVL,
2893-
Mask);
2894-
}
2884+
auto *NewReverse = new VPWidenIntrinsicRecipe(
2885+
Intrinsic::experimental_vp_reverse,
2886+
{ReversedVal, Plan->getTrue(), &EVL},
2887+
TypeInfo.inferScalarType(ReversedVal), {}, {}, DL);
2888+
NewReverse->insertBefore(&CurRecipe);
2889+
return new VPWidenStoreEVLRecipe(cast<VPWidenStoreRecipe>(CurRecipe),
2890+
AdjustEndPtr(EndPtr), NewReverse, EVL,
2891+
Mask);
28952892
}
28962893

28972894
if (auto *Rdx = dyn_cast<VPReductionRecipe>(&CurRecipe))

0 commit comments

Comments
 (0)