1
- // ===- ConvergenceRegionAnalysis.h -----------------------------*- C++ -* --===//
1
+ // ===-------------------------------------------------------------------- --===//
2
2
//
3
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
4
// See https://llvm.org/LICENSE.txt for license information.
24
24
#define DEBUG_TYPE " spirv-convergence-region-analysis"
25
25
26
26
using namespace llvm ;
27
+ using namespace SPIRV ;
27
28
28
29
namespace llvm {
29
30
void initializeSPIRVConvergenceRegionAnalysisWrapperPassPass (PassRegistry &);
@@ -39,8 +40,6 @@ INITIALIZE_PASS_END(SPIRVConvergenceRegionAnalysisWrapperPass,
39
40
" convergence-region" , " SPIRV convergence regions analysis" ,
40
41
true , true )
41
42
42
- namespace llvm {
43
- namespace SPIRV {
44
43
namespace {
45
44
46
45
template <typename BasicBlockType, typename IntrinsicInstType>
@@ -74,12 +73,13 @@ getConvergenceTokenInternal(BasicBlockType *BB) {
74
73
75
74
return std::nullopt;
76
75
}
76
+ } // anonymous namespace
77
77
78
78
// Given a ConvergenceRegion tree with |Start| as its root, finds the smallest
79
79
// region |Entry| belongs to. If |Entry| does not belong to the region defined
80
80
// by |Start|, this function returns |nullptr|.
81
- ConvergenceRegion *findParentRegion (ConvergenceRegion *Start,
82
- BasicBlock *Entry) {
81
+ static ConvergenceRegion *findParentRegion (ConvergenceRegion *Start,
82
+ BasicBlock *Entry) {
83
83
ConvergenceRegion *Candidate = nullptr ;
84
84
ConvergenceRegion *NextCandidate = Start;
85
85
@@ -102,13 +102,13 @@ ConvergenceRegion *findParentRegion(ConvergenceRegion *Start,
102
102
return Candidate;
103
103
}
104
104
105
- } // anonymous namespace
106
-
107
- std::optional<IntrinsicInst *> getConvergenceToken (BasicBlock *BB) {
105
+ std::optional<IntrinsicInst *>
106
+ llvm::SPIRV::getConvergenceToken (BasicBlock *BB) {
108
107
return getConvergenceTokenInternal<BasicBlock, IntrinsicInst>(BB);
109
108
}
110
109
111
- std::optional<const IntrinsicInst *> getConvergenceToken (const BasicBlock *BB) {
110
+ std::optional<const IntrinsicInst *>
111
+ llvm::SPIRV::getConvergenceToken (const BasicBlock *BB) {
112
112
return getConvergenceTokenInternal<const BasicBlock, const IntrinsicInst>(BB);
113
113
}
114
114
@@ -187,8 +187,8 @@ void ConvergenceRegion::dump(const unsigned IndentSize) const {
187
187
dbgs () << Indent << " }\n " ;
188
188
}
189
189
190
+ namespace {
190
191
class ConvergenceRegionAnalyzer {
191
-
192
192
public:
193
193
ConvergenceRegionAnalyzer (Function &F, DominatorTree &DT, LoopInfo &LI)
194
194
: DT(DT), LI(LI), F(F) {}
@@ -305,15 +305,15 @@ class ConvergenceRegionAnalyzer {
305
305
LoopInfo &LI;
306
306
Function &F;
307
307
};
308
+ } // anonymous namespace
308
309
309
- ConvergenceRegionInfo getConvergenceRegions (Function &F, DominatorTree &DT,
310
- LoopInfo &LI) {
310
+ ConvergenceRegionInfo llvm::SPIRV::getConvergenceRegions (Function &F,
311
+ DominatorTree &DT,
312
+ LoopInfo &LI) {
311
313
ConvergenceRegionAnalyzer Analyzer (F, DT, LI);
312
314
return Analyzer.analyze ();
313
315
}
314
316
315
- } // namespace SPIRV
316
-
317
317
char SPIRVConvergenceRegionAnalysisWrapperPass::ID = 0 ;
318
318
319
319
SPIRVConvergenceRegionAnalysisWrapperPass::
@@ -339,5 +339,3 @@ SPIRVConvergenceRegionAnalysis::run(Function &F, FunctionAnalysisManager &AM) {
339
339
}
340
340
341
341
AnalysisKey SPIRVConvergenceRegionAnalysis::Key;
342
-
343
- } // namespace llvm
0 commit comments