|
LLVM 24.0.0git
|
Locate join blocks for disjoint paths starting at a divergent branch. More...
#include "llvm/ADT/GenericUniformityImpl.h"
Classes | |
| struct | DivergenceDescriptor |
| Information discovered by the sync dependence analysis for each divergent branch. More... | |
Public Types | |
| using | BlockT = typename ContextT::BlockT |
| using | DominatorTreeT = typename ContextT::DominatorTreeT |
| using | FunctionT = typename ContextT::FunctionT |
| using | ValueRefT = typename ContextT::ValueRefT |
| using | InstructionT = typename ContextT::InstructionT |
| using | CycleInfoT = GenericCycleInfo<ContextT> |
| using | ConstBlockSet = SmallPtrSet<const BlockT *, 4> |
| using | ModifiedPO = ModifiedPostOrder<ContextT> |
| using | BlockLabelMap = DenseMap<const BlockT *, const BlockT *> |
| using | DivergencePropagatorT = DivergencePropagator<ContextT> |
Public Member Functions | |
| GenericSyncDependenceAnalysis (const ContextT &Context, const DominatorTreeT &DT, const CycleInfoT &CI) | |
| const DivergenceDescriptor & | getJoinBlocks (const BlockT *DivTermBlock) |
Computes divergent join points and cycle exits caused by branch divergence in Term. | |
Locate join blocks for disjoint paths starting at a divergent branch.
An analysis per divergent branch that returns the set of basic blocks whose phi nodes become divergent due to divergent control. These are the blocks that are reachable by two disjoint paths from the branch, or cycle exits reachable along a path that is disjoint from a path to the cycle latch.
Definition at line 269 of file GenericUniformityImpl.h.
| using llvm::GenericSyncDependenceAnalysis< ContextT >::BlockLabelMap = DenseMap<const BlockT *, const BlockT *> |
Definition at line 289 of file GenericUniformityImpl.h.
| using llvm::GenericSyncDependenceAnalysis< ContextT >::BlockT = typename ContextT::BlockT |
Definition at line 271 of file GenericUniformityImpl.h.
| using llvm::GenericSyncDependenceAnalysis< ContextT >::ConstBlockSet = SmallPtrSet<const BlockT *, 4> |
Definition at line 279 of file GenericUniformityImpl.h.
| using llvm::GenericSyncDependenceAnalysis< ContextT >::CycleInfoT = GenericCycleInfo<ContextT> |
Definition at line 277 of file GenericUniformityImpl.h.
| using llvm::GenericSyncDependenceAnalysis< ContextT >::DivergencePropagatorT = DivergencePropagator<ContextT> |
Definition at line 302 of file GenericUniformityImpl.h.
| using llvm::GenericSyncDependenceAnalysis< ContextT >::DominatorTreeT = typename ContextT::DominatorTreeT |
Definition at line 272 of file GenericUniformityImpl.h.
| using llvm::GenericSyncDependenceAnalysis< ContextT >::FunctionT = typename ContextT::FunctionT |
Definition at line 273 of file GenericUniformityImpl.h.
| using llvm::GenericSyncDependenceAnalysis< ContextT >::InstructionT = typename ContextT::InstructionT |
Definition at line 275 of file GenericUniformityImpl.h.
| using llvm::GenericSyncDependenceAnalysis< ContextT >::ModifiedPO = ModifiedPostOrder<ContextT> |
Definition at line 280 of file GenericUniformityImpl.h.
| using llvm::GenericSyncDependenceAnalysis< ContextT >::ValueRefT = typename ContextT::ValueRefT |
Definition at line 274 of file GenericUniformityImpl.h.
| llvm::GenericSyncDependenceAnalysis< ContextT >::GenericSyncDependenceAnalysis | ( | const ContextT & | Context, |
| const DominatorTreeT & | DT, | ||
| const CycleInfoT & | CI ) |
Definition at line 768 of file GenericUniformityImpl.h.
| auto llvm::GenericSyncDependenceAnalysis< ContextT >::getJoinBlocks | ( | const BlockT * | DivTermBlock | ) |
Computes divergent join points and cycle exits caused by branch divergence in Term.
This returns a pair of sets:
Term.Term to the cycle exit and another from Term to the cycle header. Definition at line 775 of file GenericUniformityImpl.h.
References assert(), llvm::DivergencePropagator< ContextT >::computeJoinPoints(), llvm::dbgs(), LLVM_DEBUG, and llvm::succ_size().