LLVM: lib/Transforms/Vectorize/VPlan.h File Reference (original) (raw)
This file contains the declarations of the Vectorization Plan base classes: More...
Classes
class
VPBlockBase is the building block of the Hierarchical Control-Flow Graph. More...
class
VPRecipeBase is a base class modeling a sequence of one or more output IR instructions. More...
class
VPSingleDef is a base class for recipes for modeling a sequence of one or more output IR that define a single result VPValue. More...
class
Class to record and manage LLVM IR flags. More...
struct
struct
struct
llvm::VPIRFlags::DisjointFlagsTy
struct
llvm::VPIRFlags::NonNegFlagsTy
struct
A pure-virtual common base class for recipes defining a single VPValue and using IR flags. More...
class
llvm::VPUnrollPartAccessor< PartOpIdx >
Helper to access the operand that contains the unroll part for this recipe after unrolling. More...
class
Helper to manage IR metadata for recipes. More...
class
This is a concrete Recipe that models a single VPlan-level instruction. More...
class
A specialization of VPInstruction augmenting it with a dedicated result type, to be used when the opcode and operands of the VPInstruction don't directly determine the result type. More...
class
Helper type to provide functions to access incoming values and blocks for phi-like recipes. More...
struct
class
A recipe to wrap on original IR instruction not to be modified during execution, except for PHIs. More...
struct
An overlay for VPIRInstructions wrapping PHI nodes enabling convenient use cast/dyn_cast/isa and execute() implementation. More...
class
VPWidenRecipe is a recipe for producing a widened instruction using the opcode and operands of the recipe. More...
class
VPWidenCastRecipe is a recipe to create vector cast instructions. More...
class
A recipe for widening vector intrinsics. More...
class
A recipe for widening Call instructions using library calls. More...
class
A recipe representing a sequence of load -> update -> store as part of a histogram operation. More...
struct
A recipe for widening select instructions. More...
class
A recipe for handling GEP instructions. More...
class
llvm::VPVectorEndPointerRecipe
A recipe to compute a pointer to the last element of each part of a widened memory access for widened memory accesses of IndexedTy. More...
class
A recipe to compute the pointers for widened memory accesses of IndexTy. More...
class
A pure virtual base class for all recipes modeling header phis, including phis for first order recurrences, pointer inductions and reductions. More...
class
Base class for widened induction (VPWidenIntOrFpInductionRecipe and VPWidenPointerInductionRecipe), providing shared functionality, including retrieving the step value, induction descriptor and original phi node. More...
class
llvm::VPWidenIntOrFpInductionRecipe
A recipe for handling phi nodes of integer and floating-point inductions, producing their vector values. More...
class
llvm::VPWidenPointerInductionRecipe
class
A recipe for widened phis. More...
struct
llvm::VPFirstOrderRecurrencePHIRecipe
A recipe for handling first-order recurrence phis. More...
struct
Possible variants of a reduction. More...
struct
This reduction is in-loop. More...
struct
This reduction is unordered with the partial result scaled down by some factor. More...
class
A recipe for handling reduction phis. More...
class
A recipe for vectorizing a phi-node as a sequence of mask-based select instructions. More...
class
A common base class for interleaved memory operations. More...
class
VPInterleaveRecipe is a recipe for transforming an interleave group of load or stores into one wide load/store and shuffles. More...
class
A recipe for interleaved memory operations with vector-predication intrinsics. More...
class
A recipe to represent inloop, ordered or partial reduction operations. More...
class
A recipe to represent inloop reduction operations with vector-predication intrinsics, performing a reduction on a vector operand with the explicit vector length (EVL) into a scalar value, and adding the result to a chain. More...
class
VPReplicateRecipe replicates a given instruction producing multiple scalar copies of the original scalar type, one per lane, instead of producing a single copy of widened type for all lanes. More...
class
A recipe for generating conditional branches on the bits of a mask. More...
class
A recipe to combine multiple recipes into a single 'expression' recipe, which should be considered a single entity for cost-modeling and transforms. More...
class
VPPredInstPHIRecipe is a recipe for generating the phi nodes needed when control converges back from a Branch-on-Mask. More...
class
A common base class for widening memory operations. More...
struct
A recipe for widening load operations, using the address to load from and an optional mask. More...
struct
A recipe for widening load operations with vector-predication intrinsics, using the address to load from, the explicit vector length and an optional mask. More...
struct
A recipe for widening store operations, using the stored value, the address to store to and an optional mask. More...
struct
A recipe for widening store operations with vector-predication intrinsics, using the value to store, the address to store to, the explicit vector length and an optional mask. More...
class
Recipe to expand a SCEV expression. More...
class
Canonical scalar induction phi of the vector loop. More...
class
llvm::VPActiveLaneMaskPHIRecipe
A recipe for generating the active lane mask for the vector loop that is used to predicate the vector operations. More...
class
A recipe for generating the phi node for the current index of elements, adjusted in accordance with EVL value. More...
class
llvm::VPWidenCanonicalIVRecipe
A Recipe for widening the canonical induction variable of the vector loop. More...
class
A recipe for converting the input value IV value to the corresponding value of an IV with different start and step values, using Start + IV * Step. More...
class
A recipe for handling phi nodes of integer and floating-point inductions, producing their scalar values. More...
struct
llvm::CastIsPossible< VPPhiAccessors, const VPRecipeBase * >
Casting from VPRecipeBase -> VPPhiAccessors is supported for all recipe types implementing VPPhiAccessors. More...
struct
llvm::CastInfoVPPhiAccessors< SrcTy >
Support casting from VPRecipeBase -> VPPhiAccessors, by down-casting to the recipe types implementing VPPhiAccessors. More...
struct
llvm::CastInfo< VPPhiAccessors, VPRecipeBase * >
struct
llvm::CastInfo< VPPhiAccessors, const VPRecipeBase * >
struct
llvm::CastInfoVPIRMetadata< DstTy, SrcTy >
Support casting from VPRecipeBase -> VPIRMetadata, by down-casting to the recipe types implementing VPIRMetadata. More...
struct
llvm::CastInfo< VPIRMetadata, VPRecipeBase * >
struct
llvm::CastInfo< VPIRMetadata, const VPRecipeBase * >
class
VPBasicBlock serves as the leaf of the Hierarchical Control-Flow Graph. More...
class
A special type of VPBasicBlock that wraps an existing IR basic block. More...
class
VPRegionBlock represents a collection of VPBasicBlocks and VPRegionBlocks which form a Single-Entry-Single-Exiting subgraph of the output IR CFG. More...
class
VPlan models a candidate for vectorization, encoding various decisions take to produce efficient output IR, including which branches, basic-blocks and output IR instructions to generate, and their cost. More...
This file contains the declarations of the Vectorization Plan base classes:
- VPBasicBlock and VPRegionBlock that inherit from a common pure virtual VPBlockBase, together implementing a Hierarchical CFG;
- Pure virtual VPRecipeBase serving as the base class for recipes contained within VPBasicBlocks;
- Pure virtual VPSingleDefRecipe serving as a base class for recipes that also inherit from VPValue.
- VPInstruction, a concrete Recipe and VPUser modeling a single planned instruction;
- The VPlan class holding a candidate for vectorization; These are documented in docs/VectorizationPlan.rst.
Definition in file VPlan.h.