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 Workerconst 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 Workerenum 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 Workerunsigned 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 Workerconst 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 Workerconst 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