33 constexpr GPUInfo R600GPUs[26] = {
37 {{
"rv630"}, {
"r600"},
GK_R600, FEATURE_NONE },
38 {{
"rv635"}, {
"r600"},
GK_R600, FEATURE_NONE },
39 {{
"r630"}, {
"r630"},
GK_R630, FEATURE_NONE },
40 {{
"rs780"}, {
"rs880"},
GK_RS880, FEATURE_NONE },
41 {{
"rs880"}, {
"rs880"},
GK_RS880, FEATURE_NONE },
42 {{
"rv610"}, {
"rs880"},
GK_RS880, FEATURE_NONE },
43 {{
"rv620"}, {
"rs880"},
GK_RS880, FEATURE_NONE },
44 {{
"rv670"}, {
"rv670"},
GK_RV670, FEATURE_NONE },
45 {{
"rv710"}, {
"rv710"},
GK_RV710, FEATURE_NONE },
46 {{
"rv730"}, {
"rv730"},
GK_RV730, FEATURE_NONE },
47 {{
"rv740"}, {
"rv770"},
GK_RV770, FEATURE_NONE },
48 {{
"rv770"}, {
"rv770"},
GK_RV770, FEATURE_NONE },
49 {{
"cedar"}, {
"cedar"},
GK_CEDAR, FEATURE_NONE },
50 {{
"palm"}, {
"cedar"},
GK_CEDAR, FEATURE_NONE },
52 {{
"hemlock"}, {
"cypress"},
GK_CYPRESS, FEATURE_FMA },
53 {{
"juniper"}, {
"juniper"},
GK_JUNIPER, FEATURE_NONE },
54 {{
"redwood"}, {
"redwood"},
GK_REDWOOD, FEATURE_NONE },
55 {{
"sumo"}, {
"sumo"},
GK_SUMO, FEATURE_NONE },
56 {{
"sumo2"}, {
"sumo"},
GK_SUMO, FEATURE_NONE },
57 {{
"barts"}, {
"barts"},
GK_BARTS, FEATURE_NONE },
58 {{
"caicos"}, {
"caicos"},
GK_CAICOS, FEATURE_NONE },
59 {{
"aruba"}, {
"cayman"},
GK_CAYMAN, FEATURE_FMA },
60 {{
"cayman"}, {
"cayman"},
GK_CAYMAN, FEATURE_FMA },
61 {{
"turks"}, {
"turks"},
GK_TURKS, FEATURE_NONE }
66 constexpr GPUInfo AMDGCNGPUs[33] = {
70 {{
"tahiti"}, {
"gfx600"},
GK_GFX600, FEATURE_FAST_FMA_F32},
71 {{
"gfx601"}, {
"gfx601"},
GK_GFX601, FEATURE_NONE},
72 {{
"hainan"}, {
"gfx601"},
GK_GFX601, FEATURE_NONE},
73 {{
"oland"}, {
"gfx601"},
GK_GFX601, FEATURE_NONE},
74 {{
"pitcairn"}, {
"gfx601"},
GK_GFX601, FEATURE_NONE},
75 {{
"verde"}, {
"gfx601"},
GK_GFX601, FEATURE_NONE},
76 {{
"gfx700"}, {
"gfx700"},
GK_GFX700, FEATURE_NONE},
77 {{
"kaveri"}, {
"gfx700"},
GK_GFX700, FEATURE_NONE},
78 {{
"gfx701"}, {
"gfx701"},
GK_GFX701, FEATURE_FAST_FMA_F32},
79 {{
"hawaii"}, {
"gfx701"},
GK_GFX701, FEATURE_FAST_FMA_F32},
80 {{
"gfx702"}, {
"gfx702"},
GK_GFX702, FEATURE_FAST_FMA_F32},
81 {{
"gfx703"}, {
"gfx703"},
GK_GFX703, FEATURE_NONE},
82 {{
"kabini"}, {
"gfx703"},
GK_GFX703, FEATURE_NONE},
83 {{
"mullins"}, {
"gfx703"},
GK_GFX703, FEATURE_NONE},
84 {{
"gfx704"}, {
"gfx704"},
GK_GFX704, FEATURE_NONE},
85 {{
"bonaire"}, {
"gfx704"},
GK_GFX704, FEATURE_NONE},
89 {{
"iceland"}, {
"gfx802"},
GK_GFX802, FEATURE_FAST_DENORMAL_F32},
90 {{
"tonga"}, {
"gfx802"},
GK_GFX802, FEATURE_FAST_DENORMAL_F32},
91 {{
"gfx803"}, {
"gfx803"},
GK_GFX803, FEATURE_FAST_DENORMAL_F32},
92 {{
"fiji"}, {
"gfx803"},
GK_GFX803, FEATURE_FAST_DENORMAL_F32},
93 {{
"polaris10"}, {
"gfx803"},
GK_GFX803, FEATURE_FAST_DENORMAL_F32},
94 {{
"polaris11"}, {
"gfx803"},
GK_GFX803, FEATURE_FAST_DENORMAL_F32},
95 {{
"gfx810"}, {
"gfx810"},
GK_GFX810, FEATURE_FAST_DENORMAL_F32},
96 {{
"stoney"}, {
"gfx810"},
GK_GFX810, FEATURE_FAST_DENORMAL_F32},
97 {{
"gfx900"}, {
"gfx900"},
GK_GFX900, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32},
98 {{
"gfx902"}, {
"gfx902"},
GK_GFX902, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32},
99 {{
"gfx904"}, {
"gfx904"},
GK_GFX904, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32},
100 {{
"gfx906"}, {
"gfx906"},
GK_GFX906, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32},
101 {{
"gfx909"}, {
"gfx909"},
GK_GFX909, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32},
108 [](
const GPUInfo &
A,
const GPUInfo &
B) {
109 return A.Kind <
B.Kind;
112 if (
I == Table.
end())
120 if (
const auto *Entry = getArchEntry(AK, AMDGCNGPUs))
121 return Entry->CanonicalName;
126 if (
const auto *Entry = getArchEntry(AK, R600GPUs))
127 return Entry->CanonicalName;
132 for (
const auto C : AMDGCNGPUs) {
141 for (
const auto C : R600GPUs) {
150 if (
const auto *Entry = getArchEntry(AK, AMDGCNGPUs))
151 return Entry->Features;
156 if (
const auto *Entry = getArchEntry(AK, R600GPUs))
157 return Entry->Features;
163 for (
const auto C : AMDGCNGPUs)
168 for (
const auto C : R600GPUs)
173 if (GPU ==
"generic")
197 default:
return {0, 0, 0};
StringRef getArchNameR600(GPUKind AK)
This class represents lattice values for constants.
void push_back(const T &Elt)
const FeatureBitset Features
Instruction set architecture version.
void fillValidArchListAMDGCN(SmallVectorImpl< StringRef > &Values)
amdgpu Simplify well known AMD library false Value Value const Twine & Name
StringRef getArchNameAMDGCN(GPUKind AK)
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory)...
auto lower_bound(R &&Range, ForwardIt I) -> decltype(adl_begin(Range))
Provide wrappers to std::lower_bound which take ranges instead of having to pass begin/end explicitly...
unsigned getArchAttrR600(GPUKind AK)
A wrapper around a string literal that serves as a proxy for constructing global tables of StringRefs...
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
void fillValidArchListR600(SmallVectorImpl< StringRef > &Values)
GPUKind
GPU kinds supported by the AMDGPU target.
GPUKind parseArchAMDGCN(StringRef CPU)
unsigned getArchAttrAMDGCN(GPUKind AK)
IsaVersion getIsaVersion(StringRef GPU)
StringRef - Represent a constant reference to a string, i.e.
GPUKind parseArchR600(StringRef CPU)