LLVM
8.0.1
|
Relates points of divergent control to join points in reducible CFGs. More...
#include "llvm/Analysis/SyncDependenceAnalysis.h"
Public Member Functions | |
bool | inRegion (const BasicBlock &BB) const |
~SyncDependenceAnalysis () | |
SyncDependenceAnalysis (const DominatorTree &DT, const PostDominatorTree &PDT, const LoopInfo &LI) | |
const ConstBlockSet & | join_blocks (const Instruction &Term) |
Computes divergent join points and loop exits caused by branch divergence in Term . More... | |
const ConstBlockSet & | join_blocks (const Loop &Loop) |
Computes divergent join points and loop exits (in the surrounding loop) caused by the divergent loop exits ofLoop . More... | |
Relates points of divergent control to join points in reducible CFGs.
This analysis relates points of divergent control to points of converging divergent control. The analysis requires all loops to be reducible.
Definition at line 40 of file SyncDependenceAnalysis.h.
llvm::SyncDependenceAnalysis::~SyncDependenceAnalysis | ( | ) |
Definition at line 126 of file SyncDependenceAnalysis.cpp.
llvm::SyncDependenceAnalysis::SyncDependenceAnalysis | ( | const DominatorTree & | DT, |
const PostDominatorTree & | PDT, | ||
const LoopInfo & | LI | ||
) |
Definition at line 121 of file SyncDependenceAnalysis.cpp.
bool llvm::SyncDependenceAnalysis::inRegion | ( | const BasicBlock & | BB | ) | const |
const ConstBlockSet & llvm::SyncDependenceAnalysis::join_blocks | ( | const Instruction & | Term | ) |
Computes divergent join points and loop exits caused by branch divergence in Term
.
The set of blocks which are reachable by disjoint paths from Term
. The set also contains loop exits if there two disjoint paths: one from Term
to the loop exit and another from Term
to the loop header. Those exit blocks are added to the returned set. If L is the parent loop of Term
and an exit of L is in the returned set then L is a divergent loop.
Definition at line 358 of file SyncDependenceAnalysis.cpp.
References assert(), llvm::DivergencePropagator::computeJoinPoints(), llvm::SmallPtrSetImpl< PtrType >::find(), llvm::Instruction::getNumSuccessors(), and llvm::successors().
Referenced by llvm::DivergenceAnalysis::inRegion().
const ConstBlockSet & llvm::SyncDependenceAnalysis::join_blocks | ( | const Loop & | Loop | ) |
Computes divergent join points and loop exits (in the surrounding loop) caused by the divergent loop exits ofLoop
.
The set of blocks which are reachable by disjoint paths from the loop exits of Loop
. This treats the loop as a single node in Loop's
parent loop. The returned set has the same properties as for join_blocks(TermInst&).
Definition at line 334 of file SyncDependenceAnalysis.cpp.
References assert(), llvm::DivergencePropagator::computeJoinPoints(), llvm::LoopBase< BlockT, LoopT >::getExitBlocks(), llvm::LoopBase< BlockT, LoopT >::getHeader(), and llvm::LoopBase< BlockT, LoopT >::getParentLoop().