LLVM 19.0.0git
Public Member Functions | Public Attributes | List of all members
llvm::SystemZHazardRecognizer Class Reference

SystemZHazardRecognizer maintains the state for one MBB during scheduling. More...

#include "Target/SystemZ/SystemZHazardRecognizer.h"

Inheritance diagram for llvm::SystemZHazardRecognizer:
Inheritance graph
[legend]

Public Member Functions

 SystemZHazardRecognizer (const SystemZInstrInfo *tii, const TargetSchedModel *SM)
 
HazardType getHazardType (SUnit *SU, int Stalls=0) override
 getHazardType - Return the hazard type of emitting this node.
 
void Reset () override
 Reset - This callback is invoked when a new block of instructions is about to be schedule.
 
void EmitInstruction (SUnit *SU) override
 EmitInstruction - This callback is invoked when an instruction is emitted, to advance the hazard state.
 
const MCSchedClassDescgetSchedClass (SUnit *SU) const
 Resolves and cache a resolved scheduling class for an SUnit.
 
void emitInstruction (MachineInstr *MI, bool TakenBranch=false)
 Wrap a non-scheduled instruction in an SU and emit it.
 
int groupingCost (SUnit *SU) const
 Return the cost of decoder grouping for SU.
 
int resourcesCost (SUnit *SU)
 Return the cost of SU in regards to processor resources usage.
 
void dumpSU (SUnit *SU, raw_ostream &OS) const
 
void dumpCurrGroup (std::string Msg="") const
 
void dumpProcResourceCounters () const
 
void dumpState () const
 
MachineBasicBlock::iterator getLastEmittedMI ()
 
void copyState (SystemZHazardRecognizer *Incoming)
 Copy counters from end of single predecessor.
 
- Public Member Functions inherited from llvm::ScheduleHazardRecognizer
 ScheduleHazardRecognizer ()=default
 
virtual ~ScheduleHazardRecognizer ()
 
unsigned getMaxLookAhead () const
 
bool isEnabled () const
 
virtual bool atIssueLimit () const
 atIssueLimit - Return true if no more instructions may be issued in this cycle.
 
virtual HazardType getHazardType (SUnit *, int Stalls=0)
 getHazardType - Return the hazard type of emitting this node.
 
virtual void Reset ()
 Reset - This callback is invoked when a new block of instructions is about to be schedule.
 
virtual void EmitInstruction (SUnit *)
 EmitInstruction - This callback is invoked when an instruction is emitted, to advance the hazard state.
 
virtual void EmitInstruction (MachineInstr *)
 This overload will be used when the hazard recognizer is being used by a non-scheduling pass, which does not use SUnits.
 
virtual unsigned PreEmitNoops (SUnit *)
 PreEmitNoops - This callback is invoked prior to emitting an instruction.
 
virtual unsigned PreEmitNoops (MachineInstr *)
 This overload will be used when the hazard recognizer is being used by a non-scheduling pass, which does not use SUnits.
 
virtual bool ShouldPreferAnother (SUnit *)
 ShouldPreferAnother - This callback may be invoked if getHazardType returns NoHazard.
 
virtual void AdvanceCycle ()
 AdvanceCycle - This callback is invoked whenever the next top-down instruction to be scheduled cannot issue in the current cycle, either because of latency or resource conflicts.
 
virtual void RecedeCycle ()
 RecedeCycle - This callback is invoked whenever the next bottom-up instruction to be scheduled cannot issue in the current cycle, either because of latency or resource conflicts.
 
virtual void EmitNoop ()
 EmitNoop - This callback is invoked when a noop was added to the instruction stream.
 
virtual void EmitNoops (unsigned Quantity)
 EmitNoops - This callback is invoked when noops were added to the instruction stream.
 

Public Attributes

std::string CurGroupDbg
 

Additional Inherited Members

- Public Types inherited from llvm::ScheduleHazardRecognizer
enum  HazardType { NoHazard , Hazard , NoopHazard }
 
- Protected Attributes inherited from llvm::ScheduleHazardRecognizer
unsigned MaxLookAhead = 0
 MaxLookAhead - Indicate the number of cycles in the scoreboard state.
 

Detailed Description

SystemZHazardRecognizer maintains the state for one MBB during scheduling.

Definition at line 45 of file SystemZHazardRecognizer.h.

Constructor & Destructor Documentation

◆ SystemZHazardRecognizer()

llvm::SystemZHazardRecognizer::SystemZHazardRecognizer ( const SystemZInstrInfo tii,
const TargetSchedModel SM 
)
inline

Definition at line 110 of file SystemZHazardRecognizer.h.

References Reset(), and TII.

Member Function Documentation

◆ copyState()

void SystemZHazardRecognizer::copyState ( SystemZHazardRecognizer Incoming)

Copy counters from end of single predecessor.

Definition at line 450 of file SystemZHazardRecognizer.cpp.

References CurGroupDbg, and LLVM_DEBUG.

Referenced by llvm::SystemZPostRASchedStrategy::enterMBB().

◆ dumpCurrGroup()

void SystemZHazardRecognizer::dumpCurrGroup ( std::string  Msg = "") const

Definition at line 208 of file SystemZHazardRecognizer.cpp.

References CurGroupDbg, and llvm::dbgs().

Referenced by dumpState(), and EmitInstruction().

◆ dumpProcResourceCounters()

void SystemZHazardRecognizer::dumpProcResourceCounters ( ) const

◆ dumpState()

void SystemZHazardRecognizer::dumpState ( ) const

◆ dumpSU()

void SystemZHazardRecognizer::dumpSU ( SUnit SU,
raw_ostream OS 
) const

◆ emitInstruction()

void SystemZHazardRecognizer::emitInstruction ( MachineInstr MI,
bool  TakenBranch = false 
)

◆ EmitInstruction()

void SystemZHazardRecognizer::EmitInstruction ( SUnit )
overridevirtual

◆ getHazardType()

ScheduleHazardRecognizer::HazardType SystemZHazardRecognizer::getHazardType ( SUnit ,
int  Stalls = 0 
)
overridevirtual

getHazardType - Return the hazard type of emitting this node.

There are three possible results. Either:

  • NoHazard: it is legal to issue this instruction on this cycle.
  • Hazard: issuing this instruction would stall the machine. If some other instruction is available, issue it first.
  • NoopHazard: issuing this instruction would break the program. If some other instruction can be issued, do so, otherwise issue a noop.

Reimplemented from llvm::ScheduleHazardRecognizer.

Definition at line 76 of file SystemZHazardRecognizer.cpp.

References llvm::ScheduleHazardRecognizer::Hazard, and llvm::ScheduleHazardRecognizer::NoHazard.

◆ getLastEmittedMI()

MachineBasicBlock::iterator llvm::SystemZHazardRecognizer::getLastEmittedMI ( )
inline

Definition at line 153 of file SystemZHazardRecognizer.h.

◆ getSchedClass()

const MCSchedClassDesc * llvm::SystemZHazardRecognizer::getSchedClass ( SUnit SU) const
inline

◆ groupingCost()

int SystemZHazardRecognizer::groupingCost ( SUnit SU) const

Return the cost of decoder grouping for SU.

If SU must start a new decoder group, this is negative if this fits the schedule or positive if it would mean ending a group prematurely. For normal instructions this returns 0.

Definition at line 340 of file SystemZHazardRecognizer.cpp.

References llvm::SUnit::getInstr(), and getSchedClass().

◆ Reset()

void SystemZHazardRecognizer::Reset ( )
overridevirtual

Reset - This callback is invoked when a new block of instructions is about to be schedule.

The hazard state should be set to an initialized state.

Reimplemented from llvm::ScheduleHazardRecognizer.

Definition at line 81 of file SystemZHazardRecognizer.cpp.

References CurGroupDbg, and LLVM_DEBUG.

Referenced by EmitInstruction(), and SystemZHazardRecognizer().

◆ resourcesCost()

int SystemZHazardRecognizer::resourcesCost ( SUnit SU)

Return the cost of SU in regards to processor resources usage.

A positive value means it would be better to wait with SU, while a negative value means it would be good to schedule SU next.

Definition at line 386 of file SystemZHazardRecognizer.cpp.

References getSchedClass(), llvm::TargetSchedModel::getWriteProcResBegin(), llvm::TargetSchedModel::getWriteProcResEnd(), and llvm::SUnit::isUnbuffered.

Member Data Documentation

◆ CurGroupDbg

std::string llvm::SystemZHazardRecognizer::CurGroupDbg

Definition at line 146 of file SystemZHazardRecognizer.h.

Referenced by copyState(), dumpCurrGroup(), EmitInstruction(), and Reset().


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