Go to the source code of this file.
|
| llvm |
| This class represents lattice values for constants.
|
|
|
static cl::opt< int > | HWLoopLimit ("hexagon-max-hwloop", cl::Hidden, cl::init(-1)) |
|
static cl::opt< std::string > | PHFn ("hexagon-hwloop-phfn", cl::Hidden, cl::init("")) |
|
static cl::opt< bool > | HWCreatePreheader ("hexagon-hwloop-preheader", cl::Hidden, cl::init(true), cl::desc("Add a preheader to a hardware loop if one doesn't exist")) |
|
static cl::opt< bool > | SpecPreheader ("hwloop-spec-preheader", cl::init(false), cl::Hidden, cl::ZeroOrMore, cl::desc("Allow speculation of preheader " "instructions")) |
|
| hwloops |
|
Hexagon Hardware | Loops |
|
Hexagon Hardware | false |
|
◆ DEBUG_TYPE
#define DEBUG_TYPE "hwloops" |
◆ INITIALIZE_PASS_BEGIN()
INITIALIZE_PASS_BEGIN |
( |
HexagonHardwareLoops |
, |
|
|
"hwloops" |
, |
|
|
"Hexagon Hardware Loops" |
, |
|
|
false |
, |
|
|
false |
|
|
) |
| |
◆ isImmValidForOpcode()
static bool isImmValidForOpcode |
( |
unsigned |
CmpOpc, |
|
|
int64_t |
Imm |
|
) |
| |
|
static |
Definition at line 1597 of file HexagonHardwareLoops.cpp.
References llvm::LoopBase< BlockT, LoopT >::addBasicBlockToLoop(), llvm::MachineDominatorTree::addNewBlock(), llvm::MachineInstr::addOperand(), llvm::MachineBasicBlock::addSuccessor(), llvm::HexagonInstrInfo::analyzeBranch(), assert(), llvm::MachineDominatorTree::changeImmediateDominator(), llvm::SmallVectorImpl< T >::clear(), llvm::SmallSet< T, N, C >::count(), llvm::MachineFunction::CreateMachineBasicBlock(), llvm::MachineFunction::CreateMachineInstr(), llvm::MachineOperand::CreateMBB(), llvm::MachineOperand::CreateReg(), llvm::MachineRegisterInfo::createVirtualRegister(), llvm::dbgs(), llvm::MachineDominatorTree::dominates(), E, llvm::SmallVectorBase::empty(), llvm::SmallSet< T, N, C >::empty(), llvm::MachineBasicBlock::end(), llvm::MachineLoop::findLoopControlBlock(), llvm::MachineLoopInfo::findLoopPreheader(), llvm::MachineLoopInfo::getBase(), llvm::MachineInstr::getDesc(), llvm::LoopBase< BlockT, LoopT >::getHeader(), llvm::DomTreeNodeBase< NodeT >::getIDom(), llvm::MachineOperand::getImm(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::LoopBase< BlockT, LoopT >::getLoopLatch(), llvm::MachineOperand::getMBB(), llvm::MachineFunction::getName(), llvm::MachineDominatorTree::getNode(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineBasicBlock::getParent(), llvm::LoopBase< BlockT, LoopT >::getParentLoop(), llvm::MachineOperand::getReg(), llvm::MachineRegisterInfo::getRegClass(), llvm::MachineOperand::getSubReg(), llvm::MachineRegisterInfo::getVRegDef(), llvm::MachineBasicBlock::hasAddressTaken(), HWCreatePreheader, I, llvm::SmallSet< T, N, C >::insert(), llvm::MachineBasicBlock::insert(), llvm::MachineFunction::insert(), llvm::HexagonInstrInfo::insertBranch(), llvm::MachineBasicBlock::instr_begin(), llvm::MachineBasicBlock::instr_end(), INT64_MAX, INT64_MIN, llvm::MCInstrDesc::isAdd(), llvm::MachineInstr::isCompare(), llvm::MachineOperand::isImm(), llvm::MachineOperand::isImplicit(), llvm::isInt< 8 >(), isReg(), llvm::MachineOperand::isReg(), llvm::isUInt< 8 >(), llvm::MachineOperand::isUse(), Kind, LLVM_DEBUG, P, llvm::X86II::PD, PHFn, llvm::MachineBasicBlock::pred_begin(), llvm::MachineBasicBlock::pred_end(), llvm::MachineBasicBlock::pred_size(), llvm::MachineInstr::RemoveOperand(), llvm::MachineBasicBlock::ReplaceUsesOfBlockWith(), llvm::MachineOperand::setMBB(), llvm::MachineOperand::setReg(), llvm::MachineOperand::setSubReg(), llvm::SmallVectorBase::size(), SpecPreheader, and llvm::X86II::TB.
◆ STATISTIC()
STATISTIC |
( |
NumHWLoops |
, |
|
|
"Number of loops converted to hardware loops" |
|
|
) |
| |
◆ false
◆ HWCreatePreheader
◆ HWLoopLimit
cl::opt<int> HWLoopLimit("hexagon-max-hwloop", cl::Hidden, cl::init(-1)) |
|
static |
◆ hwloops
◆ Loops
Definition at line 371 of file HexagonHardwareLoops.cpp.
Referenced by adjCycles(), llvm::BlockFrequencyInfoImplBase::analyzeIrreducible(), llvm::internal::appendLoopsToWorklist(), appendLoopsToWorklist(), castToIncrementInst(), llvm::BlockFrequencyInfoImplBase::clear(), llvm::DependenceInfo::getFunction(), isFullUndefDef(), IsIncrementNUW(), isLoadOrStore(), isMustExecuteIn(), mayUsePostIncMode(), parseCond(), QualifiedNameOfImplicitName(), llvm::LoopBase< BasicBlock, Loop >::removeBlockFromLoop(), llvm::BlockFrequencyInfoImplBase::unwrapLoops(), llvm::LoopInfoBase< BasicBlock, Loop >::verify(), llvm::MachineTraceMetrics::verifyAnalysis(), and llvm::VirtRegAuxInfo::weightCalcHelper().
◆ PHFn
cl::opt<std::string> PHFn("hexagon-hwloop-phfn", cl::Hidden, cl::init("")) |
|
static |
◆ SpecPreheader