diff options
| author | Nicolai Haehnle <nhaehnle@gmail.com> | 2018-06-21 13:36:08 +0000 |
|---|---|---|
| committer | Nicolai Haehnle <nhaehnle@gmail.com> | 2018-06-21 13:36:08 +0000 |
| commit | b3a9b685132a19d3b5252cca6d0b5569c848451c (patch) | |
| tree | 9529b737efcdc6d87fa81f79f0b173aa62554fcf /llvm/lib/Target/AMDGPU/AMDGPUUnifyDivergentExitNodes.cpp | |
| parent | f2674319018151e00f603ebab34ab2155f669394 (diff) | |
| download | bcm5719-llvm-b3a9b685132a19d3b5252cca6d0b5569c848451c.tar.gz bcm5719-llvm-b3a9b685132a19d3b5252cca6d0b5569c848451c.zip | |
AMDGPU: Add implicit def of SCC to kill and indirect pseudos
Summary:
Kill instructions sometimes do use SCC in unusual circumstances, when
v_cmpx cannot be used due to the operands that are involved.
Additionally, even if SCC was never defined by the expansion, kill pseudos
could previously occur between an s_cmp and an s_cbranch_scc, which breaks
the SCC liveness tracking when the pseudo is expanded to split the basic
block. While it would be possible to explicitly mark the SCC as live-in for
the successor basic block, it's simpler to just mark the pseudo as using SCC,
so that such a sequence is never emitted by instruction selection in the
first place.
A similar issue affects indirect source/dest pseudos in principle, although
I haven't been able to come up with a test case where it actually matters
(this affects instruction selection, so a MIR test can't be used).
Fixes: dEQP-GLES3.functional.shaders.discard.dynamic_loop_always
Change-Id: Ica8d82ecff1a763b892a1112cf1b06c948863a4f
Reviewers: arsenm, rampitec
Subscribers: kzhuravl, wdng, yaxunl, dstuttard, tpr, t-tye, llvm-commits
Differential Revision: https://reviews.llvm.org/D47761
llvm-svn: 335223
Diffstat (limited to 'llvm/lib/Target/AMDGPU/AMDGPUUnifyDivergentExitNodes.cpp')
0 files changed, 0 insertions, 0 deletions

