Go to the documentation of this file.
13 #ifndef LLVM_LIB_TARGET_AMDGPUHAZARDRECOGNIZERS_H
14 #define LLVM_LIB_TARGET_AMDGPUHAZARDRECOGNIZERS_H
24 class MachineFunction;
27 class MachineRegisterInfo;
38 bool IsHazardRecognizerMode;
44 std::list<MachineInstr*> EmittedInstrs;
50 bool RunLdsBranchVmemWARHazardFixup;
73 int getWaitStatesSince(
IsHazardFn IsHazard,
int Limit);
74 int getWaitStatesSinceDef(
unsigned Reg,
IsHazardFn IsHazardDef,
int Limit);
75 int getWaitStatesSinceSetReg(
IsHazardFn IsHazard,
int Limit);
135 void Reset()
override;
140 #endif //LLVM_LIB_TARGET_AMDGPUHAZARDRECOGNIZERS_H
This is an optimization pass for GlobalISel generic memory operations.
HazardType getHazardType(SUnit *SU, int Stalls) override
getHazardType - Return the hazard type of emitting this node.
MachineRegisterInfo - Keep track of information for virtual and physical registers,...
Reg
All possible values of the reg field in the ModR/M byte.
GCNHazardRecognizer(const MachineFunction &MF)
bool atIssueLimit() const override
atIssueLimit - Return true if no more instructions may be issued in this cycle.
MachineOperand class - Representation of each machine instruction operand.
An efficient, type-erasing, non-owning reference to a callable.
unsigned PreEmitNoopsCommon(MachineInstr *)
Provide an instruction scheduling machine model to CodeGen passes.
Representation of each machine instruction.
unsigned PreEmitNoops(MachineInstr *) override
This overload will be used when the hazard recognizer is being used by a non-scheduling pass,...
void EmitInstruction(SUnit *SU) override
EmitInstruction - This callback is invoked when an instruction is emitted, to advance the hazard stat...
void EmitNoop() override
EmitNoop - This callback is invoked when a noop was added to the instruction stream.
void Reset() override
Reset - This callback is invoked when a new block of instructions is about to be schedule.
unsigned const MachineRegisterInfo * MRI
void RecedeCycle() override
RecedeCycle - This callback is invoked whenever the next bottom-up instruction to be scheduled cannot...
void AdvanceCycle() override
AdvanceCycle - This callback is invoked whenever the next top-down instruction to be scheduled cannot...
bool ShouldPreferAnother(SUnit *SU) override
ShouldPreferAnother - This callback may be invoked if getHazardType returns NoHazard.
function_ref< bool(const MachineInstr &)> IsHazardFn
Scheduling unit. This is a node in the scheduling DAG.
HazardRecognizer - This determines whether or not an instruction can be issued this cycle,...