LLVM: lib/CodeGen/MachineBranchProbabilityInfo.cpp Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

18

19using namespace llvm;

20

22 "Machine Branch Probability Analysis", false, true)

23namespace llvm {

26 cl::desc("branch probability threshold in percentage"

27 " to be considered very likely"),

29

31 "profile-likely-prob",

32 cl::desc("branch probability threshold in percentage to be considered"

33 " very likely when profile is available"),

35}

36

42

46 OS << "Printing analysis 'Machine Branch Probability Analysis' for machine "

47 "function '"

48 << MF.getName() << "':\n";

52 MBPI.printEdgeProbability(OS << " ", &MBB, Succ);

53 }

55}

56

58

65

66void MachineBranchProbabilityInfoWrapperPass::anchor() {}

67

68AnalysisKey MachineBranchProbabilityAnalysis::Key;

69

72 MachineFunctionAnalysisManager::Invalidator &) {

74 return !PAC.preservedWhenStateless();

75}

76

80 return Src->getSuccProbability(Dst);

81}

82

89

95

99

102 << " probability is " << Prob

103 << (isEdgeHot(Src, Dst) ? " [HOT edge]\n" : "\n");

104

105 return OS;

106}

#define INITIALIZE_PASS(passName, arg, name, cfg, analysis)

PassT::Result & getResult(IRUnitT &IR, ExtraArgTs... ExtraArgs)

Get the result of an analysis pass for a given IR unit.

SmallVectorImpl< MachineBasicBlock * >::const_iterator const_succ_iterator

Result run(MachineFunction &, MachineFunctionAnalysisManager &)

Definition MachineBranchProbabilityInfo.cpp:38

MachineBranchProbabilityInfo Result

MachineBranchProbabilityInfoWrapperPass()

Definition MachineBranchProbabilityInfo.cpp:60

raw_ostream & printEdgeProbability(raw_ostream &OS, const MachineBasicBlock *Src, const MachineBasicBlock *Dst) const

Definition MachineBranchProbabilityInfo.cpp:96

bool invalidate(MachineFunction &, const PreservedAnalyses &PA, MachineFunctionAnalysisManager::Invalidator &)

Definition MachineBranchProbabilityInfo.cpp:70

bool isEdgeHot(const MachineBasicBlock *Src, const MachineBasicBlock *Dst) const

Definition MachineBranchProbabilityInfo.cpp:90

BranchProbability getEdgeProbability(const MachineBasicBlock *Src, const MachineBasicBlock *Dst) const

Definition MachineBranchProbabilityInfo.cpp:83

PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)

Definition MachineBranchProbabilityInfo.cpp:44

StringRef getName() const

getName - Return the name of the corresponding LLVM function.

PassRegistry - This class manages the registration and intitialization of the pass subsystem as appli...

static LLVM_ABI PassRegistry * getPassRegistry()

getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...

A set of analyses that are preserved following a run of a transformation pass.

static PreservedAnalyses all()

Construct a special preserved set that preserves all passes.

PreservedAnalysisChecker getChecker() const

Build a checker for this PreservedAnalyses and the specified analysis type.

A global registry used in conjunction with static constructors to make pluggable components (like tar...

This class implements an extremely fast bulk output stream that can only output to a stream.

initializer< Ty > init(const Ty &Val)

This is an optimization pass for GlobalISel generic memory operations.

auto find(R &&Range, const T &Val)

Provide wrappers to std::find which take ranges instead of having to pass begin/end explicitly.

AnalysisManager< MachineFunction > MachineFunctionAnalysisManager

cl::opt< unsigned > ProfileLikelyProb

LLVM_ABI void initializeMachineBranchProbabilityInfoWrapperPassPass(PassRegistry &)

cl::opt< unsigned > StaticLikelyProb

LLVM_ABI Printable printMBBReference(const MachineBasicBlock &MBB)

Prints a machine basic block reference.

A special type used by analysis passes to provide an address that identifies that particular analysis...