[llvm] ffb635c - [CUDA] bump supported CUDA version to 12.1/11.8

Artem Belevich via llvm-commits llvm-commits at lists.llvm.org
Thu May 25 11:58:40 PDT 2023


Author: Artem Belevich
Date: 2023-05-25T11:57:55-07:00
New Revision: ffb635cb2d4e374e52b12066893458a8b70889fa

URL: https://github.com/llvm/llvm-project/commit/ffb635cb2d4e374e52b12066893458a8b70889fa
DIFF: https://github.com/llvm/llvm-project/commit/ffb635cb2d4e374e52b12066893458a8b70889fa.diff

LOG: [CUDA] bump supported CUDA version to 12.1/11.8

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

Added: 
    

Modified: 
    clang/docs/ReleaseNotes.rst
    clang/include/clang/Basic/BuiltinsNVPTX.def
    clang/include/clang/Basic/Cuda.h
    clang/lib/Basic/Cuda.cpp
    clang/lib/Driver/ToolChains/Cuda.cpp
    llvm/lib/Target/NVPTX/NVPTX.td

Removed: 
    


################################################################################
diff  --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index 6ee73aa3c96fe..07137e75c9f88 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -587,6 +587,7 @@ CUDA/HIP Language Changes
 
 CUDA Support
 ^^^^^^^^^^^^
+- Clang now supports CUDA SDK up to 12.1
 
 AIX Support
 ^^^^^^^^^^^

diff  --git a/clang/include/clang/Basic/BuiltinsNVPTX.def b/clang/include/clang/Basic/BuiltinsNVPTX.def
index 9179fa47eb690..f678f935c5d65 100644
--- a/clang/include/clang/Basic/BuiltinsNVPTX.def
+++ b/clang/include/clang/Basic/BuiltinsNVPTX.def
@@ -54,7 +54,11 @@
 #pragma push_macro("PTX76")
 #pragma push_macro("PTX77")
 #pragma push_macro("PTX78")
-#define PTX78 "ptx78"
+#pragma push_macro("PTX80")
+#pragma push_macro("PTX81")
+#define PTX81 "ptx81"
+#define PTX80 "ptx80|" PTX81
+#define PTX78 "ptx78|" PTX80
 #define PTX77 "ptx77|" PTX78
 #define PTX76 "ptx76|" PTX77
 #define PTX75 "ptx75|" PTX76
@@ -1012,3 +1016,5 @@ TARGET_BUILTIN(__nvvm_neg_bf16x2, "ZUiZUi", "", AND(SM_80,PTX70))
 #pragma pop_macro("PTX76")
 #pragma pop_macro("PTX77")
 #pragma pop_macro("PTX78")
+#pragma pop_macro("PTX80")
+#pragma pop_macro("PTX81")

diff  --git a/clang/include/clang/Basic/Cuda.h b/clang/include/clang/Basic/Cuda.h
index 2b8fc2a0bb1c3..aeaf62073eaaf 100644
--- a/clang/include/clang/Basic/Cuda.h
+++ b/clang/include/clang/Basic/Cuda.h
@@ -37,9 +37,11 @@ enum class CudaVersion {
   CUDA_116,
   CUDA_117,
   CUDA_118,
-  FULLY_SUPPORTED = CUDA_115,
+  CUDA_120,
+  CUDA_121,
+  FULLY_SUPPORTED = CUDA_118,
   PARTIALLY_SUPPORTED =
-      CUDA_118, // Partially supported. Proceed with a warning.
+      CUDA_121, // Partially supported. Proceed with a warning.
   NEW = 10000,  // Too new. Issue a warning, but allow using it.
 };
 const char *CudaVersionToString(CudaVersion V);

diff  --git a/clang/lib/Basic/Cuda.cpp b/clang/lib/Basic/Cuda.cpp
index db30142ad866d..7299b9f485ec2 100644
--- a/clang/lib/Basic/Cuda.cpp
+++ b/clang/lib/Basic/Cuda.cpp
@@ -37,6 +37,8 @@ static const CudaVersionMapEntry CudaNameVersionMap[] = {
     CUDA_ENTRY(11, 6),
     CUDA_ENTRY(11, 7),
     CUDA_ENTRY(11, 8),
+    CUDA_ENTRY(12, 0),
+    CUDA_ENTRY(12, 1),
     {"", CudaVersion::NEW, llvm::VersionTuple(std::numeric_limits<int>::max())},
     {"unknown", CudaVersion::UNKNOWN, {}} // End of list tombstone.
 };

diff  --git a/clang/lib/Driver/ToolChains/Cuda.cpp b/clang/lib/Driver/ToolChains/Cuda.cpp
index eae5ebdc192b2..2862ef462ddf5 100644
--- a/clang/lib/Driver/ToolChains/Cuda.cpp
+++ b/clang/lib/Driver/ToolChains/Cuda.cpp
@@ -74,6 +74,10 @@ CudaVersion getCudaVersion(uint32_t raw_version) {
     return CudaVersion::CUDA_117;
   if (raw_version < 11090)
     return CudaVersion::CUDA_118;
+  if (raw_version < 12010)
+    return CudaVersion::CUDA_120;
+  if (raw_version < 12020)
+    return CudaVersion::CUDA_121;
   return CudaVersion::NEW;
 }
 
@@ -668,6 +672,8 @@ void NVPTX::getNVPTXTargetFeatures(const Driver &D, const llvm::Triple &Triple,
   case CudaVersion::CUDA_##CUDA_VER:                                           \
     PtxFeature = "+ptx" #PTX_VER;                                              \
     break;
+    CASE_CUDA_VERSION(121, 81);
+    CASE_CUDA_VERSION(120, 80);
     CASE_CUDA_VERSION(118, 78);
     CASE_CUDA_VERSION(117, 77);
     CASE_CUDA_VERSION(116, 76);

diff  --git a/llvm/lib/Target/NVPTX/NVPTX.td b/llvm/lib/Target/NVPTX/NVPTX.td
index 4d4203c503768..f867c53118142 100644
--- a/llvm/lib/Target/NVPTX/NVPTX.td
+++ b/llvm/lib/Target/NVPTX/NVPTX.td
@@ -24,89 +24,22 @@ include "NVPTXInstrInfo.td"
 //   TableGen in NVPTXGenSubtarget.inc.
 //===----------------------------------------------------------------------===//
 
-// SM Versions
-def SM20 : SubtargetFeature<"sm_20", "SmVersion", "20",
-                            "Target SM 2.0">;
-def SM21 : SubtargetFeature<"sm_21", "SmVersion", "21",
-                            "Target SM 2.1">;
-def SM30 : SubtargetFeature<"sm_30", "SmVersion", "30",
-                            "Target SM 3.0">;
-def SM32 : SubtargetFeature<"sm_32", "SmVersion", "32",
-                            "Target SM 3.2">;
-def SM35 : SubtargetFeature<"sm_35", "SmVersion", "35",
-                            "Target SM 3.5">;
-def SM37 : SubtargetFeature<"sm_37", "SmVersion", "37",
-                            "Target SM 3.7">;
-def SM50 : SubtargetFeature<"sm_50", "SmVersion", "50",
-                            "Target SM 5.0">;
-def SM52 : SubtargetFeature<"sm_52", "SmVersion", "52",
-                            "Target SM 5.2">;
-def SM53 : SubtargetFeature<"sm_53", "SmVersion", "53",
-                            "Target SM 5.3">;
-def SM60 : SubtargetFeature<"sm_60", "SmVersion", "60",
-                             "Target SM 6.0">;
-def SM61 : SubtargetFeature<"sm_61", "SmVersion", "61",
-                             "Target SM 6.1">;
-def SM62 : SubtargetFeature<"sm_62", "SmVersion", "62",
-                             "Target SM 6.2">;
-def SM70 : SubtargetFeature<"sm_70", "SmVersion", "70",
-                             "Target SM 7.0">;
-def SM72 : SubtargetFeature<"sm_72", "SmVersion", "72",
-                             "Target SM 7.2">;
-def SM75 : SubtargetFeature<"sm_75", "SmVersion", "75",
-                             "Target SM 7.5">;
-def SM80 : SubtargetFeature<"sm_80", "SmVersion", "80",
-                             "Target SM 8.0">;
-def SM86 : SubtargetFeature<"sm_86", "SmVersion", "86",
-                             "Target SM 8.6">;
-def SM87 : SubtargetFeature<"sm_87", "SmVersion", "87",
-                             "Target SM 8.7">;
-def SM89 : SubtargetFeature<"sm_89", "SmVersion", "89",
-                             "Target SM 8.9">;
-def SM90 : SubtargetFeature<"sm_90", "SmVersion", "90",
-                             "Target SM 9.0">;
+class FeatureSM<int version>:
+   SubtargetFeature<"sm_"# version, "SmVersion",
+                    "" # version,
+                    "Target SM " # version>;
+class FeaturePTX<int version>:
+   SubtargetFeature<"ptx"# version, "PTXVersion",
+                    "" # version,
+                    "Use PTX version " # version>;
 
-// PTX Versions
-def PTX32 : SubtargetFeature<"ptx32", "PTXVersion", "32",
-                             "Use PTX version 3.2">;
-def PTX40 : SubtargetFeature<"ptx40", "PTXVersion", "40",
-                             "Use PTX version 4.0">;
-def PTX41 : SubtargetFeature<"ptx41", "PTXVersion", "41",
-                             "Use PTX version 4.1">;
-def PTX42 : SubtargetFeature<"ptx42", "PTXVersion", "42",
-                             "Use PTX version 4.2">;
-def PTX43 : SubtargetFeature<"ptx43", "PTXVersion", "43",
-                             "Use PTX version 4.3">;
-def PTX50 : SubtargetFeature<"ptx50", "PTXVersion", "50",
-                             "Use PTX version 5.0">;
-def PTX60 : SubtargetFeature<"ptx60", "PTXVersion", "60",
-                             "Use PTX version 6.0">;
-def PTX61 : SubtargetFeature<"ptx61", "PTXVersion", "61",
-                             "Use PTX version 6.1">;
-def PTX63 : SubtargetFeature<"ptx63", "PTXVersion", "63",
-                             "Use PTX version 6.3">;
-def PTX64 : SubtargetFeature<"ptx64", "PTXVersion", "64",
-                             "Use PTX version 6.4">;
-def PTX65 : SubtargetFeature<"ptx65", "PTXVersion", "65",
-                             "Use PTX version 6.5">;
-def PTX70 : SubtargetFeature<"ptx70", "PTXVersion", "70",
-                             "Use PTX version 7.0">;
-def PTX71 : SubtargetFeature<"ptx71", "PTXVersion", "71",
-                             "Use PTX version 7.1">;
-def PTX72 : SubtargetFeature<"ptx72", "PTXVersion", "72",
-                             "Use PTX version 7.2">;
-def PTX73 : SubtargetFeature<"ptx73", "PTXVersion", "73",
-                             "Use PTX version 7.3">;
-def PTX74 : SubtargetFeature<"ptx74", "PTXVersion", "74",
-                             "Use PTX version 7.4">;
-def PTX75 : SubtargetFeature<"ptx75", "PTXVersion", "75",
-                             "Use PTX version 7.5">;
-def PTX76 : SubtargetFeature<"ptx76", "PTXVersion", "76",
-                             "Use PTX version 7.6">;
-def PTX77 : SubtargetFeature<"ptx77", "PTXVersion", "77",
-                             "Use PTX version 7.7">;
-def PTX78 : SubtargetFeature<"ptx78", "PTXVersion", "78",
-                             "Use PTX version 7.8">;
+foreach version = [20, 21, 30, 32, 35, 37, 50, 52, 53,
+                   60, 61, 62, 70, 72, 75, 80, 86, 87, 89, 90] in
+  def SM#version: FeatureSM<version>;
+
+foreach version = [32, 40, 41, 42, 43, 50, 60, 61, 63, 64, 65,
+                   70, 71, 72, 73, 74, 75, 76, 77, 78, 80, 81] in
+  def PTX#version: FeaturePTX<version>;
 
 //===----------------------------------------------------------------------===//
 // NVPTX supported processors.


        


More information about the llvm-commits mailing list