[llvm] [VPlan] Add VPExpressionRecipe, replacing extended reduction recipes. (PR #144281)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 1 13:34:01 PDT 2025
================
@@ -2930,6 +2719,122 @@ class VPBranchOnMaskRecipe : public VPRecipeBase {
}
};
+/// A recipe to combine multiple recipes into a single 'expression' recipe,
+/// which should be considered a single entity for cost-modeling and transforms.
+/// The recipe needs to be 'unbundled', i.e. replaced by its individual
+/// expression recipes before execute. The individual expression recipes are
+/// completely disconnected from the def-use graph of other recipes not part of
+/// the expression. Def-use edges between pairs of expression recipes remain
+/// intact, whereas every edge between an expression recipe and a recipe outside
+/// the expression is elevated to connect the non-expression recipe with the
+/// VPExpressionRecipe itself.
+class VPExpressionRecipe : public VPSingleDefRecipe {
+ /// Recipes included in this VPExpressionRecipe.
+ SmallVector<VPSingleDefRecipe *> ExpressionRecipes;
+
+ /// Temporary VPValues used for external operands of the expression, i.e.
+ /// operands not defined by recipes in the expression.
+ SmallVector<VPValue *> LiveInPlaceholders;
+
+ enum class ExpressionTypes {
+ /// Represents an inloop extended reduction operation, performing a
+ /// reduction on a extended vector operand into a scalar value, and adding
----------------
ayalz wrote:
```suggestion
/// reduction on an extended vector operand into a scalar value, and adding
```
https://github.com/llvm/llvm-project/pull/144281
More information about the llvm-commits
mailing list