1//===- AMDGPUTargetParser.def - AMDGPU target parsing defines ---*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This file provides defines to build up the AMDGPU target parser's logic.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef R600_GPU
14#define R600_GPU(NAME, ENUM, FEATURES)
15#endif
16
17#ifndef R600_GPU_ALIAS
18#define R600_GPU_ALIAS(NAME, ENUM)
19#endif
20
21R600_GPU ("r600", GK_R600, FEATURE_NONE)
22R600_GPU_ALIAS("rv630", GK_R600)
23R600_GPU_ALIAS("rv635", GK_R600)
24R600_GPU ("r630", GK_R630, FEATURE_NONE)
25R600_GPU_ALIAS("rs780", GK_RS880)
26R600_GPU ("rs880", GK_RS880, FEATURE_NONE)
27R600_GPU_ALIAS("rv610", GK_RS880)
28R600_GPU_ALIAS("rv620", GK_RS880)
29R600_GPU ("rv670", GK_RV670, FEATURE_NONE)
30R600_GPU ("rv710", GK_RV710, FEATURE_NONE)
31R600_GPU ("rv730", GK_RV730, FEATURE_NONE)
32R600_GPU_ALIAS("rv740", GK_RV770)
33R600_GPU ("rv770", GK_RV770, FEATURE_NONE)
34R600_GPU ("cedar", GK_CEDAR, FEATURE_NONE)
35R600_GPU_ALIAS("palm", GK_CEDAR)
36R600_GPU ("cypress", GK_CYPRESS, FEATURE_FMA)
37R600_GPU_ALIAS("hemlock", GK_CYPRESS)
38R600_GPU ("juniper", GK_JUNIPER, FEATURE_NONE)
39R600_GPU ("redwood", GK_REDWOOD, FEATURE_NONE)
40R600_GPU ("sumo", GK_SUMO, FEATURE_NONE)
41R600_GPU_ALIAS("sumo2", GK_SUMO)
42R600_GPU ("barts", GK_BARTS, FEATURE_NONE)
43R600_GPU ("caicos", GK_CAICOS, FEATURE_NONE)
44R600_GPU_ALIAS("aruba", GK_CAYMAN)
45R600_GPU ("cayman", GK_CAYMAN, FEATURE_FMA)
46R600_GPU ("turks", GK_TURKS, FEATURE_NONE)
47
48#undef R600_GPU
49#undef R600_GPU_ALIAS
50
51#ifndef AMDGCN_GPU
52#define AMDGCN_GPU(NAME, ENUM, ISAVERSION, FEATURES)
53#endif
54
55#ifndef AMDGCN_GPU_ALIAS
56#define AMDGCN_GPU_ALIAS(NAME, ENUM)
57#endif
58
59// Don't bother listing the implicitly true features
60AMDGCN_GPU ("gfx600", GK_GFX600, ( 6, 0, 0), FEATURE_FAST_FMA_F32)
61AMDGCN_GPU_ALIAS("tahiti", GK_GFX600)
62AMDGCN_GPU ("gfx601", GK_GFX601, ( 6, 0, 1), FEATURE_NONE)
63AMDGCN_GPU_ALIAS("pitcairn", GK_GFX601)
64AMDGCN_GPU_ALIAS("verde", GK_GFX601)
65AMDGCN_GPU ("gfx602", GK_GFX602, ( 6, 0, 2), FEATURE_NONE)
66AMDGCN_GPU_ALIAS("hainan", GK_GFX602)
67AMDGCN_GPU_ALIAS("oland", GK_GFX602)
68AMDGCN_GPU ("gfx700", GK_GFX700, ( 7, 0, 0), FEATURE_NONE)
69AMDGCN_GPU_ALIAS("kaveri", GK_GFX700)
70AMDGCN_GPU ("gfx701", GK_GFX701, ( 7, 0, 1), FEATURE_FAST_FMA_F32)
71AMDGCN_GPU_ALIAS("hawaii", GK_GFX701)
72AMDGCN_GPU ("gfx702", GK_GFX702, ( 7, 0, 2), FEATURE_FAST_FMA_F32)
73AMDGCN_GPU ("gfx703", GK_GFX703, ( 7, 0, 3), FEATURE_NONE)
74AMDGCN_GPU_ALIAS("kabini", GK_GFX703)
75AMDGCN_GPU_ALIAS("mullins", GK_GFX703)
76AMDGCN_GPU ("gfx704", GK_GFX704, ( 7, 0, 4), FEATURE_NONE)
77AMDGCN_GPU_ALIAS("bonaire", GK_GFX704)
78AMDGCN_GPU ("gfx705", GK_GFX705, ( 7, 0, 5), FEATURE_NONE)
79AMDGCN_GPU ("gfx801", GK_GFX801, ( 8, 0, 1), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_XNACK)
80AMDGCN_GPU_ALIAS("carrizo", GK_GFX801)
81AMDGCN_GPU ("gfx802", GK_GFX802, ( 8, 0, 2), FEATURE_FAST_DENORMAL_F32)
82AMDGCN_GPU_ALIAS("iceland", GK_GFX802)
83AMDGCN_GPU_ALIAS("tonga", GK_GFX802)
84AMDGCN_GPU ("gfx803", GK_GFX803, ( 8, 0, 3), FEATURE_FAST_DENORMAL_F32)
85AMDGCN_GPU_ALIAS("fiji", GK_GFX803)
86AMDGCN_GPU_ALIAS("polaris10", GK_GFX803)
87AMDGCN_GPU_ALIAS("polaris11", GK_GFX803)
88AMDGCN_GPU ("gfx805", GK_GFX805, ( 8, 0, 5), FEATURE_FAST_DENORMAL_F32)
89AMDGCN_GPU_ALIAS("tongapro", GK_GFX805)
90AMDGCN_GPU ("gfx810", GK_GFX810, ( 8, 1, 0), FEATURE_FAST_DENORMAL_F32|FEATURE_XNACK)
91AMDGCN_GPU_ALIAS("stoney", GK_GFX810)
92AMDGCN_GPU ("gfx900", GK_GFX900, ( 9, 0, 0), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_XNACK)
93AMDGCN_GPU ("gfx902", GK_GFX902, ( 9, 0, 2), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_XNACK)
94AMDGCN_GPU ("gfx904", GK_GFX904, ( 9, 0, 4), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_XNACK)
95AMDGCN_GPU ("gfx906", GK_GFX906, ( 9, 0, 6), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_XNACK|FEATURE_SRAMECC)
96AMDGCN_GPU ("gfx908", GK_GFX908, ( 9, 0, 8), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_XNACK|FEATURE_SRAMECC)
97AMDGCN_GPU ("gfx909", GK_GFX909, ( 9, 0, 9), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_XNACK)
98AMDGCN_GPU ("gfx90a", GK_GFX90A, ( 9, 0, 10), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_XNACK|FEATURE_SRAMECC)
99AMDGCN_GPU ("gfx90c", GK_GFX90C, ( 9, 0, 12), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_XNACK)
100AMDGCN_GPU ("gfx942", GK_GFX942, ( 9, 4, 2), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_XNACK|FEATURE_SRAMECC)
101AMDGCN_GPU ("gfx950", GK_GFX950, ( 9, 5, 0), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_XNACK|FEATURE_SRAMECC)
102AMDGCN_GPU ("gfx1010", GK_GFX1010, (10, 1, 0), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_XNACK|FEATURE_WGP)
103AMDGCN_GPU ("gfx1011", GK_GFX1011, (10, 1, 1), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_XNACK|FEATURE_WGP)
104AMDGCN_GPU ("gfx1012", GK_GFX1012, (10, 1, 2), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_XNACK|FEATURE_WGP)
105AMDGCN_GPU ("gfx1013", GK_GFX1013, (10, 1, 3), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_XNACK|FEATURE_WGP)
106AMDGCN_GPU ("gfx1030", GK_GFX1030, (10, 3, 0), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP)
107AMDGCN_GPU ("gfx1031", GK_GFX1031, (10, 3, 1), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP)
108AMDGCN_GPU ("gfx1032", GK_GFX1032, (10, 3, 2), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP)
109AMDGCN_GPU ("gfx1033", GK_GFX1033, (10, 3, 3), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP)
110AMDGCN_GPU ("gfx1034", GK_GFX1034, (10, 3, 4), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP)
111AMDGCN_GPU ("gfx1035", GK_GFX1035, (10, 3, 5), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP)
112AMDGCN_GPU ("gfx1036", GK_GFX1036, (10, 3, 6), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP)
113AMDGCN_GPU ("gfx1100", GK_GFX1100, (11, 0, 0), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP)
114AMDGCN_GPU ("gfx1101", GK_GFX1101, (11, 0, 1), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP)
115AMDGCN_GPU ("gfx1102", GK_GFX1102, (11, 0, 2), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP)
116AMDGCN_GPU ("gfx1103", GK_GFX1103, (11, 0, 3), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP)
117AMDGCN_GPU ("gfx1150", GK_GFX1150, (11, 5, 0), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP)
118AMDGCN_GPU ("gfx1151", GK_GFX1151, (11, 5, 1), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP)
119AMDGCN_GPU ("gfx1152", GK_GFX1152, (11, 5, 2), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP)
120AMDGCN_GPU ("gfx1153", GK_GFX1153, (11, 5, 3), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP)
121AMDGCN_GPU ("gfx1170", GK_GFX1170, (11, 7, 0), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP)
122AMDGCN_GPU ("gfx1200", GK_GFX1200, (12, 0, 0), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP)
123AMDGCN_GPU ("gfx1201", GK_GFX1201, (12, 0, 1), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP)
124AMDGCN_GPU ("gfx1250", GK_GFX1250, (12, 5, 0), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_XNACK_ALWAYS)
125AMDGCN_GPU ("gfx1251", GK_GFX1251, (12, 5, 1), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_XNACK_ALWAYS)
126AMDGCN_GPU ("gfx1310", GK_GFX1310, (13, 1, 0), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP)
127
128// Generic targets return the lowest common denominator
129// within their family. That is, the ISA that is the most
130// restricted in terms of features.
131//
132// gfx9-generic is tricky because there is no lowest
133// common denominator, so we return gfx900 which has mad-mix
134// but this family doesn't have it.
135//
136// This API should never be used to check for a particular
137// feature anyway.
138//
139// TODO: Split up this API depending on its caller so
140// generic target handling is more obvious and less risky.
141AMDGCN_GPU ("gfx9-generic", GK_GFX9_GENERIC, ( 9, 0, 0), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_XNACK)
142AMDGCN_GPU ("gfx10-1-generic", GK_GFX10_1_GENERIC, (10, 1, 0), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_XNACK|FEATURE_WGP)
143AMDGCN_GPU ("gfx10-3-generic", GK_GFX10_3_GENERIC, (10, 3, 0), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP)
144AMDGCN_GPU ("gfx11-generic", GK_GFX11_GENERIC, (11, 0, 3), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP)
145AMDGCN_GPU ("gfx12-generic", GK_GFX12_GENERIC, (12, 0, 0), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP)
146AMDGCN_GPU ("gfx9-4-generic", GK_GFX9_4_GENERIC, ( 9, 4, 0), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_XNACK|FEATURE_SRAMECC)
147AMDGCN_GPU ("gfx12-5-generic", GK_GFX12_5_GENERIC, (12, 5, 0), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32)
148
149#undef AMDGCN_GPU
150#undef AMDGCN_GPU_ALIAS
151