[amdgpu] Fix check of VCC.
authorMichael Liao <michael.hliao@gmail.com>
Wed, 6 May 2020 06:23:34 +0000 (02:23 -0400)
committerMichael Liao <michael.hliao@gmail.com>
Wed, 6 May 2020 18:16:37 +0000 (14:16 -0400)
Summary: - Need to include checking on the new 16-bit subregs.

Reviewers: rampitec

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

Tags: #llvm

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

llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
llvm/test/CodeGen/AMDGPU/asm-printer-check-vcc.mir [new file with mode: 0644]

index 88644e0..2c3cbd8 100644 (file)
@@ -727,6 +727,10 @@ AMDGPUAsmPrinter::SIFunctionResourceInfo AMDGPUAsmPrinter::analyzeResourceUsage(
         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;
 
diff --git a/llvm/test/CodeGen/AMDGPU/asm-printer-check-vcc.mir b/llvm/test/CodeGen/AMDGPU/asm-printer-check-vcc.mir
new file mode 100644 (file)
index 0000000..ee0dbbc
--- /dev/null
@@ -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@rel32@lo+4
+# GCN: s_addc_u32 vcc_hi, vcc_hi, bar@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
+    }