summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic/Targets.cpp
diff options
context:
space:
mode:
authorYaxun Liu <Yaxun.Liu@amd.com>2018-04-04 21:19:27 +0000
committerYaxun Liu <Yaxun.Liu@amd.com>2018-04-04 21:19:27 +0000
commit8a5fc15aa45a1d5f83fe81771349e729a1ee64b7 (patch)
treee6d720c0f77fafb7d1602b86d4e8ac91e7d5a534 /clang/lib/Basic/Targets.cpp
parentc9a918c560aa2f524815dfb4ec68c3b24f3b211a (diff)
downloadbcm5719-llvm-8a5fc15aa45a1d5f83fe81771349e729a1ee64b7.tar.gz
bcm5719-llvm-8a5fc15aa45a1d5f83fe81771349e729a1ee64b7.zip
[CUDA] Add amdgpu sub archs
Patch by Greg Rodgers. Revised and lit tests added by Yaxun Liu. Differential Revision: https://reviews.llvm.org/D45277 llvm-svn: 329232
Diffstat (limited to 'clang/lib/Basic/Targets.cpp')
-rw-r--r--clang/lib/Basic/Targets.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index e325403a1fa..4311095063c 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -112,6 +112,61 @@ void addMinGWDefines(const llvm::Triple &Triple, const LangOptions &Opts,
addCygMingDefines(Opts, Builder);
}
+void defineCudaArchMacro(CudaArch GPU, clang::MacroBuilder &Builder) {
+ std::string CUDAArchCode = [GPU] {
+ switch (GPU) {
+ case CudaArch::LAST:
+ break;
+ case CudaArch::SM_20:
+ return "200";
+ case CudaArch::SM_21:
+ return "210";
+ case CudaArch::SM_30:
+ return "300";
+ case CudaArch::SM_32:
+ return "320";
+ case CudaArch::SM_35:
+ return "350";
+ case CudaArch::SM_37:
+ return "370";
+ case CudaArch::SM_50:
+ return "500";
+ case CudaArch::SM_52:
+ return "520";
+ case CudaArch::SM_53:
+ return "530";
+ case CudaArch::SM_60:
+ return "600";
+ case CudaArch::SM_61:
+ return "610";
+ case CudaArch::SM_62:
+ return "620";
+ case CudaArch::SM_70:
+ return "700";
+ case CudaArch::SM_72:
+ return "720";
+ case CudaArch::GFX600:
+ case CudaArch::GFX601:
+ case CudaArch::GFX700:
+ case CudaArch::GFX701:
+ case CudaArch::GFX702:
+ case CudaArch::GFX703:
+ case CudaArch::GFX704:
+ case CudaArch::GFX801:
+ case CudaArch::GFX802:
+ case CudaArch::GFX803:
+ case CudaArch::GFX810:
+ case CudaArch::GFX900:
+ case CudaArch::GFX902:
+ return "320";
+ case CudaArch::UNKNOWN:
+ llvm_unreachable("unhandled Cuda/HIP Arch");
+ }
+ llvm_unreachable("unhandled Cuda/HIP Arch");
+ }();
+ Builder.defineMacro("__CUDA_ARCH__", CUDAArchCode);
+}
+
//===----------------------------------------------------------------------===//
// Driver code
//===----------------------------------------------------------------------===//
OpenPOWER on IntegriCloud