/* * Copyright © 2017 Advanced Micro Devices, Inc. * * SPDX-License-Identifier: MIT */ #include "amd_family.h" #include "addrlib/src/amdgpu_asic_addr.h" #include "util/macros.h" #include "ac_gpu_info.h" const char *ac_get_family_name(enum radeon_family family) { switch (family) { case CHIP_TAHITI: return "TAHITI"; case CHIP_PITCAIRN: return "PITCAIRN"; case CHIP_VERDE: return "VERDE"; case CHIP_OLAND: return "OLAND"; case CHIP_HAINAN: return "HAINAN"; case CHIP_BONAIRE: return "BONAIRE"; case CHIP_KABINI: return "KABINI"; case CHIP_KAVERI: return "KAVERI"; case CHIP_HAWAII: return "HAWAII"; case CHIP_TONGA: return "TONGA"; case CHIP_ICELAND: return "ICELAND"; case CHIP_CARRIZO: return "CARRIZO"; case CHIP_FIJI: return "FIJI"; case CHIP_STONEY: return "STONEY"; case CHIP_POLARIS10: return "POLARIS10"; case CHIP_POLARIS11: return "POLARIS11"; case CHIP_POLARIS12: return "POLARIS12"; case CHIP_VEGAM: return "VEGAM"; case CHIP_VEGA10: return "VEGA10"; case CHIP_RAVEN: return "RAVEN"; case CHIP_VEGA12: return "VEGA12"; case CHIP_VEGA20: return "VEGA20"; case CHIP_RAVEN2: return "RAVEN2"; case CHIP_RENOIR: return "RENOIR"; case CHIP_MI100: return "MI100"; case CHIP_MI200: return "MI200"; case CHIP_GFX940: return "GFX940"; case CHIP_NAVI10: return "NAVI10"; case CHIP_NAVI12: return "NAVI12"; case CHIP_NAVI14: return "NAVI14"; case CHIP_NAVI21: return "NAVI21"; case CHIP_NAVI22: return "NAVI22"; case CHIP_NAVI23: return "NAVI23"; case CHIP_VANGOGH: return "VANGOGH"; case CHIP_NAVI24: return "NAVI24"; case CHIP_REMBRANDT: return "REMBRANDT"; case CHIP_RAPHAEL_MENDOCINO: return "RAPHAEL_MENDOCINO"; case CHIP_NAVI31: return "NAVI31"; case CHIP_NAVI32: return "NAVI32"; case CHIP_NAVI33: return "NAVI33"; case CHIP_GFX1103_R1: return "GFX1103_R1"; case CHIP_GFX1103_R2: return "GFX1103_R2"; case CHIP_GFX1150: return "GFX1150"; case CHIP_GFX1151: return "GFX1151"; case CHIP_GFX1152: return "GFX1152"; case CHIP_GFX1200: return "GFX1200"; case CHIP_GFX1201: return "GFX1201"; default: unreachable("Unknown GPU family"); } } enum amd_gfx_level ac_get_gfx_level(enum radeon_family family) { if (family >= CHIP_GFX1200) return GFX12; if (family >= CHIP_GFX1150) return GFX11_5; if (family >= CHIP_NAVI31) return GFX11; if (family >= CHIP_NAVI21) return GFX10_3; if (family >= CHIP_NAVI10) return GFX10; if (family >= CHIP_VEGA10) return GFX9; if (family >= CHIP_TONGA) return GFX8; if (family >= CHIP_BONAIRE) return GFX7; return GFX6; } unsigned ac_get_family_id(enum radeon_family family) { if (family >= CHIP_GFX1200) return FAMILY_GFX12; if (family >= CHIP_GFX1150) return FAMILY_GFX1150; if (family >= CHIP_NAVI31) return FAMILY_NV3; if (family >= CHIP_NAVI21) return FAMILY_NV; if (family >= CHIP_NAVI10) return FAMILY_NV; if (family >= CHIP_VEGA10) return FAMILY_AI; if (family >= CHIP_TONGA) return FAMILY_VI; if (family >= CHIP_BONAIRE) return FAMILY_CI; return FAMILY_SI; } const char *ac_get_llvm_processor_name(enum radeon_family family) { switch (family) { case CHIP_TAHITI: return "tahiti"; case CHIP_PITCAIRN: return "pitcairn"; case CHIP_VERDE: return "verde"; case CHIP_OLAND: return "oland"; case CHIP_HAINAN: return "hainan"; case CHIP_BONAIRE: return "bonaire"; case CHIP_KABINI: return "kabini"; case CHIP_KAVERI: return "kaveri"; case CHIP_HAWAII: return "hawaii"; case CHIP_TONGA: return "tonga"; case CHIP_ICELAND: return "iceland"; case CHIP_CARRIZO: return "carrizo"; case CHIP_FIJI: return "fiji"; case CHIP_STONEY: return "stoney"; case CHIP_POLARIS10: return "polaris10"; case CHIP_POLARIS11: case CHIP_POLARIS12: case CHIP_VEGAM: return "polaris11"; case CHIP_VEGA10: return "gfx900"; case CHIP_RAVEN: return "gfx902"; case CHIP_VEGA12: return "gfx904"; case CHIP_VEGA20: return "gfx906"; case CHIP_RAVEN2: case CHIP_RENOIR: return "gfx909"; case CHIP_MI100: return "gfx908"; case CHIP_MI200: return "gfx90a"; case CHIP_GFX940: return "gfx940"; case CHIP_NAVI10: return "gfx1010"; case CHIP_NAVI12: return "gfx1011"; case CHIP_NAVI14: return "gfx1012"; case CHIP_NAVI21: return "gfx1030"; case CHIP_NAVI22: return "gfx1031"; case CHIP_NAVI23: return "gfx1032"; case CHIP_VANGOGH: return "gfx1033"; case CHIP_NAVI24: return "gfx1034"; case CHIP_REMBRANDT: return "gfx1035"; case CHIP_RAPHAEL_MENDOCINO: return "gfx1036"; case CHIP_NAVI31: return "gfx1100"; case CHIP_NAVI32: return "gfx1101"; case CHIP_NAVI33: return "gfx1102"; case CHIP_GFX1103_R1: case CHIP_GFX1103_R2: return "gfx1103"; case CHIP_GFX1150: return "gfx1150"; case CHIP_GFX1151: return "gfx1151"; case CHIP_GFX1152: return "gfx1152"; case CHIP_GFX1200: return "gfx1200"; case CHIP_GFX1201: return "gfx1201"; default: return ""; } } const char *ac_get_ip_type_string(const struct radeon_info *info, enum amd_ip_type ip_type) { switch (ip_type) { case AMD_IP_GFX: return "GFX"; case AMD_IP_COMPUTE: return "COMPUTE"; case AMD_IP_SDMA: return "SDMA"; case AMD_IP_UVD: return "UVD"; case AMD_IP_VCE: return "VCE"; case AMD_IP_UVD_ENC: return "UVD_ENC"; case AMD_IP_VCN_DEC: return "VCN_DEC"; case AMD_IP_VCN_ENC: /* equal to AMD_IP_VCN_UNIFIED */ return !info || info->vcn_ip_version >= VCN_4_0_0 ? "VCN" : "VCN_ENC"; case AMD_IP_VCN_JPEG: return "VCN_JPEG"; case AMD_IP_VPE: return "VPE"; default: return "UNKNOWN_IP"; } }