LLVM 20.0.0git
|
#include "Target/Hexagon/HexagonVLIWPacketizer.h"
Protected Attributes | |
const MachineBranchProbabilityInfo * | MBPI |
A handle to the branch probability pass. | |
const MachineLoopInfo * | MLI |
Protected Attributes inherited from llvm::VLIWPacketizerList | |
MachineFunction & | MF |
const TargetInstrInfo * | TII |
AAResults * | AA |
DefaultVLIWScheduler * | VLIWScheduler |
std::vector< MachineInstr * > | CurrentPacketMIs |
DFAPacketizer * | ResourceTracker |
std::map< MachineInstr *, SUnit * > | MIToSUnit |
Definition at line 27 of file HexagonVLIWPacketizer.h.
hexagon Hexagon false HexagonPacketizerList::HexagonPacketizerList | ( | MachineFunction & | MF, |
MachineLoopInfo & | MLI, | ||
AAResults * | AA, | ||
const MachineBranchProbabilityInfo * | MBPI, | ||
bool | Minimal | ||
) |
Definition at line 134 of file HexagonVLIWPacketizer.cpp.
|
overridevirtual |
Reimplemented from llvm::VLIWPacketizerList.
Definition at line 1710 of file HexagonVLIWPacketizer.cpp.
References assert(), calcStall(), llvm::DFAPacketizer::canReserveResources(), canReserveResourcesForConstExt(), llvm::VLIWPacketizerList::CurrentPacketMIs, demoteToDotOld(), endPacket(), MBB, MI, producesStall(), llvm::DFAPacketizer::reserveResources(), reserveResourcesForConstExt(), llvm::VLIWPacketizerList::ResourceTracker, tryAllocateResourcesForConstExt(), and useCalleesSP().
|
protected |
Definition at line 967 of file HexagonVLIWPacketizer.cpp.
References llvm::VLIWPacketizerList::CurrentPacketMIs, llvm::SDep::Data, getPredicatedRegister(), getPredicateSense(), I, llvm::SUnit::isSucc(), llvm::VLIWPacketizerList::MIToSUnit, PK_Unknown, restrictingDepExistInPacket(), and llvm::SUnit::Succs.
Referenced by isLegalToPacketizeTogether().
|
protected |
Definition at line 1879 of file HexagonVLIWPacketizer.cpp.
References llvm::VLIWPacketizerList::CurrentPacketMIs, llvm::LoopInfoBase< BlockT, LoopT >::getLoopFor(), I, llvm::VLIWPacketizerList::MIToSUnit, MLI, and llvm::SUnit::Preds.
Referenced by addToPacket(), and producesStall().
|
protected |
Definition at line 1161 of file HexagonVLIWPacketizer.cpp.
References cannotCoexistAsymm(), and MI.
Referenced by isLegalToPacketizeTogether(), and isLegalToPruneDependencies().
|
protected |
Definition at line 407 of file HexagonVLIWPacketizer.cpp.
References llvm::VLIWPacketizerList::CurrentPacketMIs, llvm::dbgs(), llvm::Pass::dump(), llvm::SUnit::getInstr(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::MachineFunction::getSubtarget(), llvm::MachineInstr::isInlineAsm(), LLVM_DEBUG, llvm::VLIWPacketizerList::MF, and MI.
Referenced by isLegalToPacketizeTogether().
|
protected |
Definition at line 850 of file HexagonVLIWPacketizer.cpp.
References canPromoteToNewValue(), llvm::DFAPacketizer::canReserveResources(), llvm::MachineFunction::CreateMachineInstr(), D, llvm::MachineFunction::deleteMachineInstr(), DisableVecDblNVStores, llvm::MachineInstr::getDesc(), llvm::SUnit::getInstr(), llvm::MachineInstr::isImplicitDef(), isImplicitDependency(), llvm::MachineInstr::isInlineAsm(), isNewifiable(), MBPI, llvm::VLIWPacketizerList::MF, MI, and llvm::VLIWPacketizerList::ResourceTracker.
Referenced by isLegalToPacketizeTogether().
|
protected |
Definition at line 820 of file HexagonVLIWPacketizer.cpp.
References canPromoteToNewValueStore(), llvm::SUnit::getInstr(), and MI.
Referenced by canPromoteToDotNew().
|
protected |
Definition at line 651 of file HexagonVLIWPacketizer.cpp.
References assert(), llvm::VLIWPacketizerList::CurrentPacketMIs, getAbsSetOperand(), llvm::MachineInstr::getDesc(), llvm::SUnit::getInstr(), getPostIncrementOperand(), getPredicateSense(), llvm::MachineOperand::getReg(), getReg(), getStoreValueOperand(), I, isLoadAbsSet(), llvm::MachineOperand::isReg(), llvm::MachineInstr::mayLoad(), llvm::MachineInstr::mayStore(), llvm::VLIWPacketizerList::MF, MI, llvm::VLIWPacketizerList::MIToSUnit, llvm::MachineInstr::modifiesRegister(), and llvm::MachineInstr::operands().
Referenced by canPromoteToNewValue().
|
protected |
Definition at line 288 of file HexagonVLIWPacketizer.cpp.
References tryAllocateResourcesForConstExt().
Referenced by addToPacket().
|
protected |
Definition at line 385 of file HexagonVLIWPacketizer.cpp.
References llvm::VLIWPacketizerList::CurrentPacketMIs, llvm::dbgs(), llvm::Pass::dump(), LLVM_DEBUG, and MI.
Referenced by isLegalToPruneDependencies().
|
protected |
Definition at line 471 of file HexagonVLIWPacketizer.cpp.
References MI.
Referenced by addToPacket(), and isLegalToPruneDependencies().
|
overridevirtual |
Reimplemented from llvm::VLIWPacketizerList.
Definition at line 1789 of file HexagonVLIWPacketizer.cpp.
References llvm::VLIWPacketizerList::CurrentPacketMIs, and LLVM_DEBUG.
Referenced by addToPacket().
bool HexagonPacketizerList::foundLSInPacket | ( | ) |
Definition at line 1690 of file HexagonVLIWPacketizer.cpp.
References llvm::VLIWPacketizerList::CurrentPacketMIs.
|
inlineprotected |
Definition at line 113 of file HexagonVLIWPacketizer.h.
|
protected |
Definition at line 1234 of file HexagonVLIWPacketizer.cpp.
References doesModifyCalleeSavedReg(), I, llvm::MachineInstr::isBarrier(), llvm::MachineInstr::isBranch(), llvm::MachineInstr::isCall(), isControlFlow(), and MI.
Referenced by isLegalToPacketizeTogether().
|
protected |
Definition at line 1207 of file HexagonVLIWPacketizer.cpp.
References I, llvm::MachineInstr::isCall(), and llvm::MachineInstr::operands().
Referenced by isLegalToPacketizeTogether().
|
protected |
Definition at line 1300 of file HexagonVLIWPacketizer.cpp.
References I, isSystemInstr(), and llvm::MachineInstr::mayStore().
Referenced by isLegalToPacketizeTogether().
|
protected |
Definition at line 1270 of file HexagonVLIWPacketizer.cpp.
References assert(), I, llvm::MachineInstr::isCall(), and llvm::MachineInstr::operands().
Referenced by isLegalToPacketizeTogether().
|
overridevirtual |
Reimplemented from llvm::VLIWPacketizerList.
Definition at line 1044 of file HexagonVLIWPacketizer.cpp.
References llvm::InstrItineraryData::beginStage(), llvm::DFAPacketizer::getInstrItins(), llvm::MCInstrDesc::getSchedClass(), llvm::InstrStage::getUnits(), MI, and llvm::VLIWPacketizerList::ResourceTracker.
|
overridevirtual |
Reimplemented from llvm::VLIWPacketizerList.
Definition at line 1034 of file HexagonVLIWPacketizer.cpp.
References INT64_MAX.
|
protected |
Definition at line 303 of file HexagonVLIWPacketizer.cpp.
References llvm::SDep::Data, llvm::HexagonRegisterInfo::getFrameRegister(), llvm::HexagonRegisterInfo::getStackRegister(), and MI.
Referenced by isLegalToPacketizeTogether().
|
protected |
Reimplemented from llvm::VLIWPacketizerList.
Definition at line 1325 of file HexagonVLIWPacketizer.cpp.
References llvm::VLIWPacketizerList::alias(), llvm::SDep::Anti, arePredicatesComplements(), assert(), cannotCoexist(), canPromoteToDotCur(), canPromoteToDotNew(), llvm::VLIWPacketizerList::CurrentPacketMIs, llvm::SDep::Data, llvm::find(), llvm::SUnit::getInstr(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::HexagonRegisterInfo::getStackRegister(), llvm::MachineFunction::getSubtarget(), hasControlDependence(), hasDeadDependence(), hasDualStoreDependence(), llvm::MachineInstr::hasOrderedMemoryRef(), hasRegMaskDependence(), llvm::HexagonSubtarget::hasV65Ops(), I, II, llvm::MachineInstr::isBranch(), llvm::MachineInstr::isCall(), isCallDependent(), isDirectJump(), llvm::MachineOperand::isReg(), isRegDependence(), isSoloInstruction(), llvm::SUnit::isSucc(), llvm::MachineInstr::mayLoad(), llvm::MachineInstr::mayStore(), llvm::VLIWPacketizerList::MF, llvm::MachineInstr::modifiesRegister(), llvm::SDep::Order, llvm::SDep::Output, PacketizeVolatiles, promoteToDotCur(), promoteToDotNew(), llvm::MachineInstr::readsRegister(), setmemShufDisabled(), Slot1Store, llvm::SUnit::Succs, and useCallersSP().
Reimplemented from llvm::VLIWPacketizerList.
Definition at line 1643 of file HexagonVLIWPacketizer.cpp.
References assert(), cannotCoexist(), cleanUpDotCur(), demoteToDotOld(), llvm::SUnit::getInstr(), I, INT64_MAX, undoChangedOffset(), updateOffset(), and useCalleesSP().
|
protected |
Definition at line 360 of file HexagonVLIWPacketizer.cpp.
References MI.
Referenced by canPromoteToDotNew().
|
inlineprotected |
Definition at line 150 of file HexagonVLIWPacketizer.h.
|
overridevirtual |
Reimplemented from llvm::VLIWPacketizerList.
Definition at line 1066 of file HexagonVLIWPacketizer.cpp.
References isSchedBarrier(), MI, and ScheduleInlineAsm.
Referenced by isLegalToPacketizeTogether().
|
protected |
Definition at line 1940 of file HexagonVLIWPacketizer.cpp.
References calcStall(), I, and llvm::Latency.
Referenced by addToPacket(), and shouldAddToPacket().
|
protected |
Definition at line 376 of file HexagonVLIWPacketizer.cpp.
References assert(), llvm::SDep::Data, and MI.
Referenced by isLegalToPacketizeTogether().
|
protected |
Definition at line 458 of file HexagonVLIWPacketizer.cpp.
References assert(), llvm::SDep::Data, MBPI, and MI.
Referenced by isLegalToPacketizeTogether().
|
protected |
Definition at line 283 of file HexagonVLIWPacketizer.cpp.
References llvm_unreachable, and tryAllocateResourcesForConstExt().
Referenced by addToPacket().
|
protected |
Definition at line 920 of file HexagonVLIWPacketizer.cpp.
References llvm::SDep::Anti, llvm::VLIWPacketizerList::CurrentPacketMIs, I, llvm::SUnit::isSucc(), MI, llvm::VLIWPacketizerList::MIToSUnit, and llvm::SUnit::Succs.
Referenced by arePredicatesComplements().
|
inlineprotected |
Definition at line 116 of file HexagonVLIWPacketizer.h.
Referenced by isLegalToPacketizeTogether().
|
overridevirtual |
Reimplemented from llvm::VLIWPacketizerList.
Definition at line 1835 of file HexagonVLIWPacketizer.cpp.
References llvm::DFAPacketizer::canReserveResources(), llvm::VLIWPacketizerList::CurrentPacketMIs, MI, producesStall(), llvm::VLIWPacketizerList::ResourceTracker, and llvm::MachineInstr::setDesc().
Definition at line 294 of file HexagonVLIWPacketizer.cpp.
References llvm::DFAPacketizer::canReserveResources(), llvm::MachineFunction::CreateMachineInstr(), llvm::MachineFunction::deleteMachineInstr(), llvm::VLIWPacketizerList::MF, llvm::DFAPacketizer::reserveResources(), and llvm::VLIWPacketizerList::ResourceTracker.
Referenced by addToPacket(), canReserveResourcesForConstExt(), and reserveResourcesForConstExt().
|
protected |
Undo the changed offset.
This is needed if the instruction cannot be added to the current packet due to a different instruction.
Definition at line 552 of file HexagonVLIWPacketizer.cpp.
References llvm_unreachable, MI, and OP.
Referenced by isLegalToPruneDependencies().
void HexagonPacketizerList::unpacketizeSoloInstrs | ( | MachineFunction & | MF | ) |
Definition at line 1166 of file HexagonVLIWPacketizer.cpp.
References B, hasWriteToReadDep(), llvm::make_early_inc_range(), llvm::VLIWPacketizerList::MF, MI, and moveInstrOut().
Return true if we can update the offset in MI so that MI and MJ can be packetized together.
Definition at line 516 of file HexagonVLIWPacketizer.cpp.
References llvm::SDep::Anti, assert(), llvm::SDep::Data, llvm::SUnit::getInstr(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), MI, llvm::Offset, and llvm::SUnit::Preds.
Referenced by isLegalToPruneDependencies().
|
protected |
Definition at line 498 of file HexagonVLIWPacketizer.cpp.
References llvm::MachineFunction::getFrameInfo(), llvm::MachineFrameInfo::getStackSize(), HEXAGON_LRFP_SIZE, llvm_unreachable, llvm::VLIWPacketizerList::MF, and MI.
Referenced by addToPacket(), and isLegalToPruneDependencies().
|
protected |
Definition at line 477 of file HexagonVLIWPacketizer.cpp.
References llvm::MachineFunction::getFrameInfo(), llvm::MachineFrameInfo::getStackSize(), HEXAGON_LRFP_SIZE, llvm_unreachable, llvm::VLIWPacketizerList::MF, and MI.
Referenced by isLegalToPacketizeTogether().
|
protected |
A handle to the branch probability pass.
Definition at line 72 of file HexagonVLIWPacketizer.h.
Referenced by canPromoteToDotNew(), and promoteToDotNew().
|
protected |
Definition at line 73 of file HexagonVLIWPacketizer.h.
Referenced by calcStall().