LLVM 23.0.0git
llvm::BranchProbability Class Reference

#include "llvm/Support/BranchProbability.h"

Public Member Functions

constexpr BranchProbability ()
constexpr 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 constexpr BranchProbability getZero ()
static constexpr BranchProbability getOne ()
static constexpr BranchProbability getUnknown ()
static constexpr 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 ( )
inlineconstexpr

◆ BranchProbability() [2/2]

llvm::BranchProbability::BranchProbability ( uint32_t Numerator,
uint32_t Denominator )
inlineconstexpr

Definition at line 46 of file BranchProbability.h.

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 51 of file BranchProbability.cpp.

References assert(), and BranchProbability().

◆ getBranchProbability() [2/2]

◆ getCompl()

◆ getDenominator()

◆ getNumerator()

◆ getOne()

◆ getRaw()

constexpr BranchProbability llvm::BranchProbability::getRaw ( uint32_t N)
inlinestaticconstexpr

◆ getUnknown()

◆ getZero()

◆ isOne()

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

◆ isUnknown()

◆ isZero()

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

Definition at line 58 of file BranchProbability.h.

◆ normalizeProbabilities() [1/2]

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

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

References RHS.

◆ operator*() [1/2]

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

Definition at line 178 of file BranchProbability.h.

References RHS.

◆ operator*() [2/2]

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

Definition at line 184 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+()

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

Definition at line 166 of file BranchProbability.h.

References RHS.

◆ operator+=()

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

Definition at line 121 of file BranchProbability.h.

References assert(), and RHS.

◆ operator-()

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

Definition at line 172 of file BranchProbability.h.

References RHS.

◆ operator-=()

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

Definition at line 129 of file BranchProbability.h.

References assert(), and RHS.

◆ operator/() [1/2]

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

Definition at line 190 of file BranchProbability.h.

References RHS.

◆ operator/() [2/2]

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

Definition at line 196 of file BranchProbability.h.

References RHS.

◆ operator/=() [1/2]

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

Definition at line 151 of file BranchProbability.h.

References assert(), and RHS.

◆ operator/=() [2/2]

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

Definition at line 158 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.

◆ operator<=()

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

Definition at line 217 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 RHS.

◆ operator>()

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

Definition at line 211 of file BranchProbability.h.

References assert(), and RHS.

◆ operator>=()

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

Definition at line 223 of file BranchProbability.h.

References assert(), and RHS.

◆ pow()

BranchProbability BranchProbability::pow ( unsigned N) const

Compute pow(Probability, N).

Definition at line 106 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 98 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 102 of file BranchProbability.cpp.

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

◆ toDouble()

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

Definition at line 91 of file BranchProbability.h.

Referenced by CloneLoopBlocks(), and fixProbContradiction().


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