aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Basic/Cuda.cpp
diff options
context:
space:
mode:
authorArtem Belevich <tra@google.com>2020-04-07 11:00:19 -0700
committerArtem Belevich <tra@google.com>2020-04-08 11:19:44 -0700
commita9627b7ea7e2b47488188cb1d80a23b24a8066b2 (patch)
treee539e3c8cc11324093b5ff90df38e8395b7d0d62 /clang/lib/Basic/Cuda.cpp
parent33386b20aa82c73e28b871cfa35c89a3808c9f92 (diff)
downloadllvm-a9627b7ea7e2b47488188cb1d80a23b24a8066b2.zip
llvm-a9627b7ea7e2b47488188cb1d80a23b24a8066b2.tar.gz
llvm-a9627b7ea7e2b47488188cb1d80a23b24a8066b2.tar.bz2
[CUDA] Add partial support for recent CUDA versions.
Generate PTX using newer versions of PTX and allow using sm_80 with CUDA-11. None of the new features of CUDA-10.2+ have been implemented yet, so using these versions will still produce a warning. Differential Revision: https://reviews.llvm.org/D77670
Diffstat (limited to 'clang/lib/Basic/Cuda.cpp')
-rw-r--r--clang/lib/Basic/Cuda.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/clang/lib/Basic/Cuda.cpp b/clang/lib/Basic/Cuda.cpp
index 7337836..664f635 100644
--- a/clang/lib/Basic/Cuda.cpp
+++ b/clang/lib/Basic/Cuda.cpp
@@ -28,6 +28,10 @@ const char *CudaVersionToString(CudaVersion V) {
return "10.0";
case CudaVersion::CUDA_101:
return "10.1";
+ case CudaVersion::CUDA_102:
+ return "10.2";
+ case CudaVersion::CUDA_110:
+ return "11.0";
}
llvm_unreachable("invalid enum");
}
@@ -42,6 +46,8 @@ CudaVersion CudaStringToVersion(const llvm::Twine &S) {
.Case("9.2", CudaVersion::CUDA_92)
.Case("10.0", CudaVersion::CUDA_100)
.Case("10.1", CudaVersion::CUDA_101)
+ .Case("10.2", CudaVersion::CUDA_102)
+ .Case("11.0", CudaVersion::CUDA_110)
.Default(CudaVersion::UNKNOWN);
}
@@ -64,6 +70,7 @@ CudaArchToStringMap arch_names[] = {
SM(60), SM(61), SM(62), // Pascal
SM(70), SM(72), // Volta
SM(75), // Turing
+ SM(80), // Ampere
GFX(600), // tahiti
GFX(601), // pitcairn, verde, oland,hainan
GFX(700), // kaveri
@@ -140,6 +147,8 @@ CudaVersion MinVersionForCudaArch(CudaArch A) {
return CudaVersion::CUDA_91;
case CudaArch::SM_75:
return CudaVersion::CUDA_100;
+ case CudaArch::SM_80:
+ return CudaVersion::CUDA_110;
default:
llvm_unreachable("invalid enum");
}