[llvm] [VPlan] Optimize LastActiveLane to EVL - 1 (PR #169766)
Luke Lau via llvm-commits
llvm-commits at lists.llvm.org
Thu Nov 27 00:21:43 PST 2025
================
@@ -2787,13 +2788,21 @@ static VPRecipeBase *optimizeMaskToEVL(VPValue *HeaderMask,
m_Select(m_Specific(HeaderMask), m_VPValue(LHS), m_VPValue(RHS))))
return new VPWidenIntrinsicRecipe(
Intrinsic::vp_merge, {Plan->getTrue(), LHS, RHS, &EVL},
- TypeInfo.inferScalarType(LHS), {}, {}, CurRecipe.getDebugLoc());
+ TypeInfo.inferScalarType(LHS), {}, {}, DL);
if (match(&CurRecipe, m_Select(m_RemoveMask(HeaderMask, Mask), m_VPValue(LHS),
m_VPValue(RHS))))
return new VPWidenIntrinsicRecipe(
Intrinsic::vp_merge, {Mask, LHS, RHS, &EVL},
- TypeInfo.inferScalarType(LHS), {}, {}, CurRecipe.getDebugLoc());
+ TypeInfo.inferScalarType(LHS), {}, {}, DL);
+
+ if (match(&CurRecipe, m_LastActiveLane(m_Specific(HeaderMask)))) {
+ Type *Ty = TypeInfo.inferScalarType(CurRecipe.getVPSingleValue());
----------------
lukel97 wrote:
Unfortunately not, it can be a VPInterleaveRecipe above which has multiple defs
https://github.com/llvm/llvm-project/pull/169766
More information about the llvm-commits
mailing list