LLVM 20.0.0git
Public Types | Public Member Functions | List of all members
llvm::mca::LSUnitBase Class Referenceabstract

Abstract base interface for LS (load/store) units in llvm-mca. More...

#include "llvm/MCA/HardwareUnits/LSUnit.h"

Inheritance diagram for llvm::mca::LSUnitBase:
Inheritance graph
[legend]

Public Types

enum  Status { LSU_AVAILABLE = 0 , LSU_LQUEUE_FULL , LSU_SQUEUE_FULL }
 

Public Member Functions

 LSUnitBase (const MCSchedModel &SM, unsigned LoadQueueSize, unsigned StoreQueueSize, bool AssumeNoAlias)
 
virtual ~LSUnitBase ()
 
unsigned getLoadQueueSize () const
 Returns the total number of entries in the load queue.
 
unsigned getStoreQueueSize () const
 Returns the total number of entries in the store queue.
 
unsigned getUsedLQEntries () const
 
unsigned getUsedSQEntries () const
 
void acquireLQSlot ()
 
void acquireSQSlot ()
 
void releaseLQSlot ()
 
void releaseSQSlot ()
 
bool assumeNoAlias () const
 
virtual Status isAvailable (const InstRef &IR) const =0
 This method checks the availability of the load/store buffers.
 
virtual unsigned dispatch (const InstRef &IR)=0
 Allocates LS resources for instruction IR.
 
bool isSQEmpty () const
 
bool isLQEmpty () const
 
bool isSQFull () const
 
bool isLQFull () const
 
virtual bool isReady (const InstRef &IR) const =0
 Check if a peviously dispatched instruction IR is now ready for execution.
 
virtual bool isPending (const InstRef &IR) const =0
 Check if instruction IR only depends on memory instructions that are currently executing.
 
virtual bool isWaiting (const InstRef &IR) const =0
 Check if instruction IR is still waiting on memory operations, and the wait time is still unknown.
 
virtual bool hasDependentUsers (const InstRef &IR) const =0
 
virtual const CriticalDependency getCriticalPredecessor (unsigned GroupId)=0
 
virtual void onInstructionExecuted (const InstRef &IR)=0
 
virtual void onInstructionRetired (const InstRef &IR)=0
 
virtual void onInstructionIssued (const InstRef &IR)=0
 
virtual void cycleEvent ()=0
 
virtual void dump () const =0
 
- Public Member Functions inherited from llvm::mca::HardwareUnit
 HardwareUnit ()=default
 
virtual ~HardwareUnit ()
 

Detailed Description

Abstract base interface for LS (load/store) units in llvm-mca.

Definition at line 28 of file LSUnit.h.

Member Enumeration Documentation

◆ Status

Enumerator
LSU_AVAILABLE 
LSU_LQUEUE_FULL 
LSU_SQUEUE_FULL 

Definition at line 76 of file LSUnit.h.

Constructor & Destructor Documentation

◆ LSUnitBase()

llvm::mca::LSUnitBase::LSUnitBase ( const MCSchedModel SM,
unsigned  LoadQueueSize,
unsigned  StoreQueueSize,
bool  AssumeNoAlias 
)

◆ ~LSUnitBase()

llvm::mca::LSUnitBase::~LSUnitBase ( )
virtualdefault

Member Function Documentation

◆ acquireLQSlot()

void llvm::mca::LSUnitBase::acquireLQSlot ( )
inline

Definition at line 69 of file LSUnit.h.

Referenced by llvm::mca::LSUnit::dispatch().

◆ acquireSQSlot()

void llvm::mca::LSUnitBase::acquireSQSlot ( )
inline

Definition at line 70 of file LSUnit.h.

Referenced by llvm::mca::LSUnit::dispatch().

◆ assumeNoAlias()

bool llvm::mca::LSUnitBase::assumeNoAlias ( ) const
inline

Definition at line 74 of file LSUnit.h.

Referenced by llvm::mca::LSUnit::dispatch().

◆ cycleEvent()

virtual void llvm::mca::LSUnitBase::cycleEvent ( )
pure virtual

◆ dispatch()

virtual unsigned llvm::mca::LSUnitBase::dispatch ( const InstRef IR)
pure virtual

Allocates LS resources for instruction IR.

This method assumes that a previous call to isAvailable(IR) succeeded with a LSUnitBase::Status value of LSU_AVAILABLE. Returns the GroupID associated with this instruction. That value will be used to set the LSUTokenID field in class Instruction.

Implemented in llvm::mca::LSUnit.

Referenced by llvm::mca::Scheduler::dispatch(), and llvm::mca::InOrderIssueStage::execute().

◆ dump()

virtual void llvm::mca::LSUnitBase::dump ( ) const
pure virtual

Implemented in llvm::mca::LSUnit.

◆ getCriticalPredecessor()

virtual const CriticalDependency llvm::mca::LSUnitBase::getCriticalPredecessor ( unsigned  GroupId)
pure virtual

Implemented in llvm::mca::LSUnit.

◆ getLoadQueueSize()

unsigned llvm::mca::LSUnitBase::getLoadQueueSize ( ) const
inline

Returns the total number of entries in the load queue.

Definition at line 62 of file LSUnit.h.

Referenced by llvm::mca::LSUnit::dump().

◆ getStoreQueueSize()

unsigned llvm::mca::LSUnitBase::getStoreQueueSize ( ) const
inline

Returns the total number of entries in the store queue.

Definition at line 65 of file LSUnit.h.

Referenced by llvm::mca::LSUnit::dump().

◆ getUsedLQEntries()

unsigned llvm::mca::LSUnitBase::getUsedLQEntries ( ) const
inline

Definition at line 67 of file LSUnit.h.

Referenced by llvm::mca::LSUnit::dump().

◆ getUsedSQEntries()

unsigned llvm::mca::LSUnitBase::getUsedSQEntries ( ) const
inline

Definition at line 68 of file LSUnit.h.

Referenced by llvm::mca::LSUnit::dump().

◆ hasDependentUsers()

virtual bool llvm::mca::LSUnitBase::hasDependentUsers ( const InstRef IR) const
pure virtual

◆ isAvailable()

virtual Status llvm::mca::LSUnitBase::isAvailable ( const InstRef IR) const
pure virtual

This method checks the availability of the load/store buffers.

Returns LSU_AVAILABLE if there are enough load/store queue entries to accomodate instruction IR. By default, LSU_AVAILABLE is returned if IR is not a memory operation.

Implemented in llvm::mca::LSUnit.

Referenced by llvm::mca::Scheduler::isAvailable().

◆ isLQEmpty()

bool llvm::mca::LSUnitBase::isLQEmpty ( ) const
inline

Definition at line 98 of file LSUnit.h.

◆ isLQFull()

bool llvm::mca::LSUnitBase::isLQFull ( ) const
inline

Definition at line 100 of file LSUnit.h.

Referenced by llvm::mca::LSUnit::isAvailable().

◆ isPending()

virtual bool llvm::mca::LSUnitBase::isPending ( const InstRef IR) const
pure virtual

Check if instruction IR only depends on memory instructions that are currently executing.

Implemented in llvm::mca::LSUnit.

Referenced by llvm::mca::Scheduler::analyzeDataDependencies(), and llvm::mca::Scheduler::dispatch().

◆ isReady()

virtual bool llvm::mca::LSUnitBase::isReady ( const InstRef IR) const
pure virtual

Check if a peviously dispatched instruction IR is now ready for execution.

Implemented in llvm::mca::LSUnit.

Referenced by llvm::mca::Scheduler::dispatch().

◆ isSQEmpty()

bool llvm::mca::LSUnitBase::isSQEmpty ( ) const
inline

Definition at line 97 of file LSUnit.h.

◆ isSQFull()

bool llvm::mca::LSUnitBase::isSQFull ( ) const
inline

Definition at line 99 of file LSUnit.h.

Referenced by llvm::mca::LSUnit::isAvailable().

◆ isWaiting()

virtual bool llvm::mca::LSUnitBase::isWaiting ( const InstRef IR) const
pure virtual

Check if instruction IR is still waiting on memory operations, and the wait time is still unknown.

Implemented in llvm::mca::LSUnit.

Referenced by llvm::mca::Scheduler::dispatch().

◆ onInstructionExecuted()

virtual void llvm::mca::LSUnitBase::onInstructionExecuted ( const InstRef IR)
pure virtual

Implemented in llvm::mca::LSUnit.

◆ onInstructionIssued()

virtual void llvm::mca::LSUnitBase::onInstructionIssued ( const InstRef IR)
pure virtual

Implemented in llvm::mca::LSUnit.

◆ onInstructionRetired()

virtual void llvm::mca::LSUnitBase::onInstructionRetired ( const InstRef IR)
pure virtual

◆ releaseLQSlot()

void llvm::mca::LSUnitBase::releaseLQSlot ( )
inline

Definition at line 71 of file LSUnit.h.

Referenced by llvm::mca::LSUnit::onInstructionRetired().

◆ releaseSQSlot()

void llvm::mca::LSUnitBase::releaseSQSlot ( )
inline

Definition at line 72 of file LSUnit.h.

Referenced by llvm::mca::LSUnit::onInstructionRetired().


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