diff --git a/llvm/lib/Transforms/Vectorize/VPlan.h b/llvm/lib/Transforms/Vectorize/VPlan.h --- a/llvm/lib/Transforms/Vectorize/VPlan.h +++ b/llvm/lib/Transforms/Vectorize/VPlan.h @@ -1129,6 +1129,23 @@ /// phis for first order recurrences, pointer inductions and reductions. The /// start value is the first operand of the recipe and the incoming value from /// the backedge is the second operand. +/// +/// Inductions are modeled using the following sub-classes: +/// * VPCanonicalIVPHIRecipe: Canonical scalar induction of the vector loop, +/// starting at a specified value (zero for the main vector loop, the resume +/// value for the epilogue vector loop) and stepping by 1. The induction +/// controls exiting of the vector loop by comparing against the vector trip +/// count. Produces a scalar PHI for the induction value per iteration. +/// * VPWidenIntOrFpInductionRecipe: Generates vector values for integer and +/// floating point inductions with arbitrary start and step values. Produces +/// vector phis for each part. +/// * VPDerivedIVRecipe: Converts the canonical IV value to the corresponding +/// value of an IV with different start and step values. +/// * VPScalarIVStepsRecipe: Generates per-lane scalar values based on a +/// canonical or derived induction. +/// * VPWidenPointerInductionRecipe: Generate vector and scalar values for a +/// pointer induction. Produces either vector phis or scalar values based on +/// the canonical induction. class VPHeaderPHIRecipe : public VPRecipeBase, public VPValue { protected: VPHeaderPHIRecipe(unsigned char VPVID, unsigned char VPDefID, PHINode *Phi,