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