================
@@ -5911,33 +5937,32 @@ std::pair<VectorizationFactor, VPlan *> 
LoopVectorizationPlanner::computeBestVF(
         continue;
       }
 
-      assert(P->isCompatibleWithTF(CM.foldTailByMasking()) &&
-             "All vplans must be compatible with the CM");
-      InstructionCost Cost =
-          cost(*P, VF, ConsiderRegPressure ? &RUs[I] : nullptr, CM);
-      VectorizationFactor CurrentFactor(VF, Cost, ScalarCost);
-
-      if (isMoreProfitable(CurrentFactor, BestFactor, P->hasScalarTail())) {
-        BestFactor = CurrentFactor;
-        PlanForBestVF = P.get();
-      }
+      if (P->isCompatibleWithTF(CM.foldTailByMasking())) {
+        InstructionCost Cost =
+            cost(*P, VF, ConsiderRegPressure ? &RUs[I] : nullptr, CM);
+        VectorizationFactor CurrentFactor(VF, Cost, ScalarCost);
 
-      // If profitable add it to ProfitableVF list.
-      if (isMoreProfitable(CurrentFactor, ScalarFactor, P->hasScalarTail()))
-        ProfitableVFs.push_back(CurrentFactor);
+        if (isMoreProfitable(CurrentFactor, BestFactor, P->hasScalarTail())) {
+          BestFactor = CurrentFactor;
+          PlanForBestVF = P.get();
+        }
 
-      if (EpilogueTailFoldingCM) {
-        // Get the costs for the EpilogueTailFoldingCM:
+        // If profitable add it to ProfitableVF list.
+        if (isMoreProfitable(CurrentFactor, ScalarFactor, P->hasScalarTail()))
+          ProfitableVFs.push_back(CurrentFactor);
+      }
+      // Get the costs for the EpilogueTailFoldingCM:
+      if (EpilogueTailFoldingCM &&
+          P->isCompatibleWithTF(EpilogueTailFoldingCM->foldTailByMasking())) {
----------------
sdesmalen-arm wrote:

Actually, which cost-model is used shouldn't really matter anymore at this 
point. Because the plan has been constructed, it contains all the information 
about predication. There should be no information in the cost-model about 
predication, that isn't already represented in the plan itself. So instead of 
passing in the `EpilogueTailFoldingCM` I think it should just be a 'bool' to 
prefer selecting a tail-folded epilogue plan. It can just use the default CM.

https://github.com/llvm/llvm-project/pull/207815
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to