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...