@@ -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