23 "Machine Branch Probability Analysis",
false,
true)
27 char MachineBranchProbabilityInfo::
ID = 0;
29 void MachineBranchProbabilityInfo::anchor() { }
46 if (Sum <= UINT32_MAX)
51 assert((Sum / UINT32_MAX) < UINT32_MAX);
52 Scale = (Sum / UINT32_MAX) + 1;
57 Sum += Weight / Scale;
59 assert(Sum <= UINT32_MAX);
66 uint32_t Weight = Src->getSuccWeight(Dst);
68 return DEFAULT_WEIGHT;
90 uint32_t MaxWeight = 0;
95 if (Weight > MaxWeight) {
122 <<
" probability is " << Prob
123 << (
isEdgeHot(Src, Dst) ?
" [HOT edge]\n" :
"\n");
unsigned succ_size() const
int getNumber() const
getNumber - MachineBasicBlocks are uniquely numbered at the function level, unless they're not in a M...
INITIALIZE_PASS_BEGIN(MachineBranchProbabilityInfo,"machine-branch-prob","Machine Branch Probability Analysis", false, true) INITIALIZE_PASS_END(MachineBranchProbabilityInfo
machine branch Machine Branch Probability false
machine branch Machine Branch Probability Analysis
#define INITIALIZE_PASS_END(passName, arg, name, cfg, analysis)
COFF::MachineTypes Machine
succ_iterator succ_begin()
MachineBasicBlock * getHotSucc(MachineBasicBlock *MBB) const
uint32_t getSumForBlock(const MachineBasicBlock *MBB, uint32_t &Scale) const
bool isEdgeHot(const MachineBasicBlock *Src, const MachineBasicBlock *Dst) const
uint32_t getEdgeWeight(const MachineBasicBlock *Src, const MachineBasicBlock *Dst) const
std::vector< MachineBasicBlock * >::const_iterator const_succ_iterator
This class implements an extremely fast bulk output stream that can only output to a stream...
raw_ostream & printEdgeProbability(raw_ostream &OS, const MachineBasicBlock *Src, const MachineBasicBlock *Dst) const
BranchProbability getEdgeProbability(const MachineBasicBlock *Src, const MachineBasicBlock *Dst) const