clang 24.0.0git
clang::OffloadArch Class Reference

A processor an offloading action can target. More...

#include "clang/Basic/OffloadArch.h"

Public Types

enum class  TargetArch : uint8_t {
  Unused , Unknown , NVPTX , AMDGPU ,
  AMDGCNSPIRV , IntelCPU , IntelGPU , IntelIGCA ,
  Generic
}

Public Member Functions

constexpr OffloadArch ()=default
TargetArch targetArch () const
bool isNVPTX () const
bool isAMDGPU () const
bool isAMDGCNSPIRV () const
bool isIntelCPU () const
bool isIntelGPU () const
bool isIntelIGCA () const
bool isIntel () const
bool isGeneric () const
bool isUnused () const
bool isUnknown () const
llvm::NVPTX::GPUKind nvptxKind () const
llvm::AMDGPU::GPUKind amdgpuKind () const
llvm::IntelGPU::GPUKind intelGPUKind () const
 Which Intel GPU this is; only meaningful when isIntelGPU().
llvm::IntelGPU::IGCATarget igcaTarget () const
 Which IGCA target this is; only valid when isIntelIGCA().
bool operator== (const OffloadArch &Other) const
bool operator!= (const OffloadArch &Other) const
bool operator< (const OffloadArch &Other) const

Static Public Member Functions

static OffloadArch getNVPTX (llvm::NVPTX::GPUKind K)
static OffloadArch getAMDGPU (llvm::AMDGPU::GPUKind K)
static OffloadArch getIntelGPU (llvm::IntelGPU::GPUKind K)
 An Intel GPU, named by its entry in the TargetParser device list.
static OffloadArch getIntelIGCA (llvm::IntelGPU::IGCATarget T)
 An Intel IGCA target, e.g. igca_20ca; T must be valid.
static constexpr OffloadArch getIntelCPU ()
 Intel CPU offload, which has a single target, so no kind is needed.
static constexpr OffloadArch getUnused ()
static constexpr OffloadArch getUnknown ()
static constexpr OffloadArch getAMDGCNSPIRV ()
static constexpr OffloadArch getGeneric ()
static OffloadArch CudaDefault ()
 Default architectures used when the user does not specify one.
static OffloadArch HIPDefault ()

Detailed Description

A processor an offloading action can target.

This is a tagged handle pairing a TargetArch with the matching TargetParser GPU kind; it does not enumerate individual GPUs, so new targets are added in the TargetParser data alone.

Definition at line 36 of file OffloadArch.h.

Member Enumeration Documentation

◆ TargetArch

Enumerator
Unused 
Unknown 
NVPTX 
AMDGPU 
AMDGCNSPIRV 
IntelCPU 
IntelGPU 
IntelIGCA 
Generic 

Definition at line 38 of file OffloadArch.h.

Constructor & Destructor Documentation

◆ OffloadArch()

clang::OffloadArch::OffloadArch ( )
constexprdefault

Member Function Documentation

◆ amdgpuKind()

llvm::AMDGPU::GPUKind clang::OffloadArch::amdgpuKind ( ) const
inline

Definition at line 104 of file OffloadArch.h.

Referenced by clang::OffloadArchToString().

◆ CudaDefault()

OffloadArch clang::OffloadArch::CudaDefault ( )
static

Default architectures used when the user does not specify one.

Definition at line 20 of file OffloadArch.cpp.

References getNVPTX().

Referenced by clang::driver::Driver::getOffloadArchs(), and clang::driver::toolchains::NVPTXToolChain::TranslateArgs().

◆ getAMDGCNSPIRV()

constexpr OffloadArch clang::OffloadArch::getAMDGCNSPIRV ( )
inlinestaticconstexpr

Definition at line 78 of file OffloadArch.h.

References AMDGCNSPIRV.

Referenced by clang::StringToOffloadArch().

◆ getAMDGPU()

OffloadArch clang::OffloadArch::getAMDGPU ( llvm::AMDGPU::GPUKind K)
inlinestatic

Definition at line 63 of file OffloadArch.h.

References AMDGPU, and uint32_t.

Referenced by clang::getSubArchOffloadArch(), HIPDefault(), and clang::StringToOffloadArch().

◆ getGeneric()

constexpr OffloadArch clang::OffloadArch::getGeneric ( )
inlinestaticconstexpr

Definition at line 81 of file OffloadArch.h.

References Generic.

Referenced by clang::driver::Driver::getOffloadArchs(), and clang::StringToOffloadArch().

◆ getIntelCPU()

constexpr OffloadArch clang::OffloadArch::getIntelCPU ( )
inlinestaticconstexpr

Intel CPU offload, which has a single target, so no kind is needed.

Definition at line 73 of file OffloadArch.h.

References IntelCPU.

Referenced by clang::StringToOffloadArch().

◆ getIntelGPU()

OffloadArch clang::OffloadArch::getIntelGPU ( llvm::IntelGPU::GPUKind K)
inlinestatic

An Intel GPU, named by its entry in the TargetParser device list.

Definition at line 67 of file OffloadArch.h.

References IntelGPU, and uint32_t.

Referenced by clang::StringToOffloadArch().

◆ getIntelIGCA()

OffloadArch clang::OffloadArch::getIntelIGCA ( llvm::IntelGPU::IGCATarget T)
static

An Intel IGCA target, e.g. igca_20ca; T must be valid.

Definition at line 28 of file OffloadArch.cpp.

References IntelIGCA, and clang::T.

Referenced by clang::StringToOffloadArch().

◆ getNVPTX()

OffloadArch clang::OffloadArch::getNVPTX ( llvm::NVPTX::GPUKind K)
inlinestatic

Definition at line 60 of file OffloadArch.h.

References NVPTX, and uint32_t.

Referenced by CudaDefault(), and clang::StringToOffloadArch().

◆ getUnknown()

constexpr OffloadArch clang::OffloadArch::getUnknown ( )
inlinestaticconstexpr

◆ getUnused()

constexpr OffloadArch clang::OffloadArch::getUnused ( )
inlinestaticconstexpr

◆ HIPDefault()

OffloadArch clang::OffloadArch::HIPDefault ( )
static

Definition at line 24 of file OffloadArch.cpp.

References getAMDGPU().

Referenced by clang::driver::Driver::getOffloadArchs().

◆ igcaTarget()

llvm::IntelGPU::IGCATarget clang::OffloadArch::igcaTarget ( ) const

Which IGCA target this is; only valid when isIntelIGCA().

Definition at line 33 of file OffloadArch.cpp.

References isIntelIGCA().

Referenced by clang::OffloadArchToString(), and clang::OffloadArchToVirtualArchString().

◆ intelGPUKind()

llvm::IntelGPU::GPUKind clang::OffloadArch::intelGPUKind ( ) const
inline

Which Intel GPU this is; only meaningful when isIntelGPU().

Definition at line 108 of file OffloadArch.h.

Referenced by clang::OffloadArchToString().

◆ isAMDGCNSPIRV()

bool clang::OffloadArch::isAMDGCNSPIRV ( ) const
inline

Definition at line 91 of file OffloadArch.h.

References AMDGCNSPIRV.

Referenced by clang::MaxVersionForOffloadArch(), and clang::MinVersionForOffloadArch().

◆ isAMDGPU()

bool clang::OffloadArch::isAMDGPU ( ) const
inline

Definition at line 90 of file OffloadArch.h.

References AMDGPU.

Referenced by clang::MaxVersionForOffloadArch(), and clang::MinVersionForOffloadArch().

◆ isGeneric()

bool clang::OffloadArch::isGeneric ( ) const
inline

Definition at line 96 of file OffloadArch.h.

References Generic.

◆ isIntel()

bool clang::OffloadArch::isIntel ( ) const
inline

Definition at line 95 of file OffloadArch.h.

References isIntelCPU(), isIntelGPU(), and isIntelIGCA().

◆ isIntelCPU()

bool clang::OffloadArch::isIntelCPU ( ) const
inline

Definition at line 92 of file OffloadArch.h.

References IntelCPU.

Referenced by isIntel().

◆ isIntelGPU()

bool clang::OffloadArch::isIntelGPU ( ) const
inline

Definition at line 93 of file OffloadArch.h.

References IntelGPU.

Referenced by isIntel().

◆ isIntelIGCA()

bool clang::OffloadArch::isIntelIGCA ( ) const
inline

Definition at line 94 of file OffloadArch.h.

References IntelIGCA.

Referenced by igcaTarget(), and isIntel().

◆ isNVPTX()

bool clang::OffloadArch::isNVPTX ( ) const
inline

Definition at line 89 of file OffloadArch.h.

References NVPTX.

Referenced by clang::MaxVersionForOffloadArch().

◆ isUnknown()

◆ isUnused()

bool clang::OffloadArch::isUnused ( ) const
inline

Definition at line 97 of file OffloadArch.h.

References Unused.

◆ nvptxKind()

llvm::NVPTX::GPUKind clang::OffloadArch::nvptxKind ( ) const
inline

◆ operator!=()

bool clang::OffloadArch::operator!= ( const OffloadArch & Other) const
inline

Definition at line 117 of file OffloadArch.h.

References clang::Other.

◆ operator<()

bool clang::OffloadArch::operator< ( const OffloadArch & Other) const
inline

Definition at line 119 of file OffloadArch.h.

References clang::Other.

◆ operator==()

bool clang::OffloadArch::operator== ( const OffloadArch & Other) const
inline

Definition at line 114 of file OffloadArch.h.

References clang::Other.

◆ targetArch()

TargetArch clang::OffloadArch::targetArch ( ) const
inline

The documentation for this class was generated from the following files: