30#ifndef LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZHAZARDRECOGNIZER_H
31#define LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZHAZARDRECOGNIZER_H
52 unsigned CurrGroupSize;
56 bool CurrGroupHas4RegOps;
69 unsigned CriticalResourceIdx;
72 inline unsigned getNumDecoderSlots(
SUnit *SU)
const;
75 bool fitsIntoCurrentGroup(
SUnit *SU)
const;
85 unsigned getCurrCycleIdx(
SUnit *SU =
nullptr)
const;
89 unsigned LastFPdOpCycleIdx;
94 unsigned getCurrGroupSize() {
return CurrGroupSize;};
100 void clearProcResCounters();
104 bool isFPdOpPreferred_distance(
SUnit *SU)
const;
112 : TII(tii), SchedModel(SM) {
117 void Reset()
override;
122 if (!SU->
SchedClass && SchedModel->hasInstrSchedModel())
This file defines the SmallVector class.
MachineInstrBundleIterator< MachineInstr > iterator
Representation of each machine instruction.
Scheduling unit. This is a node in the scheduling DAG.
const MCSchedClassDesc * SchedClass
nullptr or resolved SchedClass.
MachineInstr * getInstr() const
Returns the representative MachineInstr for this SUnit.
ScheduleHazardRecognizer()=default
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
SystemZHazardRecognizer maintains the state for one MBB during scheduling.
int groupingCost(SUnit *SU) const
Return the cost of decoder grouping for SU.
void dumpProcResourceCounters() const
void emitInstruction(MachineInstr *MI, bool TakenBranch=false)
Wrap a non-scheduled instruction in an SU and emit it.
const MCSchedClassDesc * getSchedClass(SUnit *SU) const
Resolves and cache a resolved scheduling class for an SUnit.
void copyState(SystemZHazardRecognizer *Incoming)
Copy counters from end of single predecessor.
void Reset() override
Reset - This callback is invoked when a new block of instructions is about to be schedule.
void dumpSU(SUnit *SU, raw_ostream &OS) const
HazardType getHazardType(SUnit *SU, int Stalls=0) override
getHazardType - Return the hazard type of emitting this node.
MachineBasicBlock::iterator getLastEmittedMI()
void dumpCurrGroup(std::string Msg="") const
int resourcesCost(SUnit *SU)
Return the cost of SU in regards to processor resources usage.
void EmitInstruction(SUnit *SU) override
EmitInstruction - This callback is invoked when an instruction is emitted, to advance the hazard stat...
SystemZHazardRecognizer(const SystemZInstrInfo *tii, const TargetSchedModel *SM)
Provide an instruction scheduling machine model to CodeGen passes.
This class implements an extremely fast bulk output stream that can only output to a stream.
This is an optimization pass for GlobalISel generic memory operations.
Incoming for lane maks phi as machine instruction, incoming register Reg and incoming block Block are...
Summarize the scheduling resources required for an instruction of a particular scheduling class.