LLVM 23.0.0git
AMDGPUTargetParser.cpp File Reference
#include "llvm/TargetParser/AMDGPUTargetParser.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/ADT/Twine.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/TargetParser/Triple.h"
#include "llvm/TargetParser/AMDGPUTargetParser.def"

Go to the source code of this file.

Macros

#define AMDGCN_GPU(NAME, ENUM, SUBARCH, ISAVERSION, FEATURES)
#define AMDGCN_GPU(NAME, ENUM, SUBARCH, ISAVERSION, FEATURES)
#define AMDGCN_GPU(NAME, ENUM, SUBARCH, ISAVERSION, FEATURES)
#define R600_GPU(NAME, ENUM, FEATURES)
#define AMDGCN_GPU(NAME, ENUM, SUBARCH, ISAVERSION, FEATURES)
#define AMDGCN_GPU_ALIAS(NAME, ENUM)
#define R600_GPU(NAME, ENUM, FEATURES)
#define R600_GPU_ALIAS(NAME, ENUM)
#define AMDGCN_GPU(NAME, ENUM, SUBARCH, ISAVERSION, FEATURES)
#define AMDGCN_GPU(NAME, ENUM, SUBARCH, ISAVERSION, FEATURES)
#define R600_GPU(NAME, ENUM, FEATURES)
#define AMDGCN_GPU(NAME, ENUM, SUBARCH, ISAVERSION, FEATURES)
#define AMDGCN_GPU_ALIAS(NAME, ENUM)
#define R600_GPU(NAME, ENUM, FEATURES)
#define R600_GPU_ALIAS(NAME, ENUM)
#define MAKE_ISAVERSION(A, B, C)
#define AMDGCN_GPU(NAME, ENUM, SUBARCH, ISAVERSION, FEATURES)
#define MAKE_ISAVERSION(A, B, C)
#define AMDGCN_GPU(NAME, ENUM, SUBARCH, ISAVERSION, FEATURES)

Functions

static std::pair< FeatureError, StringRefinsertWaveSizeFeature (StringRef GPU, const Triple &T, const StringMap< bool > &DefaultFeatures, StringMap< bool > &Features)
static void fillAMDGCNFeatureMap (StringRef GPU, const Triple &T, StringMap< bool > &Features)
 Fills Features map with default values for given target GPU.
static TargetIDSetting getTargetIDSettingFromFeatureString (StringRef FeatureString)
static GPUKind getGPUKindFromTargetID (const Triple &TT, StringRef TargetIDStr)
static bool areFeatureSettingsCompatible (TargetIDSetting A, TargetIDSetting B)

Variables

static const Triple::SubArchType AMDGPUMajorFamilies [Triple::LastAMDGPUSubArch - Triple::FirstAMDGPUSubArch+1]
static const StringLiteral AMDGPUSubArchNames [Triple::LastAMDGPUSubArch - Triple::FirstAMDGPUSubArch+1]

Macro Definition Documentation

◆ AMDGCN_GPU [1/9]

#define AMDGCN_GPU ( NAME,
ENUM,
SUBARCH,
ISAVERSION,
FEATURES )
Value:
case ENUM: \
return SUBARCH;
#define ENUM(Name,...)
Definition ClauseT.h:60

◆ AMDGCN_GPU [2/9]

#define AMDGCN_GPU ( NAME,
ENUM,
SUBARCH,
ISAVERSION,
FEATURES )
Value:
case SUBARCH: \
return ENUM;

◆ AMDGCN_GPU [3/9]

#define AMDGCN_GPU ( NAME,
ENUM,
SUBARCH,
ISAVERSION,
FEATURES )
Value:
case ENUM: \
return NAME;

◆ AMDGCN_GPU [4/9]

#define AMDGCN_GPU ( NAME,
ENUM,
SUBARCH,
ISAVERSION,
FEATURES )
Value:
.Case(NAME, ENUM)

◆ AMDGCN_GPU [5/9]

#define AMDGCN_GPU ( NAME,
ENUM,
SUBARCH,
ISAVERSION,
FEATURES )
Value:
case ENUM: \
return FEATURES;

◆ AMDGCN_GPU [6/9]

#define AMDGCN_GPU ( NAME,
ENUM,
SUBARCH,
ISAVERSION,
FEATURES )
Value:
case SUBARCH: \
return FEATURES;

◆ AMDGCN_GPU [7/9]

#define AMDGCN_GPU ( NAME,
ENUM,
SUBARCH,
ISAVERSION,
FEATURES )
Value:
if (isCPUValidForSubArch(SubArch, ENUM)) \
Values.push_back(NAME);
LLVM_ABI bool isCPUValidForSubArch(Triple::SubArchType SubArch, GPUKind AK)
Return true if the GPU AK is usable with the triple subarch SubArch.
RelativeUniformCounterPtr Values
Definition InstrProf.h:91

◆ AMDGCN_GPU [8/9]

#define AMDGCN_GPU ( NAME,
ENUM,
SUBARCH,
ISAVERSION,
FEATURES )
Value:
case ENUM: \
return MAKE_ISAVERSION ISAVERSION;
#define MAKE_ISAVERSION(A, B, C)

◆ AMDGCN_GPU [9/9]

#define AMDGCN_GPU ( NAME,
ENUM,
SUBARCH,
ISAVERSION,
FEATURES )
Value:
case SUBARCH: \
return MAKE_ISAVERSION ISAVERSION;

◆ AMDGCN_GPU_ALIAS [1/2]

#define AMDGCN_GPU_ALIAS ( NAME,
ENUM )
Value:
.Case(NAME, ENUM)

◆ AMDGCN_GPU_ALIAS [2/2]

#define AMDGCN_GPU_ALIAS ( NAME,
ENUM )
Value:
if (isCPUValidForSubArch(SubArch, ENUM)) \
Values.push_back(NAME);

◆ MAKE_ISAVERSION [1/2]

#define MAKE_ISAVERSION ( A,
B,
C )
Value:
{A, B, C}
static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
@ C
The default llvm calling convention, compatible with C.
Definition CallingConv.h:34

◆ MAKE_ISAVERSION [2/2]

#define MAKE_ISAVERSION ( A,
B,
C )
Value:
{A, B, C}

◆ R600_GPU [1/4]

#define R600_GPU ( NAME,
ENUM,
FEATURES )
Value:
case ENUM: \
return NAME;

◆ R600_GPU [2/4]

#define R600_GPU ( NAME,
ENUM,
FEATURES )
Value:
.Case(NAME, ENUM)

◆ R600_GPU [3/4]

#define R600_GPU ( NAME,
ENUM,
FEATURES )
Value:
case ENUM: \
return FEATURES;

◆ R600_GPU [4/4]

#define R600_GPU ( NAME,
ENUM,
FEATURES )
Value:
NAME,

◆ R600_GPU_ALIAS [1/2]

#define R600_GPU_ALIAS ( NAME,
ENUM )
Value:
.Case(NAME, ENUM)

◆ R600_GPU_ALIAS [2/2]

#define R600_GPU_ALIAS ( NAME,
ENUM )
Value:
NAME,

Function Documentation

◆ areFeatureSettingsCompatible()

bool areFeatureSettingsCompatible ( TargetIDSetting A,
TargetIDSetting B )
static

Definition at line 1003 of file AMDGPUTargetParser.cpp.

References A(), and B().

Referenced by llvm::AMDGPU::TargetID::isCompatibleWith().

◆ fillAMDGCNFeatureMap()

void fillAMDGCNFeatureMap ( StringRef GPU,
const Triple & T,
StringMap< bool > & Features )
static

Fills Features map with default values for given target GPU.

Features contains overriding target features and this function returns default target features with entries overridden by Features.

Definition at line 428 of file AMDGPUTargetParser.cpp.

References llvm::AMDGPU::GK_NONE, llvm_unreachable, llvm::AMDGPU::parseArchAMDGCN(), and T.

Referenced by llvm::AMDGPU::fillAMDGPUFeatureMap().

◆ getGPUKindFromTargetID()

◆ getTargetIDSettingFromFeatureString()

TargetIDSetting getTargetIDSettingFromFeatureString ( StringRef FeatureString)
static

◆ insertWaveSizeFeature()

Variable Documentation

◆ AMDGPUMajorFamilies

const Triple::SubArchType AMDGPUMajorFamilies[Triple::LastAMDGPUSubArch - Triple::FirstAMDGPUSubArch+ 1]
static

Definition at line 60 of file AMDGPUTargetParser.cpp.

Referenced by llvm::AMDGPU::getMajorSubArch().

◆ AMDGPUSubArchNames

const StringLiteral AMDGPUSubArchNames[Triple::LastAMDGPUSubArch - Triple::FirstAMDGPUSubArch+1]
static