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) \
58 std::string VS = S.str();
67 if (I->TVersion == Version)
73struct CudaArchToStringMap {
81 { CudaArch::SM_##sm, "sm_" #sm, ca }
82#define SM(sm) SM2(sm, "compute_" #sm)
84 { CudaArch::GFX##gpu, "gfx" #gpu, "compute_amdgcn" }
88 SM2(20,
"compute_20"),
SM2(21,
"compute_20"),
151 auto result = std::find_if(
153 [A](
const CudaArchToStringMap &map) {
return A == map.arch; });
156 return result->arch_name;
160 auto result = std::find_if(
162 [A](
const CudaArchToStringMap &map) {
return A == map.arch; });
165 return result->virtual_arch_name;
169 auto result = std::find_if(
171 [S](
const CudaArchToStringMap &map) {
return S == map.arch_name; });
218 llvm_unreachable(
"invalid enum");
255 llvm_unreachable(
"Unknown CUDA feature.");
const char * virtual_arch_name
#define CUDA_ENTRY(major, minor)
__device__ __2f16 float c
The JSON file list parser is used to communicate input to InstallAPI.
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