class AMDGPUTargetInfo

Declaration

class AMDGPUTargetInfo : public TargetInfo { /* full declaration omitted */ };

Description

Exposes information about the current target.

Declared at: clang/lib/Basic/Targets/AMDGPU.h:27

Inherits from: TargetInfo

Member Variables

private llvm::AMDGPU::GPUKind GPUKind
private unsigned int GPUFeatures
private unsigned int WavefrontSize
private llvm::StringMap<bool> OffloadArchFeatures
Target ID is device name followed by optional feature name postfixed by plus or minus sign delimitted by colon, e.g. gfx908:xnack+:sramecc-. If the target ID contains feature+, map it to true. If the target ID contains feature-, map it to false. If the target ID does not contain a feature (default), do not map it.
private std::string TargetID
private static const Builtin::Info[] BuiltinInfo
private static const char* const[] GCCRegNames
private static const clang::LangASMap AMDGPUDefIsGenMap
private static const clang::LangASMap AMDGPUDefIsPrivMap

Inherited from TargetInfo:

protected BigEndian
protected TLSSupported
protected VLASupported
protected NoAsmVariants
protected HasLegalHalfType
protected HasFloat128
protected HasFloat16
protected HasBFloat16
protected HasIbm128
protected HasLongDouble
protected HasFPReturn
protected HasStrictFP
protected MaxAtomicPromoteWidth
protected MaxAtomicInlineWidth
protected SimdDefaultAlign
protected DataLayoutString
protected UserLabelPrefix
protected MCountName
protected RegParmMax
protected SSERegParmMax
protected TheCXXABI
protected AddrSpaceMap
protected ProgramAddrSpace
protected PlatformName
protected PlatformMinVersion
protected HasAlignMac68kSupport
protected RealTypeUsesObjCFPRetMask
protected ComplexLongDoubleUsesFP2Ret
protected HasBuiltinMSVaList
protected IsRenderScriptTarget
protected HasAArch64SVETypes
protected HasRISCVVTypes
protected AllowAMDGPUUnsafeFPAtomics
protected ARMCDECoprocMask
protected MaxOpenCLWorkGroupSize
protected MaxBitIntWidth
protected DarwinTargetVariantTriple
protected UseAddrSpaceMapMangling

Inherited from TransferrableTargetInfo:

public PointerWidth
public PointerAlign
public BoolWidth
public BoolAlign
public IntWidth
public IntAlign
public HalfWidth
public HalfAlign
public BFloat16Width
public BFloat16Align
public FloatWidth
public FloatAlign
public DoubleWidth
public DoubleAlign
public LongDoubleWidth
public LongDoubleAlign
public Float128Align
public Ibm128Align
public LargeArrayMinWidth
public LargeArrayAlign
public LongWidth
public LongAlign
public LongLongWidth
public LongLongAlign
public ShortAccumWidth
public ShortAccumAlign
public AccumWidth
public AccumAlign
public LongAccumWidth
public LongAccumAlign
public ShortFractWidth
public ShortFractAlign
public FractWidth
public FractAlign
public LongFractWidth
public LongFractAlign
public PaddingOnUnsignedFixedPoint
public ShortAccumScale
public AccumScale
public LongAccumScale
public DefaultAlignForAttributeAligned
public MinGlobalAlign
public SuitableAlign
public NewAlign
public MaxVectorAlign
public MaxTLSAlign
public HalfFormat
public BFloat16Format
public FloatFormat
public DoubleFormat
public LongDoubleFormat
public Float128Format
public Ibm128Format
protected SizeType
protected IntMaxType
protected PtrDiffType
protected IntPtrType
protected WCharType
protected WIntType
protected Char16Type
protected Char32Type
protected Int64Type
protected Int16Type
protected SigAtomicType
protected ProcessIDType
protected UseSignedCharForObjCBool
protected UseBitFieldTypeAlignment
protected UseZeroLengthBitfieldAlignment
protected UseLeadingZeroLengthBitfield
protected UseExplicitBitFieldAlignment
protected ZeroLengthBitfieldBoundary
protected MaxAlignedAttribute

Method Overview

Inherited from TargetInfo:

Methods

AMDGPUTargetInfo(const llvm::Triple& Triple,
                 const clang::TargetOptions& Opts)

Declared at: clang/lib/Basic/Targets/AMDGPU.h:92

Parameters

const llvm::Triple& Triple
const clang::TargetOptions& Opts

void adjust(clang::DiagnosticsEngine& Diags,
            clang::LangOptions& Opts)

Description

Set forced language options. Apply changes to the target information with respect to certain language options which change the target configuration and adjust the language based on the target options where applicable.

Declared at: clang/lib/Basic/Targets/AMDGPU.h:96

Parameters

clang::DiagnosticsEngine& Diags
clang::LangOptions& Opts

clang::TargetInfo::CallingConvCheckResult
checkCallingConvention(
    clang::CallingConv CC) const

Description

Determines whether a given calling convention is valid for the target. A calling convention can either be accepted, produce a warning and be substituted with the default calling convention, or (someday) produce an error (such as using thiscall on a non-instance function).

Declared at: clang/lib/Basic/Targets/AMDGPU.h:408

Parameters

clang::CallingConv CC

std::string convertConstraint(
    const char*& Constraint) const

Declared at: clang/lib/Basic/Targets/AMDGPU.h:233

Parameters

const char*& Constraint

void fillValidCPUList(
    SmallVectorImpl<llvm::StringRef>& Values)
    const

Description

Fill a SmallVectorImpl with the valid values to setCPU.

Declared at: clang/lib/Basic/Targets/AMDGPU.h:271

Parameters

SmallVectorImpl<llvm::StringRef>& Values

clang::TargetInfo::BuiltinVaListKind
getBuiltinVaListKind() const

Description

Returns the kind of __builtin_va_list type that should be used with this target.

Declared at: clang/lib/Basic/Targets/AMDGPU.h:261

clang::LangAS getCUDABuiltinAddressSpace(
    unsigned int AS) const

Description

Map from the address space field in builtin description strings to the language address space.

Declared at: clang/lib/Basic/Targets/AMDGPU.h:354

Parameters

unsigned int AS

const char* getClobbers() const

Description

Returns a string of target-specific clobbers, in LLVM format.

Declared at: clang/lib/Basic/Targets/AMDGPU.h:116

llvm::Optional<LangAS> getConstantAddressSpace()
    const

Description

Return an AST address space which can be used opportunistically for constant global memory. It must be possible to convert pointers into this address space to LangAS::Default. If no such address space exists, this may return None, and such optimizations will be disabled.

Declared at: clang/lib/Basic/Targets/AMDGPU.h:369

Optional<unsigned int> getDWARFAddressSpace(
    unsigned int AddressSpace) const

Declared at: clang/lib/Basic/Targets/AMDGPU.h:396

Parameters

unsigned int AddressSpace

Returns

Otherwise return None and no conversion will be emitted in the DWARF.

ArrayRef<TargetInfo::GCCRegAlias>
getGCCRegAliases() const

Declared at: clang/lib/Basic/Targets/AMDGPU.h:120

ArrayRef<const char*> getGCCRegNames() const

Declared at: clang/lib/Basic/Targets/AMDGPU.h:118

const llvm::omp::GV& getGridValue() const

Declared at: clang/lib/Basic/Targets/AMDGPU.h:373

uint64_t getMaxPointerWidth() const

Description

Return the maximum width of pointers on this target.

Declared at: clang/lib/Basic/Targets/AMDGPU.h:112

uint64_t getNullPointerValue(
    clang::LangAS AS) const

Description

Get integer value for null pointer.

Declared at: clang/lib/Basic/Targets/AMDGPU.h:422

Parameters

clang::LangAS AS

clang::LangAS getOpenCLBuiltinAddressSpace(
    unsigned int AS) const

Description

Map from the address space field in builtin description strings to the language address space.

Declared at: clang/lib/Basic/Targets/AMDGPU.h:337

Parameters

unsigned int AS

clang::LangAS getOpenCLTypeAddrSpace(
    clang::OpenCLTypeKind TK) const

Description

Get address space for OpenCL type.

Declared at: clang/lib/Basic/Targets/AMDGPU.h:322

Parameters

clang::OpenCLTypeKind TK

uint64_t getPointerAlignV(
    unsigned int AddrSpace) const

Declared at: clang/lib/Basic/Targets/AMDGPU.h:108

Parameters

unsigned int AddrSpace

uint64_t getPointerWidthV(
    unsigned int AddrSpace) const

Declared at: clang/lib/Basic/Targets/AMDGPU.h:98

Parameters

unsigned int AddrSpace

ArrayRef<Builtin::Info> getTargetBuiltins() const

Description

Return information about target-specific builtins for the current primary target, and info about which builtins are non-portable across the current set of primary and secondary targets.

Declared at: clang/lib/Basic/Targets/AMDGPU.h:254

void getTargetDefines(
    const clang::LangOptions& Opts,
    clang::MacroBuilder& Builder) const

Description

Appends the target-specific # define values for this target set to the specified buffer.

Declared at: clang/lib/Basic/Targets/AMDGPU.h:258

Parameters

const clang::LangOptions& Opts
clang::MacroBuilder& Builder

Optional<std::string> getTargetID() const

Description

Returns the target ID if supported.

Declared at: clang/lib/Basic/Targets/AMDGPU.h:452

unsigned int getVtblPtrAddressSpace() const

Declared at: clang/lib/Basic/Targets/AMDGPU.h:385

Returns

Target specific vtbl ptr address space.

bool handleTargetFeatures(
    std::vector<std::string>& Features,
    clang::DiagnosticsEngine& Diags)

Description

Perform initialization based on the user configured set of features (e.g., +sse4). The list is guaranteed to have at most one entry per feature. The target may modify the features list, to change which options are passed onwards to the backend. FIXME: This part should be fixed so that we can change handleTargetFeatures to merely a TargetInfo initialization routine.

Declared at: clang/lib/Basic/Targets/AMDGPU.h:434

Parameters

std::vector<std::string>& Features
clang::DiagnosticsEngine& Diags

Returns

False on error.

bool hasBitIntType() const

Description

Determine whether the _BitInt type is supported on this target. This limitation is put into place for ABI reasons. FIXME: _BitInt is a required type in C23, so there's not much utility in asking whether the target supported it or not; I think this should be removed once backends have been alerted to the type and have had the chance to do implementation work if needed.

Declared at: clang/lib/Basic/Targets/AMDGPU.h:430

bool hasFMAF() const

Declared at: clang/lib/Basic/Targets/AMDGPU.h:69

bool hasFP64() const

Declared at: clang/lib/Basic/Targets/AMDGPU.h:54

bool hasFastFMA() const

Description

Has fast fma f64

Declared at: clang/lib/Basic/Targets/AMDGPU.h:65

bool hasFastFMAF() const

Description

Has fast fma f32

Declared at: clang/lib/Basic/Targets/AMDGPU.h:60

bool hasFullRateDenormalsF32() const

Declared at: clang/lib/Basic/Targets/AMDGPU.h:74

bool hasLDEXPF() const

Declared at: clang/lib/Basic/Targets/AMDGPU.h:78

bool initFeatureMap(
    llvm::StringMap<bool>& Features,
    clang::DiagnosticsEngine& Diags,
    llvm::StringRef CPU,
    const std::vector<std::string>& FeatureVec)
    const

Description

Initialize the map with the default set of target features for the CPU this should include all legal feature strings on the target.

Declared at: clang/lib/Basic/Targets/AMDGPU.h:250

Parameters

llvm::StringMap<bool>& Features
clang::DiagnosticsEngine& Diags
llvm::StringRef CPU
const std::vector<std::string>& FeatureVec

Returns

False on error (invalid features).

static bool isAMDGCN(const llvm::Triple& TT)

Declared at: clang/lib/Basic/Targets/AMDGPU.h:83

Parameters

const llvm::Triple& TT

static bool isR600(const llvm::Triple& TT)

Declared at: clang/lib/Basic/Targets/AMDGPU.h:87

Parameters

const llvm::Triple& TT

bool isValidCPUName(llvm::StringRef Name) const

Description

brief Determine whether this TargetInfo supports the given CPU name.

Declared at: clang/lib/Basic/Targets/AMDGPU.h:265

Parameters

llvm::StringRef Name

void setAddressSpaceMap(bool DefaultIsPrivate)

Declared at: clang/lib/Basic/Targets/AMDGPU.h:94

Parameters

bool DefaultIsPrivate

void setAuxTarget(const clang::TargetInfo* Aux)

Declared at: clang/lib/Basic/Targets/AMDGPU.h:428

Parameters

const clang::TargetInfo* Aux

bool setCPU(const std::string& Name)

Description

Target the specified CPU.

Declared at: clang/lib/Basic/Targets/AMDGPU.h:273

Parameters

const std::string& Name

Returns

False on error (invalid CPU name).

void setSupportedOpenCLOpts()

Description

Set supported OpenCL extensions and optional core features.

Declared at: clang/lib/Basic/Targets/AMDGPU.h:285

bool useFP16ConversionIntrinsics() const

Description

Check whether llvm intrinsics such as llvm.convert.to.fp16 should be used to convert to and from __fp16. FIXME: This function should be removed once all targets stop using the conversion intrinsics.

Declared at: clang/lib/Basic/Targets/AMDGPU.h:256

bool validateAsmConstraint(
    const char*& Name,
    TargetInfo::ConstraintInfo& Info) const

Description

Accepted register names: (n, m is unsigned integer, n < m) v s a {vn}, {v[n]} {sn}, {s[n]} {an}, {a[n]} {S} , where S is a special register name /{v[n:m]} {s[n:m]} {a[n:m]}

Declared at: clang/lib/Basic/Targets/AMDGPU.h:135

Parameters

const char*& Name
TargetInfo::ConstraintInfo& Info