9#ifndef LLVM_CLANG_BASIC_OFFLOADARCH_H
10#define LLVM_CLANG_BASIC_OFFLOADARCH_H
12#include "llvm/ADT/StringRef.h"
61 static OffloadArch
getNVPTX(llvm::NVPTX::GPUKind K) {
64 static OffloadArch
getAMDGPU(llvm::AMDGPU::GPUKind K) {
68 return {V,
static_cast<uint32_t>(A)};
93 return static_cast<llvm::NVPTX::GPUKind
>(Kind);
96 return static_cast<llvm::AMDGPU::GPUKind
>(Kind);
105 return std::tie(V, Kind) < std::tie(
Other.V,
Other.Kind);
139 explicit operator bool()
const {
return !
Arch.isUnused(); }
A processor an offloading action can target.
static constexpr OffloadArch getUnused()
constexpr OffloadArch()=default
static constexpr OffloadArch getGeneric()
static OffloadArch CudaDefault()
Default architectures used when the user does not specify one.
bool operator<(const OffloadArch &Other) const
static OffloadArch getNVPTX(llvm::NVPTX::GPUKind K)
static OffloadArch HIPDefault()
bool operator==(const OffloadArch &Other) const
static constexpr OffloadArch getUnknown()
static constexpr OffloadArch getIntel(TargetArch V, IntelArch A)
llvm::NVPTX::GPUKind nvptxKind() const
llvm::AMDGPU::GPUKind amdgpuKind() const
bool operator!=(const OffloadArch &Other) 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.
@ Other
Other implicit parameter.
Diagnostic wrappers for TextAPI types for error reporting.
__packed_splat4 __packed_splat2 __packed_splat8 __packed_splat4 __packed_splat2 uint8_t
__packed_splat4 __packed_splat2 __packed_splat8 __packed_splat4 __packed_splat2 __packed_splat4 __packed_splat2 __packed_splat8 __packed_splat4 uint32_t
bool operator<(const BoundArch &Other) const
BoundArch(llvm::StringRef Name, OffloadArch A)
OffloadArch Arch
The parsed offload architecture.
BoundArch(llvm::StringRef Name)
bool operator==(const BoundArch &Other) const