LLVM  14.0.0git
Public Types | Public Member Functions | List of all members
llvm::NodeSet Class Reference

A NodeSet contains a set of SUnit DAG nodes with additional information that assigns a priority to the set. More...

#include "llvm/CodeGen/MachinePipeliner.h"

Public Types

using iterator = SetVector< SUnit * >::const_iterator
 

Public Member Functions

 NodeSet ()=default
 
 NodeSet (iterator S, iterator E)
 
bool insert (SUnit *SU)
 
void insert (iterator S, iterator E)
 
template<typename UnaryPredicate >
bool remove_if (UnaryPredicate P)
 
unsigned count (SUnit *SU) const
 
bool hasRecurrence ()
 
unsigned size () const
 
bool empty () const
 
SUnitgetNode (unsigned i) const
 
void setRecMII (unsigned mii)
 
void setColocate (unsigned c)
 
void setExceedPressure (SUnit *SU)
 
bool isExceedSU (SUnit *SU)
 
int compareRecMII (NodeSet &RHS)
 
int getRecMII ()
 
void computeNodeSetInfo (SwingSchedulerDAG *SSD)
 Summarize node functions for the entire node set. More...
 
unsigned getLatency ()
 
unsigned getMaxDepth ()
 
void clear ()
 
 operator SetVector< SUnit * > & ()
 
bool operator> (const NodeSet &RHS) const
 Sort the node sets by importance. More...
 
bool operator== (const NodeSet &RHS) const
 
bool operator!= (const NodeSet &RHS) const
 
iterator begin ()
 
iterator end ()
 
void print (raw_ostream &os) const
 
LLVM_DUMP_METHOD void dump () const
 

Detailed Description

A NodeSet contains a set of SUnit DAG nodes with additional information that assigns a priority to the set.

Definition at line 311 of file MachinePipeliner.h.

Member Typedef Documentation

◆ iterator

Definition at line 322 of file MachinePipeliner.h.

Constructor & Destructor Documentation

◆ NodeSet() [1/2]

llvm::NodeSet::NodeSet ( )
default

◆ NodeSet() [2/2]

llvm::NodeSet::NodeSet ( iterator  S,
iterator  E 
)
inline

Member Function Documentation

◆ begin()

iterator llvm::NodeSet::begin ( )
inline

Definition at line 421 of file MachinePipeliner.h.

References llvm::SetVector< T, Vector, Set >::begin().

◆ clear()

void llvm::NodeSet::clear ( )
inline

Definition at line 387 of file MachinePipeliner.h.

References llvm::SetVector< T, Vector, Set >::clear().

◆ compareRecMII()

int llvm::NodeSet::compareRecMII ( NodeSet RHS)
inline

Definition at line 371 of file MachinePipeliner.h.

◆ computeNodeSetInfo()

void llvm::NodeSet::computeNodeSetInfo ( SwingSchedulerDAG SSD)
inline

Summarize node functions for the entire node set.

Definition at line 376 of file MachinePipeliner.h.

References llvm::SwingSchedulerDAG::getDepth(), llvm::SwingSchedulerDAG::getMOV(), and llvm::max().

◆ count()

unsigned llvm::NodeSet::count ( SUnit SU) const
inline

Definition at line 353 of file MachinePipeliner.h.

References llvm::SetVector< T, Vector, Set >::count().

Referenced by isIntersect().

◆ dump()

LLVM_DUMP_METHOD void NodeSet::dump ( ) const

Definition at line 2960 of file MachinePipeliner.cpp.

References llvm::dbgs(), and print().

◆ empty()

bool llvm::NodeSet::empty ( ) const
inline

Definition at line 359 of file MachinePipeliner.h.

References llvm::SetVector< T, Vector, Set >::empty().

◆ end()

iterator llvm::NodeSet::end ( )
inline

Definition at line 422 of file MachinePipeliner.h.

References llvm::SetVector< T, Vector, Set >::end().

◆ getLatency()

unsigned llvm::NodeSet::getLatency ( )
inline

Definition at line 383 of file MachinePipeliner.h.

References llvm::Latency.

◆ getMaxDepth()

unsigned llvm::NodeSet::getMaxDepth ( )
inline

Definition at line 385 of file MachinePipeliner.h.

◆ getNode()

SUnit* llvm::NodeSet::getNode ( unsigned  i) const
inline

Definition at line 361 of file MachinePipeliner.h.

References i.

◆ getRecMII()

int llvm::NodeSet::getRecMII ( )
inline

Definition at line 373 of file MachinePipeliner.h.

◆ hasRecurrence()

bool llvm::NodeSet::hasRecurrence ( )
inline

Definition at line 355 of file MachinePipeliner.h.

◆ insert() [1/2]

void llvm::NodeSet::insert ( iterator  S,
iterator  E 
)
inline

Definition at line 347 of file MachinePipeliner.h.

References E, llvm::SetVector< T, Vector, Set >::insert(), and S.

◆ insert() [2/2]

bool llvm::NodeSet::insert ( SUnit SU)
inline

Definition at line 345 of file MachinePipeliner.h.

References llvm::SetVector< T, Vector, Set >::insert().

Referenced by nodes_for_root().

◆ isExceedSU()

bool llvm::NodeSet::isExceedSU ( SUnit SU)
inline

Definition at line 369 of file MachinePipeliner.h.

◆ operator SetVector< SUnit * > &()

llvm::NodeSet::operator SetVector< SUnit * > & ( )
inline

Definition at line 397 of file MachinePipeliner.h.

◆ operator!=()

bool llvm::NodeSet::operator!= ( const NodeSet RHS) const
inline

Definition at line 419 of file MachinePipeliner.h.

References operator==().

◆ operator==()

bool llvm::NodeSet::operator== ( const NodeSet RHS) const
inline

Definition at line 414 of file MachinePipeliner.h.

Referenced by operator!=().

◆ operator>()

bool llvm::NodeSet::operator> ( const NodeSet RHS) const
inline

Sort the node sets by importance.

First, rank them by recurrence MII, then by mobility (least mobile done first), and finally by depth. Each node set may contain a colocate value which is used as the first tie breaker, if it's set.

Definition at line 403 of file MachinePipeliner.h.

◆ print()

void NodeSet::print ( raw_ostream os) const

Definition at line 2934 of file MachinePipeliner.cpp.

References I, and size().

Referenced by dump().

◆ remove_if()

template<typename UnaryPredicate >
bool llvm::NodeSet::remove_if ( UnaryPredicate  P)
inline

Definition at line 349 of file MachinePipeliner.h.

References P, and llvm::SetVector< T, Vector, Set >::remove_if().

◆ setColocate()

void llvm::NodeSet::setColocate ( unsigned  c)
inline

Definition at line 365 of file MachinePipeliner.h.

References c.

◆ setExceedPressure()

void llvm::NodeSet::setExceedPressure ( SUnit SU)
inline

Definition at line 367 of file MachinePipeliner.h.

◆ setRecMII()

void llvm::NodeSet::setRecMII ( unsigned  mii)
inline

Definition at line 363 of file MachinePipeliner.h.

◆ size()

unsigned llvm::NodeSet::size ( ) const
inline

Definition at line 357 of file MachinePipeliner.h.

References llvm::SetVector< T, Vector, Set >::size().

Referenced by print().


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