diff options
| author | Jay Foad <jay.foad@amd.com> | 2019-10-30 13:47:32 +0000 |
|---|---|---|
| committer | Jay Foad <jay.foad@amd.com> | 2019-10-30 17:09:07 +0000 |
| commit | e5972f2a04ee48a9190cd25f0d5b24cbca4d47f2 (patch) | |
| tree | 329193f145cffc3e4100fc4b523ca536793efb13 /llvm/lib | |
| parent | c75cd3c7f0f924d53f07a9cce60c362751678e0c (diff) | |
| download | bcm5719-llvm-e5972f2a04ee48a9190cd25f0d5b24cbca4d47f2.tar.gz bcm5719-llvm-e5972f2a04ee48a9190cd25f0d5b24cbca4d47f2.zip | |
[AMDGPU] Simplify VCCZ bug handling
Summary:
VCCZBugHandledSet was used to make sure we don't apply the same
workaround more than once to a single cbranch instruction, but it's not
necessary because the workaround involves inserting an s_waitcnt
instruction, which is enough for subsequent iterations to detect that no
further workaround is necessary.
Also beef up the test case to check that the workaround was only applied
once. I have also manually verified that the test still passes even if I
hack the big do-while loop in runOnMachineFunction to run a minimum of
five iterations.
Subscribers: arsenm, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D69621
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp b/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp index 6a688b70554..14b12f90197 100644 --- a/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp +++ b/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp @@ -372,7 +372,6 @@ private: AMDGPU::IsaVersion IV; DenseSet<MachineInstr *> TrackedWaitcntSet; - DenseSet<MachineInstr *> VCCZBugHandledSet; struct BlockInfo { MachineBasicBlock *MBB; @@ -1388,8 +1387,7 @@ bool SIInsertWaitcnts::insertWaitcntInBlock(MachineFunction &MF, } bool VCCZBugWorkAround = false; - if (readsVCCZ(Inst) && - (!VCCZBugHandledSet.count(&Inst))) { + if (readsVCCZ(Inst)) { if (ScoreBrackets.getScoreLB(LGKM_CNT) < ScoreBrackets.getScoreUB(LGKM_CNT) && ScoreBrackets.hasPendingEvent(SMEM_ACCESS)) { @@ -1431,7 +1429,6 @@ bool SIInsertWaitcnts::insertWaitcntInBlock(MachineFunction &MF, TII->get(ST->isWave32() ? AMDGPU::S_MOV_B32 : AMDGPU::S_MOV_B64), TRI->getVCC()) .addReg(TRI->getVCC()); - VCCZBugHandledSet.insert(&Inst); Modified = true; } @@ -1471,7 +1468,6 @@ bool SIInsertWaitcnts::runOnMachineFunction(MachineFunction &MF) { RegisterEncoding.SGPR0 + HardwareLimits.NumSGPRsMax - 1; TrackedWaitcntSet.clear(); - VCCZBugHandledSet.clear(); RpotIdxMap.clear(); BlockInfos.clear(); |

