LLVM: lib/Transforms/Vectorize/VPlanAnalysis.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9#ifndef LLVM_TRANSFORMS_VECTORIZE_VPLANANALYSIS_H
10#define LLVM_TRANSFORMS_VECTORIZE_VPLANANALYSIS_H
11
16
17namespace llvm {
18
34
35
36
37
38
39
40
41
42
45
46
47
48 Type *CanonicalIVTy;
50
59
60public:
62
63
65
66
68};
69
70
72 DenseSet<VPRecipeBase *> &EphRecipes);
73
74
75
77
78
80
81
83
84
85
86
88 unsigned OverrideMaxNumRegs = 0) const;
89};
90
91
92
93
94
98
99}
100
101#endif
This file defines the DenseMap class.
This file defines the DenseSet and SmallDenseSet classes.
This file implements a map that provides insertion order iteration.
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
This is an important class for using LLVM in a threaded context.
A templated base class for SmallPtrSet which provides the typesafe interface that is common across al...
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
This pass provides access to the codegen interfaces that are needed for IR-level transformations.
The instances of the Type class are immutable: once they are created, they are never changed.
A recipe for vectorizing a phi-node as a sequence of mask-based select instructions.
This is a concrete Recipe that models a single VPlan-level instruction.
VPRecipeBase is a base class modeling a sequence of one or more output IR instructions.
VPReplicateRecipe replicates a given instruction producing multiple scalar copies of the original sca...
LLVMContext & getContext()
Return the LLVMContext used by the analysis.
Definition VPlanAnalysis.h:67
Type * inferScalarType(const VPValue *V)
Infer the type of V. Returns the scalar type of V.
VPTypeAnalysis(const VPlan &Plan)
This is the base class of the VPlan Def/Use graph, used for modeling the data flow into,...
A recipe for widening Call instructions using library calls.
A recipe for handling phi nodes of integer and floating-point inductions, producing their vector valu...
A common base class for widening memory operations.
VPWidenRecipe is a recipe for producing a widened instruction using the opcode and operands of the re...
VPlan models a candidate for vectorization, encoding various decisions take to produce efficient outp...
LLVM Value Representation.
This is an optimization pass for GlobalISel generic memory operations.
SmallVector< VPRegisterUsage, 8 > calculateRegisterUsageForPlan(VPlan &Plan, ArrayRef< ElementCount > VFs, const TargetTransformInfo &TTI, const SmallPtrSetImpl< const Value * > &ValuesToIgnore)
Estimate the register usage for Plan and vectorization factors in VFs by calculating the highest numb...
void collectEphemeralRecipesForVPlan(VPlan &Plan, DenseSet< VPRecipeBase * > &EphRecipes)
A MapVector that performs no allocations if smaller than a certain size.
A struct that represents some properties of the register usage of a loop.
Definition VPlanAnalysis.h:76
SmallMapVector< unsigned, unsigned, 4 > MaxLocalUsers
Holds the maximum number of concurrent live intervals in the loop.
Definition VPlanAnalysis.h:82
bool exceedsMaxNumRegs(const TargetTransformInfo &TTI, unsigned OverrideMaxNumRegs=0) const
Check if any of the tracked live intervals exceeds the number of available registers for the target.
SmallMapVector< unsigned, unsigned, 4 > LoopInvariantRegs
Holds the number of loop invariant values that are used in the loop.
Definition VPlanAnalysis.h:79
A recipe for widening select instructions.