1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 02:52:53 +02:00

[MBP] add comments and bug fix

Document the new parameter and threshod computation
model.  Also fix a bug when the threshold parameter
is set to be different from the default.

 

llvm-svn: 272749
This commit is contained in:
Xinliang David Li 2016-06-15 03:03:30 +00:00
parent f545457356
commit b2b24199c2
2 changed files with 20 additions and 9 deletions

View File

@ -530,9 +530,19 @@ static BranchProbability getLayoutSuccessorProbThreshold(
if (BB->succ_size() == 2) {
const MachineBasicBlock *Succ1 = *BB->succ_begin();
const MachineBasicBlock *Succ2 = *(BB->succ_begin() + 1);
if (Succ1->isSuccessor(Succ2) || Succ2->isSuccessor(Succ1))
return BranchProbability(
200 - 2 * ProfileLikelyProb, 200 - ProfileLikelyProb);
if (Succ1->isSuccessor(Succ2) || Succ2->isSuccessor(Succ1)) {
/* See case 1 below for the cost analysis. For BB->Succ to
* be taken with smaller cost, the following needs to hold:
* Prob(BB->Succ) > 2* Prob(BB->Pred)
* So the threshold T
* T = 2 * (1-Prob(BB->Pred). Since T + Prob(BB->Pred) == 1,
* We have T + T/2 = 1, i.e. T = 2/3. Also adding user specified
* branch bias, we have
* T = (2/3)*(ProfileLikelyProb/50)
* = (2*ProfileLikelyProb)/150)
*/
return BranchProbability(2 * ProfileLikelyProb, 150);
}
}
return BranchProbability(ProfileLikelyProb, 100);
}

View File

@ -24,15 +24,16 @@ INITIALIZE_PASS_BEGIN(MachineBranchProbabilityInfo, "machine-branch-prob",
INITIALIZE_PASS_END(MachineBranchProbabilityInfo, "machine-branch-prob",
"Machine Branch Probability Analysis", false, true)
cl::opt<unsigned> StaticLikelyProb(
"static-likely-prob",
cl::desc("branch probability threshold to be considered very likely"),
cl::init(80), cl::Hidden);
cl::opt<unsigned>
StaticLikelyProb("static-likely-prob",
cl::desc("branch probability threshold in percentage"
"to be considered very likely"),
cl::init(80), cl::Hidden);
cl::opt<unsigned> ProfileLikelyProb(
"profile-likely-prob",
cl::desc("branch probability threshold to be considered very likely "
"when profile is available"),
cl::desc("branch probability threshold in percentage to be considered"
" very likely when profile is available"),
cl::init(51), cl::Hidden);
char MachineBranchProbabilityInfo::ID = 0;