diff options
Diffstat (limited to 'clang/lib/Basic/Targets.cpp')
-rw-r--r-- | clang/lib/Basic/Targets.cpp | 68 |
1 files changed, 39 insertions, 29 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 5e9ea6819e8..9e812ef80c1 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -1701,11 +1701,15 @@ class NVPTXTargetInfo : public TargetInfo { GK_SM20, GK_SM21, GK_SM30, + GK_SM32, GK_SM35, GK_SM37, GK_SM50, GK_SM52, GK_SM53, + GK_SM60, + GK_SM61, + GK_SM62, } GPU; public: @@ -1787,35 +1791,37 @@ public: Builder.defineMacro("__NVPTX__"); if (Opts.CUDAIsDevice) { // Set __CUDA_ARCH__ for the GPU specified. - std::string CUDAArchCode; - switch (GPU) { - case GK_SM20: - CUDAArchCode = "200"; - break; - case GK_SM21: - CUDAArchCode = "210"; - break; - case GK_SM30: - CUDAArchCode = "300"; - break; - case GK_SM35: - CUDAArchCode = "350"; - break; - case GK_SM37: - CUDAArchCode = "370"; - break; - case GK_SM50: - CUDAArchCode = "500"; - break; - case GK_SM52: - CUDAArchCode = "520"; - break; - case GK_SM53: - CUDAArchCode = "530"; - break; - default: - llvm_unreachable("Unhandled target CPU"); - } + std::string CUDAArchCode = [this] { + switch (GPU) { + case GK_NONE: + assert(false && "No GPU arch when compiling CUDA device code."); + return ""; + case GK_SM20: + return "200"; + case GK_SM21: + return "210"; + case GK_SM30: + return "300"; + case GK_SM32: + return "320"; + case GK_SM35: + return "350"; + case GK_SM37: + return "370"; + case GK_SM50: + return "500"; + case GK_SM52: + return "520"; + case GK_SM53: + return "530"; + case GK_SM60: + return "600"; + case GK_SM61: + return "610"; + case GK_SM62: + return "620"; + } + }(); Builder.defineMacro("__CUDA_ARCH__", CUDAArchCode); } } @@ -1860,11 +1866,15 @@ public: .Case("sm_20", GK_SM20) .Case("sm_21", GK_SM21) .Case("sm_30", GK_SM30) + .Case("sm_32", GK_SM32) .Case("sm_35", GK_SM35) .Case("sm_37", GK_SM37) .Case("sm_50", GK_SM50) .Case("sm_52", GK_SM52) .Case("sm_53", GK_SM53) + .Case("sm_60", GK_SM60) + .Case("sm_61", GK_SM61) + .Case("sm_62", GK_SM62) .Default(GK_NONE); return GPU != GK_NONE; |