LLVM 22.0.0git
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
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 492 of file GenericUniformityImpl.h.

Member Typedef Documentation

◆ BlockLabelMapT

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

Definition at line 506 of file GenericUniformityImpl.h.

◆ BlockT

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

Definition at line 494 of file GenericUniformityImpl.h.

◆ CycleInfoT

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

Definition at line 499 of file GenericUniformityImpl.h.

◆ CycleT

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

Definition at line 500 of file GenericUniformityImpl.h.

◆ DivergenceDescriptorT

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

Definition at line 504 of file GenericUniformityImpl.h.

◆ DominatorTreeT

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

Definition at line 495 of file GenericUniformityImpl.h.

◆ FunctionT

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

Definition at line 496 of file GenericUniformityImpl.h.

◆ ModifiedPO

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

Definition at line 502 of file GenericUniformityImpl.h.

◆ SyncDependenceAnalysisT

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

Definition at line 503 of file GenericUniformityImpl.h.

◆ ValueRefT

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

Definition at line 497 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 524 of file GenericUniformityImpl.h.

References BlockLabels, CI, Context, CyclePOT, DivDesc, DivTermBlock, and DT.

Member Function Documentation

◆ computeJoin()

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

Definition at line 547 of file GenericUniformityImpl.h.

References BlockLabels, Context, CyclePOT, llvm::dbgs(), FreshLabels, and LLVM_DEBUG.

Referenced by visitCycleExitEdge(), and visitEdge().

◆ computeJoinPoints()

◆ printDefs()

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

Definition at line 530 of file GenericUniformityImpl.h.

References llvm::Block, BlockLabels, Context, and CyclePOT.

Referenced by computeJoinPoints().

◆ visitCycleExitEdge()

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

Definition at line 584 of file GenericUniformityImpl.h.

References computeJoin(), Context, llvm::dbgs(), DivDesc, and LLVM_DEBUG.

Referenced by computeJoinPoints().

◆ visitEdge()

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

Definition at line 596 of file GenericUniformityImpl.h.

References computeJoin(), Context, llvm::dbgs(), DivDesc, and LLVM_DEBUG.

Referenced by computeJoinPoints().

Member Data Documentation

◆ BlockLabels

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

◆ CI

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

Definition at line 510 of file GenericUniformityImpl.h.

Referenced by computeJoinPoints(), and DivergencePropagator().

◆ 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

Definition at line 511 of file GenericUniformityImpl.h.

Referenced by computeJoinPoints(), and DivergencePropagator().

◆ DT

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

Definition at line 509 of file GenericUniformityImpl.h.

Referenced by DivergencePropagator().

◆ FreshLabels

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

Definition at line 518 of file GenericUniformityImpl.h.

Referenced by computeJoin(), and computeJoinPoints().


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