Skip to content

Commit

Permalink
[AMDGPU] Run unreachable-mbb-elimination after isel to clean up PHIs.
Browse files Browse the repository at this point in the history
Summary:
- As LCSSA is turned on just before isel, it may create PHI of the flow,
  which is consumed by pseudo structurized CFG instructions. When that
  PHIs are eliminated in O0, COPY may be placed wrongly as the these
  pseudo structurized CFG instructions are considering prologue of MBB.
- Run extra `unreachable-mbb-elimination` at the end of isel to clean up
  PHIs.

Reviewers: arsenm, rampitec

Subscribers: kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D64353

llvm-svn: 367023
  • Loading branch information
darkbuck committed Jul 25, 2019
1 parent 0ef3f27 commit 53f967f
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 0 deletions.
3 changes: 3 additions & 0 deletions llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
Expand Up @@ -882,6 +882,9 @@ bool GCNPassConfig::addInstSelector() {
addPass(createSILowerI1CopiesPass());
addPass(createSIFixupVectorISelPass());
addPass(createSIAddIMGInitPass());
// FIXME: Remove this once the phi on CF_END is cleaned up by either removing
// LCSSA or other ways.
addPass(&UnreachableMachineBlockElimID);
return false;
}

Expand Down
26 changes: 26 additions & 0 deletions llvm/test/CodeGen/AMDGPU/lcssa-optnone.ll
@@ -0,0 +1,26 @@
; RUN: llc -march=amdgcn -O0 -o - %s | FileCheck %s

; CHECK-LABEL: non_uniform_loop
; CHECK: s_endpgm
define amdgpu_kernel void @non_uniform_loop(float addrspace(1)* %array) {
entry:
%w = tail call i32 @llvm.amdgcn.workitem.id.x()
br label %for.cond

for.cond:
%i = phi i32 [0, %entry], [%i.next, %for.inc]
%cmp = icmp ult i32 %i, %w
br i1 %cmp, label %for.body, label %for.end

for.body:
br label %for.inc

for.inc:
%i.next = add i32 %i, 1
br label %for.cond

for.end:
ret void
}

declare i32 @llvm.amdgcn.workitem.id.x()

0 comments on commit 53f967f

Please sign in to comment.