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:
parent
f545457356
commit
b2b24199c2
@ -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);
|
||||
}
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user