LLVM 23.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 isOne () 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.
LLVM_ABI 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

◆ getUnknown()

◆ getZero()

◆ isOne()

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

◆ 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 71 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 189 of file BranchProbability.h.

References RHS.

◆ operator*() [1/2]

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

Definition at line 164 of file BranchProbability.h.

References RHS.

◆ operator*() [2/2]

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

Definition at line 170 of file BranchProbability.h.

References RHS.

◆ operator*=() [1/2]

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

Definition at line 123 of file BranchProbability.h.

References assert(), and RHS.

◆ operator*=() [2/2]

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

Definition at line 130 of file BranchProbability.h.

References assert(), and RHS.

◆ operator+()

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

Definition at line 152 of file BranchProbability.h.

References RHS.

◆ operator+=()

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

Definition at line 107 of file BranchProbability.h.

References assert(), and RHS.

◆ operator-()

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

Definition at line 158 of file BranchProbability.h.

References RHS.

◆ operator-=()

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

Definition at line 115 of file BranchProbability.h.

References assert(), and RHS.

◆ operator/() [1/2]

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

Definition at line 176 of file BranchProbability.h.

References RHS.

◆ operator/() [2/2]

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

Definition at line 182 of file BranchProbability.h.

References RHS.

◆ operator/=() [1/2]

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

Definition at line 137 of file BranchProbability.h.

References assert(), and RHS.

◆ operator/=() [2/2]

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

Definition at line 144 of file BranchProbability.h.

References assert(), and RHS.

◆ operator<()

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

Definition at line 191 of file BranchProbability.h.

References assert(), and RHS.

◆ operator<=()

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

Definition at line 203 of file BranchProbability.h.

References assert(), and RHS.

◆ operator==()

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

Definition at line 188 of file BranchProbability.h.

References RHS.

◆ operator>()

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

Definition at line 197 of file BranchProbability.h.

References assert(), and RHS.

◆ operator>=()

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

Definition at line 209 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 77 of file BranchProbability.h.

Referenced by CloneLoopBlocks(), and fixProbContradiction().


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