[llvm-branch-commits] [llvm] [VPlan] Implement VPlan-based unit-strideness speculation (PR #182595)
Ramkumar Ramachandra via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Tue Mar 3 05:29:52 PST 2026
================
@@ -3750,6 +3752,47 @@ class VPExpandSCEVRecipe : public VPSingleDefRecipe {
#endif
};
+class VPExpandStridePredicatesRecipe : public VPSingleDefRecipe {
+ SCEVUnionPredicate StridePredicates;
+
+public:
+ VPExpandStridePredicatesRecipe(const SCEVUnionPredicate &StridePredicates)
+ : VPSingleDefRecipe(VPRecipeBase::VPExpandStridePredicatesSC, {}),
+ StridePredicates(StridePredicates) {}
+
+ VPExpandStridePredicatesRecipe(SCEVUnionPredicate &&StridePredicates)
+ : VPSingleDefRecipe(VPRecipeBase::VPExpandStridePredicatesSC, {}),
+ StridePredicates(std::move(StridePredicates)) {}
+
+ ~VPExpandStridePredicatesRecipe() override = default;
+
+ VPExpandStridePredicatesRecipe *clone() override {
+ return new VPExpandStridePredicatesRecipe(StridePredicates);
+ }
+
+ VP_CLASSOF_IMPL(VPRecipeBase::VPExpandStridePredicatesSC)
+
+ void execute(VPTransformState &State) override {
+ llvm_unreachable("SCEVPredicates must be expanded before final execute");
+ }
+
+ /// Return the cost of this VPExpandSCEVRecipe.
+ InstructionCost computeCost(ElementCount VF,
+ VPCostContext &Ctx) const override {
+ // TODO: Compute accurate cost after retiring the legacy cost model.
+ return 0;
+ }
+
+ const SCEVPredicate *getSCEVPredicate() const { return &StridePredicates; }
----------------
artagnon wrote:
Better to refine to SCEVUnionPredicate?
https://github.com/llvm/llvm-project/pull/182595
More information about the llvm-branch-commits
mailing list