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
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)
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

Definition at line 45 of file BranchProbability.h.

Referenced by getBranchProbability(), getCompl(), getOne(), getRaw(), getUnknown(), and getZero().

◆ 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()

◆ 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 68 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 185 of file BranchProbability.h.

References RHS.

◆ operator*() [1/2]

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

Definition at line 160 of file BranchProbability.h.

References RHS.

◆ operator*() [2/2]

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

Definition at line 166 of file BranchProbability.h.

References RHS.

◆ operator*=() [1/2]

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

Definition at line 119 of file BranchProbability.h.

References assert(), and RHS.

◆ operator*=() [2/2]

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

Definition at line 126 of file BranchProbability.h.

References assert(), and RHS.

◆ operator+()

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

Definition at line 148 of file BranchProbability.h.

References RHS.

◆ operator+=()

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

Definition at line 103 of file BranchProbability.h.

References assert(), and RHS.

◆ operator-()

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

Definition at line 154 of file BranchProbability.h.

References RHS.

◆ operator-=()

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

Definition at line 111 of file BranchProbability.h.

References assert(), and RHS.

◆ operator/() [1/2]

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

Definition at line 172 of file BranchProbability.h.

References RHS.

◆ operator/() [2/2]

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

Definition at line 178 of file BranchProbability.h.

References RHS.

◆ operator/=() [1/2]

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

Definition at line 133 of file BranchProbability.h.

References assert(), and RHS.

◆ operator/=() [2/2]

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

Definition at line 140 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 assert(), and RHS.

◆ operator<=()

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

Definition at line 199 of file BranchProbability.h.

References assert(), and RHS.

◆ operator==()

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

Definition at line 184 of file BranchProbability.h.

References RHS.

◆ operator>()

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

Definition at line 193 of file BranchProbability.h.

References assert(), and RHS.

◆ operator>=()

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

Definition at line 205 of file BranchProbability.h.

References assert(), and RHS.

◆ pow()

BranchProbability BranchProbability::pow ( unsigned N) const

Compute pow(Probability, N).

Definition at line 113 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 105 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 109 of file BranchProbability.cpp.

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


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