diff options
| author | Nicolai Haehnle <nhaehnle@gmail.com> | 2016-04-14 17:42:29 +0000 |
|---|---|---|
| committer | Nicolai Haehnle <nhaehnle@gmail.com> | 2016-04-14 17:42:29 +0000 |
| commit | 723b73b4eb70d4015bb32ec94c6a782608c5112b (patch) | |
| tree | 038e319a27be7448a4f713142f8a10204adf3128 /llvm/lib/Target/AMDGPU/CMakeLists.txt | |
| parent | 19f0f5177da807ca4e65f6f81e110929201cd3de (diff) | |
| download | bcm5719-llvm-723b73b4eb70d4015bb32ec94c6a782608c5112b.tar.gz bcm5719-llvm-723b73b4eb70d4015bb32ec94c6a782608c5112b.zip | |
AMDGPU: Remove SIFixSGPRLiveRanges pass
Summary:
This pass is unnecessary and overly conservative. It was motivated by
situations like
def %vreg0:SGPR_32
...
if-block:
..
def %vreg1:SGPR_32
...
else-block:
...
use %vreg0:SGPR_32
...
and similar situations with uses after the non-uniform control flow, where
we are not allowed to assign %vreg0 and %vreg1 to the same physical register,
even though in the original, thread/workitem-based CFG, it looks like the
live ranges of these registers do not overlap.
However, by the time register allocation runs, we have moved to a wave-based
CFG that accurately represents the fact that the wave may run through both
the if- and the else-block. So the live ranges of %vreg0 and %vreg1 already
overlap even without the SIFixSGPRLiveRanges pass.
In addition to proving this change correct, I have tested it with Piglit
and a small number of other tests.
Reviewers: arsenm, tstellarAMD
Subscribers: MatzeB, arsenm, llvm-commits
Differential Revision: http://reviews.llvm.org/D19041
llvm-svn: 266345
Diffstat (limited to 'llvm/lib/Target/AMDGPU/CMakeLists.txt')
| -rw-r--r-- | llvm/lib/Target/AMDGPU/CMakeLists.txt | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/llvm/lib/Target/AMDGPU/CMakeLists.txt b/llvm/lib/Target/AMDGPU/CMakeLists.txt index 12c5633a372..35d8559f909 100644 --- a/llvm/lib/Target/AMDGPU/CMakeLists.txt +++ b/llvm/lib/Target/AMDGPU/CMakeLists.txt @@ -48,7 +48,6 @@ add_llvm_target(AMDGPUCodeGen SIAnnotateControlFlow.cpp SIFixControlFlowLiveIntervals.cpp SIFixSGPRCopies.cpp - SIFixSGPRLiveRanges.cpp SIFoldOperands.cpp SIFrameLowering.cpp SIInsertNopsPass.cpp |

