From: Christudasan Devadasan Date: Tue, 17 Aug 2021 04:26:36 +0000 (-0400) Subject: [AMDGPU] Set wait state for meta instructions to zero X-Git-Tag: upstream/15.0.7~33651 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4f5ba46e162eec32a9f9e2a725e6422281913043;p=platform%2Fupstream%2Fllvm.git [AMDGPU] Set wait state for meta instructions to zero It looked more reasonable to set the wait state to zero for all non-instructions. With that we can avoid the special handling for them in `getWaitStatesSince` and `AdvanceCycle`. This NFC patch makes the handling more generic. --- diff --git a/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp b/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp index 7b5ced3..aca8b53 100644 --- a/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp +++ b/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp @@ -349,14 +349,6 @@ void GCNHazardRecognizer::AdvanceCycle() { return; } - // Do not track non-instructions which do not affect the wait states. - // If included, these instructions can lead to buffer overflow such that - // detectable hazards are missed. - if (CurrCycleInstr->isMetaInstruction()) { - CurrCycleInstr = nullptr; - return; - } - if (CurrCycleInstr->isBundle()) { processBundle(); return; @@ -413,7 +405,7 @@ static int getWaitStatesSince(GCNHazardRecognizer::IsHazardFn IsHazard, if (IsHazard(*I)) return WaitStates; - if (I->isInlineAsm() || I->isMetaInstruction()) + if (I->isInlineAsm()) continue; WaitStates += SIInstrInfo::getNumWaitStates(*I); diff --git a/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp b/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp index 2cdd98f..809da5d 100644 --- a/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp +++ b/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp @@ -1637,7 +1637,10 @@ void SIInstrInfo::insertReturn(MachineBasicBlock &MBB) const { unsigned SIInstrInfo::getNumWaitStates(const MachineInstr &MI) { switch (MI.getOpcode()) { - default: return 1; // FIXME: Do wait states equal cycles? + default: + if (MI.isMetaInstruction()) + return 0; + return 1; // FIXME: Do wait states equal cycles? case AMDGPU::S_NOP: return MI.getOperand(0).getImm() + 1;