diff options
author | Erich Keane <erich.keane@intel.com> | 2018-02-08 23:16:00 +0000 |
---|---|---|
committer | Erich Keane <erich.keane@intel.com> | 2018-02-08 23:16:00 +0000 |
commit | d45879d8add0c2d831f89bc638f75e23b75e9a72 (patch) | |
tree | 516e488bb84b5b60a2e6d9c156b7475e7a3fd167 | |
parent | d1d85f50d01a03740d2b2295c897a310f5d3d910 (diff) | |
download | bcm5719-llvm-d45879d8add0c2d831f89bc638f75e23b75e9a72.tar.gz bcm5719-llvm-d45879d8add0c2d831f89bc638f75e23b75e9a72.zip |
Add NVPTX Support to ValidCPUList (enabling march notes)
A followup to: https://reviews.llvm.org/D42978
This patch adds NVPTX support for
enabling the march notes.
Differential Revision: https://reviews.llvm.org/D43045
llvm-svn: 324675
-rw-r--r-- | clang/include/clang/Basic/Cuda.h | 1 | ||||
-rw-r--r-- | clang/lib/Basic/Cuda.cpp | 6 | ||||
-rw-r--r-- | clang/lib/Basic/Targets/NVPTX.cpp | 2 | ||||
-rw-r--r-- | clang/lib/Basic/Targets/NVPTX.h | 6 |
4 files changed, 15 insertions, 0 deletions
diff --git a/clang/include/clang/Basic/Cuda.h b/clang/include/clang/Basic/Cuda.h index 1fa0b528073..8ce3807751e 100644 --- a/clang/include/clang/Basic/Cuda.h +++ b/clang/include/clang/Basic/Cuda.h @@ -46,6 +46,7 @@ enum class CudaArch { SM_62, SM_70, SM_72, + LAST, }; const char *CudaArchToString(CudaArch A); diff --git a/clang/lib/Basic/Cuda.cpp b/clang/lib/Basic/Cuda.cpp index 4e61743ab0c..b7e04bf3f96 100644 --- a/clang/lib/Basic/Cuda.cpp +++ b/clang/lib/Basic/Cuda.cpp @@ -26,6 +26,8 @@ const char *CudaVersionToString(CudaVersion V) { const char *CudaArchToString(CudaArch A) { switch (A) { + case CudaArch::LAST: + break; case CudaArch::UNKNOWN: return "unknown"; case CudaArch::SM_20: @@ -133,6 +135,8 @@ CudaVirtualArch StringToCudaVirtualArch(llvm::StringRef S) { CudaVirtualArch VirtualArchForCudaArch(CudaArch A) { switch (A) { + case CudaArch::LAST: + break; case CudaArch::UNKNOWN: return CudaVirtualArch::UNKNOWN; case CudaArch::SM_20: @@ -168,6 +172,8 @@ CudaVirtualArch VirtualArchForCudaArch(CudaArch A) { CudaVersion MinVersionForCudaArch(CudaArch A) { switch (A) { + case CudaArch::LAST: + break; case CudaArch::UNKNOWN: return CudaVersion::UNKNOWN; case CudaArch::SM_20: diff --git a/clang/lib/Basic/Targets/NVPTX.cpp b/clang/lib/Basic/Targets/NVPTX.cpp index 762a6b7aa79..e8e6d2f2f74 100644 --- a/clang/lib/Basic/Targets/NVPTX.cpp +++ b/clang/lib/Basic/Targets/NVPTX.cpp @@ -157,6 +157,8 @@ void NVPTXTargetInfo::getTargetDefines(const LangOptions &Opts, // Set __CUDA_ARCH__ for the GPU specified. std::string CUDAArchCode = [this] { switch (GPU) { + case CudaArch::LAST: + break; case CudaArch::UNKNOWN: assert(false && "No GPU arch when compiling CUDA device code."); return ""; diff --git a/clang/lib/Basic/Targets/NVPTX.h b/clang/lib/Basic/Targets/NVPTX.h index a84870763f5..83d7dfb6e89 100644 --- a/clang/lib/Basic/Targets/NVPTX.h +++ b/clang/lib/Basic/Targets/NVPTX.h @@ -98,6 +98,12 @@ public: return StringToCudaArch(Name) != CudaArch::UNKNOWN; } + void fillValidCPUList(SmallVectorImpl<StringRef> &Values) const override { + for (int i = static_cast<int>(CudaArch::SM_20); + i < static_cast<int>(CudaArch::LAST); ++i) + Values.emplace_back(CudaArchToString(static_cast<CudaArch>(i))); + } + bool setCPU(const std::string &Name) override { GPU = StringToCudaArch(Name); return GPU != CudaArch::UNKNOWN; |