@@ -2907,22 +2907,19 @@ static VPRecipeBase *optimizeMaskToEVL(VPValue *HeaderMask,
29072907 return new VPWidenStoreEVLRecipe (cast<VPWidenStoreRecipe>(CurRecipe), Addr,
29082908 EVL, Mask);
29092909
2910- VPValue *StoredVal;
2911- if ( match (&CurRecipe, m_MaskedStore (m_VPValue (EndPtr), m_VPValue (StoredVal ),
2912- m_RemoveMask (HeaderMask, Mask))) &&
2910+ if ( match (&CurRecipe,
2911+ m_MaskedStore (m_VPValue (EndPtr), m_Reverse ( m_VPValue (ReversedVal) ),
2912+ m_RemoveMask (HeaderMask, Mask))) &&
29132913 match (EndPtr, m_VecEndPtr (m_VPValue (Addr), m_Specific (&Plan->getVF ()))) &&
29142914 cast<VPWidenStoreRecipe>(CurRecipe).isReverse ()) {
2915- if (match (StoredVal, m_Reverse (m_VPValue (ReversedVal)))) {
2916- auto *NewReverse = new VPWidenIntrinsicRecipe (
2917- Intrinsic::experimental_vp_reverse,
2918- {ReversedVal, Plan->getTrue (), &EVL},
2919- TypeInfo.inferScalarType (ReversedVal), {}, {},
2920- cast<VPInstruction>(StoredVal)->getDebugLoc ());
2921- NewReverse->insertBefore (&CurRecipe);
2922- return new VPWidenStoreEVLRecipe (cast<VPWidenStoreRecipe>(CurRecipe),
2923- AdjustEndPtr (EndPtr), NewReverse, EVL,
2924- Mask);
2925- }
2915+ auto *NewReverse = new VPWidenIntrinsicRecipe (
2916+ Intrinsic::experimental_vp_reverse,
2917+ {ReversedVal, Plan->getTrue (), &EVL},
2918+ TypeInfo.inferScalarType (ReversedVal), {}, {}, DL);
2919+ NewReverse->insertBefore (&CurRecipe);
2920+ return new VPWidenStoreEVLRecipe (cast<VPWidenStoreRecipe>(CurRecipe),
2921+ AdjustEndPtr (EndPtr), NewReverse, EVL,
2922+ Mask);
29262923 }
29272924
29282925 if (auto *Rdx = dyn_cast<VPReductionRecipe>(&CurRecipe))
0 commit comments