[llvm] r217636 - R600/SI: Fix off by 1 error in used register count

Matt Arsenault Matthew.Arsenault at amd.com
Thu Sep 11 15:51:37 PDT 2014


Author: arsenm
Date: Thu Sep 11 17:51:37 2014
New Revision: 217636

URL: http://llvm.org/viewvc/llvm-project?rev=217636&view=rev
Log:
R600/SI: Fix off by 1 error in used register count

The register numbers start at 0, so if only 1 register
was used, this was reported as 0.

Modified:
    llvm/trunk/lib/Target/R600/AMDGPUAsmPrinter.cpp
    llvm/trunk/test/CodeGen/R600/register-count-comments.ll

Modified: llvm/trunk/lib/Target/R600/AMDGPUAsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/R600/AMDGPUAsmPrinter.cpp?rev=217636&r1=217635&r2=217636&view=diff
==============================================================================
--- llvm/trunk/lib/Target/R600/AMDGPUAsmPrinter.cpp (original)
+++ llvm/trunk/lib/Target/R600/AMDGPUAsmPrinter.cpp Thu Sep 11 17:51:37 2014
@@ -322,8 +322,10 @@ void AMDGPUAsmPrinter::getSIProgramInfo(
   if (VCCUsed)
     MaxSGPR += 2;
 
-  ProgInfo.NumVGPR = MaxVGPR;
-  ProgInfo.NumSGPR = MaxSGPR;
+  // We found the maximum register index. They start at 0, so add one to get the
+  // number of registers.
+  ProgInfo.NumVGPR = MaxVGPR + 1;
+  ProgInfo.NumSGPR = MaxSGPR + 1;
 
   // Set the value to initialize FP_ROUND and FP_DENORM parts of the mode
   // register.

Modified: llvm/trunk/test/CodeGen/R600/register-count-comments.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/R600/register-count-comments.ll?rev=217636&r1=217635&r2=217636&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/R600/register-count-comments.ll (original)
+++ llvm/trunk/test/CodeGen/R600/register-count-comments.ll Thu Sep 11 17:51:37 2014
@@ -1,4 +1,4 @@
-; RUN: llc -march=r600 -mcpu=SI -verify-machineinstrs< %s | FileCheck -check-prefix=SI %s
+; RUN: llc -march=r600 -mcpu=SI -verify-machineinstrs -asm-verbose < %s | FileCheck -check-prefix=SI %s
 
 declare i32 @llvm.SI.tid() nounwind readnone
 
@@ -18,3 +18,10 @@ define void @foo(i32 addrspace(1)* noali
   store i32 %result, i32 addrspace(1)* %outptr, align 4
   ret void
 }
+
+; SI-LABEL: @one_vgpr_used
+; SI: NumVgprs: 1
+define void @one_vgpr_used(i32 addrspace(1)* %out, i32 %x) nounwind {
+  store i32 %x, i32 addrspace(1)* %out, align 4
+  ret void
+}





More information about the llvm-commits mailing list