LLVM 20.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 | CycleT = typename CycleInfoT::CycleT |
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 259 of file GenericUniformityImpl.h.
using llvm::GenericSyncDependenceAnalysis< ContextT >::BlockLabelMap = DenseMap<const BlockT *, const BlockT *> |
Definition at line 280 of file GenericUniformityImpl.h.
using llvm::GenericSyncDependenceAnalysis< ContextT >::BlockT = typename ContextT::BlockT |
Definition at line 261 of file GenericUniformityImpl.h.
using llvm::GenericSyncDependenceAnalysis< ContextT >::ConstBlockSet = SmallPtrSet<const BlockT *, 4> |
Definition at line 270 of file GenericUniformityImpl.h.
using llvm::GenericSyncDependenceAnalysis< ContextT >::CycleInfoT = GenericCycleInfo<ContextT> |
Definition at line 267 of file GenericUniformityImpl.h.
using llvm::GenericSyncDependenceAnalysis< ContextT >::CycleT = typename CycleInfoT::CycleT |
Definition at line 268 of file GenericUniformityImpl.h.
using llvm::GenericSyncDependenceAnalysis< ContextT >::DivergencePropagatorT = DivergencePropagator<ContextT> |
Definition at line 293 of file GenericUniformityImpl.h.
using llvm::GenericSyncDependenceAnalysis< ContextT >::DominatorTreeT = typename ContextT::DominatorTreeT |
Definition at line 262 of file GenericUniformityImpl.h.
using llvm::GenericSyncDependenceAnalysis< ContextT >::FunctionT = typename ContextT::FunctionT |
Definition at line 263 of file GenericUniformityImpl.h.
using llvm::GenericSyncDependenceAnalysis< ContextT >::InstructionT = typename ContextT::InstructionT |
Definition at line 265 of file GenericUniformityImpl.h.
using llvm::GenericSyncDependenceAnalysis< ContextT >::ModifiedPO = ModifiedPostOrder<ContextT> |
Definition at line 271 of file GenericUniformityImpl.h.
using llvm::GenericSyncDependenceAnalysis< ContextT >::ValueRefT = typename ContextT::ValueRefT |
Definition at line 264 of file GenericUniformityImpl.h.
llvm::GenericSyncDependenceAnalysis< ContextT >::GenericSyncDependenceAnalysis | ( | const ContextT & | Context, |
const DominatorTreeT & | DT, | ||
const CycleInfoT & | CI | ||
) |
Definition at line 733 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 740 of file GenericUniformityImpl.h.
References assert(), Blocks, llvm::DivergencePropagator< ContextT >::computeJoinPoints(), llvm::dbgs(), LLVM_DEBUG, llvm::print(), and llvm::succ_size().