LLVM 22.0.0git
llvm::SystemZHazardRecognizer Class Reference

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

#include "Target/SystemZ/SystemZHazardRecognizer.h"

Inheritance diagram for llvm::SystemZHazardRecognizer:
[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 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().

Referenced by copyState().

Member Function Documentation

◆ copyState()

void SystemZHazardRecognizer::copyState ( SystemZHazardRecognizer * Incoming)

Copy counters from end of single predecessor.

Definition at line 449 of file SystemZHazardRecognizer.cpp.

References CurGroupDbg, LLVM_DEBUG, and SystemZHazardRecognizer().

◆ dumpCurrGroup()

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

Definition at line 207 of file SystemZHazardRecognizer.cpp.

References CurGroupDbg, and llvm::dbgs().

Referenced by dumpState(), and EmitInstruction().

◆ dumpProcResourceCounters()

void SystemZHazardRecognizer::dumpProcResourceCounters ( ) const

Definition at line 222 of file SystemZHazardRecognizer.cpp.

References llvm::dbgs().

Referenced by dumpState().

◆ dumpState()

void SystemZHazardRecognizer::dumpState ( ) const

◆ dumpSU()

◆ EmitInstruction()

void SystemZHazardRecognizer::EmitInstruction ( SUnit * )
overridevirtual

EmitInstruction - This callback is invoked when an instruction is emitted, to advance the hazard state.

Reimplemented from llvm::ScheduleHazardRecognizer.

Definition at line 269 of file SystemZHazardRecognizer.cpp.

References assert(), CurGroupDbg, llvm::dbgs(), dumpCurrGroup(), dumpSU(), llvm::MCSchedClassDesc::EndGroup, llvm::SUnit::getInstr(), getSchedClass(), llvm::SUnit::isCall, llvm::SUnit::isUnbuffered, LLVM_DEBUG, ProcResCostLim, and Reset().

Referenced by emitInstruction().

◆ emitInstruction()

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

Wrap a non-scheduled instruction in an SU and emit it.

Definition at line 409 of file SystemZHazardRecognizer.cpp.

References assert(), EmitInstruction(), llvm::SUnit::hasReservedResource, isBranchRetTrap(), llvm::SUnit::isCall, llvm::SUnit::isUnbuffered, llvm::make_range(), and MI.

◆ 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

Resolves and cache a resolved scheduling class for an SUnit.

Definition at line 121 of file SystemZHazardRecognizer.h.

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

Referenced by dumpSU(), EmitInstruction(), groupingCost(), and resourcesCost().

◆ 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 339 of file SystemZHazardRecognizer.cpp.

References llvm::MCSchedClassDesc::BeginGroup, llvm::MCSchedClassDesc::EndGroup, llvm::SUnit::getInstr(), getSchedClass(), and llvm::MCSchedClassDesc::isValid().

◆ 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 385 of file SystemZHazardRecognizer.cpp.

References getSchedClass(), llvm::SUnit::isUnbuffered, and llvm::MCSchedClassDesc::isValid().

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: