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)12const 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)114enum 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)136unsigned 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)158const 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)256const 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