[llvm] [VPlan] Run narrowInterleaveGroups during general VPlan optimizations. (PR #149706)
    via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Thu Oct 23 09:51:23 PDT 2025
    
    
  
================
@@ -4063,21 +4065,35 @@ static bool isConsecutiveInterleaveGroup(VPInterleaveRecipe *InterleaveR,
                 [&TypeInfo, GroupElementTy](VPValue *Op) {
                   return TypeInfo.inferScalarType(Op) == GroupElementTy;
                 }))
-      return false;
+      return std::nullopt;
   } else {
     GroupElementTy =
         TypeInfo.inferScalarType(InterleaveR->getStoredValues()[0]);
     if (!all_of(InterleaveR->getStoredValues(),
                 [&TypeInfo, GroupElementTy](VPValue *Op) {
                   return TypeInfo.inferScalarType(Op) == GroupElementTy;
                 }))
-      return false;
+      return std::nullopt;
   }
 
-  unsigned GroupSize = GroupElementTy->getScalarSizeInBits() * VF;
-  auto IG = InterleaveR->getInterleaveGroup();
-  return IG->getFactor() == VF && IG->getNumMembers() == VF &&
-         GroupSize == VectorRegWidth;
+  auto GetVectorWidthForVF = [&TTI](ElementCount VF) {
----------------
ayalz wrote:
```suggestion
  auto GetVectorBitWidthForVF = [&TTI](ElementCount VF) {
```
?
https://github.com/llvm/llvm-project/pull/149706
    
    
More information about the llvm-commits
mailing list