diff options
| author | Yaxun Liu <Yaxun.Liu@amd.com> | 2018-04-04 21:19:27 +0000 |
|---|---|---|
| committer | Yaxun Liu <Yaxun.Liu@amd.com> | 2018-04-04 21:19:27 +0000 |
| commit | 8a5fc15aa45a1d5f83fe81771349e729a1ee64b7 (patch) | |
| tree | e6d720c0f77fafb7d1602b86d4e8ac91e7d5a534 /clang/lib/Basic/Targets.cpp | |
| parent | c9a918c560aa2f524815dfb4ec68c3b24f3b211a (diff) | |
| download | bcm5719-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.cpp | 55 |
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 //===----------------------------------------------------------------------===// |

