class MultiHazardRecognizer
Declaration
class MultiHazardRecognizer : public ScheduleHazardRecognizer { /* full declaration omitted */ };
Description
HazardRecognizer - This determines whether or not an instruction can be issued this cycle, and whether or not a noop needs to be inserted to handle the hazard.
Declared at: llvm/include/llvm/CodeGen/MultiHazardRecognizer.h:25
Inherits from: ScheduleHazardRecognizer
Member Variables
- private SmallVector< std::unique_ptr<ScheduleHazardRecognizer>, 4> Recognizers
Inherited from ScheduleHazardRecognizer:
Method Overview
- public void AddHazardRecognizer(std::unique_ptr<ScheduleHazardRecognizer> &&)
- public void AdvanceCycle()
- public void EmitInstruction(llvm::SUnit *)
- public void EmitInstruction(llvm::MachineInstr *)
- public void EmitNoop()
- public MultiHazardRecognizer()
- public unsigned int PreEmitNoops(llvm::SUnit *)
- public unsigned int PreEmitNoops(llvm::MachineInstr *)
- public void RecedeCycle()
- public void Reset()
- public bool ShouldPreferAnother(llvm::SUnit *)
- public bool atIssueLimit() const
- public llvm::ScheduleHazardRecognizer::HazardType getHazardType(llvm::SUnit *, int Stalls = 0)
Inherited from ScheduleHazardRecognizer:
- public AdvanceCycle
- public EmitInstruction
- public EmitInstruction
- public EmitNoop
- public EmitNoops
- public PreEmitNoops
- public PreEmitNoops
- public RecedeCycle
- public Reset
- public ShouldPreferAnother
- public atIssueLimit
- public getHazardType
- public getMaxLookAhead
- public isEnabled
Methods
¶void AddHazardRecognizer(
std::unique_ptr<ScheduleHazardRecognizer>&&)
void AddHazardRecognizer(
std::unique_ptr<ScheduleHazardRecognizer>&&)
Declared at: llvm/include/llvm/CodeGen/MultiHazardRecognizer.h:30
Parameters
- std::unique_ptr<ScheduleHazardRecognizer>&&
¶void AdvanceCycle()
void AdvanceCycle()
Description
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. This should increment the internal state of the hazard recognizer so that previously "Hazard" instructions will now not be hazards.
Declared at: llvm/include/llvm/CodeGen/MultiHazardRecognizer.h:40
¶void EmitInstruction(llvm::SUnit*)
void EmitInstruction(llvm::SUnit*)
Description
EmitInstruction - This callback is invoked when an instruction is emitted, to advance the hazard state.
Declared at: llvm/include/llvm/CodeGen/MultiHazardRecognizer.h:35
Parameters
¶void EmitInstruction(llvm::MachineInstr*)
void EmitInstruction(llvm::MachineInstr*)
Description
This overload will be used when the hazard recognizer is being used by a non-scheduling pass, which does not use SUnits.
Declared at: llvm/include/llvm/CodeGen/MultiHazardRecognizer.h:36
Parameters
¶void EmitNoop()
void EmitNoop()
Description
EmitNoop - This callback is invoked when a noop was added to the instruction stream.
Declared at: llvm/include/llvm/CodeGen/MultiHazardRecognizer.h:42
¶MultiHazardRecognizer()
MultiHazardRecognizer()
Declared at: llvm/include/llvm/CodeGen/MultiHazardRecognizer.h:29
¶unsigned int PreEmitNoops(llvm::SUnit*)
unsigned int PreEmitNoops(llvm::SUnit*)
Description
PreEmitNoops - This callback is invoked prior to emitting an instruction. It should return the number of noops to emit prior to the provided instruction. Note: This is only used during PostRA scheduling. EmitNoop is not called for these noops.
Declared at: llvm/include/llvm/CodeGen/MultiHazardRecognizer.h:37
Parameters
¶unsigned int PreEmitNoops(llvm::MachineInstr*)
unsigned int PreEmitNoops(llvm::MachineInstr*)
Description
This overload will be used when the hazard recognizer is being used by a non-scheduling pass, which does not use SUnits.
Declared at: llvm/include/llvm/CodeGen/MultiHazardRecognizer.h:38
Parameters
¶void RecedeCycle()
void RecedeCycle()
Description
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.
Declared at: llvm/include/llvm/CodeGen/MultiHazardRecognizer.h:41
¶void Reset()
void Reset()
Description
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.
Declared at: llvm/include/llvm/CodeGen/MultiHazardRecognizer.h:34
¶bool ShouldPreferAnother(llvm::SUnit*)
bool ShouldPreferAnother(llvm::SUnit*)
Description
ShouldPreferAnother - This callback may be invoked if getHazardType returns NoHazard. If, even though there is no hazard, it would be better to schedule another available instruction, this callback should return true.
Declared at: llvm/include/llvm/CodeGen/MultiHazardRecognizer.h:39
Parameters
¶bool atIssueLimit() const
bool atIssueLimit() const
Description
atIssueLimit - Return true if no more instructions may be issued in this cycle. FIXME: remove this once MachineScheduler is the only client.
Declared at: llvm/include/llvm/CodeGen/MultiHazardRecognizer.h:32
¶llvm::ScheduleHazardRecognizer::HazardType
getHazardType(llvm::SUnit*, int Stalls = 0)
llvm::ScheduleHazardRecognizer::HazardType
getHazardType(llvm::SUnit*, int Stalls = 0)
Description
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.
Declared at: llvm/include/llvm/CodeGen/MultiHazardRecognizer.h:33
Parameters
- llvm::SUnit*
- int Stalls = 0