LLVM: lib/Target/SPIRV/Analysis/SPIRVConvergenceRegionAnalysis.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15#ifndef LLVM_LIB_TARGET_SPIRV_SPIRVCONVERGENCEREGIONANALYSIS_H

16#define LLVM_LIB_TARGET_SPIRV_SPIRVCONVERGENCEREGIONANALYSIS_H

17

22#include

23

24namespace llvm {

29

31

32

35

36

37

38

39

43

44public:

45

47

49

51

53

55

57

58

60

61

62

67

74

76

80

81

82

84

86

87

88

89 void dump(const unsigned IndentSize = 0) const;

90};

91

92

94

96

97public:

99

100

101

103 : TopLevelRegion(TopLevelRegion) {}

104

106

109

111 : TopLevelRegion(LHS.TopLevelRegion) {

112 if (TopLevelRegion != LHS.TopLevelRegion) {

113 releaseMemory();

114 TopLevelRegion = LHS.TopLevelRegion;

115 }

116 LHS.TopLevelRegion = nullptr;

117 }

118

120 if (TopLevelRegion != LHS.TopLevelRegion) {

122 TopLevelRegion = LHS.TopLevelRegion;

123 }

124 LHS.TopLevelRegion = nullptr;

125 return *this;

126 }

127

129 if (TopLevelRegion == nullptr)

130 return;

131

132 TopLevelRegion->releaseMemory();

133 delete TopLevelRegion;

134 TopLevelRegion = nullptr;

135 }

136

139 return TopLevelRegion;

140 }

141};

142

143}

144

145

148

149public:

151

153

159

161

164};

165

166

177

181}

182

183}

184#endif

This file defines the SmallPtrSet class.

Represent the analysis usage information of a pass.

AnalysisUsage & addRequired()

void setPreservesAll()

Set by analyses that do not transform their input at all.

LLVM Basic Block Representation.

Legacy analysis pass which computes a DominatorTree.

Concrete subclass of DominatorTreeBase that is used to compute a normal dominator tree.

A wrapper class for inspecting calls to intrinsic functions.

The legacy pass manager's analysis pass to compute loop information.

This class contains meta information specific to a module.

SPIRV::ConvergenceRegionInfo & getRegionInfo()

Definition SPIRVConvergenceRegionAnalysis.h:162

static char ID

Definition SPIRVConvergenceRegionAnalysis.h:150

void getAnalysisUsage(AnalysisUsage &AU) const override

getAnalysisUsage - This function should be overriden by passes that need analysis information to do t...

Definition SPIRVConvergenceRegionAnalysis.h:154

const SPIRV::ConvergenceRegionInfo & getRegionInfo() const

Definition SPIRVConvergenceRegionAnalysis.h:163

bool runOnFunction(Function &F) override

runOnFunction - Virtual method overriden by subclasses to do the per-function processing of the pass.

SPIRVConvergenceRegionAnalysisWrapperPass()

Result run(Function &F, FunctionAnalysisManager &AM)

SPIRV::ConvergenceRegionInfo Result

Definition SPIRVConvergenceRegionAnalysis.h:173

ConvergenceRegionInfo(ConvergenceRegionInfo &&LHS)

Definition SPIRVConvergenceRegionAnalysis.h:110

ConvergenceRegion * getWritableTopLevelRegion() const

Definition SPIRVConvergenceRegionAnalysis.h:138

const ConvergenceRegion * getTopLevelRegion() const

Definition SPIRVConvergenceRegionAnalysis.h:137

ConvergenceRegionInfo()

Definition SPIRVConvergenceRegionAnalysis.h:98

ConvergenceRegionInfo & operator=(ConvergenceRegionInfo &&LHS)

Definition SPIRVConvergenceRegionAnalysis.h:119

ConvergenceRegionInfo & operator=(const ConvergenceRegionInfo &LHS)=delete

~ConvergenceRegionInfo()

Definition SPIRVConvergenceRegionAnalysis.h:105

ConvergenceRegionInfo(const ConvergenceRegionInfo &LHS)=delete

void releaseMemory()

Definition SPIRVConvergenceRegionAnalysis.h:128

ConvergenceRegionInfo(ConvergenceRegion *TopLevelRegion)

Definition SPIRVConvergenceRegionAnalysis.h:102

SmallVector< ConvergenceRegion * > Children

Definition SPIRVConvergenceRegionAnalysis.h:48

ConvergenceRegion & operator=(const ConvergenceRegion &other)=delete

ConvergenceRegion(DominatorTree &DT, LoopInfo &LI, Function &F)

void dump(const unsigned IndentSize=0) const

bool contains(const BasicBlock *BB) const

Definition SPIRVConvergenceRegionAnalysis.h:83

ConvergenceRegion(const ConvergenceRegion &other)=delete

SmallPtrSet< BasicBlock *, 2 > Exits

Definition SPIRVConvergenceRegionAnalysis.h:54

std::optional< IntrinsicInst * > ConvergenceToken

Definition SPIRVConvergenceRegionAnalysis.h:50

ConvergenceRegion & operator=(ConvergenceRegion &&CR)=delete

~ConvergenceRegion()

Definition SPIRVConvergenceRegionAnalysis.h:75

ConvergenceRegion * Parent

Definition SPIRVConvergenceRegionAnalysis.h:46

ConvergenceRegion(ConvergenceRegion &&CR)

Definition SPIRVConvergenceRegionAnalysis.h:68

BasicBlock * Entry

Definition SPIRVConvergenceRegionAnalysis.h:52

SmallPtrSet< BasicBlock *, 8 > Blocks

Definition SPIRVConvergenceRegionAnalysis.h:56

SmallPtrSet - This class implements a set which is optimized for holding SmallSize or less elements.

This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.

ConvergenceRegionInfo getConvergenceRegions(Function &F, DominatorTree &DT, LoopInfo &LI)

std::optional< IntrinsicInst * > getConvergenceToken(BasicBlock *BB)

This is an optimization pass for GlobalISel generic memory operations.

OutputIt move(R &&Range, OutputIt Out)

Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.

AnalysisManager< Function > FunctionAnalysisManager

Convenience typedef for the Function analysis manager.

Implement std::hash so that hash_code can be used in STL containers.

A CRTP mix-in that provides informational APIs needed for analysis passes.

A special type used by analysis passes to provide an address that identifies that particular analysis...