LLVM: include/llvm/ADT/GenericUniformityInfo.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9#ifndef LLVM_ADT_GENERICUNIFORMITYINFO_H
10#define LLVM_ADT_GENERICUNIFORMITYINFO_H
11
14
15namespace llvm {
16
18
28
30public:
31 using BlockT = typename ContextT::BlockT;
32 using FunctionT = typename ContextT::FunctionT;
33 using ValueRefT = typename ContextT::ValueRefT;
35 using UseT = typename ContextT::UseT;
39
41 using CycleT = typename CycleInfoT::CycleT;
42
44 std::tuple<ConstValueRefT, InstructionT *, const CycleT *>;
45
51
53 DA->initialize();
54 DA->compute();
55 }
56
57
59
60
62
63
65
66
68
69
70
71
72
75
76
77
79
81
83
85
86private:
88
89 std::unique_ptr<ImplT, GenericUniformityAnalysisImplDeleter> DA;
90
93};
94
95}
96
97#endif
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
Find all cycles in a control-flow graph, including irreducible loops.
Cycle information for a function.
Analysis that identifies uniform values in a data-parallel execution.
bool hasDivergentTerminator(const BlockT &B)
bool isDivergentUse(const UseT &U) const
Whether U is divergent.
typename ContextT::ValueRefT ValueRefT
Definition GenericUniformityInfo.h:33
typename ContextT::FunctionT FunctionT
Definition GenericUniformityInfo.h:32
bool isDivergent(ConstValueRefT V) const
Whether V is divergent at its definition.
void print(raw_ostream &Out) const
T helper function for printing.
std::tuple< ConstValueRefT, InstructionT *, const CycleT * > TemporalDivergenceTuple
Definition GenericUniformityInfo.h:43
bool isUniform(ConstValueRefT V) const
Whether V is uniform/non-divergent.
Definition GenericUniformityInfo.h:67
typename CycleInfoT::CycleT CycleT
Definition GenericUniformityInfo.h:41
bool isUniform(const InstructionT *I) const
Definition GenericUniformityInfo.h:73
typename ContextT::ConstValueRefT ConstValueRefT
Definition GenericUniformityInfo.h:34
typename ContextT::BlockT BlockT
Definition GenericUniformityInfo.h:31
typename ContextT::InstructionT InstructionT
Definition GenericUniformityInfo.h:36
typename ContextT::UseT UseT
Definition GenericUniformityInfo.h:35
bool hasDivergence() const
Whether any divergence was detected.
GenericUniformityInfo & operator=(GenericUniformityInfo &&)=default
const FunctionT & getFunction() const
The GPU kernel this analysis result is for.
void compute()
Definition GenericUniformityInfo.h:52
GenericUniformityInfo(const DominatorTreeT &DT, const CycleInfoT &CI, const TargetTransformInfo *TTI=nullptr)
bool isDivergent(const InstructionT *I) const
GenericUniformityInfo()=default
GenericCycleInfo< ContextT > CycleInfoT
Definition GenericUniformityInfo.h:40
typename ContextT::DominatorTreeT DominatorTreeT
Definition GenericUniformityInfo.h:37
GenericUniformityInfo< ContextT > ThisT
Definition GenericUniformityInfo.h:38
iterator_range< TemporalDivergenceTuple * > getTemporalDivergenceList() const
GenericUniformityInfo(GenericUniformityInfo &&)=default
This pass provides access to the codegen interfaces that are needed for IR-level transformations.
A range adaptor for a pair of iterators.
This class implements an extremely fast bulk output stream that can only output to a stream.
This is an optimization pass for GlobalISel generic memory operations.
ImplT * pointer
Definition GenericUniformityInfo.h:25
void operator()(ImplT *Impl)