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.