|
| STATISTIC (NumCondBranches, "Number of conditional branches") |
|
| STATISTIC (NumUncondBranches, "Number of unconditional branches") |
|
| STATISTIC (CondBranchTakenFreq, "Potential frequency of taking conditional branches") |
|
| STATISTIC (UncondBranchTakenFreq, "Potential frequency of taking unconditional branches") |
|
| INITIALIZE_PASS_BEGIN (MachineBlockPlacement, DEBUG_TYPE, "Branch Probability Basic Block Placement", false, false) INITIALIZE_PASS_END(MachineBlockPlacement |
|
Branch Probability Basic Block static false std::string | getBlockName (const MachineBasicBlock *BB) |
| Helper to print the name of a MBB.
|
|
static BranchProbability | getAdjustedProbability (BranchProbability OrigProb, BranchProbability AdjustedSumProb) |
| The helper function returns the branch probability that is adjusted or normalized over the new total AdjustedSumProb .
|
|
static bool | hasSameSuccessors (MachineBasicBlock &BB, SmallPtrSetImpl< const MachineBasicBlock * > &Successors) |
| Check if BB has exactly the successors in Successors .
|
|
static bool | greaterWithBias (BlockFrequency A, BlockFrequency B, BlockFrequency EntryFreq) |
| Compare 2 BlockFrequency's with a small penalty for A .
|
|
static BranchProbability | getLayoutSuccessorProbThreshold (const MachineBasicBlock *BB) |
|
static uint64_t | countMBBInstruction (MachineBasicBlock *MBB) |
|
| INITIALIZE_PASS_BEGIN (MachineBlockPlacementStats, "block-placement-stats", "Basic Block Placement Stats", false, false) INITIALIZE_PASS_END(MachineBlockPlacementStats |
|
|
static cl::opt< unsigned > | AlignAllBlock ("align-all-blocks", cl::desc("Force the alignment of all blocks in the function in log2 format " "(e.g 4 means align on 16B boundaries)."), cl::init(0), cl::Hidden) |
|
static cl::opt< unsigned > | AlignAllNonFallThruBlocks ("align-all-nofallthru-blocks", cl::desc("Force the alignment of all blocks that have no fall-through " "predecessors (i.e. don't add nops that are executed). In log2 " "format (e.g 4 means align on 16B boundaries)."), cl::init(0), cl::Hidden) |
|
static cl::opt< unsigned > | MaxBytesForAlignmentOverride ("max-bytes-for-alignment", cl::desc("Forces the maximum bytes allowed to be emitted when padding for " "alignment"), cl::init(0), cl::Hidden) |
|
static cl::opt< unsigned > | ExitBlockBias ("block-placement-exit-block-bias", cl::desc("Block frequency percentage a loop exit block needs " "over the original exit to be considered the new exit."), cl::init(0), cl::Hidden) |
|
static cl::opt< unsigned > | LoopToColdBlockRatio ("loop-to-cold-block-ratio", cl::desc("Outline loop blocks from loop chain if (frequency of loop) / " "(frequency of block) is greater than this ratio"), cl::init(5), cl::Hidden) |
|
static cl::opt< bool > | ForceLoopColdBlock ("force-loop-cold-block", cl::desc("Force outlining cold blocks from loops."), cl::init(false), cl::Hidden) |
|
static cl::opt< bool > | PreciseRotationCost ("precise-rotation-cost", cl::desc("Model the cost of loop rotation more " "precisely by using profile data."), cl::init(false), cl::Hidden) |
|
static cl::opt< bool > | ForcePreciseRotationCost ("force-precise-rotation-cost", cl::desc("Force the use of precise cost " "loop rotation strategy."), cl::init(false), cl::Hidden) |
|
static cl::opt< unsigned > | MisfetchCost ("misfetch-cost", cl::desc("Cost that models the probabilistic risk of an instruction " "misfetch due to a jump comparing to falling through, whose cost " "is zero."), cl::init(1), cl::Hidden) |
|
static cl::opt< unsigned > | JumpInstCost ("jump-inst-cost", cl::desc("Cost of jump instructions."), cl::init(1), cl::Hidden) |
|
static cl::opt< bool > | TailDupPlacement ("tail-dup-placement", cl::desc("Perform tail duplication during placement. " "Creates more fallthrough opportunites in " "outline branches."), cl::init(true), cl::Hidden) |
|
static cl::opt< bool > | BranchFoldPlacement ("branch-fold-placement", cl::desc("Perform branch folding during placement. " "Reduces code size."), cl::init(true), cl::Hidden) |
|
static cl::opt< unsigned > | TailDupPlacementThreshold ("tail-dup-placement-threshold", cl::desc("Instruction cutoff for tail duplication during layout. " "Tail merging during layout is forced to have a threshold " "that won't conflict."), cl::init(2), cl::Hidden) |
|
static cl::opt< unsigned > | TailDupPlacementAggressiveThreshold ("tail-dup-placement-aggressive-threshold", cl::desc("Instruction cutoff for aggressive tail duplication during " "layout. Used at -O3. Tail merging during layout is forced to " "have a threshold that won't conflict."), cl::init(4), cl::Hidden) |
|
static cl::opt< unsigned > | TailDupPlacementPenalty ("tail-dup-placement-penalty", cl::desc("Cost penalty for blocks that can avoid breaking CFG by copying. " "Copying can increase fallthrough, but it also increases icache " "pressure. This parameter controls the penalty to account for that. " "Percent as integer."), cl::init(2), cl::Hidden) |
|
static cl::opt< unsigned > | TailDupProfilePercentThreshold ("tail-dup-profile-percent-threshold", cl::desc("If profile count information is used in tail duplication cost " "model, the gained fall through number from tail duplication " "should be at least this percent of hot count."), cl::init(50), cl::Hidden) |
|
static cl::opt< unsigned > | TriangleChainCount ("triangle-chain-count", cl::desc("Number of triangle-shaped-CFG's that need to be in a row for the " "triangle tail duplication heuristic to kick in. 0 to disable."), cl::init(2), cl::Hidden) |
|
static cl::opt< bool > | RenumberBlocksBeforeView ("renumber-blocks-before-view", cl::desc("If true, basic blocks are re-numbered before MBP layout is printed " "into a dot graph. Only used when a function is being printed."), cl::init(false), cl::Hidden) |
|
static cl::opt< unsigned > | ExtTspBlockPlacementMaxBlocks ("ext-tsp-block-placement-max-blocks", cl::desc("Maximum number of basic blocks in a function to run ext-TSP " "block placement."), cl::init(UINT_MAX), cl::Hidden) |
|
static cl::opt< bool > | ApplyExtTspForSize ("apply-ext-tsp-for-size", cl::init(false), cl::Hidden, cl::desc("Use ext-tsp for size-aware block placement.")) |
|
cl::opt< bool > | llvm::EnableExtTspBlockPlacement |
|
cl::opt< bool > | llvm::ApplyExtTspWithoutProfile |
|
cl::opt< unsigned > | llvm::StaticLikelyProb |
|
cl::opt< unsigned > | llvm::ProfileLikelyProb |
|
| DEBUG_TYPE |
|
Branch Probability Basic Block | Placement |
|
Branch Probability Basic Block | false |
|
block placement | stats |
|
block placement Basic Block Placement | Stats |
|