Skip to content

Commit a55c76b

Browse files
author
Sebastian Jodlowski
committed
Add support for sm101 target architecture (Tegra Blackwell)
1 parent cf1165c commit a55c76b

File tree

6 files changed

+19
-0
lines changed

6 files changed

+19
-0
lines changed

clang/include/clang/Basic/BuiltinsNVPTX.td

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ class SM<string version, list<SMFeatures> newer_list> : SMFeatures {
2121
!strconcat(f, "|", newer.Features));
2222
}
2323

24+
let Features = "sm_101a" in def SM_101a : SMFeatures;
25+
26+
def SM_101 : SM<"101", [SM_101a]>;
27+
2428
let Features = "sm_100a" in def SM_100a : SMFeatures;
2529

2630
def SM_100 : SM<"100", [SM_100a]>;

clang/include/clang/Basic/Cuda.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ enum class OffloadArch {
8282
SM_90a,
8383
SM_100,
8484
SM_100a,
85+
SM_101,
86+
SM_101a,
8587
GFX600,
8688
GFX601,
8789
GFX602,

clang/lib/Basic/Cuda.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ static const OffloadArchToStringMap arch_names[] = {
100100
SM(90a), // Hopper
101101
SM(100), // Blackwell
102102
SM(100a), // Blackwell
103+
SM(101), // Blackwell
104+
SM(101a), // Blackwell
103105
GFX(600), // gfx600
104106
GFX(601), // gfx601
105107
GFX(602), // gfx602
@@ -230,6 +232,8 @@ CudaVersion MinVersionForOffloadArch(OffloadArch A) {
230232
return CudaVersion::CUDA_120;
231233
case OffloadArch::SM_100:
232234
case OffloadArch::SM_100a:
235+
case OffloadArch::SM_101:
236+
case OffloadArch::SM_101a:
233237
return CudaVersion::CUDA_128;
234238
default:
235239
llvm_unreachable("invalid enum");

clang/lib/Basic/Targets/NVPTX.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,9 @@ void NVPTXTargetInfo::getTargetDefines(const LangOptions &Opts,
292292
case OffloadArch::SM_100:
293293
case OffloadArch::SM_100a:
294294
return "1000";
295+
case OffloadArch::SM_101:
296+
case OffloadArch::SM_101a:
297+
return "1010";
295298
}
296299
llvm_unreachable("unhandled OffloadArch");
297300
}();
@@ -300,6 +303,8 @@ void NVPTXTargetInfo::getTargetDefines(const LangOptions &Opts,
300303
Builder.defineMacro("__CUDA_ARCH_FEAT_SM90_ALL", "1");
301304
if (GPU == OffloadArch::SM_100a)
302305
Builder.defineMacro("__CUDA_ARCH_FEAT_SM100_ALL", "1");
306+
if (GPU == OffloadArch::SM_101a)
307+
Builder.defineMacro("__CUDA_ARCH_FEAT_SM101_ALL", "1");
303308
}
304309
}
305310

clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2278,6 +2278,8 @@ void CGOpenMPRuntimeGPU::processRequiresDirective(const OMPRequiresDecl *D) {
22782278
case OffloadArch::SM_90a:
22792279
case OffloadArch::SM_100:
22802280
case OffloadArch::SM_100a:
2281+
case OffloadArch::SM_101:
2282+
case OffloadArch::SM_101a:
22812283
case OffloadArch::GFX600:
22822284
case OffloadArch::GFX601:
22832285
case OffloadArch::GFX602:

clang/test/Misc/target-invalid-cpu-note/nvptx.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
// CHECK-SAME: {{^}}, sm_90a
2929
// CHECK-SAME: {{^}}, sm_100
3030
// CHECK-SAME: {{^}}, sm_100a
31+
// CHECK-SAME: {{^}}, sm_101
32+
// CHECK-SAME: {{^}}, sm_101a
3133
// CHECK-SAME: {{^}}, gfx600
3234
// CHECK-SAME: {{^}}, gfx601
3335
// CHECK-SAME: {{^}}, gfx602

0 commit comments

Comments
 (0)