LLVM 22.0.0git
llvm::SchedulingPriorityQueue Class Referenceabstract

This interface is used to plug different priorities computation algorithms into the list scheduler. More...

#include "llvm/CodeGen/ScheduleDAG.h"

Inheritance diagram for llvm::SchedulingPriorityQueue:
[legend]

Public Member Functions

 SchedulingPriorityQueue (bool rf=false)
virtual ~SchedulingPriorityQueue ()=default
virtual bool isBottomUp () const =0
virtual void initNodes (std::vector< SUnit > &SUnits)=0
virtual void addNode (const SUnit *SU)=0
virtual void updateNode (const SUnit *SU)=0
virtual void releaseState ()=0
virtual bool empty () const =0
bool hasReadyFilter () const
virtual bool tracksRegPressure () const
virtual bool isReady (SUnit *) const
virtual void push (SUnit *U)=0
void push_all (const std::vector< SUnit * > &Nodes)
virtual SUnitpop ()=0
virtual void remove (SUnit *SU)=0
virtual void dump (ScheduleDAG *) const
virtual void scheduledNode (SUnit *)
 As each node is scheduled, this method is invoked.
virtual void unscheduledNode (SUnit *)
void setCurCycle (unsigned Cycle)
unsigned getCurCycle () const

Detailed Description

This interface is used to plug different priorities computation algorithms into the list scheduler.

It implements the interface of a standard priority queue, where nodes are inserted in arbitrary order and returned in priority order. The computation of the priority and the representation of the queue are totally up to the implementation to decide.

Definition at line 523 of file ScheduleDAG.h.

Constructor & Destructor Documentation

◆ SchedulingPriorityQueue()

llvm::SchedulingPriorityQueue::SchedulingPriorityQueue ( bool rf = false)
inline

Definition at line 530 of file ScheduleDAG.h.

◆ ~SchedulingPriorityQueue()

virtual llvm::SchedulingPriorityQueue::~SchedulingPriorityQueue ( )
virtualdefault

Member Function Documentation

◆ addNode()

virtual void llvm::SchedulingPriorityQueue::addNode ( const SUnit * SU)
pure virtual

◆ dump()

virtual void llvm::SchedulingPriorityQueue::dump ( ScheduleDAG * ) const
inlinevirtual

Reimplemented in llvm::LatencyPriorityQueue.

Definition at line 563 of file ScheduleDAG.h.

◆ empty()

virtual bool llvm::SchedulingPriorityQueue::empty ( ) const
pure virtual

◆ getCurCycle()

unsigned llvm::SchedulingPriorityQueue::getCurCycle ( ) const
inline

Definition at line 576 of file ScheduleDAG.h.

◆ hasReadyFilter()

bool llvm::SchedulingPriorityQueue::hasReadyFilter ( ) const
inline

Definition at line 543 of file ScheduleDAG.h.

◆ initNodes()

virtual void llvm::SchedulingPriorityQueue::initNodes ( std::vector< SUnit > & SUnits)
pure virtual

◆ isBottomUp()

virtual bool llvm::SchedulingPriorityQueue::isBottomUp ( ) const
pure virtual

◆ isReady()

virtual bool llvm::SchedulingPriorityQueue::isReady ( SUnit * ) const
inlinevirtual

Definition at line 547 of file ScheduleDAG.h.

References assert().

◆ pop()

virtual SUnit * llvm::SchedulingPriorityQueue::pop ( )
pure virtual

◆ push()

virtual void llvm::SchedulingPriorityQueue::push ( SUnit * U)
pure virtual

◆ push_all()

void llvm::SchedulingPriorityQueue::push_all ( const std::vector< SUnit * > & Nodes)
inline

Definition at line 554 of file ScheduleDAG.h.

References push().

◆ releaseState()

virtual void llvm::SchedulingPriorityQueue::releaseState ( )
pure virtual

◆ remove()

virtual void llvm::SchedulingPriorityQueue::remove ( SUnit * SU)
pure virtual

◆ scheduledNode()

virtual void llvm::SchedulingPriorityQueue::scheduledNode ( SUnit * )
inlinevirtual

As each node is scheduled, this method is invoked.

This allows the priority function to adjust the priority of related unscheduled nodes, for example.

Reimplemented in llvm::LatencyPriorityQueue, and llvm::ResourcePriorityQueue.

Definition at line 568 of file ScheduleDAG.h.

◆ setCurCycle()

void llvm::SchedulingPriorityQueue::setCurCycle ( unsigned Cycle)
inline

Definition at line 572 of file ScheduleDAG.h.

◆ tracksRegPressure()

virtual bool llvm::SchedulingPriorityQueue::tracksRegPressure ( ) const
inlinevirtual

Definition at line 545 of file ScheduleDAG.h.

◆ unscheduledNode()

virtual void llvm::SchedulingPriorityQueue::unscheduledNode ( SUnit * )
inlinevirtual

Definition at line 570 of file ScheduleDAG.h.

◆ updateNode()

virtual void llvm::SchedulingPriorityQueue::updateNode ( const SUnit * SU)
pure virtual

The documentation for this class was generated from the following files: