diff options
Diffstat (limited to 'lib/Target/AMDGPU/GCNHazardRecognizer.h')
| -rw-r--r-- | lib/Target/AMDGPU/GCNHazardRecognizer.h | 22 | 
1 files changed, 21 insertions, 1 deletions
diff --git a/lib/Target/AMDGPU/GCNHazardRecognizer.h b/lib/Target/AMDGPU/GCNHazardRecognizer.h index 5680c3de6a1a..f9a6e395a454 100644 --- a/lib/Target/AMDGPU/GCNHazardRecognizer.h +++ b/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:  | 
