LLVM: lib/CodeGen/IfConversion.cpp File Reference (original) (raw)
Go to the source code of this file.
| Functions |
|
|
STATISTIC (NumSimple, "Number of simple if-conversions performed") |
|
STATISTIC (NumSimpleFalse, "Number of simple (F) if-conversions performed") |
|
STATISTIC (NumTriangle, "Number of triangle if-conversions performed") |
|
STATISTIC (NumTriangleRev, "Number of triangle (R) if-conversions performed") |
|
STATISTIC (NumTriangleFalse,"Number of triangle (F) if-conversions performed") |
|
STATISTIC (NumTriangleFRev, "Number of triangle (F/R) if-conversions performed") |
|
STATISTIC (NumDiamonds, "Number of diamond if-conversions performed") |
|
STATISTIC (NumForkedDiamonds, "Number of forked-diamond if-conversions performed") |
|
STATISTIC (NumIfConvBBs, "Number of if-converted blocks") |
|
STATISTIC (NumDupBBs, "Number of duplicated blocks") |
|
STATISTIC (NumUnpred, "Number of true blocks of diamonds unpredicated") |
| static MachineBasicBlock * |
findFalseBlock (MachineBasicBlock *BB, MachineBasicBlock *TrueBB) |
|
BB has a fallthrough. Find its 'false' successor given its 'true' successor. |
| static MachineBasicBlock * |
getNextBlock (MachineBasicBlock &MBB) |
|
Returns the next block in the function blocks ordering. |
| static void |
verifySameBranchInstructions (MachineBasicBlock *MBB1, MachineBasicBlock *MBB2) |
| static bool |
canFallThroughTo (MachineBasicBlock &MBB, MachineBasicBlock &ToMBB) |
|
Returns true either if ToMBB is the next block after MBB or that all the intervening blocks are empty (given MBB can fall through to its next block). |
| static void |
InsertUncondBranch (MachineBasicBlock &MBB, MachineBasicBlock &ToMBB, const TargetInstrInfo *TII) |
|
Inserts an unconditional branch from MBB to ToMBB. |
| static void |
UpdatePredRedefs (MachineInstr &MI, LivePhysRegs &Redefs) |
|
Behaves like LiveRegUnits::StepForward() but also adds implicit uses to all values defined in MI which are also live/used by MI. |
| static bool |
MaySpeculate (const MachineInstr &MI, SmallSet< MCRegister, 4 > &LaterRedefs) |
| Variables |
|
| static cl::opt< int > |
IfCvtFnStart ("ifcvt-fn-start", cl::init(-1), cl::Hidden) |
| static cl::opt< int > |
IfCvtFnStop ("ifcvt-fn-stop", cl::init(-1), cl::Hidden) |
| static cl::opt< int > |
IfCvtLimit ("ifcvt-limit", cl::init(-1), cl::Hidden) |
| static cl::opt< bool > |
DisableSimple ("disable-ifcvt-simple", cl::init(false), cl::Hidden) |
| static cl::opt< bool > |
DisableSimpleF ("disable-ifcvt-simple-false", cl::init(false), cl::Hidden) |
| static cl::opt< bool > |
DisableTriangle ("disable-ifcvt-triangle", cl::init(false), cl::Hidden) |
| static cl::opt< bool > |
DisableTriangleR ("disable-ifcvt-triangle-rev", cl::init(false), cl::Hidden) |
| static cl::opt< bool > |
DisableTriangleF ("disable-ifcvt-triangle-false", cl::init(false), cl::Hidden) |
| static cl::opt< bool > |
DisableDiamond ("disable-ifcvt-diamond", cl::init(false), cl::Hidden) |
| static cl::opt< bool > |
DisableForkedDiamond ("disable-ifcvt-forked-diamond", cl::init(false), cl::Hidden) |
| static cl::opt< bool > |
IfCvtBranchFold ("ifcvt-branch-fold", cl::init(true), cl::Hidden) |
◆ DEBUG_TYPE
#define DEBUG_TYPE "if-converter"
◆ canFallThroughTo()
◆ findFalseBlock()
◆ getNextBlock()
Returns the next block in the function blocks ordering.
If it is the end, returns NULL.
Definition at line 651 of file IfConversion.cpp.
References E(), I, and MBB.
◆ InsertUncondBranch()
◆ MaySpeculate()
◆ STATISTIC() [1/11]
| STATISTIC |
( |
NumDiamonds |
, |
| "Number of diamond if-conversions performed" |
) |
|
|
◆ STATISTIC() [2/11]
| STATISTIC |
( |
NumDupBBs |
, |
| "Number of duplicated blocks" |
) |
|
|
◆ STATISTIC() [3/11]
| STATISTIC |
( |
NumForkedDiamonds |
, |
| "Number of forked-diamond if-conversions performed" |
) |
|
|
◆ STATISTIC() [4/11]
| STATISTIC |
( |
NumIfConvBBs |
, |
| "Number of if-converted blocks" |
) |
|
|
◆ STATISTIC() [5/11]
| STATISTIC |
( |
NumSimple |
, |
| "Number of simple if-conversions performed" |
) |
|
|
◆ STATISTIC() [6/11]
| STATISTIC |
( |
NumSimpleFalse |
, |
| "Number of simple (F) if-conversions performed" |
) |
|
|
◆ STATISTIC() [7/11]
| STATISTIC |
( |
NumTriangle |
, |
| "Number of triangle if-conversions performed" |
) |
|
|
◆ STATISTIC() [8/11]
| STATISTIC |
( |
NumTriangleFalse |
, |
| "Number of triangle (F) if-conversions performed" |
) |
|
|
◆ STATISTIC() [9/11]
| STATISTIC |
( |
NumTriangleFRev |
, |
| "Number of triangle (F/R) if-conversions performed" |
) |
|
|
◆ STATISTIC() [10/11]
| STATISTIC |
( |
NumTriangleRev |
, |
| "Number of triangle (R) if-conversions performed" |
) |
|
|
◆ STATISTIC() [11/11]
| STATISTIC |
( |
NumUnpred |
, |
| "Number of true blocks of diamonds unpredicated" |
) |
|
|
◆ UpdatePredRedefs()
Behaves like LiveRegUnits::StepForward() but also adds implicit uses to all values defined in MI which are also live/used by MI.
Definition at line 1495 of file IfConversion.cpp.
References llvm::MachineInstrBuilder::addReg(), llvm::any_of(), llvm::SparseSet< ValueT, KeyT, KeyFunctorT, SparseT >::count(), llvm::RegState::Define, llvm::MachineInstr::getMF(), llvm::RegState::Implicit, llvm::SparseSet< ValueT, KeyT, KeyFunctorT, SparseT >::insert(), MI, Reg, llvm::SparseSet< ValueT, KeyT, KeyFunctorT, SparseT >::setUniverse(), llvm::LivePhysRegs::stepForward(), and TRI.
◆ verifySameBranchInstructions()
◆ DisableDiamond
| cl::opt< bool > DisableDiamond("disable-ifcvt-diamond", cl::init(false), cl::Hidden) ( "disable-ifcvt-diamond" , cl::init(false) , cl::Hidden ) |
static |
◆ DisableForkedDiamond
| cl::opt< bool > DisableForkedDiamond("disable-ifcvt-forked-diamond", cl::init(false), cl::Hidden) ( "disable-ifcvt-forked-diamond" , cl::init(false) , cl::Hidden ) |
static |
◆ DisableSimple
| cl::opt< bool > DisableSimple("disable-ifcvt-simple", cl::init(false), cl::Hidden) ( "disable-ifcvt-simple" , cl::init(false) , cl::Hidden ) |
static |
◆ DisableSimpleF
| cl::opt< bool > DisableSimpleF("disable-ifcvt-simple-false", cl::init(false), cl::Hidden) ( "disable-ifcvt-simple-false" , cl::init(false) , cl::Hidden ) |
static |
◆ DisableTriangle
| cl::opt< bool > DisableTriangle("disable-ifcvt-triangle", cl::init(false), cl::Hidden) ( "disable-ifcvt-triangle" , cl::init(false) , cl::Hidden ) |
static |
◆ DisableTriangleF
| cl::opt< bool > DisableTriangleF("disable-ifcvt-triangle-false", cl::init(false), cl::Hidden) ( "disable-ifcvt-triangle-false" , cl::init(false) , cl::Hidden ) |
static |
◆ DisableTriangleR
| cl::opt< bool > DisableTriangleR("disable-ifcvt-triangle-rev", cl::init(false), cl::Hidden) ( "disable-ifcvt-triangle-rev" , cl::init(false) , cl::Hidden ) |
static |
◆ IfCvtBranchFold
| cl::opt< bool > IfCvtBranchFold("ifcvt-branch-fold", cl::init(true), cl::Hidden) ( "ifcvt-branch-fold" , cl::init(true) , cl::Hidden ) |
static |
◆ IfCvtFnStart
| cl::opt< int > IfCvtFnStart("ifcvt-fn-start", cl::init(-1), cl::Hidden) ( "ifcvt-fn-start" , cl::init(-1) , cl::Hidden ) |
static |
◆ IfCvtFnStop
| cl::opt< int > IfCvtFnStop("ifcvt-fn-stop", cl::init(-1), cl::Hidden) ( "ifcvt-fn-stop" , cl::init(-1) , cl::Hidden ) |
static |
◆ IfCvtLimit
| cl::opt< int > IfCvtLimit("ifcvt-limit", cl::init(-1), cl::Hidden) ( "ifcvt-limit" , cl::init(-1) , cl::Hidden ) |
static |