14 #ifndef LLVM_SUPPORT_BRANCHPROBABILITY_H
15 #define LLVM_SUPPORT_BRANCHPROBABILITY_H
17 #include "llvm/Support/DataTypes.h"
34 assert(d > 0 &&
"Denominator cannot be 0!");
35 assert(n <= d &&
"Probability cannot be bigger than 1!");
59 uint64_t
scale(uint64_t Num)
const;
70 return (uint64_t)N * RHS.D == (uint64_t)D * RHS.N;
73 return !(*
this == RHS);
76 return (uint64_t)N * RHS.D < (uint64_t)D * RHS.N;
84 return Prob.
print(OS);
uint32_t getNumerator() const
bool operator>(BranchProbability RHS) const
static BranchProbability getOne()
bool operator>=(BranchProbability RHS) const
bool operator==(BranchProbability RHS) const
BranchProbability(uint32_t n, uint32_t d)
uint64_t scaleByInverse(uint64_t Num) const
Scale a large integer by the inverse.
raw_ostream & print(raw_ostream &OS) const
bool operator!=(BranchProbability RHS) const
bool operator<=(BranchProbability RHS) const
bool operator<(BranchProbability RHS) const
uint64_t scale(uint64_t Num) const
Scale a large integer.
uint32_t getDenominator() const
raw_ostream & operator<<(raw_ostream &OS, const APInt &I)
This class implements an extremely fast bulk output stream that can only output to a stream...
static BranchProbability getZero()
BranchProbability getCompl() const