LLVM: llvm::ConvergingVLIWScheduler::VLIWSchedBoundary Struct Reference (original) (raw)
Each Scheduling boundary is associated with ready queues. More...
#include "[llvm/CodeGen/VLIWMachineScheduler.h](VLIWMachineScheduler%5F8h%5Fsource.html)"
| Public Member Functions | |
|---|---|
| VLIWSchedBoundary (unsigned ID, const Twine &Name) | |
| Pending queues extend the ready queues with the same ID and the PendingFlag set. | |
| ~VLIWSchedBoundary () | |
| VLIWSchedBoundary & | operator= (const VLIWSchedBoundary &other)=delete |
| VLIWSchedBoundary (const VLIWSchedBoundary &other)=delete | |
| void | init (VLIWMachineScheduler *dag, const TargetSchedModel *smodel) |
| bool | isTop () const |
| bool | checkHazard (SUnit *SU) |
| Does this SU have a hazard within the current instruction group. | |
| void | releaseNode (SUnit *SU, unsigned ReadyCycle) |
| void | bumpCycle () |
| Move the boundary of scheduled code by one cycle. | |
| void | bumpNode (SUnit *SU) |
| Move the boundary of scheduled code by one SUnit. | |
| void | releasePending () |
| Release pending ready nodes in to the available queue. | |
| void | removeReady (SUnit *SU) |
| Remove SU from the ready set for this boundary. | |
| SUnit * | pickOnlyChoice () |
| If this queue only has one ready candidate, return it. | |
| bool | isLatencyBound (SUnit *SU) |
| Public Attributes | |
|---|---|
| VLIWMachineScheduler * | DAG = nullptr |
| const TargetSchedModel * | SchedModel = nullptr |
| ReadyQueue | Available |
| ReadyQueue | Pending |
| bool | CheckPending = false |
| ScheduleHazardRecognizer * | HazardRec = nullptr |
| VLIWResourceModel * | ResourceModel = nullptr |
| unsigned | CurrCycle = 0 |
| unsigned | IssueCount = 0 |
| unsigned | CriticalPathLength = 0 |
| unsigned | MinReadyCycle = std::numeric_limits<unsigned>::max() |
| MinReadyCycle - Cycle of the soonest available instruction. | |
| unsigned | MaxMinLatency = 0 |
Each Scheduling boundary is associated with ready queues.
It tracks the current cycle in whichever direction at has moved, and maintains the state of "hazards" and other interlocks at the current cycle.
Definition at line 127 of file VLIWMachineScheduler.h.
| llvm::ConvergingVLIWScheduler::VLIWSchedBoundary::VLIWSchedBoundary ( unsigned ID, const Twine & Name ) | inline |
|---|
◆ ~VLIWSchedBoundary()
| ConvergingVLIWScheduler::VLIWSchedBoundary::~VLIWSchedBoundary | ( | ) |
|---|
◆ VLIWSchedBoundary() [2/2]
◆ bumpCycle()
| void ConvergingVLIWScheduler::VLIWSchedBoundary::bumpCycle | ( | ) |
|---|
Move the boundary of scheduled code by one cycle.
Definition at line 383 of file VLIWMachineScheduler.cpp.
References assert(), Available, CheckPending, CurrCycle, llvm::dbgs(), HazardRec, IssueCount, isTop(), LLVM_DEBUG, MinReadyCycle, and SchedModel.
Referenced by bumpNode(), and pickOnlyChoice().
◆ bumpNode()
| void ConvergingVLIWScheduler::VLIWSchedBoundary::bumpNode | ( | SUnit * | SU | ) |
|---|
Move the boundary of scheduled code by one SUnit.
Definition at line 410 of file VLIWMachineScheduler.cpp.
References bumpCycle(), CurrCycle, llvm::dbgs(), llvm::SUnit::getInstr(), HazardRec, llvm::SUnit::isCall, IssueCount, isTop(), LLVM_DEBUG, ResourceModel, and SchedModel.
◆ checkHazard()
| bool ConvergingVLIWScheduler::VLIWSchedBoundary::checkHazard | ( | SUnit * | SU | ) |
|---|
◆ init()
◆ isLatencyBound()
| bool llvm::ConvergingVLIWScheduler::VLIWSchedBoundary::isLatencyBound ( SUnit * SU) | inline |
|---|
◆ isTop()
| bool llvm::ConvergingVLIWScheduler::VLIWSchedBoundary::isTop ( ) const | inline |
|---|
◆ operator=()
◆ pickOnlyChoice()
| SUnit * ConvergingVLIWScheduler::VLIWSchedBoundary::pickOnlyChoice | ( | ) |
|---|
If this queue only has one ready candidate, return it.
As a side effect, advance the cycle until at least one node is ready. If multiple instructions are ready, return NULL.
Definition at line 480 of file VLIWMachineScheduler.cpp.
References assert(), Available, bumpCycle(), CheckPending, llvm::getWeakLeft(), HazardRec, isTop(), MaxMinLatency, Pending, releasePending(), and ResourceModel.
◆ releaseNode()
| void ConvergingVLIWScheduler::VLIWSchedBoundary::releaseNode | ( | SUnit * | SU, |
|---|---|---|---|
| unsigned | ReadyCycle ) |
◆ releasePending()
| void ConvergingVLIWScheduler::VLIWSchedBoundary::releasePending | ( | ) |
|---|
◆ removeReady()
| void ConvergingVLIWScheduler::VLIWSchedBoundary::removeReady | ( | SUnit * | SU | ) |
|---|
◆ Available
ReadyQueue llvm::ConvergingVLIWScheduler::VLIWSchedBoundary::Available
◆ CheckPending
bool llvm::ConvergingVLIWScheduler::VLIWSchedBoundary::CheckPending = false
◆ CriticalPathLength
unsigned llvm::ConvergingVLIWScheduler::VLIWSchedBoundary::CriticalPathLength = 0
◆ CurrCycle
unsigned llvm::ConvergingVLIWScheduler::VLIWSchedBoundary::CurrCycle = 0
◆ DAG
◆ HazardRec
◆ IssueCount
unsigned llvm::ConvergingVLIWScheduler::VLIWSchedBoundary::IssueCount = 0
◆ MaxMinLatency
unsigned llvm::ConvergingVLIWScheduler::VLIWSchedBoundary::MaxMinLatency = 0
◆ MinReadyCycle
unsigned llvm::ConvergingVLIWScheduler::VLIWSchedBoundary::MinReadyCycle = std::numeric_limits<unsigned>::max()
◆ Pending
ReadyQueue llvm::ConvergingVLIWScheduler::VLIWSchedBoundary::Pending
◆ ResourceModel
VLIWResourceModel* llvm::ConvergingVLIWScheduler::VLIWSchedBoundary::ResourceModel = nullptr
◆ SchedModel
The documentation for this struct was generated from the following files:
- include/llvm/CodeGen/VLIWMachineScheduler.h
- lib/CodeGen/VLIWMachineScheduler.cpp