• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
12 #if AMD_LLVM_AVAILABLE
13 #include <llvm/Config/llvm-config.h>
14 #endif
15 
ac_get_family_name(enum radeon_family family)16 const char *ac_get_family_name(enum radeon_family family)
17 {
18    switch (family) {
19 #define CASE(name) case CHIP_##name: return #name
20    CASE(TAHITI);
21    CASE(PITCAIRN);
22    CASE(VERDE);
23    CASE(OLAND);
24    CASE(HAINAN);
25    CASE(BONAIRE);
26    CASE(KABINI);
27    CASE(KAVERI);
28    CASE(HAWAII);
29    CASE(TONGA);
30    CASE(ICELAND);
31    CASE(CARRIZO);
32    CASE(FIJI);
33    CASE(STONEY);
34    CASE(POLARIS10);
35    CASE(POLARIS11);
36    CASE(POLARIS12);
37    CASE(VEGAM);
38    CASE(VEGA10);
39    CASE(RAVEN);
40    CASE(VEGA12);
41    CASE(VEGA20);
42    CASE(RAVEN2);
43    CASE(RENOIR);
44    CASE(MI100);
45    CASE(MI200);
46    CASE(GFX940);
47    CASE(NAVI10);
48    CASE(NAVI12);
49    CASE(NAVI14);
50    CASE(NAVI21);
51    CASE(NAVI22);
52    CASE(NAVI23);
53    CASE(VANGOGH);
54    CASE(NAVI24);
55    CASE(REMBRANDT);
56    CASE(RAPHAEL_MENDOCINO);
57    CASE(NAVI31);
58    CASE(NAVI32);
59    CASE(NAVI33);
60    CASE(PHOENIX);
61    CASE(PHOENIX2);
62    CASE(GFX1150);
63    CASE(GFX1151);
64    CASE(GFX1152);
65    CASE(GFX1153);
66    CASE(GFX1200);
67    CASE(GFX1201);
68 #undef CASE
69    default:
70       unreachable("Unknown GPU family");
71    }
72 }
73 
ac_get_gfx_level(enum radeon_family family)74 enum amd_gfx_level ac_get_gfx_level(enum radeon_family family)
75 {
76    if (family >= CHIP_GFX1200)
77       return GFX12;
78    if (family >= CHIP_GFX1150)
79       return GFX11_5;
80    if (family >= CHIP_NAVI31)
81       return GFX11;
82    if (family >= CHIP_NAVI21)
83       return GFX10_3;
84    if (family >= CHIP_NAVI10)
85       return GFX10;
86    if (family >= CHIP_VEGA10)
87       return GFX9;
88    if (family >= CHIP_TONGA)
89       return GFX8;
90    if (family >= CHIP_BONAIRE)
91       return GFX7;
92 
93    return GFX6;
94 }
95 
ac_get_llvm_processor_name(enum radeon_family family)96 const char *ac_get_llvm_processor_name(enum radeon_family family)
97 {
98    switch (family) {
99    case CHIP_TAHITI:
100       return "tahiti";
101    case CHIP_PITCAIRN:
102       return "pitcairn";
103    case CHIP_VERDE:
104       return "verde";
105    case CHIP_OLAND:
106       return "oland";
107    case CHIP_HAINAN:
108       return "hainan";
109    case CHIP_BONAIRE:
110       return "bonaire";
111    case CHIP_KABINI:
112       return "kabini";
113    case CHIP_KAVERI:
114       return "kaveri";
115    case CHIP_HAWAII:
116       return "hawaii";
117    case CHIP_TONGA:
118       return "tonga";
119    case CHIP_ICELAND:
120       return "iceland";
121    case CHIP_CARRIZO:
122       return "carrizo";
123    case CHIP_FIJI:
124       return "fiji";
125    case CHIP_STONEY:
126       return "stoney";
127    case CHIP_POLARIS10:
128       return "polaris10";
129    case CHIP_POLARIS11:
130    case CHIP_POLARIS12:
131    case CHIP_VEGAM:
132       return "polaris11";
133    case CHIP_VEGA10:
134       return "gfx900";
135    case CHIP_RAVEN:
136       return "gfx902";
137    case CHIP_VEGA12:
138       return "gfx904";
139    case CHIP_VEGA20:
140       return "gfx906";
141    case CHIP_RAVEN2:
142    case CHIP_RENOIR:
143       return "gfx909";
144    case CHIP_MI100:
145       return "gfx908";
146    case CHIP_MI200:
147       return "gfx90a";
148    case CHIP_GFX940:
149       return
150 #if AMD_LLVM_AVAILABLE
151              LLVM_VERSION_MAJOR >= 17 ? "gfx942" :
152 #endif
153              "gfx940";
154    case CHIP_NAVI10:
155       return "gfx1010";
156    case CHIP_NAVI12:
157       return "gfx1011";
158    case CHIP_NAVI14:
159       return "gfx1012";
160    case CHIP_NAVI21:
161       return "gfx1030";
162    case CHIP_NAVI22:
163       return "gfx1031";
164    case CHIP_NAVI23:
165       return "gfx1032";
166    case CHIP_VANGOGH:
167       return "gfx1033";
168    case CHIP_NAVI24:
169       return "gfx1034";
170    case CHIP_REMBRANDT:
171       return "gfx1035";
172    case CHIP_RAPHAEL_MENDOCINO:
173       return "gfx1036";
174    case CHIP_NAVI31:
175       return "gfx1100";
176    case CHIP_NAVI32:
177       return "gfx1101";
178    case CHIP_NAVI33:
179       return "gfx1102";
180    case CHIP_PHOENIX:
181    case CHIP_PHOENIX2:
182       return "gfx1103";
183    case CHIP_GFX1150:
184       return "gfx1150";
185    case CHIP_GFX1151:
186       return "gfx1151";
187    case CHIP_GFX1152:
188       return "gfx1152";
189    case CHIP_GFX1153:
190       return "gfx1153";
191    case CHIP_GFX1200:
192       return "gfx1200";
193    case CHIP_GFX1201:
194       return "gfx1201";
195    default:
196       return "";
197    }
198 }
199 
ac_get_ip_type_string(const struct radeon_info * info,enum amd_ip_type ip_type)200 const char *ac_get_ip_type_string(const struct radeon_info *info, enum amd_ip_type ip_type)
201 {
202    switch (ip_type) {
203    case AMD_IP_GFX:
204       return "GFX";
205    case AMD_IP_COMPUTE:
206       return "COMPUTE";
207    case AMD_IP_SDMA:
208       return "SDMA";
209    case AMD_IP_UVD:
210       return "UVD";
211    case AMD_IP_VCE:
212       return "VCE";
213    case AMD_IP_UVD_ENC:
214       return "UVD_ENC";
215    case AMD_IP_VCN_DEC:
216       return "VCN_DEC";
217    case AMD_IP_VCN_ENC: /* equal to AMD_IP_VCN_UNIFIED */
218       return !info || info->vcn_ip_version >= VCN_4_0_0 ? "VCN" : "VCN_ENC";
219    case AMD_IP_VCN_JPEG:
220       return "VCN_JPEG";
221    case AMD_IP_VPE:
222       return "VPE";
223    default:
224       return "UNKNOWN_IP";
225    }
226 }
227