diff options
Diffstat (limited to 'llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp')
-rw-r--r-- | llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp b/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp index 4b6cc6524f5..29b1f79187d 100644 --- a/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp +++ b/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp @@ -25,7 +25,8 @@ using namespace llvm; GCNHazardRecognizer::GCNHazardRecognizer(const MachineFunction &MF) : CurrCycleInstr(nullptr), - MF(MF) { + MF(MF), + ST(MF.getSubtarget<SISubtarget>()) { MaxLookAhead = 5; } @@ -81,8 +82,7 @@ void GCNHazardRecognizer::AdvanceCycle() { if (!CurrCycleInstr) return; - const SIInstrInfo *TII = - static_cast<const SIInstrInfo*>(MF.getSubtarget().getInstrInfo()); + const SIInstrInfo *TII = ST.getInstrInfo(); unsigned NumWaitStates = TII->getNumWaitStates(*CurrCycleInstr); // Keep track of emitted instructions @@ -114,8 +114,7 @@ void GCNHazardRecognizer::RecedeCycle() { int GCNHazardRecognizer::getWaitStatesSinceDef( unsigned Reg, function_ref<bool(MachineInstr *)> IsHazardDef) { - const TargetRegisterInfo *TRI = - MF.getSubtarget<AMDGPUSubtarget>().getRegisterInfo(); + const SIRegisterInfo *TRI = ST.getRegisterInfo(); int WaitStates = -1; for (MachineInstr *MI : EmittedInstrs) { @@ -141,10 +140,8 @@ static void addRegsToSet(iterator_range<MachineInstr::const_mop_iterator> Ops, } int GCNHazardRecognizer::checkSMEMSoftClauseHazards(MachineInstr *SMEM) { - const AMDGPUSubtarget &ST = MF.getSubtarget<AMDGPUSubtarget>(); - // SMEM soft clause are only present on VI+ - if (ST.getGeneration() < AMDGPUSubtarget::VOLCANIC_ISLANDS) + if (ST.getGeneration() < SISubtarget::VOLCANIC_ISLANDS) return 0; // A soft-clause is any group of consecutive SMEM instructions. The @@ -198,14 +195,14 @@ int GCNHazardRecognizer::checkSMEMSoftClauseHazards(MachineInstr *SMEM) { } int GCNHazardRecognizer::checkSMRDHazards(MachineInstr *SMRD) { - const AMDGPUSubtarget &ST = MF.getSubtarget<AMDGPUSubtarget>(); - const SIInstrInfo *TII = static_cast<const SIInstrInfo*>(ST.getInstrInfo()); + const SISubtarget &ST = MF.getSubtarget<SISubtarget>(); + const SIInstrInfo *TII = ST.getInstrInfo(); int WaitStatesNeeded = 0; WaitStatesNeeded = checkSMEMSoftClauseHazards(SMRD); // This SMRD hazard only affects SI. - if (ST.getGeneration() != AMDGPUSubtarget::SOUTHERN_ISLANDS) + if (ST.getGeneration() != SISubtarget::SOUTHERN_ISLANDS) return WaitStatesNeeded; // A read of an SGPR by SMRD instruction requires 4 wait states when the @@ -224,10 +221,9 @@ int GCNHazardRecognizer::checkSMRDHazards(MachineInstr *SMRD) { } int GCNHazardRecognizer::checkVMEMHazards(MachineInstr* VMEM) { - const AMDGPUSubtarget &ST = MF.getSubtarget<AMDGPUSubtarget>(); - const SIInstrInfo *TII = static_cast<const SIInstrInfo*>(ST.getInstrInfo()); + const SIInstrInfo *TII = ST.getInstrInfo(); - if (ST.getGeneration() < AMDGPUSubtarget::VOLCANIC_ISLANDS) + if (ST.getGeneration() < SISubtarget::VOLCANIC_ISLANDS) return 0; const SIRegisterInfo &TRI = TII->getRegisterInfo(); @@ -250,9 +246,7 @@ int GCNHazardRecognizer::checkVMEMHazards(MachineInstr* VMEM) { } int GCNHazardRecognizer::checkDPPHazards(MachineInstr *DPP) { - const AMDGPUSubtarget &ST = MF.getSubtarget<AMDGPUSubtarget>(); - const SIRegisterInfo *TRI = - static_cast<const SIRegisterInfo*>(ST.getRegisterInfo()); + const SIRegisterInfo *TRI = ST.getRegisterInfo(); // Check for DPP VGPR read after VALU VGPR write. int DppVgprWaitStates = 2; |