10#include "llvm/ADT/SmallVector.h"
11#include "llvm/ADT/StringRef.h"
12#include "llvm/TargetParser/AMDGPUTargetParser.h"
13#include "llvm/TargetParser/NVPTXTargetParser.h"
14#include "llvm/TargetParser/Triple.h"
19 return getNVPTX(llvm::NVPTX::parseArch(
"sm_52"));
23 return getAMDGPU(llvm::AMDGPU::parseArchAMDGCN(
"gfx906"));
33 return llvm::NVPTX::getArchName(A.
nvptxKind()).data();
35 return llvm::AMDGPU::getArchNameAMDGCN(A.
amdgpuKind()).data();
39 return "graniterapids";
51 return llvm::NVPTX::getVirtualArch(A.
nvptxKind()).data();
54 return "compute_amdgcn";
72 if (S ==
"amdgcnspirv")
76 if (S ==
"graniterapids")
84 if (llvm::NVPTX::GPUKind NV = llvm::NVPTX::parseArch(S))
86 if (llvm::AMDGPU::GPUKind AK = llvm::AMDGPU::parseArchAMDGCN(S))
92#define NVPTX_GPU(NAME, KIND, VIRTUAL, SM_ID, MIN_VER, MAX_VER, SUFFIX) \
93 Values.push_back(NAME);
94#include "llvm/TargetParser/NVPTXTargetParser.def"
95 llvm::AMDGPU::fillValidArchListAMDGCN(Values, llvm::Triple::NoSubArch);
101 return llvm::Triple(llvm::Triple::spirv64, llvm::Triple::NoSubArch,
102 llvm::Triple::AMD, llvm::Triple::AMDHSA);
105 llvm::Triple::ArchType
Arch = DefaultToolchainTriple.isArch64Bit()
106 ? llvm::Triple::nvptx64
107 : llvm::Triple::nvptx;
108 return llvm::Triple(
Arch, llvm::Triple::NoSubArch, llvm::Triple::NVIDIA,
113 return llvm::Triple(
"amdgcn-amd-amdhsa");
A processor an offloading action can target.
static constexpr OffloadArch getUnused()
static constexpr OffloadArch getGeneric()
static OffloadArch CudaDefault()
Default architectures used when the user does not specify one.
static OffloadArch getNVPTX(llvm::NVPTX::GPUKind K)
static OffloadArch HIPDefault()
static constexpr OffloadArch getUnknown()
static constexpr OffloadArch getIntel(TargetArch V, IntelArch A)
llvm::NVPTX::GPUKind nvptxKind() const
llvm::AMDGPU::GPUKind amdgpuKind() const
static constexpr OffloadArch getSPIRV()
TargetArch targetArch() const
static OffloadArch getAMDGPU(llvm::AMDGPU::GPUKind K)
Top level wrappers for InstallAPI frontend operations.
const char * OffloadArchToVirtualArchString(OffloadArch A)
OffloadArch StringToOffloadArch(llvm::StringRef S)
const char * OffloadArchToString(OffloadArch A)
llvm::Triple OffloadArchToTriple(const llvm::Triple &DefaultToolchainTriple, OffloadArch ID)
void fillValidOffloadArchList(llvm::SmallVectorImpl< llvm::StringRef > &Values)
Append the canonical names of all NVIDIA and AMDGPU GPUs.