3#include "llvm/ADT/StringRef.h"
4#include "llvm/ADT/Twine.h"
5#include "llvm/Support/ErrorHandling.h"
6#include "llvm/Support/VersionTuple.h"
15#define CUDA_ENTRY(major, minor) \
17#major "." #minor, CudaVersion::CUDA_##major##minor, \
18 llvm::VersionTuple(major, minor) \
56 std::string VS = S.str();
65 if (I->TVersion == Version)
71struct CudaArchToStringMap {
79 { CudaArch::SM_##sm, "sm_" #sm, ca }
80#define SM(sm) SM2(sm, "compute_" #sm)
82 { CudaArch::GFX##gpu, "gfx" #gpu, "compute_amdgcn" }
86 SM2(20,
"compute_20"),
SM2(21,
"compute_20"),
146 auto result = std::find_if(
148 [A](
const CudaArchToStringMap &map) {
return A == map.arch; });
151 return result->arch_name;
155 auto result = std::find_if(
157 [A](
const CudaArchToStringMap &map) {
return A == map.arch; });
160 return result->virtual_arch_name;
164 auto result = std::find_if(
166 [S](
const CudaArchToStringMap &map) {
return S == map.arch_name; });
211 llvm_unreachable(
"invalid enum");
248 llvm_unreachable(
"Unknown CUDA feature.");
const char * virtual_arch_name
#define CUDA_ENTRY(major, minor)
__device__ __2f16 float c
const char * CudaArchToVirtualArchString(CudaArch A)
CudaVersion MaxVersionForCudaArch(CudaArch A)
Get the latest CudaVersion that supports the given CudaArch.
CudaVersion ToCudaVersion(llvm::VersionTuple)
static const CudaArchToStringMap arch_names[]
CudaArch StringToCudaArch(llvm::StringRef S)
static bool IsAMDGpuArch(CudaArch A)
CudaVersion CudaStringToVersion(const llvm::Twine &S)
bool CudaFeatureEnabled(llvm::VersionTuple, CudaFeature)
CudaVersion MinVersionForCudaArch(CudaArch A)
Get the earliest CudaVersion that supports the given CudaArch.
const char * CudaVersionToString(CudaVersion V)
static const CudaVersionMapEntry CudaNameVersionMap[]
@ CUDA_USES_FATBIN_REGISTER_END
const char * CudaArchToString(CudaArch A)
llvm::VersionTuple TVersion