[PATCH] D60999: AMDGPU: Fix LCSSA phi lowering in SILowerI1Copies

Phabricator via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 23 06:10:58 PDT 2019


This revision was automatically updated to reflect the committed changes.
Closed by commit rL358983: AMDGPU: Fix LCSSA phi lowering in SILowerI1Copies (authored by nha, committed by ).

Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D60999/new/

https://reviews.llvm.org/D60999

Files:
  llvm/trunk/lib/Target/AMDGPU/SILowerI1Copies.cpp
  llvm/trunk/test/CodeGen/AMDGPU/si-lower-i1-copies.mir


Index: llvm/trunk/lib/Target/AMDGPU/SILowerI1Copies.cpp
===================================================================
--- llvm/trunk/lib/Target/AMDGPU/SILowerI1Copies.cpp
+++ llvm/trunk/lib/Target/AMDGPU/SILowerI1Copies.cpp
@@ -504,6 +504,9 @@
   SmallVector<MachineBasicBlock *, 4> IncomingBlocks;
   SmallVector<unsigned, 4> IncomingRegs;
   SmallVector<unsigned, 4> IncomingUpdated;
+#ifndef NDEBUG
+  DenseSet<unsigned> PhiRegisters;
+#endif
 
   for (MachineBasicBlock &MBB : *MF) {
     LF.initialize(MBB);
@@ -531,13 +534,17 @@
         } else if (IncomingDef->getOpcode() == AMDGPU::IMPLICIT_DEF) {
           continue;
         } else {
-          assert(IncomingDef->isPHI());
+          assert(IncomingDef->isPHI() || PhiRegisters.count(IncomingReg));
         }
 
         IncomingBlocks.push_back(IncomingMBB);
         IncomingRegs.push_back(IncomingReg);
       }
 
+#ifndef NDEBUG
+      PhiRegisters.insert(DstReg);
+#endif
+
       // Phis in a loop that are observed outside the loop receive a simple but
       // conservatively correct treatment.
       MachineBasicBlock *PostDomBound = &MBB;
Index: llvm/trunk/test/CodeGen/AMDGPU/si-lower-i1-copies.mir
===================================================================
--- llvm/trunk/test/CodeGen/AMDGPU/si-lower-i1-copies.mir
+++ llvm/trunk/test/CodeGen/AMDGPU/si-lower-i1-copies.mir
@@ -0,0 +1,33 @@
+# RUN: llc -mtriple=amdgcn-amd-amdhsa -verify-machineinstrs -run-pass=si-i1-copies -o - %s | FileCheck -check-prefixes=GCN %s
+
+# GCN-LABEL: name: lcssa_phi
+---
+name:              lcssa_phi
+tracksRegLiveness: true
+body:             |
+  bb.0:
+    %0:sreg_64 = S_MOV_B64 0
+    %8:vreg_1 = IMPLICIT_DEF
+    %10:sreg_64 = IMPLICIT_DEF
+    %11:sreg_64 = SI_IF %10, %bb.3, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
+    S_BRANCH %bb.1
+
+  bb.1:
+    %1:sreg_64 = PHI %0, %bb.0, %3, %bb.1
+    %2:sreg_64 = IMPLICIT_DEF
+    %3:sreg_64 = SI_IF_BREAK %2, %1, implicit-def dead $scc
+    %4:sreg_64 = IMPLICIT_DEF
+    %5:vreg_1 = COPY %4
+    SI_LOOP %3, %bb.1, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
+    S_BRANCH %bb.2
+
+  bb.2:
+    %6:vreg_1 = PHI %5, %bb.1
+    SI_END_CF %3, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
+
+  bb.3:
+    %7:vreg_1 = PHI %6, %bb.2, %8, %bb.0
+    SI_END_CF %11, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
+    S_ENDPGM 0
+
+...


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D60999.196230.patch
Type: text/x-patch
Size: 2440 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190423/5cac9cee/attachment.bin>


More information about the llvm-commits mailing list