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)16const 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)74enum 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)96const 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)200const 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