|
LLVM
4.0.0
|
#include <HexagonVLIWPacketizer.h>
Protected Attributes | |
| const MachineBranchProbabilityInfo * | MBPI |
| A handle to the branch probability pass. More... | |
| const MachineLoopInfo * | MLI |
Protected Attributes inherited from llvm::VLIWPacketizerList | |
| MachineFunction & | MF |
| const TargetInstrInfo * | TII |
| AliasAnalysis * | AA |
| DefaultVLIWScheduler * | VLIWScheduler |
| std::vector< MachineInstr * > | CurrentPacketMIs |
| DFAPacketizer * | ResourceTracker |
| std::map< MachineInstr *, SUnit * > | MIToSUnit |
Definition at line 10 of file HexagonVLIWPacketizer.h.
| Hexagon false HexagonPacketizerList::HexagonPacketizerList | ( | MachineFunction & | MF, |
| MachineLoopInfo & | MLI, | ||
| AliasAnalysis * | AA, | ||
| const MachineBranchProbabilityInfo * | MBPI | ||
| ) |
Definition at line 101 of file HexagonVLIWPacketizer.cpp.
|
overridevirtual |
Reimplemented from llvm::VLIWPacketizerList.
Definition at line 1528 of file HexagonVLIWPacketizer.cpp.
References llvm::MachineInstr::addOperand(), assert(), llvm::DFAPacketizer::canReserveResources(), canReserveResourcesForConstExt(), contains(), llvm::MachineOperand::CreateReg(), llvm::VLIWPacketizerList::CurrentPacketMIs, demoteToDotOld(), endPacket(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineOperand::getReg(), llvm::HexagonInstrInfo::isConstExtended(), llvm::HexagonInstrInfo::isExtended(), llvm::MachineInstr::isImplicitDef(), MBB, llvm::DFAPacketizer::reserveResources(), reserveResourcesForConstExt(), llvm::VLIWPacketizerList::ResourceTracker, tryAllocateResourcesForConstExt(), and useCalleesSP().
|
protected |
Definition at line 890 of file HexagonVLIWPacketizer.cpp.
References llvm::VLIWPacketizerList::CurrentPacketMIs, llvm::SDep::Data, getPredicatedRegister(), getPredicateSense(), I, i, llvm::HexagonInstrInfo::isDotNewInst(), llvm::SUnit::isSucc(), llvm::VLIWPacketizerList::MIToSUnit, PK_Unknown, restrictingDepExistInPacket(), and llvm::SUnit::Succs.
Referenced by isLegalToPacketizeTogether().
|
protected |
Definition at line 1064 of file HexagonVLIWPacketizer.cpp.
References cannotCoexistAsymm().
Referenced by isLegalToPacketizeTogether(), and isLegalToPruneDependencies().
|
protected |
Definition at line 377 of file HexagonVLIWPacketizer.cpp.
References llvm::VLIWPacketizerList::CurrentPacketMIs, llvm::dbgs(), DEBUG, llvm::MachineInstr::dump(), llvm::SUnit::getInstr(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::HexagonInstrInfo::isDotCurInst(), llvm::MachineInstr::isInlineAsm(), llvm::HexagonInstrInfo::isV60VectorInstruction(), and llvm::HexagonInstrInfo::mayBeCurLoad().
Referenced by isLegalToPacketizeTogether().
|
protected |
Definition at line 773 of file HexagonVLIWPacketizer.cpp.
References canPromoteToNewValue(), llvm::DFAPacketizer::canReserveResources(), D, DisableVecDblNVStores, llvm::MachineInstr::getDesc(), llvm::HexagonInstrInfo::getDotNewOp(), llvm::SUnit::getInstr(), llvm::HexagonInstrInfo::isCondInst(), llvm::HexagonInstrInfo::isDotNewInst(), llvm::MachineInstr::isImplicitDef(), isImplicitDependency(), llvm::MachineInstr::isInlineAsm(), llvm::HexagonInstrInfo::isJumpR(), isNewifiable(), llvm::MachineInstr::isReturn(), llvm::HexagonInstrInfo::mayBeNewStore(), llvm::HexagonInstrInfo::predCanBeUsedAsDotNew(), and llvm::VLIWPacketizerList::ResourceTracker.
Referenced by isLegalToPacketizeTogether().
|
protected |
Definition at line 745 of file HexagonVLIWPacketizer.cpp.
References canPromoteToNewValueStore(), llvm::SUnit::getInstr(), and llvm::HexagonInstrInfo::mayBeNewStore().
Referenced by canPromoteToDotNew().
|
protected |
Definition at line 578 of file HexagonVLIWPacketizer.cpp.
References assert(), llvm::VLIWPacketizerList::CurrentPacketMIs, getAbsSetOperand(), llvm::MachineInstr::getDesc(), llvm::SUnit::getInstr(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), getPostIncrementOperand(), getPredicateSense(), llvm::MachineOperand::getReg(), getStoreValueOperand(), I, llvm::HexagonInstrInfo::isDotNewInst(), isLoadAbsSet(), llvm::HexagonInstrInfo::isPostIncrement(), llvm::HexagonInstrInfo::isPredicated(), llvm::MachineOperand::isReg(), llvm::HexagonInstrInfo::mayBeNewStore(), llvm::MachineInstr::mayLoad(), llvm::MachineInstr::mayStore(), llvm::VLIWPacketizerList::MIToSUnit, llvm::MachineInstr::modifiesRegister(), and llvm::MachineInstr::operands().
Referenced by canPromoteToNewValue().
|
protected |
Definition at line 250 of file HexagonVLIWPacketizer.cpp.
References tryAllocateResourcesForConstExt().
Referenced by addToPacket().
|
protected |
Definition at line 355 of file HexagonVLIWPacketizer.cpp.
References llvm::VLIWPacketizerList::CurrentPacketMIs, llvm::dbgs(), DEBUG, llvm::MachineInstr::dump(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), MI, and llvm::MachineInstr::setDesc().
Referenced by isLegalToPruneDependencies().
|
protected |
Definition at line 442 of file HexagonVLIWPacketizer.cpp.
References llvm::HexagonInstrInfo::getDotOldOp(), llvm::MachineInstr::getOpcode(), and llvm::MachineInstr::setDesc().
Referenced by addToPacket(), and isLegalToPruneDependencies().
|
overridevirtual |
Reimplemented from llvm::VLIWPacketizerList.
Definition at line 1601 of file HexagonVLIWPacketizer.cpp.
References llvm::VLIWPacketizerList::CurrentPacketMIs, and llvm::VLIWPacketizerList::endPacket().
Referenced by addToPacket().
|
protected |
Definition at line 1138 of file HexagonVLIWPacketizer.cpp.
References doesModifyCalleeSavedReg(), llvm::MachineInstr::isBarrier(), llvm::MachineInstr::isBranch(), llvm::MachineInstr::isCall(), isControlFlow(), llvm::HexagonInstrInfo::isDeallocRet(), llvm::HexagonInstrInfo::isJumpR(), llvm::HexagonInstrInfo::isLoopN(), llvm::HexagonInstrInfo::isNewValueJump(), llvm::HexagonInstrInfo::isPredicated(), llvm::HexagonInstrInfo::isPredicatedNew(), llvm::HexagonInstrInfo::isSaveCalleeSavedRegsCall(), and MI.
Referenced by isLegalToPacketizeTogether().
|
protected |
Definition at line 1111 of file HexagonVLIWPacketizer.cpp.
References llvm::MachineInstr::isCall(), llvm::HexagonInstrInfo::isPredicated(), and llvm::MachineInstr::operands().
Referenced by isLegalToPacketizeTogether().
|
protected |
Definition at line 1174 of file HexagonVLIWPacketizer.cpp.
References llvm::HexagonInstrInfo::isDeallocRet(), llvm::HexagonInstrInfo::isMemOp(), llvm::HexagonInstrInfo::isNewValueInst(), isSystemInstr(), and llvm::MachineInstr::mayStore().
Referenced by isLegalToPacketizeTogether().
|
overridevirtual |
Reimplemented from llvm::VLIWPacketizerList.
Definition at line 966 of file HexagonVLIWPacketizer.cpp.
References llvm::InstrItineraryData::beginStage(), llvm::MachineInstr::getDesc(), llvm::DFAPacketizer::getInstrItins(), llvm::MCInstrDesc::getSchedClass(), llvm::InstrStage::getUnits(), llvm::MachineInstr::isCFIInstruction(), llvm::MachineInstr::isDebugValue(), llvm::MachineInstr::isImplicitDef(), llvm::MachineInstr::isInlineAsm(), and llvm::VLIWPacketizerList::ResourceTracker.
|
overridevirtual |
Reimplemented from llvm::VLIWPacketizerList.
Definition at line 957 of file HexagonVLIWPacketizer.cpp.
|
protected |
Definition at line 266 of file HexagonVLIWPacketizer.cpp.
References assert(), llvm::SDep::Data, llvm::HexagonRegisterInfo::getFrameRegister(), llvm::MachineInstr::getOperand(), llvm::HexagonRegisterInfo::getRARegister(), llvm::MachineOperand::getReg(), llvm::HexagonRegisterInfo::getStackRegister(), llvm::HexagonInstrInfo::isDeallocRet(), llvm::HexagonInstrInfo::isIndirectCall(), llvm::HexagonInstrInfo::isJumpR(), llvm::HexagonInstrInfo::isPredicated(), llvm::MachineOperand::isReg(), and llvm::MachineOperand::isUse().
Referenced by isLegalToPacketizeTogether().
|
protected |
Reimplemented from llvm::VLIWPacketizerList.
Definition at line 1199 of file HexagonVLIWPacketizer.cpp.
References llvm::SDep::Anti, arePredicatesComplements(), assert(), cannotCoexist(), canPromoteToDotCur(), canPromoteToDotNew(), llvm::VLIWPacketizerList::CurrentPacketMIs, llvm::SDep::Data, llvm::MachineInstr::definesRegister(), llvm::find(), llvm::MachineInstr::getDesc(), llvm::SUnit::getInstr(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::HexagonRegisterInfo::getStackRegister(), hasControlDependence(), hasDeadDependence(), llvm::MachineInstr::hasOrderedMemoryRef(), hasV4SpecificDependence(), I, i, llvm::MCInstrDesc::ImplicitDefs, llvm::MachineInstr::isBranch(), llvm::MachineInstr::isCall(), isCallDependent(), isDirectJump(), llvm::HexagonInstrInfo::isDotCurInst(), llvm::HexagonInstrInfo::isJumpR(), llvm::HexagonInstrInfo::isLoopN(), llvm::HexagonInstrInfo::isNewValueJump(), llvm::HexagonInstrInfo::isPredicated(), llvm::MachineOperand::isReg(), isRegDependence(), isSoloInstruction(), llvm::SUnit::isSucc(), llvm::HexagonInstrInfo::isTailCall(), llvm::HexagonInstrInfo::isV60VectorInstruction(), llvm::MachineInstr::mayLoad(), llvm::MachineInstr::mayStore(), llvm::VLIWPacketizerList::MIToSUnit, llvm::MachineInstr::modifiesRegister(), llvm::SDep::Order, llvm::SDep::Output, P, PacketizeVolatiles, promoteToDotCur(), promoteToDotNew(), llvm::SUnit::Succs, and useCallersSP().
Reimplemented from llvm::VLIWPacketizerList.
Definition at line 1500 of file HexagonVLIWPacketizer.cpp.
References assert(), cannotCoexist(), cleanUpDotCur(), demoteToDotOld(), llvm::SUnit::getInstr(), I, and useCalleesSP().
|
protected |
Definition at line 332 of file HexagonVLIWPacketizer.cpp.
References llvm::HexagonInstrInfo::isCondInst(), llvm::HexagonInstrInfo::isJumpR(), llvm::MachineInstr::isReturn(), llvm::HexagonInstrInfo::isV60VectorInstruction(), llvm::HexagonInstrInfo::mayBeNewStore(), and llvm::MachineInstr::mayStore().
Referenced by canPromoteToDotNew().
|
inlineprotected |
Definition at line 104 of file HexagonVLIWPacketizer.h.
|
overridevirtual |
Reimplemented from llvm::VLIWPacketizerList.
Definition at line 989 of file HexagonVLIWPacketizer.cpp.
References llvm::MachineInstr::getOpcode(), llvm::MachineInstr::isCFIInstruction(), llvm::MachineInstr::isEHLabel(), llvm::MachineInstr::isInlineAsm(), isSchedBarrier(), llvm::HexagonInstrInfo::isSolo(), and ScheduleInlineAsm.
Referenced by isLegalToPacketizeTogether().
|
protected |
Definition at line 1628 of file HexagonVLIWPacketizer.cpp.
References llvm::HexagonInstrInfo::canExecuteInBundle(), llvm::VLIWPacketizerList::CurrentPacketMIs, llvm::MachineLoopInfo::getLoopFor(), llvm::MachineInstr::getParent(), isDependent(), llvm::HexagonInstrInfo::isLateInstrFeedsEarlyInstr(), llvm::HexagonInstrInfo::isV60VectorInstruction(), llvm::HexagonInstrInfo::isVecUsableNextPacket(), MLI, and llvm::HexagonSubtarget::useBSBScheduling().
Referenced by shouldAddToPacket().
|
protected |
Definition at line 346 of file HexagonVLIWPacketizer.cpp.
References assert(), llvm::SDep::Data, llvm::HexagonInstrInfo::getDotCurOp(), and llvm::MachineInstr::setDesc().
Referenced by isLegalToPacketizeTogether().
|
protected |
Definition at line 429 of file HexagonVLIWPacketizer.cpp.
References assert(), llvm::SDep::Data, llvm::HexagonInstrInfo::getDotNewOp(), llvm::HexagonInstrInfo::getDotNewPredOp(), MBPI, and llvm::MachineInstr::setDesc().
Referenced by isLegalToPacketizeTogether().
|
protected |
Definition at line 245 of file HexagonVLIWPacketizer.cpp.
References llvm_unreachable, and tryAllocateResourcesForConstExt().
Referenced by addToPacket().
|
protected |
Definition at line 842 of file HexagonVLIWPacketizer.cpp.
References llvm::SDep::Anti, llvm::VLIWPacketizerList::CurrentPacketMIs, I, i, llvm::HexagonInstrInfo::isPredicated(), llvm::SUnit::isSucc(), llvm::VLIWPacketizerList::MIToSUnit, and llvm::SUnit::Succs.
Referenced by arePredicatesComplements().
|
overridevirtual |
Reimplemented from llvm::VLIWPacketizerList.
Definition at line 1607 of file HexagonVLIWPacketizer.cpp.
References producesStall().
Definition at line 256 of file HexagonVLIWPacketizer.cpp.
References llvm::DFAPacketizer::canReserveResources(), llvm::DFAPacketizer::reserveResources(), and llvm::VLIWPacketizerList::ResourceTracker.
Referenced by addToPacket(), canReserveResourcesForConstExt(), and reserveResourcesForConstExt().
| void HexagonPacketizerList::unpacketizeSoloInstrs | ( | MachineFunction & | MF | ) |
Definition at line 1069 of file HexagonVLIWPacketizer.cpp.
References B, E, hasWriteToReadDep(), I, llvm::MachineInstr::isBundle(), llvm::MachineInstr::isDebugValue(), llvm::MachineInstr::isInlineAsm(), llvm::MachineInstr::isInsideBundle(), MI, and moveInstrOut().
|
protected |
Definition at line 469 of file HexagonVLIWPacketizer.cpp.
References llvm::MachineOperand::getImm(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), HEXAGON_LRFP_SIZE, llvm_unreachable, and llvm::MachineOperand::setImm().
Referenced by addToPacket(), and isLegalToPruneDependencies().
|
protected |
Definition at line 448 of file HexagonVLIWPacketizer.cpp.
References llvm::MachineOperand::getImm(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), HEXAGON_LRFP_SIZE, llvm::HexagonInstrInfo::isValidOffset(), llvm_unreachable, and llvm::MachineOperand::setImm().
Referenced by isLegalToPacketizeTogether().
|
protected |
A handle to the branch probability pass.
Definition at line 36 of file HexagonVLIWPacketizer.h.
Referenced by promoteToDotNew().
|
protected |
Definition at line 37 of file HexagonVLIWPacketizer.h.
Referenced by producesStall().
1.8.6