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) \
54 std::string VS = S.str();
63 if (I->TVersion == Version)
69struct CudaArchToStringMap {
77 { CudaArch::SM_##sm, "sm_" #sm, ca }
78#define SM(sm) SM2(sm, "compute_" #sm)
80 { CudaArch::GFX##gpu, "gfx" #gpu, "compute_amdgcn" }
84 SM2(20,
"compute_20"),
SM2(21,
"compute_20"),
140 auto result = std::find_if(
142 [A](
const CudaArchToStringMap &map) {
return A == map.arch; });
145 return result->arch_name;
149 auto result = std::find_if(
151 [A](
const CudaArchToStringMap &map) {
return A == map.arch; });
154 return result->virtual_arch_name;
158 auto result = std::find_if(
160 [S](
const CudaArchToStringMap &map) {
return S == map.arch_name; });
205 llvm_unreachable(
"invalid enum");
238 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