[llvm] [VPlan] Port invalid cost remarks to VPlan. (PR #99322)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Jul 28 04:55:32 PDT 2024
================
@@ -4350,24 +4347,38 @@ bool LoopVectorizationPlanner::isMoreProfitable(
return CmpFn(RTCostA, RTCostB);
}
-static void emitInvalidCostRemarks(SmallVector<InstructionVFPair> InvalidCosts,
- OptimizationRemarkEmitter *ORE,
- Loop *TheLoop) {
+void LoopVectorizationPlanner::emitInvalidCostRemarks(
+ OptimizationRemarkEmitter *ORE) {
+ using RecipeVFPair = std::pair<VPRecipeBase *, ElementCount>;
+ LLVMContext &LLVMCtx = OrigLoop->getHeader()->getContext();
+ SmallVector<RecipeVFPair> InvalidCosts;
+ for (const auto &Plan : VPlans) {
+ for (ElementCount VF : Plan->vectorFactors()) {
+ VPCostContext CostCtx(CM.TTI, Legal->getWidestInductionType(), LLVMCtx,
+ CM);
----------------
ayalz wrote:
CostCtx is kept here rather than hoisting it alongside LLVMCtx above, due to its caching of SkipCostComputation. But the latter is initialized by calling LVP::cost(Plan, VF), whereas here all recipes are asked for their cost directly, w/o going through LVP::cost(). Should LVP::cost() be called first, and iff it returns invalid traverse the recipes? Or note that invalid costs cannot be skipped(?), so calling LVP::cost() is redundant when only invalid costs are sought, in which case CostCtx can be hoisted(?)
https://github.com/llvm/llvm-project/pull/99322
More information about the llvm-commits
mailing list