LLVM 22.0.0git
llvm::BranchProbability Class Reference

#include "llvm/Support/BranchProbability.h"

Public Member Functions

 BranchProbability ()
LLVM_ABI BranchProbability (uint32_t Numerator, uint32_t Denominator)
bool isZero () const
bool isUnknown () const
uint32_t getNumerator () const
double toDouble () const
BranchProbability getCompl () const
LLVM_ABI raw_ostreamprint (raw_ostream &OS) const
LLVM_DUMP_METHOD void dump () const
LLVM_ABI uint64_t scale (uint64_t Num) const
 Scale a large integer.
LLVM_ABI uint64_t scaleByInverse (uint64_t Num) const
 Scale a large integer by the inverse.
BranchProbability pow (unsigned N) const
 Compute pow(Probability, N).
BranchProbabilityoperator+= (BranchProbability RHS)
BranchProbabilityoperator-= (BranchProbability RHS)
BranchProbabilityoperator*= (BranchProbability RHS)
BranchProbabilityoperator*= (uint32_t RHS)
BranchProbabilityoperator/= (BranchProbability RHS)
BranchProbabilityoperator/= (uint32_t RHS)
BranchProbability operator+ (BranchProbability RHS) const
BranchProbability operator- (BranchProbability RHS) const
BranchProbability operator* (BranchProbability RHS) const
BranchProbability operator* (uint32_t RHS) const
BranchProbability operator/ (BranchProbability RHS) const
BranchProbability operator/ (uint32_t RHS) const
bool operator== (BranchProbability RHS) const
bool operator!= (BranchProbability RHS) const
bool operator< (BranchProbability RHS) const
bool operator> (BranchProbability RHS) const
bool operator<= (BranchProbability RHS) const
bool operator>= (BranchProbability RHS) const

Static Public Member Functions

static BranchProbability getZero ()
static BranchProbability getOne ()
static BranchProbability getUnknown ()
static BranchProbability getRaw (uint32_t N)
static LLVM_ABI BranchProbability getBranchProbability (uint64_t Numerator, uint64_t Denominator)
static LLVM_ABI BranchProbability getBranchProbability (double Prob)
template<class ProbabilityIter>
static void normalizeProbabilities (ProbabilityIter Begin, ProbabilityIter End)
template<class ProbabilityContainer>
static void normalizeProbabilities (ProbabilityContainer &&R)
static uint32_t getDenominator ()

Detailed Description

Definition at line 32 of file BranchProbability.h.

Constructor & Destructor Documentation

◆ BranchProbability() [1/2]

llvm::BranchProbability::BranchProbability ( )
inline

◆ BranchProbability() [2/2]

BranchProbability::BranchProbability ( uint32_t Numerator,
uint32_t Denominator )

Definition at line 38 of file BranchProbability.cpp.

References assert().

Member Function Documentation

◆ dump()

LLVM_DUMP_METHOD void BranchProbability::dump ( ) const

Definition at line 35 of file BranchProbability.cpp.

References llvm::dbgs(), LLVM_DUMP_METHOD, and print().

◆ getBranchProbability() [1/2]

BranchProbability BranchProbability::getBranchProbability ( double Prob)
static

Definition at line 63 of file BranchProbability.cpp.

References assert(), and BranchProbability().

◆ getBranchProbability() [2/2]

◆ getCompl()

◆ getDenominator()

◆ getNumerator()

◆ getOne()

◆ getRaw()

BranchProbability llvm::BranchProbability::getRaw ( uint32_t N)
inlinestatic

Definition at line 56 of file BranchProbability.h.

References BranchProbability().

Referenced by decodeBBAddrMapImpl(), and normalizeProbabilities().

◆ getUnknown()

◆ getZero()

◆ isUnknown()

◆ isZero()

bool llvm::BranchProbability::isZero ( ) const
inline

Definition at line 48 of file BranchProbability.h.

◆ normalizeProbabilities() [1/2]

template<class ProbabilityContainer>
void llvm::BranchProbability::normalizeProbabilities ( ProbabilityContainer && R)
inlinestatic

Definition at line 70 of file BranchProbability.h.

References llvm::adl_begin(), llvm::adl_end(), and normalizeProbabilities().

◆ normalizeProbabilities() [2/2]

template<class ProbabilityIter>
void llvm::BranchProbability::normalizeProbabilities ( ProbabilityIter Begin,
ProbabilityIter End )
static

◆ operator!=()

bool llvm::BranchProbability::operator!= ( BranchProbability RHS) const
inline

Definition at line 188 of file BranchProbability.h.

References RHS.

◆ operator*() [1/2]

BranchProbability llvm::BranchProbability::operator* ( BranchProbability RHS) const
inline

Definition at line 163 of file BranchProbability.h.

References RHS.

◆ operator*() [2/2]

BranchProbability llvm::BranchProbability::operator* ( uint32_t RHS) const
inline

Definition at line 169 of file BranchProbability.h.

References RHS.

◆ operator*=() [1/2]

BranchProbability & llvm::BranchProbability::operator*= ( BranchProbability RHS)
inline

Definition at line 122 of file BranchProbability.h.

References assert(), and RHS.

◆ operator*=() [2/2]

BranchProbability & llvm::BranchProbability::operator*= ( uint32_t RHS)
inline

Definition at line 129 of file BranchProbability.h.

References assert(), and RHS.

◆ operator+()

BranchProbability llvm::BranchProbability::operator+ ( BranchProbability RHS) const
inline

Definition at line 151 of file BranchProbability.h.

References RHS.

◆ operator+=()

BranchProbability & llvm::BranchProbability::operator+= ( BranchProbability RHS)
inline

Definition at line 106 of file BranchProbability.h.

References assert(), and RHS.

◆ operator-()

BranchProbability llvm::BranchProbability::operator- ( BranchProbability RHS) const
inline

Definition at line 157 of file BranchProbability.h.

References RHS.

◆ operator-=()

BranchProbability & llvm::BranchProbability::operator-= ( BranchProbability RHS)
inline

Definition at line 114 of file BranchProbability.h.

References assert(), and RHS.

◆ operator/() [1/2]

BranchProbability llvm::BranchProbability::operator/ ( BranchProbability RHS) const
inline

Definition at line 175 of file BranchProbability.h.

References RHS.

◆ operator/() [2/2]

BranchProbability llvm::BranchProbability::operator/ ( uint32_t RHS) const
inline

Definition at line 181 of file BranchProbability.h.

References RHS.

◆ operator/=() [1/2]

BranchProbability & llvm::BranchProbability::operator/= ( BranchProbability RHS)
inline

Definition at line 136 of file BranchProbability.h.

References assert(), and RHS.

◆ operator/=() [2/2]

BranchProbability & llvm::BranchProbability::operator/= ( uint32_t RHS)
inline

Definition at line 143 of file BranchProbability.h.

References assert(), and RHS.

◆ operator<()

bool llvm::BranchProbability::operator< ( BranchProbability RHS) const
inline

Definition at line 190 of file BranchProbability.h.

References assert(), and RHS.

◆ operator<=()

bool llvm::BranchProbability::operator<= ( BranchProbability RHS) const
inline

Definition at line 202 of file BranchProbability.h.

References assert(), and RHS.

◆ operator==()

bool llvm::BranchProbability::operator== ( BranchProbability RHS) const
inline

Definition at line 187 of file BranchProbability.h.

References RHS.

◆ operator>()

bool llvm::BranchProbability::operator> ( BranchProbability RHS) const
inline

Definition at line 196 of file BranchProbability.h.

References assert(), and RHS.

◆ operator>=()

bool llvm::BranchProbability::operator>= ( BranchProbability RHS) const
inline

Definition at line 208 of file BranchProbability.h.

References assert(), and RHS.

◆ pow()

BranchProbability BranchProbability::pow ( unsigned N) const

Compute pow(Probability, N).

Definition at line 118 of file BranchProbability.cpp.

References getOne(), and I.

Referenced by probOfNextInRemainder(), llvm::UnrollLoop(), and llvm::UnrollRuntimeLoopRemainder().

◆ print()

raw_ostream & BranchProbability::print ( raw_ostream & OS) const

Definition at line 23 of file BranchProbability.cpp.

References llvm::format(), isUnknown(), and llvm::Percent.

Referenced by dump(), and llvm::operator<<().

◆ scale()

uint64_t BranchProbability::scale ( uint64_t Num) const

Scale a large integer.

Scales Num. Guarantees full precision. Returns the floor of the result.

Returns
Num times this.

Definition at line 110 of file BranchProbability.cpp.

Referenced by llvm::ARMBaseInstrInfo::isProfitableToIfCvt(), llvm::BlockFrequency::operator*=(), and scaleCaseProbality().

◆ scaleByInverse()

uint64_t BranchProbability::scaleByInverse ( uint64_t Num) const

Scale a large integer by the inverse.

Scales Num by the inverse of this. Guarantees full precision. Returns the floor of the result.

Returns
Num divided by this.

Definition at line 114 of file BranchProbability.cpp.

Referenced by llvm::BlockFrequency::operator/=().

◆ toDouble()

double llvm::BranchProbability::toDouble ( ) const
inline

Definition at line 76 of file BranchProbability.h.

Referenced by CloneLoopBlocks().


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