LLVM 17.0.0git
Public Types | Public Member Functions | List of all members
llvm::GenericUniformityInfo< ContextT > Class Template Reference

#include "llvm/ADT/GenericUniformityInfo.h"

Inheritance diagram for llvm::GenericUniformityInfo< ContextT >:
Inheritance graph
[legend]

Public Types

using BlockT = typename ContextT::BlockT
 
using FunctionT = typename ContextT::FunctionT
 
using ValueRefT = typename ContextT::ValueRefT
 
using ConstValueRefT = typename ContextT::ConstValueRefT
 
using UseT = typename ContextT::UseT
 
using InstructionT = typename ContextT::InstructionT
 
using DominatorTreeT = typename ContextT::DominatorTreeT
 
using ThisT = GenericUniformityInfo< ContextT >
 
using CycleInfoT = GenericCycleInfo< ContextT >
 
using CycleT = typename CycleInfoT::CycleT
 

Public Member Functions

 GenericUniformityInfo (FunctionT &F, const DominatorTreeT &DT, const CycleInfoT &CI, const TargetTransformInfo *TTI=nullptr)
 
 GenericUniformityInfo ()=default
 
 GenericUniformityInfo (GenericUniformityInfo &&)=default
 
GenericUniformityInfooperator= (GenericUniformityInfo &&)=default
 
bool hasDivergence () const
 Whether any divergence was detected.
 
const FunctionTgetFunction () const
 The GPU kernel this analysis result is for.
 
bool isDivergent (ConstValueRefT V) const
 Whether V is divergent at its definition.
 
bool isUniform (ConstValueRefT V) const
 Whether V is uniform/non-divergent.
 
bool isUniform (const InstructionT *I) const
 
bool isDivergent (const InstructionT *I) const
 
bool isDivergentUse (const UseT &U) const
 Whether U is divergent.
 
bool hasDivergentTerminator (const BlockT &B)
 
void print (raw_ostream &Out) const
 T helper function for printing.
 

Detailed Description

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

Definition at line 33 of file GenericUniformityInfo.h.

Member Typedef Documentation

◆ BlockT

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

Definition at line 35 of file GenericUniformityInfo.h.

◆ ConstValueRefT

template<typename ContextT >
using llvm::GenericUniformityInfo< ContextT >::ConstValueRefT = typename ContextT::ConstValueRefT

Definition at line 38 of file GenericUniformityInfo.h.

◆ CycleInfoT

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

Definition at line 44 of file GenericUniformityInfo.h.

◆ CycleT

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

Definition at line 45 of file GenericUniformityInfo.h.

◆ DominatorTreeT

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

Definition at line 41 of file GenericUniformityInfo.h.

◆ FunctionT

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

Definition at line 36 of file GenericUniformityInfo.h.

◆ InstructionT

template<typename ContextT >
using llvm::GenericUniformityInfo< ContextT >::InstructionT = typename ContextT::InstructionT

Definition at line 40 of file GenericUniformityInfo.h.

◆ ThisT

template<typename ContextT >
using llvm::GenericUniformityInfo< ContextT >::ThisT = GenericUniformityInfo<ContextT>

Definition at line 42 of file GenericUniformityInfo.h.

◆ UseT

template<typename ContextT >
using llvm::GenericUniformityInfo< ContextT >::UseT = typename ContextT::UseT

Definition at line 39 of file GenericUniformityInfo.h.

◆ ValueRefT

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

Definition at line 37 of file GenericUniformityInfo.h.

Constructor & Destructor Documentation

◆ GenericUniformityInfo() [1/3]

template<typename ContextT >
llvm::GenericUniformityInfo< ContextT >::GenericUniformityInfo ( FunctionT F,
const DominatorTreeT DT,
const CycleInfoT CI,
const TargetTransformInfo TTI = nullptr 
)

Definition at line 1202 of file GenericUniformityImpl.h.

◆ GenericUniformityInfo() [2/3]

template<typename ContextT >
llvm::GenericUniformityInfo< ContextT >::GenericUniformityInfo ( )
default

◆ GenericUniformityInfo() [3/3]

template<typename ContextT >
llvm::GenericUniformityInfo< ContextT >::GenericUniformityInfo ( GenericUniformityInfo< ContextT > &&  )
default

Member Function Documentation

◆ getFunction()

template<typename ContextT >
const FunctionT & llvm::GenericUniformityInfo< ContextT >::getFunction ( ) const
inline

The GPU kernel this analysis result is for.

Definition at line 58 of file GenericUniformityInfo.h.

◆ hasDivergence()

template<typename ContextT >
bool llvm::GenericUniformityInfo< ContextT >::hasDivergence

Whether any divergence was detected.

Definition at line 1278 of file GenericUniformityImpl.h.

◆ hasDivergentTerminator()

template<typename ContextT >
bool llvm::GenericUniformityInfo< ContextT >::hasDivergentTerminator ( const BlockT B)

Definition at line 1299 of file GenericUniformityImpl.h.

References B.

◆ isDivergent() [1/2]

template<typename ContextT >
bool llvm::GenericUniformityInfo< ContextT >::isDivergent ( const InstructionT I) const

Definition at line 1289 of file GenericUniformityImpl.h.

References I.

◆ isDivergent() [2/2]

template<typename ContextT >
bool llvm::GenericUniformityInfo< ContextT >::isDivergent ( ConstValueRefT  V) const

◆ isDivergentUse()

template<typename ContextT >
bool llvm::GenericUniformityInfo< ContextT >::isDivergentUse ( const UseT U) const

Whether U is divergent.

Uses of a uniform value can be divergent.

Definition at line 1294 of file GenericUniformityImpl.h.

◆ isUniform() [1/2]

template<typename ContextT >
bool llvm::GenericUniformityInfo< ContextT >::isUniform ( const InstructionT I) const
inline

◆ isUniform() [2/2]

template<typename ContextT >
bool llvm::GenericUniformityInfo< ContextT >::isUniform ( ConstValueRefT  V) const
inline

Whether V is uniform/non-divergent.

Definition at line 64 of file GenericUniformityInfo.h.

References llvm::GenericUniformityInfo< ContextT >::isDivergent().

Referenced by hasOnlyUniformBranches(), and isUniformlyReached().

◆ operator=()

template<typename ContextT >
GenericUniformityInfo & llvm::GenericUniformityInfo< ContextT >::operator= ( GenericUniformityInfo< ContextT > &&  )
default

◆ print()

template<typename ContextT >
void llvm::GenericUniformityInfo< ContextT >::print ( raw_ostream Out) const

T helper function for printing.

Definition at line 1305 of file GenericUniformityImpl.h.


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