xref: /aosp_15_r20/external/mesa3d/src/amd/common/amd_family.c (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker /*
2*61046927SAndroid Build Coastguard Worker  * Copyright © 2017 Advanced Micro Devices, Inc.
3*61046927SAndroid Build Coastguard Worker  *
4*61046927SAndroid Build Coastguard Worker  * SPDX-License-Identifier: MIT
5*61046927SAndroid Build Coastguard Worker  */
6*61046927SAndroid Build Coastguard Worker 
7*61046927SAndroid Build Coastguard Worker #include "amd_family.h"
8*61046927SAndroid Build Coastguard Worker #include "addrlib/src/amdgpu_asic_addr.h"
9*61046927SAndroid Build Coastguard Worker #include "util/macros.h"
10*61046927SAndroid Build Coastguard Worker #include "ac_gpu_info.h"
11*61046927SAndroid Build Coastguard Worker 
ac_get_family_name(enum radeon_family family)12*61046927SAndroid Build Coastguard Worker const char *ac_get_family_name(enum radeon_family family)
13*61046927SAndroid Build Coastguard Worker {
14*61046927SAndroid Build Coastguard Worker    switch (family) {
15*61046927SAndroid Build Coastguard Worker    case CHIP_TAHITI:
16*61046927SAndroid Build Coastguard Worker       return "TAHITI";
17*61046927SAndroid Build Coastguard Worker    case CHIP_PITCAIRN:
18*61046927SAndroid Build Coastguard Worker       return "PITCAIRN";
19*61046927SAndroid Build Coastguard Worker    case CHIP_VERDE:
20*61046927SAndroid Build Coastguard Worker       return "VERDE";
21*61046927SAndroid Build Coastguard Worker    case CHIP_OLAND:
22*61046927SAndroid Build Coastguard Worker       return "OLAND";
23*61046927SAndroid Build Coastguard Worker    case CHIP_HAINAN:
24*61046927SAndroid Build Coastguard Worker       return "HAINAN";
25*61046927SAndroid Build Coastguard Worker    case CHIP_BONAIRE:
26*61046927SAndroid Build Coastguard Worker       return "BONAIRE";
27*61046927SAndroid Build Coastguard Worker    case CHIP_KABINI:
28*61046927SAndroid Build Coastguard Worker       return "KABINI";
29*61046927SAndroid Build Coastguard Worker    case CHIP_KAVERI:
30*61046927SAndroid Build Coastguard Worker       return "KAVERI";
31*61046927SAndroid Build Coastguard Worker    case CHIP_HAWAII:
32*61046927SAndroid Build Coastguard Worker       return "HAWAII";
33*61046927SAndroid Build Coastguard Worker    case CHIP_TONGA:
34*61046927SAndroid Build Coastguard Worker       return "TONGA";
35*61046927SAndroid Build Coastguard Worker    case CHIP_ICELAND:
36*61046927SAndroid Build Coastguard Worker       return "ICELAND";
37*61046927SAndroid Build Coastguard Worker    case CHIP_CARRIZO:
38*61046927SAndroid Build Coastguard Worker       return "CARRIZO";
39*61046927SAndroid Build Coastguard Worker    case CHIP_FIJI:
40*61046927SAndroid Build Coastguard Worker       return "FIJI";
41*61046927SAndroid Build Coastguard Worker    case CHIP_STONEY:
42*61046927SAndroid Build Coastguard Worker       return "STONEY";
43*61046927SAndroid Build Coastguard Worker    case CHIP_POLARIS10:
44*61046927SAndroid Build Coastguard Worker       return "POLARIS10";
45*61046927SAndroid Build Coastguard Worker    case CHIP_POLARIS11:
46*61046927SAndroid Build Coastguard Worker       return "POLARIS11";
47*61046927SAndroid Build Coastguard Worker    case CHIP_POLARIS12:
48*61046927SAndroid Build Coastguard Worker       return "POLARIS12";
49*61046927SAndroid Build Coastguard Worker    case CHIP_VEGAM:
50*61046927SAndroid Build Coastguard Worker       return "VEGAM";
51*61046927SAndroid Build Coastguard Worker    case CHIP_VEGA10:
52*61046927SAndroid Build Coastguard Worker       return "VEGA10";
53*61046927SAndroid Build Coastguard Worker    case CHIP_RAVEN:
54*61046927SAndroid Build Coastguard Worker       return "RAVEN";
55*61046927SAndroid Build Coastguard Worker    case CHIP_VEGA12:
56*61046927SAndroid Build Coastguard Worker       return "VEGA12";
57*61046927SAndroid Build Coastguard Worker    case CHIP_VEGA20:
58*61046927SAndroid Build Coastguard Worker       return "VEGA20";
59*61046927SAndroid Build Coastguard Worker    case CHIP_RAVEN2:
60*61046927SAndroid Build Coastguard Worker       return "RAVEN2";
61*61046927SAndroid Build Coastguard Worker    case CHIP_RENOIR:
62*61046927SAndroid Build Coastguard Worker       return "RENOIR";
63*61046927SAndroid Build Coastguard Worker    case CHIP_MI100:
64*61046927SAndroid Build Coastguard Worker       return "MI100";
65*61046927SAndroid Build Coastguard Worker    case CHIP_MI200:
66*61046927SAndroid Build Coastguard Worker       return "MI200";
67*61046927SAndroid Build Coastguard Worker    case CHIP_GFX940:
68*61046927SAndroid Build Coastguard Worker       return "GFX940";
69*61046927SAndroid Build Coastguard Worker    case CHIP_NAVI10:
70*61046927SAndroid Build Coastguard Worker       return "NAVI10";
71*61046927SAndroid Build Coastguard Worker    case CHIP_NAVI12:
72*61046927SAndroid Build Coastguard Worker       return "NAVI12";
73*61046927SAndroid Build Coastguard Worker    case CHIP_NAVI14:
74*61046927SAndroid Build Coastguard Worker       return "NAVI14";
75*61046927SAndroid Build Coastguard Worker    case CHIP_NAVI21:
76*61046927SAndroid Build Coastguard Worker       return "NAVI21";
77*61046927SAndroid Build Coastguard Worker    case CHIP_NAVI22:
78*61046927SAndroid Build Coastguard Worker       return "NAVI22";
79*61046927SAndroid Build Coastguard Worker    case CHIP_NAVI23:
80*61046927SAndroid Build Coastguard Worker       return "NAVI23";
81*61046927SAndroid Build Coastguard Worker    case CHIP_VANGOGH:
82*61046927SAndroid Build Coastguard Worker       return "VANGOGH";
83*61046927SAndroid Build Coastguard Worker    case CHIP_NAVI24:
84*61046927SAndroid Build Coastguard Worker       return "NAVI24";
85*61046927SAndroid Build Coastguard Worker    case CHIP_REMBRANDT:
86*61046927SAndroid Build Coastguard Worker       return "REMBRANDT";
87*61046927SAndroid Build Coastguard Worker    case CHIP_RAPHAEL_MENDOCINO:
88*61046927SAndroid Build Coastguard Worker       return "RAPHAEL_MENDOCINO";
89*61046927SAndroid Build Coastguard Worker    case CHIP_NAVI31:
90*61046927SAndroid Build Coastguard Worker       return "NAVI31";
91*61046927SAndroid Build Coastguard Worker    case CHIP_NAVI32:
92*61046927SAndroid Build Coastguard Worker       return "NAVI32";
93*61046927SAndroid Build Coastguard Worker    case CHIP_NAVI33:
94*61046927SAndroid Build Coastguard Worker       return "NAVI33";
95*61046927SAndroid Build Coastguard Worker    case CHIP_GFX1103_R1:
96*61046927SAndroid Build Coastguard Worker       return "GFX1103_R1";
97*61046927SAndroid Build Coastguard Worker    case CHIP_GFX1103_R2:
98*61046927SAndroid Build Coastguard Worker       return "GFX1103_R2";
99*61046927SAndroid Build Coastguard Worker    case CHIP_GFX1150:
100*61046927SAndroid Build Coastguard Worker       return "GFX1150";
101*61046927SAndroid Build Coastguard Worker    case CHIP_GFX1151:
102*61046927SAndroid Build Coastguard Worker       return "GFX1151";
103*61046927SAndroid Build Coastguard Worker    case CHIP_GFX1152:
104*61046927SAndroid Build Coastguard Worker       return "GFX1152";
105*61046927SAndroid Build Coastguard Worker    case CHIP_GFX1200:
106*61046927SAndroid Build Coastguard Worker       return "GFX1200";
107*61046927SAndroid Build Coastguard Worker    case CHIP_GFX1201:
108*61046927SAndroid Build Coastguard Worker       return "GFX1201";
109*61046927SAndroid Build Coastguard Worker    default:
110*61046927SAndroid Build Coastguard Worker       unreachable("Unknown GPU family");
111*61046927SAndroid Build Coastguard Worker    }
112*61046927SAndroid Build Coastguard Worker }
113*61046927SAndroid Build Coastguard Worker 
ac_get_gfx_level(enum radeon_family family)114*61046927SAndroid Build Coastguard Worker enum amd_gfx_level ac_get_gfx_level(enum radeon_family family)
115*61046927SAndroid Build Coastguard Worker {
116*61046927SAndroid Build Coastguard Worker    if (family >= CHIP_GFX1200)
117*61046927SAndroid Build Coastguard Worker       return GFX12;
118*61046927SAndroid Build Coastguard Worker    if (family >= CHIP_GFX1150)
119*61046927SAndroid Build Coastguard Worker       return GFX11_5;
120*61046927SAndroid Build Coastguard Worker    if (family >= CHIP_NAVI31)
121*61046927SAndroid Build Coastguard Worker       return GFX11;
122*61046927SAndroid Build Coastguard Worker    if (family >= CHIP_NAVI21)
123*61046927SAndroid Build Coastguard Worker       return GFX10_3;
124*61046927SAndroid Build Coastguard Worker    if (family >= CHIP_NAVI10)
125*61046927SAndroid Build Coastguard Worker       return GFX10;
126*61046927SAndroid Build Coastguard Worker    if (family >= CHIP_VEGA10)
127*61046927SAndroid Build Coastguard Worker       return GFX9;
128*61046927SAndroid Build Coastguard Worker    if (family >= CHIP_TONGA)
129*61046927SAndroid Build Coastguard Worker       return GFX8;
130*61046927SAndroid Build Coastguard Worker    if (family >= CHIP_BONAIRE)
131*61046927SAndroid Build Coastguard Worker       return GFX7;
132*61046927SAndroid Build Coastguard Worker 
133*61046927SAndroid Build Coastguard Worker    return GFX6;
134*61046927SAndroid Build Coastguard Worker }
135*61046927SAndroid Build Coastguard Worker 
ac_get_family_id(enum radeon_family family)136*61046927SAndroid Build Coastguard Worker unsigned ac_get_family_id(enum radeon_family family)
137*61046927SAndroid Build Coastguard Worker {
138*61046927SAndroid Build Coastguard Worker    if (family >= CHIP_GFX1200)
139*61046927SAndroid Build Coastguard Worker       return FAMILY_GFX12;
140*61046927SAndroid Build Coastguard Worker    if (family >= CHIP_GFX1150)
141*61046927SAndroid Build Coastguard Worker       return FAMILY_GFX1150;
142*61046927SAndroid Build Coastguard Worker    if (family >= CHIP_NAVI31)
143*61046927SAndroid Build Coastguard Worker       return FAMILY_NV3;
144*61046927SAndroid Build Coastguard Worker    if (family >= CHIP_NAVI21)
145*61046927SAndroid Build Coastguard Worker       return FAMILY_NV;
146*61046927SAndroid Build Coastguard Worker    if (family >= CHIP_NAVI10)
147*61046927SAndroid Build Coastguard Worker       return FAMILY_NV;
148*61046927SAndroid Build Coastguard Worker    if (family >= CHIP_VEGA10)
149*61046927SAndroid Build Coastguard Worker       return FAMILY_AI;
150*61046927SAndroid Build Coastguard Worker    if (family >= CHIP_TONGA)
151*61046927SAndroid Build Coastguard Worker       return FAMILY_VI;
152*61046927SAndroid Build Coastguard Worker    if (family >= CHIP_BONAIRE)
153*61046927SAndroid Build Coastguard Worker       return FAMILY_CI;
154*61046927SAndroid Build Coastguard Worker 
155*61046927SAndroid Build Coastguard Worker    return FAMILY_SI;
156*61046927SAndroid Build Coastguard Worker }
157*61046927SAndroid Build Coastguard Worker 
ac_get_llvm_processor_name(enum radeon_family family)158*61046927SAndroid Build Coastguard Worker const char *ac_get_llvm_processor_name(enum radeon_family family)
159*61046927SAndroid Build Coastguard Worker {
160*61046927SAndroid Build Coastguard Worker    switch (family) {
161*61046927SAndroid Build Coastguard Worker    case CHIP_TAHITI:
162*61046927SAndroid Build Coastguard Worker       return "tahiti";
163*61046927SAndroid Build Coastguard Worker    case CHIP_PITCAIRN:
164*61046927SAndroid Build Coastguard Worker       return "pitcairn";
165*61046927SAndroid Build Coastguard Worker    case CHIP_VERDE:
166*61046927SAndroid Build Coastguard Worker       return "verde";
167*61046927SAndroid Build Coastguard Worker    case CHIP_OLAND:
168*61046927SAndroid Build Coastguard Worker       return "oland";
169*61046927SAndroid Build Coastguard Worker    case CHIP_HAINAN:
170*61046927SAndroid Build Coastguard Worker       return "hainan";
171*61046927SAndroid Build Coastguard Worker    case CHIP_BONAIRE:
172*61046927SAndroid Build Coastguard Worker       return "bonaire";
173*61046927SAndroid Build Coastguard Worker    case CHIP_KABINI:
174*61046927SAndroid Build Coastguard Worker       return "kabini";
175*61046927SAndroid Build Coastguard Worker    case CHIP_KAVERI:
176*61046927SAndroid Build Coastguard Worker       return "kaveri";
177*61046927SAndroid Build Coastguard Worker    case CHIP_HAWAII:
178*61046927SAndroid Build Coastguard Worker       return "hawaii";
179*61046927SAndroid Build Coastguard Worker    case CHIP_TONGA:
180*61046927SAndroid Build Coastguard Worker       return "tonga";
181*61046927SAndroid Build Coastguard Worker    case CHIP_ICELAND:
182*61046927SAndroid Build Coastguard Worker       return "iceland";
183*61046927SAndroid Build Coastguard Worker    case CHIP_CARRIZO:
184*61046927SAndroid Build Coastguard Worker       return "carrizo";
185*61046927SAndroid Build Coastguard Worker    case CHIP_FIJI:
186*61046927SAndroid Build Coastguard Worker       return "fiji";
187*61046927SAndroid Build Coastguard Worker    case CHIP_STONEY:
188*61046927SAndroid Build Coastguard Worker       return "stoney";
189*61046927SAndroid Build Coastguard Worker    case CHIP_POLARIS10:
190*61046927SAndroid Build Coastguard Worker       return "polaris10";
191*61046927SAndroid Build Coastguard Worker    case CHIP_POLARIS11:
192*61046927SAndroid Build Coastguard Worker    case CHIP_POLARIS12:
193*61046927SAndroid Build Coastguard Worker    case CHIP_VEGAM:
194*61046927SAndroid Build Coastguard Worker       return "polaris11";
195*61046927SAndroid Build Coastguard Worker    case CHIP_VEGA10:
196*61046927SAndroid Build Coastguard Worker       return "gfx900";
197*61046927SAndroid Build Coastguard Worker    case CHIP_RAVEN:
198*61046927SAndroid Build Coastguard Worker       return "gfx902";
199*61046927SAndroid Build Coastguard Worker    case CHIP_VEGA12:
200*61046927SAndroid Build Coastguard Worker       return "gfx904";
201*61046927SAndroid Build Coastguard Worker    case CHIP_VEGA20:
202*61046927SAndroid Build Coastguard Worker       return "gfx906";
203*61046927SAndroid Build Coastguard Worker    case CHIP_RAVEN2:
204*61046927SAndroid Build Coastguard Worker    case CHIP_RENOIR:
205*61046927SAndroid Build Coastguard Worker       return "gfx909";
206*61046927SAndroid Build Coastguard Worker    case CHIP_MI100:
207*61046927SAndroid Build Coastguard Worker       return "gfx908";
208*61046927SAndroid Build Coastguard Worker    case CHIP_MI200:
209*61046927SAndroid Build Coastguard Worker       return "gfx90a";
210*61046927SAndroid Build Coastguard Worker    case CHIP_GFX940:
211*61046927SAndroid Build Coastguard Worker       return "gfx940";
212*61046927SAndroid Build Coastguard Worker    case CHIP_NAVI10:
213*61046927SAndroid Build Coastguard Worker       return "gfx1010";
214*61046927SAndroid Build Coastguard Worker    case CHIP_NAVI12:
215*61046927SAndroid Build Coastguard Worker       return "gfx1011";
216*61046927SAndroid Build Coastguard Worker    case CHIP_NAVI14:
217*61046927SAndroid Build Coastguard Worker       return "gfx1012";
218*61046927SAndroid Build Coastguard Worker    case CHIP_NAVI21:
219*61046927SAndroid Build Coastguard Worker       return "gfx1030";
220*61046927SAndroid Build Coastguard Worker    case CHIP_NAVI22:
221*61046927SAndroid Build Coastguard Worker       return "gfx1031";
222*61046927SAndroid Build Coastguard Worker    case CHIP_NAVI23:
223*61046927SAndroid Build Coastguard Worker       return "gfx1032";
224*61046927SAndroid Build Coastguard Worker    case CHIP_VANGOGH:
225*61046927SAndroid Build Coastguard Worker       return "gfx1033";
226*61046927SAndroid Build Coastguard Worker    case CHIP_NAVI24:
227*61046927SAndroid Build Coastguard Worker       return "gfx1034";
228*61046927SAndroid Build Coastguard Worker    case CHIP_REMBRANDT:
229*61046927SAndroid Build Coastguard Worker       return "gfx1035";
230*61046927SAndroid Build Coastguard Worker    case CHIP_RAPHAEL_MENDOCINO:
231*61046927SAndroid Build Coastguard Worker       return "gfx1036";
232*61046927SAndroid Build Coastguard Worker    case CHIP_NAVI31:
233*61046927SAndroid Build Coastguard Worker       return "gfx1100";
234*61046927SAndroid Build Coastguard Worker    case CHIP_NAVI32:
235*61046927SAndroid Build Coastguard Worker       return "gfx1101";
236*61046927SAndroid Build Coastguard Worker    case CHIP_NAVI33:
237*61046927SAndroid Build Coastguard Worker       return "gfx1102";
238*61046927SAndroid Build Coastguard Worker    case CHIP_GFX1103_R1:
239*61046927SAndroid Build Coastguard Worker    case CHIP_GFX1103_R2:
240*61046927SAndroid Build Coastguard Worker       return "gfx1103";
241*61046927SAndroid Build Coastguard Worker    case CHIP_GFX1150:
242*61046927SAndroid Build Coastguard Worker       return "gfx1150";
243*61046927SAndroid Build Coastguard Worker    case CHIP_GFX1151:
244*61046927SAndroid Build Coastguard Worker       return "gfx1151";
245*61046927SAndroid Build Coastguard Worker    case CHIP_GFX1152:
246*61046927SAndroid Build Coastguard Worker       return "gfx1152";
247*61046927SAndroid Build Coastguard Worker    case CHIP_GFX1200:
248*61046927SAndroid Build Coastguard Worker       return "gfx1200";
249*61046927SAndroid Build Coastguard Worker    case CHIP_GFX1201:
250*61046927SAndroid Build Coastguard Worker       return "gfx1201";
251*61046927SAndroid Build Coastguard Worker    default:
252*61046927SAndroid Build Coastguard Worker       return "";
253*61046927SAndroid Build Coastguard Worker    }
254*61046927SAndroid Build Coastguard Worker }
255*61046927SAndroid Build Coastguard Worker 
ac_get_ip_type_string(const struct radeon_info * info,enum amd_ip_type ip_type)256*61046927SAndroid Build Coastguard Worker const char *ac_get_ip_type_string(const struct radeon_info *info, enum amd_ip_type ip_type)
257*61046927SAndroid Build Coastguard Worker {
258*61046927SAndroid Build Coastguard Worker    switch (ip_type) {
259*61046927SAndroid Build Coastguard Worker    case AMD_IP_GFX:
260*61046927SAndroid Build Coastguard Worker       return "GFX";
261*61046927SAndroid Build Coastguard Worker    case AMD_IP_COMPUTE:
262*61046927SAndroid Build Coastguard Worker       return "COMPUTE";
263*61046927SAndroid Build Coastguard Worker    case AMD_IP_SDMA:
264*61046927SAndroid Build Coastguard Worker       return "SDMA";
265*61046927SAndroid Build Coastguard Worker    case AMD_IP_UVD:
266*61046927SAndroid Build Coastguard Worker       return "UVD";
267*61046927SAndroid Build Coastguard Worker    case AMD_IP_VCE:
268*61046927SAndroid Build Coastguard Worker       return "VCE";
269*61046927SAndroid Build Coastguard Worker    case AMD_IP_UVD_ENC:
270*61046927SAndroid Build Coastguard Worker       return "UVD_ENC";
271*61046927SAndroid Build Coastguard Worker    case AMD_IP_VCN_DEC:
272*61046927SAndroid Build Coastguard Worker       return "VCN_DEC";
273*61046927SAndroid Build Coastguard Worker    case AMD_IP_VCN_ENC: /* equal to AMD_IP_VCN_UNIFIED */
274*61046927SAndroid Build Coastguard Worker       return !info || info->vcn_ip_version >= VCN_4_0_0 ? "VCN" : "VCN_ENC";
275*61046927SAndroid Build Coastguard Worker    case AMD_IP_VCN_JPEG:
276*61046927SAndroid Build Coastguard Worker       return "VCN_JPEG";
277*61046927SAndroid Build Coastguard Worker    case AMD_IP_VPE:
278*61046927SAndroid Build Coastguard Worker       return "VPE";
279*61046927SAndroid Build Coastguard Worker    default:
280*61046927SAndroid Build Coastguard Worker       return "UNKNOWN_IP";
281*61046927SAndroid Build Coastguard Worker    }
282*61046927SAndroid Build Coastguard Worker }
283