[clang] [CUDA] Add support for sm101 and sm120 target architectures (PR #127187)
@@ -21,6 +21,10 @@ class SM newer_list> : SMFeatures { !strconcat(f, "|", newer.Features)); } +let Features = "sm_101a" in def SM_101a : SMFeatures; + +def SM_101 : SM<"101", [SM_101a]>; jodelek wrote: Added sm120 and sm120a. Thanks for the clarification with the other part - I was completely lost there. I hope I got it right. https://github.com/llvm/llvm-project/pull/127187 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [CUDA] Add support for sm101 and sm120 target architectures (PR #127187)
https://github.com/jodelek edited https://github.com/llvm/llvm-project/pull/127187 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [CUDA] Add support for sm101 and sm120 target architectures (PR #127187)
https://github.com/jodelek edited https://github.com/llvm/llvm-project/pull/127187 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [CUDA] Add support for sm101 and sm120 target architectures (PR #127187)
https://github.com/jodelek edited https://github.com/llvm/llvm-project/pull/127187 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [CUDA] Add support for sm101 and sm120 target architectures (PR #127187)
@@ -300,6 +306,10 @@ void NVPTXTargetInfo::getTargetDefines(const LangOptions &Opts, Builder.defineMacro("__CUDA_ARCH_FEAT_SM90_ALL", "1"); if (GPU == OffloadArch::SM_100a) Builder.defineMacro("__CUDA_ARCH_FEAT_SM100_ALL", "1"); +if (GPU == OffloadArch::SM_101a) + Builder.defineMacro("__CUDA_ARCH_FEAT_SM101_ALL", "1"); +if (GPU == OffloadArch::SM_120a) + Builder.defineMacro("__CUDA_ARCH_FEAT_SM120_ALL", "1"); jodelek wrote: I think handling variable length is necessary: ``` switch(GPU) { case OffloadArch::SM_90a: case OffloadArch::SM_100a: case OffloadArch::SM_101a: case OffloadArch::SM_120a: Builder.defineMacro("__CUDA_ARCH_FEAT_SM" + CUDAArchCode.substr(0, CUDAArchCode.length()-1) + "_ALL", "1"); break; } ``` https://github.com/llvm/llvm-project/pull/127187 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [CUDA] Add support for sm101 target architecture (Tegra Blackwell) (PR #127187)
https://github.com/jodelek updated https://github.com/llvm/llvm-project/pull/127187 From a55c76bac1bd70878c777b5930553fac114d2fd5 Mon Sep 17 00:00:00 2001 From: Sebastian Jodlowski Date: Fri, 14 Feb 2025 01:34:16 -0800 Subject: [PATCH 1/2] Add support for sm101 target architecture (Tegra Blackwell) --- clang/include/clang/Basic/BuiltinsNVPTX.td | 4 clang/include/clang/Basic/Cuda.h| 2 ++ clang/lib/Basic/Cuda.cpp| 4 clang/lib/Basic/Targets/NVPTX.cpp | 5 + clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp| 2 ++ clang/test/Misc/target-invalid-cpu-note/nvptx.c | 2 ++ 6 files changed, 19 insertions(+) diff --git a/clang/include/clang/Basic/BuiltinsNVPTX.td b/clang/include/clang/Basic/BuiltinsNVPTX.td index 327dc88cffdb4..3853e7dc8fbaf 100644 --- a/clang/include/clang/Basic/BuiltinsNVPTX.td +++ b/clang/include/clang/Basic/BuiltinsNVPTX.td @@ -21,6 +21,10 @@ class SM newer_list> : SMFeatures { !strconcat(f, "|", newer.Features)); } +let Features = "sm_101a" in def SM_101a : SMFeatures; + +def SM_101 : SM<"101", [SM_101a]>; + let Features = "sm_100a" in def SM_100a : SMFeatures; def SM_100 : SM<"100", [SM_100a]>; diff --git a/clang/include/clang/Basic/Cuda.h b/clang/include/clang/Basic/Cuda.h index f33ba46233a7a..380f51fed22a2 100644 --- a/clang/include/clang/Basic/Cuda.h +++ b/clang/include/clang/Basic/Cuda.h @@ -82,6 +82,8 @@ enum class OffloadArch { SM_90a, SM_100, SM_100a, + SM_101, + SM_101a, GFX600, GFX601, GFX602, diff --git a/clang/lib/Basic/Cuda.cpp b/clang/lib/Basic/Cuda.cpp index 1bfec0b37c5ee..e92a12b3ce3be 100644 --- a/clang/lib/Basic/Cuda.cpp +++ b/clang/lib/Basic/Cuda.cpp @@ -100,6 +100,8 @@ static const OffloadArchToStringMap arch_names[] = { SM(90a), // Hopper SM(100), // Blackwell SM(100a),// Blackwell +SM(101), // Blackwell +SM(101a),// Blackwell GFX(600), // gfx600 GFX(601), // gfx601 GFX(602), // gfx602 @@ -230,6 +232,8 @@ CudaVersion MinVersionForOffloadArch(OffloadArch A) { return CudaVersion::CUDA_120; case OffloadArch::SM_100: case OffloadArch::SM_100a: + case OffloadArch::SM_101: + case OffloadArch::SM_101a: return CudaVersion::CUDA_128; default: llvm_unreachable("invalid enum"); diff --git a/clang/lib/Basic/Targets/NVPTX.cpp b/clang/lib/Basic/Targets/NVPTX.cpp index 7d13c1f145440..3f3c1bb653b04 100644 --- a/clang/lib/Basic/Targets/NVPTX.cpp +++ b/clang/lib/Basic/Targets/NVPTX.cpp @@ -292,6 +292,9 @@ void NVPTXTargetInfo::getTargetDefines(const LangOptions &Opts, case OffloadArch::SM_100: case OffloadArch::SM_100a: return "1000"; + case OffloadArch::SM_101: + case OffloadArch::SM_101a: + return "1010"; } llvm_unreachable("unhandled OffloadArch"); }(); @@ -300,6 +303,8 @@ void NVPTXTargetInfo::getTargetDefines(const LangOptions &Opts, Builder.defineMacro("__CUDA_ARCH_FEAT_SM90_ALL", "1"); if (GPU == OffloadArch::SM_100a) Builder.defineMacro("__CUDA_ARCH_FEAT_SM100_ALL", "1"); +if (GPU == OffloadArch::SM_101a) + Builder.defineMacro("__CUDA_ARCH_FEAT_SM101_ALL", "1"); } } diff --git a/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp b/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp index c13928f61a748..2cac1eb73b438 100644 --- a/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp +++ b/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp @@ -2278,6 +2278,8 @@ void CGOpenMPRuntimeGPU::processRequiresDirective(const OMPRequiresDecl *D) { case OffloadArch::SM_90a: case OffloadArch::SM_100: case OffloadArch::SM_100a: + case OffloadArch::SM_101: + case OffloadArch::SM_101a: case OffloadArch::GFX600: case OffloadArch::GFX601: case OffloadArch::GFX602: diff --git a/clang/test/Misc/target-invalid-cpu-note/nvptx.c b/clang/test/Misc/target-invalid-cpu-note/nvptx.c index 3afcdf8c9fe5c..ed9d4865c3ec9 100644 --- a/clang/test/Misc/target-invalid-cpu-note/nvptx.c +++ b/clang/test/Misc/target-invalid-cpu-note/nvptx.c @@ -28,6 +28,8 @@ // CHECK-SAME: {{^}}, sm_90a // CHECK-SAME: {{^}}, sm_100 // CHECK-SAME: {{^}}, sm_100a +// CHECK-SAME: {{^}}, sm_101 +// CHECK-SAME: {{^}}, sm_101a // CHECK-SAME: {{^}}, gfx600 // CHECK-SAME: {{^}}, gfx601 // CHECK-SAME: {{^}}, gfx602 From ebc2bad79409208753c4eeda7a684569a2e78f93 Mon Sep 17 00:00:00 2001 From: Sebastian Jodlowski Date: Fri, 14 Feb 2025 14:58:59 -0800 Subject: [PATCH 2/2] Add support for sm120 as well. --- clang/include/clang/Basic/BuiltinsNVPTX.td | 8 ++-- clang/include/clang/Basic/Cuda.h| 2 ++ clang/lib/Basic/Cuda.cpp| 2 ++ clang/lib/Basic/Targets/NVPTX.cpp | 5 + clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp| 2 ++ clang/test/Misc/target-invali
[clang] [CUDA] Add support for sm101 target architecture (Tegra Blackwell) (PR #127187)
https://github.com/jodelek updated https://github.com/llvm/llvm-project/pull/127187 From a55c76bac1bd70878c777b5930553fac114d2fd5 Mon Sep 17 00:00:00 2001 From: Sebastian Jodlowski Date: Fri, 14 Feb 2025 01:34:16 -0800 Subject: [PATCH 1/2] Add support for sm101 target architecture (Tegra Blackwell) --- clang/include/clang/Basic/BuiltinsNVPTX.td | 4 clang/include/clang/Basic/Cuda.h| 2 ++ clang/lib/Basic/Cuda.cpp| 4 clang/lib/Basic/Targets/NVPTX.cpp | 5 + clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp| 2 ++ clang/test/Misc/target-invalid-cpu-note/nvptx.c | 2 ++ 6 files changed, 19 insertions(+) diff --git a/clang/include/clang/Basic/BuiltinsNVPTX.td b/clang/include/clang/Basic/BuiltinsNVPTX.td index 327dc88cffdb4..3853e7dc8fbaf 100644 --- a/clang/include/clang/Basic/BuiltinsNVPTX.td +++ b/clang/include/clang/Basic/BuiltinsNVPTX.td @@ -21,6 +21,10 @@ class SM newer_list> : SMFeatures { !strconcat(f, "|", newer.Features)); } +let Features = "sm_101a" in def SM_101a : SMFeatures; + +def SM_101 : SM<"101", [SM_101a]>; + let Features = "sm_100a" in def SM_100a : SMFeatures; def SM_100 : SM<"100", [SM_100a]>; diff --git a/clang/include/clang/Basic/Cuda.h b/clang/include/clang/Basic/Cuda.h index f33ba46233a7a..380f51fed22a2 100644 --- a/clang/include/clang/Basic/Cuda.h +++ b/clang/include/clang/Basic/Cuda.h @@ -82,6 +82,8 @@ enum class OffloadArch { SM_90a, SM_100, SM_100a, + SM_101, + SM_101a, GFX600, GFX601, GFX602, diff --git a/clang/lib/Basic/Cuda.cpp b/clang/lib/Basic/Cuda.cpp index 1bfec0b37c5ee..e92a12b3ce3be 100644 --- a/clang/lib/Basic/Cuda.cpp +++ b/clang/lib/Basic/Cuda.cpp @@ -100,6 +100,8 @@ static const OffloadArchToStringMap arch_names[] = { SM(90a), // Hopper SM(100), // Blackwell SM(100a),// Blackwell +SM(101), // Blackwell +SM(101a),// Blackwell GFX(600), // gfx600 GFX(601), // gfx601 GFX(602), // gfx602 @@ -230,6 +232,8 @@ CudaVersion MinVersionForOffloadArch(OffloadArch A) { return CudaVersion::CUDA_120; case OffloadArch::SM_100: case OffloadArch::SM_100a: + case OffloadArch::SM_101: + case OffloadArch::SM_101a: return CudaVersion::CUDA_128; default: llvm_unreachable("invalid enum"); diff --git a/clang/lib/Basic/Targets/NVPTX.cpp b/clang/lib/Basic/Targets/NVPTX.cpp index 7d13c1f145440..3f3c1bb653b04 100644 --- a/clang/lib/Basic/Targets/NVPTX.cpp +++ b/clang/lib/Basic/Targets/NVPTX.cpp @@ -292,6 +292,9 @@ void NVPTXTargetInfo::getTargetDefines(const LangOptions &Opts, case OffloadArch::SM_100: case OffloadArch::SM_100a: return "1000"; + case OffloadArch::SM_101: + case OffloadArch::SM_101a: + return "1010"; } llvm_unreachable("unhandled OffloadArch"); }(); @@ -300,6 +303,8 @@ void NVPTXTargetInfo::getTargetDefines(const LangOptions &Opts, Builder.defineMacro("__CUDA_ARCH_FEAT_SM90_ALL", "1"); if (GPU == OffloadArch::SM_100a) Builder.defineMacro("__CUDA_ARCH_FEAT_SM100_ALL", "1"); +if (GPU == OffloadArch::SM_101a) + Builder.defineMacro("__CUDA_ARCH_FEAT_SM101_ALL", "1"); } } diff --git a/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp b/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp index c13928f61a748..2cac1eb73b438 100644 --- a/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp +++ b/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp @@ -2278,6 +2278,8 @@ void CGOpenMPRuntimeGPU::processRequiresDirective(const OMPRequiresDecl *D) { case OffloadArch::SM_90a: case OffloadArch::SM_100: case OffloadArch::SM_100a: + case OffloadArch::SM_101: + case OffloadArch::SM_101a: case OffloadArch::GFX600: case OffloadArch::GFX601: case OffloadArch::GFX602: diff --git a/clang/test/Misc/target-invalid-cpu-note/nvptx.c b/clang/test/Misc/target-invalid-cpu-note/nvptx.c index 3afcdf8c9fe5c..ed9d4865c3ec9 100644 --- a/clang/test/Misc/target-invalid-cpu-note/nvptx.c +++ b/clang/test/Misc/target-invalid-cpu-note/nvptx.c @@ -28,6 +28,8 @@ // CHECK-SAME: {{^}}, sm_90a // CHECK-SAME: {{^}}, sm_100 // CHECK-SAME: {{^}}, sm_100a +// CHECK-SAME: {{^}}, sm_101 +// CHECK-SAME: {{^}}, sm_101a // CHECK-SAME: {{^}}, gfx600 // CHECK-SAME: {{^}}, gfx601 // CHECK-SAME: {{^}}, gfx602 From af2bf2fc8bcaaa8763086504f771b0a70810f2d3 Mon Sep 17 00:00:00 2001 From: Sebastian Jodlowski Date: Fri, 14 Feb 2025 14:58:59 -0800 Subject: [PATCH 2/2] Add support for sm120 as well. --- clang/include/clang/Basic/BuiltinsNVPTX.td | 8 ++-- clang/include/clang/Basic/Cuda.h| 2 ++ clang/lib/Basic/Cuda.cpp| 4 clang/lib/Basic/Targets/NVPTX.cpp | 5 + clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp| 2 ++ clang/test/Misc/target-inva
[clang] [CUDA] Add support for sm101 and sm120 target architectures (PR #127187)
https://github.com/jodelek updated https://github.com/llvm/llvm-project/pull/127187 From a55c76bac1bd70878c777b5930553fac114d2fd5 Mon Sep 17 00:00:00 2001 From: Sebastian Jodlowski Date: Fri, 14 Feb 2025 01:34:16 -0800 Subject: [PATCH 1/4] Add support for sm101 target architecture (Tegra Blackwell) --- clang/include/clang/Basic/BuiltinsNVPTX.td | 4 clang/include/clang/Basic/Cuda.h| 2 ++ clang/lib/Basic/Cuda.cpp| 4 clang/lib/Basic/Targets/NVPTX.cpp | 5 + clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp| 2 ++ clang/test/Misc/target-invalid-cpu-note/nvptx.c | 2 ++ 6 files changed, 19 insertions(+) diff --git a/clang/include/clang/Basic/BuiltinsNVPTX.td b/clang/include/clang/Basic/BuiltinsNVPTX.td index 327dc88cffdb4..3853e7dc8fbaf 100644 --- a/clang/include/clang/Basic/BuiltinsNVPTX.td +++ b/clang/include/clang/Basic/BuiltinsNVPTX.td @@ -21,6 +21,10 @@ class SM newer_list> : SMFeatures { !strconcat(f, "|", newer.Features)); } +let Features = "sm_101a" in def SM_101a : SMFeatures; + +def SM_101 : SM<"101", [SM_101a]>; + let Features = "sm_100a" in def SM_100a : SMFeatures; def SM_100 : SM<"100", [SM_100a]>; diff --git a/clang/include/clang/Basic/Cuda.h b/clang/include/clang/Basic/Cuda.h index f33ba46233a7a..380f51fed22a2 100644 --- a/clang/include/clang/Basic/Cuda.h +++ b/clang/include/clang/Basic/Cuda.h @@ -82,6 +82,8 @@ enum class OffloadArch { SM_90a, SM_100, SM_100a, + SM_101, + SM_101a, GFX600, GFX601, GFX602, diff --git a/clang/lib/Basic/Cuda.cpp b/clang/lib/Basic/Cuda.cpp index 1bfec0b37c5ee..e92a12b3ce3be 100644 --- a/clang/lib/Basic/Cuda.cpp +++ b/clang/lib/Basic/Cuda.cpp @@ -100,6 +100,8 @@ static const OffloadArchToStringMap arch_names[] = { SM(90a), // Hopper SM(100), // Blackwell SM(100a),// Blackwell +SM(101), // Blackwell +SM(101a),// Blackwell GFX(600), // gfx600 GFX(601), // gfx601 GFX(602), // gfx602 @@ -230,6 +232,8 @@ CudaVersion MinVersionForOffloadArch(OffloadArch A) { return CudaVersion::CUDA_120; case OffloadArch::SM_100: case OffloadArch::SM_100a: + case OffloadArch::SM_101: + case OffloadArch::SM_101a: return CudaVersion::CUDA_128; default: llvm_unreachable("invalid enum"); diff --git a/clang/lib/Basic/Targets/NVPTX.cpp b/clang/lib/Basic/Targets/NVPTX.cpp index 7d13c1f145440..3f3c1bb653b04 100644 --- a/clang/lib/Basic/Targets/NVPTX.cpp +++ b/clang/lib/Basic/Targets/NVPTX.cpp @@ -292,6 +292,9 @@ void NVPTXTargetInfo::getTargetDefines(const LangOptions &Opts, case OffloadArch::SM_100: case OffloadArch::SM_100a: return "1000"; + case OffloadArch::SM_101: + case OffloadArch::SM_101a: + return "1010"; } llvm_unreachable("unhandled OffloadArch"); }(); @@ -300,6 +303,8 @@ void NVPTXTargetInfo::getTargetDefines(const LangOptions &Opts, Builder.defineMacro("__CUDA_ARCH_FEAT_SM90_ALL", "1"); if (GPU == OffloadArch::SM_100a) Builder.defineMacro("__CUDA_ARCH_FEAT_SM100_ALL", "1"); +if (GPU == OffloadArch::SM_101a) + Builder.defineMacro("__CUDA_ARCH_FEAT_SM101_ALL", "1"); } } diff --git a/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp b/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp index c13928f61a748..2cac1eb73b438 100644 --- a/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp +++ b/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp @@ -2278,6 +2278,8 @@ void CGOpenMPRuntimeGPU::processRequiresDirective(const OMPRequiresDecl *D) { case OffloadArch::SM_90a: case OffloadArch::SM_100: case OffloadArch::SM_100a: + case OffloadArch::SM_101: + case OffloadArch::SM_101a: case OffloadArch::GFX600: case OffloadArch::GFX601: case OffloadArch::GFX602: diff --git a/clang/test/Misc/target-invalid-cpu-note/nvptx.c b/clang/test/Misc/target-invalid-cpu-note/nvptx.c index 3afcdf8c9fe5c..ed9d4865c3ec9 100644 --- a/clang/test/Misc/target-invalid-cpu-note/nvptx.c +++ b/clang/test/Misc/target-invalid-cpu-note/nvptx.c @@ -28,6 +28,8 @@ // CHECK-SAME: {{^}}, sm_90a // CHECK-SAME: {{^}}, sm_100 // CHECK-SAME: {{^}}, sm_100a +// CHECK-SAME: {{^}}, sm_101 +// CHECK-SAME: {{^}}, sm_101a // CHECK-SAME: {{^}}, gfx600 // CHECK-SAME: {{^}}, gfx601 // CHECK-SAME: {{^}}, gfx602 From af2bf2fc8bcaaa8763086504f771b0a70810f2d3 Mon Sep 17 00:00:00 2001 From: Sebastian Jodlowski Date: Fri, 14 Feb 2025 14:58:59 -0800 Subject: [PATCH 2/4] Add support for sm120 as well. --- clang/include/clang/Basic/BuiltinsNVPTX.td | 8 ++-- clang/include/clang/Basic/Cuda.h| 2 ++ clang/lib/Basic/Cuda.cpp| 4 clang/lib/Basic/Targets/NVPTX.cpp | 5 + clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp| 2 ++ clang/test/Misc/target-inva
[clang] [CUDA] Add support for sm101 and sm120 target architectures (PR #127187)
jodelek wrote: > LGTM. > > Do you need help merging the patch? This is my first one, so would appreciate the help, thanks! https://github.com/llvm/llvm-project/pull/127187 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [CUDA] Add support for sm101 and sm120 target architectures (PR #127187)
https://github.com/jodelek updated https://github.com/llvm/llvm-project/pull/127187 From a55c76bac1bd70878c777b5930553fac114d2fd5 Mon Sep 17 00:00:00 2001 From: Sebastian Jodlowski Date: Fri, 14 Feb 2025 01:34:16 -0800 Subject: [PATCH 1/4] Add support for sm101 target architecture (Tegra Blackwell) --- clang/include/clang/Basic/BuiltinsNVPTX.td | 4 clang/include/clang/Basic/Cuda.h| 2 ++ clang/lib/Basic/Cuda.cpp| 4 clang/lib/Basic/Targets/NVPTX.cpp | 5 + clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp| 2 ++ clang/test/Misc/target-invalid-cpu-note/nvptx.c | 2 ++ 6 files changed, 19 insertions(+) diff --git a/clang/include/clang/Basic/BuiltinsNVPTX.td b/clang/include/clang/Basic/BuiltinsNVPTX.td index 327dc88cffdb4..3853e7dc8fbaf 100644 --- a/clang/include/clang/Basic/BuiltinsNVPTX.td +++ b/clang/include/clang/Basic/BuiltinsNVPTX.td @@ -21,6 +21,10 @@ class SM newer_list> : SMFeatures { !strconcat(f, "|", newer.Features)); } +let Features = "sm_101a" in def SM_101a : SMFeatures; + +def SM_101 : SM<"101", [SM_101a]>; + let Features = "sm_100a" in def SM_100a : SMFeatures; def SM_100 : SM<"100", [SM_100a]>; diff --git a/clang/include/clang/Basic/Cuda.h b/clang/include/clang/Basic/Cuda.h index f33ba46233a7a..380f51fed22a2 100644 --- a/clang/include/clang/Basic/Cuda.h +++ b/clang/include/clang/Basic/Cuda.h @@ -82,6 +82,8 @@ enum class OffloadArch { SM_90a, SM_100, SM_100a, + SM_101, + SM_101a, GFX600, GFX601, GFX602, diff --git a/clang/lib/Basic/Cuda.cpp b/clang/lib/Basic/Cuda.cpp index 1bfec0b37c5ee..e92a12b3ce3be 100644 --- a/clang/lib/Basic/Cuda.cpp +++ b/clang/lib/Basic/Cuda.cpp @@ -100,6 +100,8 @@ static const OffloadArchToStringMap arch_names[] = { SM(90a), // Hopper SM(100), // Blackwell SM(100a),// Blackwell +SM(101), // Blackwell +SM(101a),// Blackwell GFX(600), // gfx600 GFX(601), // gfx601 GFX(602), // gfx602 @@ -230,6 +232,8 @@ CudaVersion MinVersionForOffloadArch(OffloadArch A) { return CudaVersion::CUDA_120; case OffloadArch::SM_100: case OffloadArch::SM_100a: + case OffloadArch::SM_101: + case OffloadArch::SM_101a: return CudaVersion::CUDA_128; default: llvm_unreachable("invalid enum"); diff --git a/clang/lib/Basic/Targets/NVPTX.cpp b/clang/lib/Basic/Targets/NVPTX.cpp index 7d13c1f145440..3f3c1bb653b04 100644 --- a/clang/lib/Basic/Targets/NVPTX.cpp +++ b/clang/lib/Basic/Targets/NVPTX.cpp @@ -292,6 +292,9 @@ void NVPTXTargetInfo::getTargetDefines(const LangOptions &Opts, case OffloadArch::SM_100: case OffloadArch::SM_100a: return "1000"; + case OffloadArch::SM_101: + case OffloadArch::SM_101a: + return "1010"; } llvm_unreachable("unhandled OffloadArch"); }(); @@ -300,6 +303,8 @@ void NVPTXTargetInfo::getTargetDefines(const LangOptions &Opts, Builder.defineMacro("__CUDA_ARCH_FEAT_SM90_ALL", "1"); if (GPU == OffloadArch::SM_100a) Builder.defineMacro("__CUDA_ARCH_FEAT_SM100_ALL", "1"); +if (GPU == OffloadArch::SM_101a) + Builder.defineMacro("__CUDA_ARCH_FEAT_SM101_ALL", "1"); } } diff --git a/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp b/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp index c13928f61a748..2cac1eb73b438 100644 --- a/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp +++ b/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp @@ -2278,6 +2278,8 @@ void CGOpenMPRuntimeGPU::processRequiresDirective(const OMPRequiresDecl *D) { case OffloadArch::SM_90a: case OffloadArch::SM_100: case OffloadArch::SM_100a: + case OffloadArch::SM_101: + case OffloadArch::SM_101a: case OffloadArch::GFX600: case OffloadArch::GFX601: case OffloadArch::GFX602: diff --git a/clang/test/Misc/target-invalid-cpu-note/nvptx.c b/clang/test/Misc/target-invalid-cpu-note/nvptx.c index 3afcdf8c9fe5c..ed9d4865c3ec9 100644 --- a/clang/test/Misc/target-invalid-cpu-note/nvptx.c +++ b/clang/test/Misc/target-invalid-cpu-note/nvptx.c @@ -28,6 +28,8 @@ // CHECK-SAME: {{^}}, sm_90a // CHECK-SAME: {{^}}, sm_100 // CHECK-SAME: {{^}}, sm_100a +// CHECK-SAME: {{^}}, sm_101 +// CHECK-SAME: {{^}}, sm_101a // CHECK-SAME: {{^}}, gfx600 // CHECK-SAME: {{^}}, gfx601 // CHECK-SAME: {{^}}, gfx602 From af2bf2fc8bcaaa8763086504f771b0a70810f2d3 Mon Sep 17 00:00:00 2001 From: Sebastian Jodlowski Date: Fri, 14 Feb 2025 14:58:59 -0800 Subject: [PATCH 2/4] Add support for sm120 as well. --- clang/include/clang/Basic/BuiltinsNVPTX.td | 8 ++-- clang/include/clang/Basic/Cuda.h| 2 ++ clang/lib/Basic/Cuda.cpp| 4 clang/lib/Basic/Targets/NVPTX.cpp | 5 + clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp| 2 ++ clang/test/Misc/target-inva
[clang] [CUDA] Add support for sm101 and sm120 target architectures (PR #127187)
https://github.com/jodelek updated https://github.com/llvm/llvm-project/pull/127187 From a55c76bac1bd70878c777b5930553fac114d2fd5 Mon Sep 17 00:00:00 2001 From: Sebastian Jodlowski Date: Fri, 14 Feb 2025 01:34:16 -0800 Subject: [PATCH 1/3] Add support for sm101 target architecture (Tegra Blackwell) --- clang/include/clang/Basic/BuiltinsNVPTX.td | 4 clang/include/clang/Basic/Cuda.h| 2 ++ clang/lib/Basic/Cuda.cpp| 4 clang/lib/Basic/Targets/NVPTX.cpp | 5 + clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp| 2 ++ clang/test/Misc/target-invalid-cpu-note/nvptx.c | 2 ++ 6 files changed, 19 insertions(+) diff --git a/clang/include/clang/Basic/BuiltinsNVPTX.td b/clang/include/clang/Basic/BuiltinsNVPTX.td index 327dc88cffdb4..3853e7dc8fbaf 100644 --- a/clang/include/clang/Basic/BuiltinsNVPTX.td +++ b/clang/include/clang/Basic/BuiltinsNVPTX.td @@ -21,6 +21,10 @@ class SM newer_list> : SMFeatures { !strconcat(f, "|", newer.Features)); } +let Features = "sm_101a" in def SM_101a : SMFeatures; + +def SM_101 : SM<"101", [SM_101a]>; + let Features = "sm_100a" in def SM_100a : SMFeatures; def SM_100 : SM<"100", [SM_100a]>; diff --git a/clang/include/clang/Basic/Cuda.h b/clang/include/clang/Basic/Cuda.h index f33ba46233a7a..380f51fed22a2 100644 --- a/clang/include/clang/Basic/Cuda.h +++ b/clang/include/clang/Basic/Cuda.h @@ -82,6 +82,8 @@ enum class OffloadArch { SM_90a, SM_100, SM_100a, + SM_101, + SM_101a, GFX600, GFX601, GFX602, diff --git a/clang/lib/Basic/Cuda.cpp b/clang/lib/Basic/Cuda.cpp index 1bfec0b37c5ee..e92a12b3ce3be 100644 --- a/clang/lib/Basic/Cuda.cpp +++ b/clang/lib/Basic/Cuda.cpp @@ -100,6 +100,8 @@ static const OffloadArchToStringMap arch_names[] = { SM(90a), // Hopper SM(100), // Blackwell SM(100a),// Blackwell +SM(101), // Blackwell +SM(101a),// Blackwell GFX(600), // gfx600 GFX(601), // gfx601 GFX(602), // gfx602 @@ -230,6 +232,8 @@ CudaVersion MinVersionForOffloadArch(OffloadArch A) { return CudaVersion::CUDA_120; case OffloadArch::SM_100: case OffloadArch::SM_100a: + case OffloadArch::SM_101: + case OffloadArch::SM_101a: return CudaVersion::CUDA_128; default: llvm_unreachable("invalid enum"); diff --git a/clang/lib/Basic/Targets/NVPTX.cpp b/clang/lib/Basic/Targets/NVPTX.cpp index 7d13c1f145440..3f3c1bb653b04 100644 --- a/clang/lib/Basic/Targets/NVPTX.cpp +++ b/clang/lib/Basic/Targets/NVPTX.cpp @@ -292,6 +292,9 @@ void NVPTXTargetInfo::getTargetDefines(const LangOptions &Opts, case OffloadArch::SM_100: case OffloadArch::SM_100a: return "1000"; + case OffloadArch::SM_101: + case OffloadArch::SM_101a: + return "1010"; } llvm_unreachable("unhandled OffloadArch"); }(); @@ -300,6 +303,8 @@ void NVPTXTargetInfo::getTargetDefines(const LangOptions &Opts, Builder.defineMacro("__CUDA_ARCH_FEAT_SM90_ALL", "1"); if (GPU == OffloadArch::SM_100a) Builder.defineMacro("__CUDA_ARCH_FEAT_SM100_ALL", "1"); +if (GPU == OffloadArch::SM_101a) + Builder.defineMacro("__CUDA_ARCH_FEAT_SM101_ALL", "1"); } } diff --git a/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp b/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp index c13928f61a748..2cac1eb73b438 100644 --- a/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp +++ b/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp @@ -2278,6 +2278,8 @@ void CGOpenMPRuntimeGPU::processRequiresDirective(const OMPRequiresDecl *D) { case OffloadArch::SM_90a: case OffloadArch::SM_100: case OffloadArch::SM_100a: + case OffloadArch::SM_101: + case OffloadArch::SM_101a: case OffloadArch::GFX600: case OffloadArch::GFX601: case OffloadArch::GFX602: diff --git a/clang/test/Misc/target-invalid-cpu-note/nvptx.c b/clang/test/Misc/target-invalid-cpu-note/nvptx.c index 3afcdf8c9fe5c..ed9d4865c3ec9 100644 --- a/clang/test/Misc/target-invalid-cpu-note/nvptx.c +++ b/clang/test/Misc/target-invalid-cpu-note/nvptx.c @@ -28,6 +28,8 @@ // CHECK-SAME: {{^}}, sm_90a // CHECK-SAME: {{^}}, sm_100 // CHECK-SAME: {{^}}, sm_100a +// CHECK-SAME: {{^}}, sm_101 +// CHECK-SAME: {{^}}, sm_101a // CHECK-SAME: {{^}}, gfx600 // CHECK-SAME: {{^}}, gfx601 // CHECK-SAME: {{^}}, gfx602 From af2bf2fc8bcaaa8763086504f771b0a70810f2d3 Mon Sep 17 00:00:00 2001 From: Sebastian Jodlowski Date: Fri, 14 Feb 2025 14:58:59 -0800 Subject: [PATCH 2/3] Add support for sm120 as well. --- clang/include/clang/Basic/BuiltinsNVPTX.td | 8 ++-- clang/include/clang/Basic/Cuda.h| 2 ++ clang/lib/Basic/Cuda.cpp| 4 clang/lib/Basic/Targets/NVPTX.cpp | 5 + clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp| 2 ++ clang/test/Misc/target-inva
[clang] [CUDA] Add support for sm101 target architecture (Tegra Blackwell) (PR #127187)
https://github.com/jodelek created https://github.com/llvm/llvm-project/pull/127187 Add support for sm101 target architecture (Tegra Blackwell). It requires CUDA 12.8. From a55c76bac1bd70878c777b5930553fac114d2fd5 Mon Sep 17 00:00:00 2001 From: Sebastian Jodlowski Date: Fri, 14 Feb 2025 01:34:16 -0800 Subject: [PATCH] Add support for sm101 target architecture (Tegra Blackwell) --- clang/include/clang/Basic/BuiltinsNVPTX.td | 4 clang/include/clang/Basic/Cuda.h| 2 ++ clang/lib/Basic/Cuda.cpp| 4 clang/lib/Basic/Targets/NVPTX.cpp | 5 + clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp| 2 ++ clang/test/Misc/target-invalid-cpu-note/nvptx.c | 2 ++ 6 files changed, 19 insertions(+) diff --git a/clang/include/clang/Basic/BuiltinsNVPTX.td b/clang/include/clang/Basic/BuiltinsNVPTX.td index 327dc88cffdb4..3853e7dc8fbaf 100644 --- a/clang/include/clang/Basic/BuiltinsNVPTX.td +++ b/clang/include/clang/Basic/BuiltinsNVPTX.td @@ -21,6 +21,10 @@ class SM newer_list> : SMFeatures { !strconcat(f, "|", newer.Features)); } +let Features = "sm_101a" in def SM_101a : SMFeatures; + +def SM_101 : SM<"101", [SM_101a]>; + let Features = "sm_100a" in def SM_100a : SMFeatures; def SM_100 : SM<"100", [SM_100a]>; diff --git a/clang/include/clang/Basic/Cuda.h b/clang/include/clang/Basic/Cuda.h index f33ba46233a7a..380f51fed22a2 100644 --- a/clang/include/clang/Basic/Cuda.h +++ b/clang/include/clang/Basic/Cuda.h @@ -82,6 +82,8 @@ enum class OffloadArch { SM_90a, SM_100, SM_100a, + SM_101, + SM_101a, GFX600, GFX601, GFX602, diff --git a/clang/lib/Basic/Cuda.cpp b/clang/lib/Basic/Cuda.cpp index 1bfec0b37c5ee..e92a12b3ce3be 100644 --- a/clang/lib/Basic/Cuda.cpp +++ b/clang/lib/Basic/Cuda.cpp @@ -100,6 +100,8 @@ static const OffloadArchToStringMap arch_names[] = { SM(90a), // Hopper SM(100), // Blackwell SM(100a),// Blackwell +SM(101), // Blackwell +SM(101a),// Blackwell GFX(600), // gfx600 GFX(601), // gfx601 GFX(602), // gfx602 @@ -230,6 +232,8 @@ CudaVersion MinVersionForOffloadArch(OffloadArch A) { return CudaVersion::CUDA_120; case OffloadArch::SM_100: case OffloadArch::SM_100a: + case OffloadArch::SM_101: + case OffloadArch::SM_101a: return CudaVersion::CUDA_128; default: llvm_unreachable("invalid enum"); diff --git a/clang/lib/Basic/Targets/NVPTX.cpp b/clang/lib/Basic/Targets/NVPTX.cpp index 7d13c1f145440..3f3c1bb653b04 100644 --- a/clang/lib/Basic/Targets/NVPTX.cpp +++ b/clang/lib/Basic/Targets/NVPTX.cpp @@ -292,6 +292,9 @@ void NVPTXTargetInfo::getTargetDefines(const LangOptions &Opts, case OffloadArch::SM_100: case OffloadArch::SM_100a: return "1000"; + case OffloadArch::SM_101: + case OffloadArch::SM_101a: + return "1010"; } llvm_unreachable("unhandled OffloadArch"); }(); @@ -300,6 +303,8 @@ void NVPTXTargetInfo::getTargetDefines(const LangOptions &Opts, Builder.defineMacro("__CUDA_ARCH_FEAT_SM90_ALL", "1"); if (GPU == OffloadArch::SM_100a) Builder.defineMacro("__CUDA_ARCH_FEAT_SM100_ALL", "1"); +if (GPU == OffloadArch::SM_101a) + Builder.defineMacro("__CUDA_ARCH_FEAT_SM101_ALL", "1"); } } diff --git a/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp b/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp index c13928f61a748..2cac1eb73b438 100644 --- a/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp +++ b/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp @@ -2278,6 +2278,8 @@ void CGOpenMPRuntimeGPU::processRequiresDirective(const OMPRequiresDecl *D) { case OffloadArch::SM_90a: case OffloadArch::SM_100: case OffloadArch::SM_100a: + case OffloadArch::SM_101: + case OffloadArch::SM_101a: case OffloadArch::GFX600: case OffloadArch::GFX601: case OffloadArch::GFX602: diff --git a/clang/test/Misc/target-invalid-cpu-note/nvptx.c b/clang/test/Misc/target-invalid-cpu-note/nvptx.c index 3afcdf8c9fe5c..ed9d4865c3ec9 100644 --- a/clang/test/Misc/target-invalid-cpu-note/nvptx.c +++ b/clang/test/Misc/target-invalid-cpu-note/nvptx.c @@ -28,6 +28,8 @@ // CHECK-SAME: {{^}}, sm_90a // CHECK-SAME: {{^}}, sm_100 // CHECK-SAME: {{^}}, sm_100a +// CHECK-SAME: {{^}}, sm_101 +// CHECK-SAME: {{^}}, sm_101a // CHECK-SAME: {{^}}, gfx600 // CHECK-SAME: {{^}}, gfx601 // CHECK-SAME: {{^}}, gfx602 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [CUDA] Add support for sm101 target architecture (Tegra Blackwell) (PR #127187)
https://github.com/jodelek ready_for_review https://github.com/llvm/llvm-project/pull/127187 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [CUDA] Add support for sm101 target architecture (Tegra Blackwell) (PR #127187)
jodelek wrote: @Artem-B @durga4github @sergey-kozub https://github.com/llvm/llvm-project/pull/127187 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits