LLVM 20.0.0git
Public Types | Public Member Functions | Public Attributes | List of all members
llvm::DivergencePropagator< ContextT > Class Template Reference

Compute divergence starting with a divergent branch. More...

#include "llvm/ADT/GenericUniformityImpl.h"

Public Types

using BlockT = typename ContextT::BlockT
 
using DominatorTreeT = typename ContextT::DominatorTreeT
 
using FunctionT = typename ContextT::FunctionT
 
using ValueRefT = typename ContextT::ValueRefT
 
using CycleInfoT = GenericCycleInfo< ContextT >
 
using CycleT = typename CycleInfoT::CycleT
 
using ModifiedPO = ModifiedPostOrder< ContextT >
 
using SyncDependenceAnalysisT = GenericSyncDependenceAnalysis< ContextT >
 
using DivergenceDescriptorT = typename SyncDependenceAnalysisT::DivergenceDescriptor
 
using BlockLabelMapT = typename SyncDependenceAnalysisT::BlockLabelMap
 

Public Member Functions

 DivergencePropagator (const ModifiedPO &CyclePOT, const DominatorTreeT &DT, const CycleInfoT &CI, const BlockT &DivTermBlock)
 
void printDefs (raw_ostream &Out)
 
bool computeJoin (const BlockT &SuccBlock, const BlockT &PushedLabel)
 
bool visitCycleExitEdge (const BlockT &ExitBlock, const BlockT &Label)
 
bool visitEdge (const BlockT &SuccBlock, const BlockT &Label)
 
std::unique_ptr< DivergenceDescriptorTcomputeJoinPoints ()
 

Public Attributes

const ModifiedPOCyclePOT
 
const DominatorTreeTDT
 
const CycleInfoTCI
 
const BlockTDivTermBlock
 
const ContextT & Context
 
SparseBitVector FreshLabels
 
std::unique_ptr< DivergenceDescriptorTDivDesc
 
BlockLabelMapTBlockLabels
 

Detailed Description

template<typename ContextT>
class llvm::DivergencePropagator< ContextT >

Compute divergence starting with a divergent branch.

Definition at line 481 of file GenericUniformityImpl.h.

Member Typedef Documentation

◆ BlockLabelMapT

template<typename ContextT >
using llvm::DivergencePropagator< ContextT >::BlockLabelMapT = typename SyncDependenceAnalysisT::BlockLabelMap

Definition at line 495 of file GenericUniformityImpl.h.

◆ BlockT

template<typename ContextT >
using llvm::DivergencePropagator< ContextT >::BlockT = typename ContextT::BlockT

Definition at line 483 of file GenericUniformityImpl.h.

◆ CycleInfoT

template<typename ContextT >
using llvm::DivergencePropagator< ContextT >::CycleInfoT = GenericCycleInfo<ContextT>

Definition at line 488 of file GenericUniformityImpl.h.

◆ CycleT

template<typename ContextT >
using llvm::DivergencePropagator< ContextT >::CycleT = typename CycleInfoT::CycleT

Definition at line 489 of file GenericUniformityImpl.h.

◆ DivergenceDescriptorT

template<typename ContextT >
using llvm::DivergencePropagator< ContextT >::DivergenceDescriptorT = typename SyncDependenceAnalysisT::DivergenceDescriptor

Definition at line 493 of file GenericUniformityImpl.h.

◆ DominatorTreeT

template<typename ContextT >
using llvm::DivergencePropagator< ContextT >::DominatorTreeT = typename ContextT::DominatorTreeT

Definition at line 484 of file GenericUniformityImpl.h.

◆ FunctionT

template<typename ContextT >
using llvm::DivergencePropagator< ContextT >::FunctionT = typename ContextT::FunctionT

Definition at line 485 of file GenericUniformityImpl.h.

◆ ModifiedPO

template<typename ContextT >
using llvm::DivergencePropagator< ContextT >::ModifiedPO = ModifiedPostOrder<ContextT>

Definition at line 491 of file GenericUniformityImpl.h.

◆ SyncDependenceAnalysisT

template<typename ContextT >
using llvm::DivergencePropagator< ContextT >::SyncDependenceAnalysisT = GenericSyncDependenceAnalysis<ContextT>

Definition at line 492 of file GenericUniformityImpl.h.

◆ ValueRefT

template<typename ContextT >
using llvm::DivergencePropagator< ContextT >::ValueRefT = typename ContextT::ValueRefT

Definition at line 486 of file GenericUniformityImpl.h.

Constructor & Destructor Documentation

◆ DivergencePropagator()

template<typename ContextT >
llvm::DivergencePropagator< ContextT >::DivergencePropagator ( const ModifiedPO CyclePOT,
const DominatorTreeT DT,
const CycleInfoT CI,
const BlockT DivTermBlock 
)
inline

Definition at line 513 of file GenericUniformityImpl.h.

Member Function Documentation

◆ computeJoin()

template<typename ContextT >
bool llvm::DivergencePropagator< ContextT >::computeJoin ( const BlockT SuccBlock,
const BlockT PushedLabel 
)
inline

◆ computeJoinPoints()

template<typename ContextT >
std::unique_ptr< DivergenceDescriptorT > llvm::DivergencePropagator< ContextT >::computeJoinPoints ( )
inline

◆ printDefs()

template<typename ContextT >
void llvm::DivergencePropagator< ContextT >::printDefs ( raw_ostream Out)
inline

◆ visitCycleExitEdge()

template<typename ContextT >
bool llvm::DivergencePropagator< ContextT >::visitCycleExitEdge ( const BlockT ExitBlock,
const BlockT Label 
)
inline

◆ visitEdge()

template<typename ContextT >
bool llvm::DivergencePropagator< ContextT >::visitEdge ( const BlockT SuccBlock,
const BlockT Label 
)
inline

Member Data Documentation

◆ BlockLabels

template<typename ContextT >
BlockLabelMapT& llvm::DivergencePropagator< ContextT >::BlockLabels

◆ CI

template<typename ContextT >
const CycleInfoT& llvm::DivergencePropagator< ContextT >::CI

◆ Context

template<typename ContextT >
const ContextT& llvm::DivergencePropagator< ContextT >::Context

◆ CyclePOT

template<typename ContextT >
const ModifiedPO& llvm::DivergencePropagator< ContextT >::CyclePOT

◆ DivDesc

template<typename ContextT >
std::unique_ptr<DivergenceDescriptorT> llvm::DivergencePropagator< ContextT >::DivDesc

◆ DivTermBlock

template<typename ContextT >
const BlockT& llvm::DivergencePropagator< ContextT >::DivTermBlock

◆ DT

template<typename ContextT >
const DominatorTreeT& llvm::DivergencePropagator< ContextT >::DT

Definition at line 498 of file GenericUniformityImpl.h.

◆ FreshLabels

template<typename ContextT >
SparseBitVector llvm::DivergencePropagator< ContextT >::FreshLabels

The documentation for this class was generated from the following file: