Go to the source code of this file.
|
static cl::opt< bool > | DisableDelaySlotFiller ("disable-mips-delay-filler", cl::init(false), cl::desc("Fill all delay slots with NOPs."), cl::Hidden) |
|
static cl::opt< bool > | DisableForwardSearch ("disable-mips-df-forward-search", cl::init(true), cl::desc("Disallow MIPS delay filler to search forward."), cl::Hidden) |
|
static cl::opt< bool > | DisableSuccBBSearch ("disable-mips-df-succbb-search", cl::init(true), cl::desc("Disallow MIPS delay filler to search successor basic blocks."), cl::Hidden) |
|
static cl::opt< bool > | DisableBackwardSearch ("disable-mips-df-backward-search", cl::init(false), cl::desc("Disallow MIPS delay filler to search backward."), cl::Hidden) |
|
static cl::opt< CompactBranchPolicy > | MipsCompactBranchPolicy ("mips-compact-branches", cl::Optional, cl::init(CB_Optimal), cl::desc("MIPS Specific: Compact branch policy."), cl::values(clEnumValN(CB_Never, "never", "Do not use compact branches if possible."), clEnumValN(CB_Optimal, "optimal", "Use compact branches where appropiate (default)."), clEnumValN(CB_Always, "always", "Always use compact branches if possible."))) |
|
const BB2BrMap & | BrMap |
|
◆ DEBUG_TYPE
#define DEBUG_TYPE "mips-delay-slot-filler" |
◆ CompactBranchPolicy
Enumerator |
---|
CB_Never | The policy 'never' may in some circumstances or for some ISAs not be absolutely adhered to.
|
CB_Optimal | Optimal is the default and will produce compact branches when delay slots cannot be filled.
|
CB_Always | 'always' may in some circumstances may not be absolutely adhered to there may not be a corresponding compact form of a branch.
|
Definition at line 84 of file MipsDelaySlotFiller.cpp.
◆ addLiveInRegs()
This function adds registers Filler defines to MBB's live-in register list.
Definition at line 327 of file MipsDelaySlotFiller.cpp.
References llvm::MachineBasicBlock::addLiveIn(), assert(), llvm::MachineInstr::definesRegister(), E, llvm::BitVector::flip(), llvm::TargetRegisterInfo::getAllocatableSet(), llvm::TargetRegisterInfo::getCalleeSavedRegs(), llvm::MachineInstr::getDesc(), llvm::MCInstrDesc::getNumOperands(), llvm::MachineInstr::getNumOperands(), llvm::MCRegisterInfo::getNumRegs(), llvm::MachineBasicBlock::getParent(), llvm::MachineInstr::getParent(), llvm::MachineOperand::getReg(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::MachineFunction::getSubtarget(), I, llvm::cl::init(), llvm::MachineInstr::isBranch(), llvm::MachineInstr::isCall(), llvm::MachineOperand::isDef(), llvm::MachineBasicBlock::isLiveIn(), llvm::MachineOperand::isReg(), llvm::MCRegAliasIterator::isValid(), MI, RA, llvm::BitVector::reset(), llvm::BitVector::set(), llvm::BitVector::set_bits(), SI, llvm::MachineBasicBlock::succ_begin(), llvm::MachineBasicBlock::succ_end(), llvm::BitVector::test(), and TRI.
◆ for()
for |
( |
BB2BrMap::const_iterator |
I = BrMap.begin(); I != BrMap.end(); ++I | ) |
|
◆ getEquivalentCallShort()
static int getEquivalentCallShort |
( |
int |
Opcode | ) |
|
|
static |
Definition at line 577 of file MipsDelaySlotFiller.cpp.
References llvm::MachineBasicBlock::begin(), llvm::BuildMI(), CB_Always, CB_Never, DisableDelaySlotFiller, llvm::MachineBasicBlock::end(), llvm::MipsInstrInfo::getEquivalentCompactForm(), llvm::MipsSubtarget::getInstrInfo(), llvm::MipsInstrInfo::getInstSizeInBytes(), llvm::MachineBasicBlock::getParent(), llvm::MachineFunction::getSubtarget(), llvm::MipsSubtarget::hasMips32r6(), hasUnoccupiedSlot(), I, llvm::MipsSubtarget::inMicroMipsMode(), llvm_unreachable, MipsCompactBranchPolicy, llvm::CodeGenOpt::None, TII, and llvm::SystemZISD::TM.
◆ hasUnoccupiedSlot()
◆ INITIALIZE_PASS()
This function inserts clones of Filler into predecessor blocks.
Referenced by hasUnoccupiedSlot().
◆ STATISTIC() [1/2]
STATISTIC |
( |
FilledSlots |
, |
|
|
"Number of delay slots filled" |
|
|
) |
| |
◆ STATISTIC() [2/2]
STATISTIC |
( |
UsefulSlots |
, |
|
|
"Number of delay slots filled with instructions that" " are not NOP." |
|
|
) |
| |
◆ BrMap
◆ DisableBackwardSearch
cl::opt<bool> DisableBackwardSearch("disable-mips-df-backward-search", cl::init(false), cl::desc("Disallow MIPS delay filler to search backward."), cl::Hidden) |
|
static |
◆ DisableDelaySlotFiller
◆ DisableForwardSearch
cl::opt<bool> DisableForwardSearch("disable-mips-df-forward-search", cl::init(true), cl::desc("Disallow MIPS delay filler to search forward."), cl::Hidden) |
|
static |
◆ DisableSuccBBSearch
cl::opt<bool> DisableSuccBBSearch("disable-mips-df-succbb-search", cl::init(true), cl::desc("Disallow MIPS delay filler to search successor basic blocks."), cl::Hidden) |
|
static |
◆ MipsCompactBranchPolicy
cl::opt<CompactBranchPolicy> MipsCompactBranchPolicy("mips-compact-branches", cl::Optional, cl::init(CB_Optimal), cl::desc("MIPS Specific: Compact branch policy."), cl::values( clEnumValN(CB_Never, "never", "Do not use compact branches if possible."), clEnumValN(CB_Optimal, "optimal", "Use compact branches where appropiate (default)."), clEnumValN(CB_Always, "always", "Always use compact branches if possible."))) |
|
static |