9#ifndef LLVM_CLANG_BASIC_OFFLOADARCH_H
10#define LLVM_CLANG_BASIC_OFFLOADARCH_H
12#include "llvm/ADT/StringRef.h"
13#include "llvm/TargetParser/Triple.h"
60 static OffloadArch
getNVPTX(llvm::NVPTX::GPUKind K) {
63 static OffloadArch
getAMDGPU(llvm::AMDGPU::GPUKind K) {
102 return static_cast<llvm::NVPTX::GPUKind
>(Kind);
105 return static_cast<llvm::AMDGPU::GPUKind
>(Kind);
109 return static_cast<llvm::IntelGPU::GPUKind
>(Kind);
112 llvm::IntelGPU::IGCATarget
igcaTarget()
const;
120 return std::tie(V, Kind) < std::tie(
Other.V,
Other.Kind);
154 explicit operator bool()
const {
return !
Arch.isUnused(); }
A processor an offloading action can target.
static constexpr OffloadArch getUnused()
static constexpr OffloadArch getAMDGCNSPIRV()
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)
llvm::IntelGPU::IGCATarget igcaTarget() const
Which IGCA target this is; only valid when isIntelIGCA().
static OffloadArch getIntelIGCA(llvm::IntelGPU::IGCATarget T)
An Intel IGCA target, e.g. igca_20ca; T must be valid.
llvm::IntelGPU::GPUKind intelGPUKind() const
Which Intel GPU this is; only meaningful when isIntelGPU().
static OffloadArch HIPDefault()
bool operator==(const OffloadArch &Other) const
static constexpr OffloadArch getUnknown()
llvm::NVPTX::GPUKind nvptxKind() const
static OffloadArch getIntelGPU(llvm::IntelGPU::GPUKind K)
An Intel GPU, named by its entry in the TargetParser device list.
llvm::AMDGPU::GPUKind amdgpuKind() const
bool operator!=(const OffloadArch &Other) const
bool isAMDGCNSPIRV() const
TargetArch targetArch() const
static OffloadArch getAMDGPU(llvm::AMDGPU::GPUKind K)
static constexpr OffloadArch getIntelCPU()
Intel CPU offload, which has a single target, so no kind is needed.
Top level wrappers for InstallAPI frontend operations.
llvm::Triple::SubArchType getOffloadArchSubArch(OffloadArch ID)
OffloadArch getSubArchOffloadArch(llvm::Triple::SubArchType SubArch)
const FunctionProtoType * T
const char * OffloadArchToVirtualArchString(OffloadArch A)
OffloadArch StringToOffloadArch(llvm::StringRef S)
const char * OffloadArchToString(OffloadArch A)
llvm::Triple OffloadArchToTriple(const llvm::Triple &DefaultToolchainTriple, OffloadArch ID)
@ Other
Other implicit parameter.
Diagnostic wrappers for TextAPI types for error reporting.
__builtin_bitreverse32 uint32_t __builtin_riscv_aaddu_u32 __builtin_riscv_asubu_u32 __builtin_elementwise_add_sat __builtin_elementwise_sub_sat int32_t uint32_t uint32_t __builtin_riscv_mhacc_i32 __builtin_riscv_mhaccu_u32 __builtin_riscv_mhaccsu_i32 __builtin_riscv_mulq_i32 __builtin_riscv_mqwacc_i64 uint8_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