From 670f8e5ba8c30c971de6daa21b50e93d99869d38 Mon Sep 17 00:00:00 2001 From: Xinliang David Li Date: Fri, 3 Jun 2016 23:48:36 +0000 Subject: [PATCH] Replace hard coded probability threshold with parameter /NFC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271751 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/MachineBlockPlacement.cpp | 4 +++- lib/CodeGen/MachineBranchProbabilityInfo.cpp | 17 ++++++++++------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/lib/CodeGen/MachineBlockPlacement.cpp b/lib/CodeGen/MachineBlockPlacement.cpp index 9df4da2f41f..c562af9d964 100644 --- a/lib/CodeGen/MachineBlockPlacement.cpp +++ b/lib/CodeGen/MachineBlockPlacement.cpp @@ -116,6 +116,8 @@ static cl::opt JumpInstCost("jump-inst-cost", cl::desc("Cost of jump instructions."), cl::init(1), cl::Hidden); +extern cl::opt StaticLikelyProb; + namespace { class BlockChain; /// \brief Type for our function-wide basic block -> block chain mapping. @@ -405,7 +407,7 @@ MachineBasicBlock * MachineBlockPlacement::selectBestSuccessor(MachineBasicBlock *BB, BlockChain &Chain, const BlockFilterSet *BlockFilter) { - const BranchProbability HotProb(4, 5); // 80% + const BranchProbability HotProb(StaticLikelyProb, 100); MachineBasicBlock *BestSucc = nullptr; auto BestProb = BranchProbability::getZero(); diff --git a/lib/CodeGen/MachineBranchProbabilityInfo.cpp b/lib/CodeGen/MachineBranchProbabilityInfo.cpp index cf6d4018cb7..3554e4efa5f 100644 --- a/lib/CodeGen/MachineBranchProbabilityInfo.cpp +++ b/lib/CodeGen/MachineBranchProbabilityInfo.cpp @@ -24,9 +24,14 @@ INITIALIZE_PASS_BEGIN(MachineBranchProbabilityInfo, "machine-branch-prob", INITIALIZE_PASS_END(MachineBranchProbabilityInfo, "machine-branch-prob", "Machine Branch Probability Analysis", false, true) +cl::opt StaticLikelyProb( + "static-likely-prob", + cl::desc("branch probability threshold to be considered very likely"), + cl::init(80), cl::Hidden); + char MachineBranchProbabilityInfo::ID = 0; -void MachineBranchProbabilityInfo::anchor() { } +void MachineBranchProbabilityInfo::anchor() {} BranchProbability MachineBranchProbabilityInfo::getEdgeProbability( const MachineBasicBlock *Src, @@ -42,11 +47,9 @@ BranchProbability MachineBranchProbabilityInfo::getEdgeProbability( std::find(Src->succ_begin(), Src->succ_end(), Dst)); } -bool -MachineBranchProbabilityInfo::isEdgeHot(const MachineBasicBlock *Src, - const MachineBasicBlock *Dst) const { - // Hot probability is at least 4/5 = 80% - static BranchProbability HotProb(4, 5); +bool MachineBranchProbabilityInfo::isEdgeHot( + const MachineBasicBlock *Src, const MachineBasicBlock *Dst) const { + BranchProbability HotProb(StaticLikelyProb, 100); return getEdgeProbability(Src, Dst) > HotProb; } @@ -63,7 +66,7 @@ MachineBranchProbabilityInfo::getHotSucc(MachineBasicBlock *MBB) const { } } - static BranchProbability HotProb(4, 5); + BranchProbability HotProb(StaticLikelyProb, 100); if (getEdgeProbability(MBB, MaxSucc) >= HotProb) return MaxSucc;