[PATCH] D27638: [NVPTX] Support .maxnreg annotation.

Justin Lebar via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Dec 9 15:57:54 PST 2016


jlebar created this revision.
jlebar added a reviewer: tra.
jlebar added a subscriber: llvm-commits.
Herald added a subscriber: jholewinski.

https://reviews.llvm.org/D27638

Files:
  llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXBaseInfo.cpp
  llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXBaseInfo.h
  llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
  llvm/lib/Target/NVPTX/NVPTXUtilities.cpp
  llvm/lib/Target/NVPTX/NVPTXUtilities.h
  llvm/test/CodeGen/NVPTX/annotations.ll


Index: llvm/test/CodeGen/NVPTX/annotations.ll
===================================================================
--- llvm/test/CodeGen/NVPTX/annotations.ll
+++ llvm/test/CodeGen/NVPTX/annotations.ll
@@ -29,9 +29,16 @@
   ret void
 }
 
+; CHECK-LABEL: .entry kernel_func_maxnreg
+define void @kernel_func_maxnreg() {
+; CHECK: .maxnreg 1234
+; CHECK: ret
+  ret void
+}
 
 
-!nvvm.annotations = !{!1, !2, !3, !4, !5, !6, !7, !8}
+
+!nvvm.annotations = !{!1, !2, !3, !4, !5, !6, !7, !8, !9, !10}
 
 !1 = !{void (float*)* @kernel_func_maxntid, !"kernel", i32 1}
 !2 = !{void (float*)* @kernel_func_maxntid, !"maxntidx", i32 10, !"maxntidy", i32 20, !"maxntidz", i32 30}
@@ -42,5 +49,8 @@
 !5 = !{void (float*)* @kernel_func_minctasm, !"kernel", i32 1}
 !6 = !{void (float*)* @kernel_func_minctasm, !"minctasm", i32 42}
 
-!7 = !{i64 addrspace(1)* @texture, !"texture", i32 1}
-!8 = !{i64 addrspace(1)* @surface, !"surface", i32 1}
+!7 = !{void ()* @kernel_func_maxnreg, !"kernel", i32 1}
+!8 = !{void ()* @kernel_func_maxnreg, !"maxnreg", i32 1234}
+
+!9 = !{i64 addrspace(1)* @texture, !"texture", i32 1}
+!10 = !{i64 addrspace(1)* @surface, !"surface", i32 1}
Index: llvm/lib/Target/NVPTX/NVPTXUtilities.h
===================================================================
--- llvm/lib/Target/NVPTX/NVPTXUtilities.h
+++ llvm/lib/Target/NVPTX/NVPTXUtilities.h
@@ -57,6 +57,7 @@
 bool getReqNTIDz(const Function &, unsigned &);
 
 bool getMinCTASm(const Function &, unsigned &);
+bool getMaxNReg(const Function &, unsigned &);
 bool isKernelFunction(const Function &);
 
 bool getAlign(const Function &, unsigned index, unsigned &);
Index: llvm/lib/Target/NVPTX/NVPTXUtilities.cpp
===================================================================
--- llvm/lib/Target/NVPTX/NVPTXUtilities.cpp
+++ llvm/lib/Target/NVPTX/NVPTXUtilities.cpp
@@ -282,6 +282,10 @@
       &F, PropertyAnnotationName(PROPERTY_MINNCTAPERSM), x);
 }
 
+bool getMaxNReg(const Function &F, unsigned &x) {
+  return findOneNVVMAnnotation(&F, PropertyAnnotationName(PROPERTY_MAXNREG), x);
+}
+
 bool isKernelFunction(const Function &F) {
   unsigned x = 0;
   bool retval = findOneNVVMAnnotation(
Index: llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
===================================================================
--- llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
+++ llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
@@ -555,6 +555,10 @@
   unsigned mincta;
   if (llvm::getMinCTASm(F, mincta))
     O << ".minnctapersm " << mincta << "\n";
+
+  unsigned maxnreg;
+  if (llvm::getMaxNReg(F, maxnreg))
+    O << ".maxnreg " << maxnreg << "\n";
 }
 
 std::string
Index: llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXBaseInfo.h
===================================================================
--- llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXBaseInfo.h
+++ llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXBaseInfo.h
@@ -38,6 +38,7 @@
   PROPERTY_REQNTID_Y,
   PROPERTY_REQNTID_Z,
   PROPERTY_MINNCTAPERSM,
+  PROPERTY_MAXNREG,
   PROPERTY_ISTEXTURE,
   PROPERTY_ISSURFACE,
   PROPERTY_ISSAMPLER,
Index: llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXBaseInfo.cpp
===================================================================
--- llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXBaseInfo.cpp
+++ llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXBaseInfo.cpp
@@ -27,6 +27,8 @@
     return "reqntidz";
   case PROPERTY_MINNCTAPERSM:
     return "minctasm";
+  case PROPERTY_MAXNREG:
+    return "maxnreg";
   case PROPERTY_ISTEXTURE:
     return "texture";
   case PROPERTY_ISSURFACE:


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D27638.80968.patch
Type: text/x-patch
Size: 3503 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161209/9716b5dd/attachment.bin>


More information about the llvm-commits mailing list