Fix build with llvm-23 SGPR helpers in AMDGPUTargetParser and EF_AMDGPU_MACH_AMDGCN_GFX1250_STRICT are only available since LLVM 24 --- a/src/comgr-isa-metadata.def +++ b/src/comgr-isa-metadata.def @@ -75,7 +75,10 @@ HANDLE_ISA("amdgcn-amd-amdhsa-", "gfx1172", EF_AMDGPU_MACH_AMDGCN_GFX117 HANDLE_ISA("amdgcn-amd-amdhsa-", "gfx1200", EF_AMDGPU_MACH_AMDGCN_GFX1200, true, true, 65536, 32, 4, 40, 1024, 24, 1536, 256) HANDLE_ISA("amdgcn-amd-amdhsa-", "gfx1201", EF_AMDGPU_MACH_AMDGCN_GFX1201, true, true, 65536, 32, 4, 40, 1024, 24, 1536, 256) HANDLE_ISA("amdgcn-amd-amdhsa-", "gfx1250", EF_AMDGPU_MACH_AMDGCN_GFX1250, true, false, 327680, 64, 4, 40, 1024, 16, 1024, 1024) +#include "llvm/Config/llvm-config.h" +#if LLVM_VERSION_MAJOR >= 24 HANDLE_ISA("amdgcn-amd-amdhsa-", "gfx1250-strict", EF_AMDGPU_MACH_AMDGCN_GFX1250_STRICT, true, false, 327680, 64, 4, 40, 1024, 16, 1024, 1024) +#endif HANDLE_ISA("amdgcn-amd-amdhsa-", "gfx1251", EF_AMDGPU_MACH_AMDGCN_GFX1251, true, false, 327680, 64, 4, 40, 1024, 16, 1024, 1024) HANDLE_ISA("amdgcn-amd-amdhsa-", "gfx1310", EF_AMDGPU_MACH_AMDGCN_GFX1310, true, true, 65536, 32, 4, 40, 1024, 24, 1536, 256) --- a/src/comgr-metadata.cpp +++ b/src/comgr-metadata.cpp @@ -21,6 +21,7 @@ #include "llvm/ADT/SmallVector.h" #include "llvm/BinaryFormat/ELF.h" #include "llvm/BinaryFormat/MsgPackDocument.h" +#include "llvm/Config/llvm-config.h" #include "llvm/Object/ELFObjectFile.h" #include "llvm/Support/AMDGPUMetadata.h" #include "llvm/Support/BinaryStreamReader.h" @@ -36,6 +37,28 @@ using namespace llvm; using namespace llvm::object; +#if LLVM_VERSION_MAJOR < 24 +// Added to AMDGPUTargetParser in LLVM 24 +namespace llvm::AMDGPU { +static unsigned getTotalNumSGPRs(GPUKind AK) { + return getIsaVersion(getSubArch(AK)).Major >= 8 ? 800 : 512; +} + +static unsigned getAddressableNumSGPRs(GPUKind AK) { + // SGPR init bug + if (AK == GK_GFX802 || AK == GK_GFX805) + return 96; + unsigned Major = getIsaVersion(getSubArch(AK)).Major; + return Major >= 10 ? 106 : Major >= 8 ? 102 : 104; +} + +static unsigned getSGPRAllocGranule(GPUKind AK) { + unsigned Major = getIsaVersion(getSubArch(AK)).Major; + return Major >= 10 ? getAddressableNumSGPRs(AK) : Major >= 8 ? 16 : 8; +} +} // namespace llvm::AMDGPU +#endif + namespace COMGR { namespace metadata {