diff options
Diffstat (limited to 'gnu/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.h')
| -rw-r--r-- | gnu/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.h | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/gnu/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.h b/gnu/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.h index 5680c3de6a1..f9a6e395a45 100644 --- a/gnu/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.h +++ b/gnu/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.h @@ -14,6 +14,7 @@ #ifndef LLVM_LIB_TARGET_AMDGPUHAZARDRECOGNIZERS_H #define LLVM_LIB_TARGET_AMDGPUHAZARDRECOGNIZERS_H +#include "llvm/ADT/BitVector.h" #include "llvm/ADT/STLExtras.h" #include "llvm/CodeGen/ScheduleHazardRecognizer.h" #include <list> @@ -22,8 +23,11 @@ namespace llvm { class MachineFunction; class MachineInstr; +class MachineOperand; +class MachineRegisterInfo; class ScheduleDAG; class SIInstrInfo; +class SIRegisterInfo; class SISubtarget; class GCNHazardRecognizer final : public ScheduleHazardRecognizer { @@ -35,6 +39,20 @@ class GCNHazardRecognizer final : public ScheduleHazardRecognizer { const MachineFunction &MF; const SISubtarget &ST; const SIInstrInfo &TII; + const SIRegisterInfo &TRI; + + /// RegUnits of uses in the current soft memory clause. + BitVector ClauseUses; + + /// RegUnits of defs in the current soft memory clause. + BitVector ClauseDefs; + + void resetClause() { + ClauseUses.reset(); + ClauseDefs.reset(); + } + + void addClauseInst(const MachineInstr &MI); int getWaitStatesSince(function_ref<bool(MachineInstr *)> IsHazard); int getWaitStatesSinceDef(unsigned Reg, @@ -42,7 +60,7 @@ class GCNHazardRecognizer final : public ScheduleHazardRecognizer { [](MachineInstr *) { return true; }); int getWaitStatesSinceSetReg(function_ref<bool(MachineInstr *)> IsHazard); - int checkSMEMSoftClauseHazards(MachineInstr *SMEM); + int checkSoftClauseHazards(MachineInstr *SMEM); int checkSMRDHazards(MachineInstr *SMRD); int checkVMEMHazards(MachineInstr* VMEM); int checkDPPHazards(MachineInstr *DPP); @@ -51,8 +69,10 @@ class GCNHazardRecognizer final : public ScheduleHazardRecognizer { int checkSetRegHazards(MachineInstr *SetRegInstr); int createsVALUHazard(const MachineInstr &MI); int checkVALUHazards(MachineInstr *VALU); + int checkVALUHazardsHelper(const MachineOperand &Def, const MachineRegisterInfo &MRI); int checkRWLaneHazards(MachineInstr *RWLane); int checkRFEHazards(MachineInstr *RFE); + int checkInlineAsmHazards(MachineInstr *IA); int checkAnyInstHazards(MachineInstr *MI); int checkReadM0Hazards(MachineInstr *SMovRel); public: |
