[PATCH] D79498: [amdgpu] Fix check of VCC.

Michael Liao via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed May 6 09:07:30 PDT 2020


hliao created this revision.
hliao added a reviewer: rampitec.
Herald added subscribers: llvm-commits, kerbowa, hiraditya, t-tye, tpr, dstuttard, yaxunl, nhaehnle, wdng, jvesely, kzhuravl, arsenm.
Herald added a project: LLVM.
hliao added a comment.

One alternative is to check `isSuperRegisterEq(Reg, VCC)` for conciseness and readability. Not sure, we will have similar issues on other special registers with 16-bit subregs. But, I admit that's costy compared to the current `switch`.


- Need to include checking on the new 16-bit subregs.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D79498

Files:
  llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
  llvm/test/CodeGen/AMDGPU/asm-printer-check-vcc.mir


Index: llvm/test/CodeGen/AMDGPU/asm-printer-check-vcc.mir
===================================================================
--- /dev/null
+++ llvm/test/CodeGen/AMDGPU/asm-printer-check-vcc.mir
@@ -0,0 +1,23 @@
+# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -start-after=livedebugvalues -verify-machineinstrs -o - %s | FileCheck -check-prefix=GCN %s
+
+# GCN-LABEL: foo:
+# GCN: s_getpc_b64 vcc
+# GCN: s_add_u32 vcc_lo, vcc_lo, bar at rel32@lo+4
+# GCN: s_addc_u32 vcc_hi, vcc_hi, bar at rel32@hi+4
+--- |
+  define amdgpu_kernel void @foo() {
+    ret void
+  }
+  @bar = external protected local_unnamed_addr addrspace(4) externally_initialized global i32, align 4
+---
+name: foo
+tracksRegLiveness: true
+frameInfo:
+  hasCalls: true
+body: |
+  bb.0:
+    BUNDLE implicit-def $vcc, implicit-def $vcc_lo, implicit-def $vcc_lo_lo16, implicit-def $vcc_lo_hi16, implicit-def $vcc_hi, implicit-def $vcc_hi_lo16, implicit-def $vcc_hi_hi16, implicit-def $scc {
+      $vcc = S_GETPC_B64
+      $vcc_lo = S_ADD_U32 internal $vcc_lo, target-flags(amdgpu-rel32-lo) @bar + 4, implicit-def $scc
+      $vcc_hi = S_ADDC_U32 internal $vcc_hi, target-flags(amdgpu-rel32-hi) @bar + 4, implicit-def $scc, implicit internal $scc
+    }
Index: llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
===================================================================
--- llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
+++ llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
@@ -727,6 +727,10 @@
         case AMDGPU::VCC:
         case AMDGPU::VCC_LO:
         case AMDGPU::VCC_HI:
+        case AMDGPU::VCC_LO_LO16:
+        case AMDGPU::VCC_LO_HI16:
+        case AMDGPU::VCC_HI_LO16:
+        case AMDGPU::VCC_HI_HI16:
           Info.UsesVCC = true;
           continue;
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D79498.262397.patch
Type: text/x-patch
Size: 1742 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200506/b6c2038f/attachment.bin>


More information about the llvm-commits mailing list