LLVM 24.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 ModifiedPO = ModifiedPostOrder<ContextT>
using SyncDependenceAnalysisT = GenericSyncDependenceAnalysis<ContextT>
using DivergenceDescriptorT

Public Member Functions

const BlockT *& label (const BlockT *BB)
 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
SmallVector< const BlockT * > BlockLabels

Detailed Description

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

Compute divergence starting with a divergent branch.

Definition at line 507 of file GenericUniformityImpl.h.

Member Typedef Documentation

◆ BlockT

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

Definition at line 509 of file GenericUniformityImpl.h.

◆ CycleInfoT

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

Definition at line 514 of file GenericUniformityImpl.h.

◆ DivergenceDescriptorT

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

Definition at line 518 of file GenericUniformityImpl.h.

◆ DominatorTreeT

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

Definition at line 510 of file GenericUniformityImpl.h.

◆ FunctionT

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

Definition at line 511 of file GenericUniformityImpl.h.

◆ ModifiedPO

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

Definition at line 516 of file GenericUniformityImpl.h.

◆ SyncDependenceAnalysisT

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

Definition at line 517 of file GenericUniformityImpl.h.

◆ ValueRefT

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

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

References BlockLabels, CI, const, Context, CyclePOT, DivDesc, DivTermBlock, DT, and getFunction().

Member Function Documentation

◆ computeJoin()

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

Definition at line 574 of file GenericUniformityImpl.h.

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

Referenced by visitCycleExitEdge(), and visitEdge().

◆ computeJoinPoints()

◆ label()

template<typename ContextT>
const BlockT *& llvm::DivergencePropagator< ContextT >::label ( const BlockT * BB)
inline

Definition at line 545 of file GenericUniformityImpl.h.

References BlockLabels.

Referenced by computeJoin(), computeJoinPoints(), and printDefs().

◆ printDefs()

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

Definition at line 557 of file GenericUniformityImpl.h.

References llvm::Block, Context, CyclePOT, and label().

Referenced by computeJoinPoints().

◆ visitCycleExitEdge()

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

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

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

Referenced by computeJoinPoints().

Member Data Documentation

◆ BlockLabels

template<typename ContextT>
SmallVector<const BlockT *> llvm::DivergencePropagator< ContextT >::BlockLabels

Definition at line 543 of file GenericUniformityImpl.h.

Referenced by DivergencePropagator(), and label().

◆ CI

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

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

Referenced by computeJoinPoints(), and DivergencePropagator().

◆ DT

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

Definition at line 522 of file GenericUniformityImpl.h.

Referenced by DivergencePropagator().

◆ FreshLabels

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

Definition at line 531 of file GenericUniformityImpl.h.

Referenced by computeJoin(), and computeJoinPoints().


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