summaryrefslogtreecommitdiff
path: root/dev-libs/rocm-comgr/files/rocm-comgr-10.1.0-llvm-23-compat.patch
blob: 90e3146dd0a44b40e23ff8ce724dfd0536c19c1a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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 {