https://github.com/mariusz-sikora-at-amd updated https://github.com/llvm/llvm-project/pull/177355
>From 257100bcc5c70bb8edacd7b99f957a21e84f9f39 Mon Sep 17 00:00:00 2001 From: Jay Foad <[email protected]> Date: Tue, 13 Jan 2026 06:48:43 -0500 Subject: [PATCH 1/3] [AMDGPU] Define gfx1310 target with ELF number 0x50 For now this is identical to gfx1250. --- clang/include/clang/Basic/OffloadArch.h | 1 + clang/lib/Basic/OffloadArch.cpp | 1 + clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp | 1 + clang/test/Driver/amdgpu-macros.cl | 1 + clang/test/Driver/amdgpu-mcpu.cl | 2 ++ clang/test/Misc/target-invalid-cpu-note/amdgcn.c | 1 + clang/test/Misc/target-invalid-cpu-note/nvptx.c | 1 + libclc/CMakeLists.txt | 1 + llvm/docs/AMDGPUUsage.rst | 11 ++++++++++- llvm/include/llvm/BinaryFormat/ELF.h | 2 +- llvm/include/llvm/TargetParser/TargetParser.h | 4 +++- llvm/lib/Object/ELFObjectFile.cpp | 4 ++++ llvm/lib/ObjectYAML/ELFYAML.cpp | 1 + llvm/lib/Target/AMDGPU/GCNProcessors.td | 8 ++++++++ .../AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp | 2 ++ llvm/lib/TargetParser/TargetParser.cpp | 3 +++ llvm/test/CodeGen/AMDGPU/directive-amdgcn-target.ll | 2 ++ llvm/test/CodeGen/AMDGPU/elf-header-flags-mach.ll | 2 ++ llvm/test/CodeGen/AMDGPU/occupancy-levels.ll | 1 + llvm/test/Object/AMDGPU/elf-header-flags-mach.yaml | 7 +++++++ llvm/test/tools/llvm-objdump/ELF/AMDGPU/subtarget.ll | 7 +++++++ .../tools/llvm-readobj/ELF/AMDGPU/elf-headers.test | 9 +++++++++ llvm/tools/llvm-readobj/ELFDumper.cpp | 1 + 23 files changed, 70 insertions(+), 3 deletions(-) diff --git a/clang/include/clang/Basic/OffloadArch.h b/clang/include/clang/Basic/OffloadArch.h index ea665b1f49e08..31a56b47cbb29 100644 --- a/clang/include/clang/Basic/OffloadArch.h +++ b/clang/include/clang/Basic/OffloadArch.h @@ -107,6 +107,7 @@ enum class OffloadArch { GFX1201, GFX1250, GFX1251, + GFX1310, AMDGCNSPIRV, Generic, // A processor model named 'generic' if the target backend defines a // public one. diff --git a/clang/lib/Basic/OffloadArch.cpp b/clang/lib/Basic/OffloadArch.cpp index 05177f1c58038..e1f9641383ce1 100644 --- a/clang/lib/Basic/OffloadArch.cpp +++ b/clang/lib/Basic/OffloadArch.cpp @@ -95,6 +95,7 @@ static const OffloadArchToStringMap ArchNames[] = { GFX(1201), // gfx1201 GFX(1250), // gfx1250 GFX(1251), // gfx1251 + GFX(1310), // gfx1310 {OffloadArch::AMDGCNSPIRV, "amdgcnspirv", "compute_amdgcn"}, // Intel CPUs {OffloadArch::GRANITERAPIDS, "graniterapids", ""}, diff --git a/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp b/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp index db0d56d6b18cc..d6706dc77d63f 100644 --- a/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp +++ b/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp @@ -2378,6 +2378,7 @@ void CGOpenMPRuntimeGPU::processRequiresDirective(const OMPRequiresDecl *D) { case OffloadArch::GFX1201: case OffloadArch::GFX1250: case OffloadArch::GFX1251: + case OffloadArch::GFX1310: case OffloadArch::AMDGCNSPIRV: case OffloadArch::Generic: case OffloadArch::GRANITERAPIDS: diff --git a/clang/test/Driver/amdgpu-macros.cl b/clang/test/Driver/amdgpu-macros.cl index 6d049e7a9bc39..6105fd0d8d3e0 100644 --- a/clang/test/Driver/amdgpu-macros.cl +++ b/clang/test/Driver/amdgpu-macros.cl @@ -132,6 +132,7 @@ // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1201 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx1201 -DFAMILY=GFX12 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1250 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx1250 -DFAMILY=GFX12 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1251 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx1251 -DFAMILY=GFX12 +// RUN: %clang -E -dM -target amdgcn -mcpu=gfx1310 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx1310 -DFAMILY=GFX13 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx9-generic %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=64 -DCPU=gfx9_generic -DFAMILY=GFX9 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx9-4-generic %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=64 -DCPU=gfx9_4_generic -DFAMILY=GFX9 diff --git a/clang/test/Driver/amdgpu-mcpu.cl b/clang/test/Driver/amdgpu-mcpu.cl index bca5be7f8d63a..12f4bed5120be 100644 --- a/clang/test/Driver/amdgpu-mcpu.cl +++ b/clang/test/Driver/amdgpu-mcpu.cl @@ -117,6 +117,7 @@ // RUN: %clang -### -target amdgcn -mcpu=gfx1201 %s 2>&1 | FileCheck --check-prefix=GFX1201 %s // RUN: %clang -### -target amdgcn -mcpu=gfx1250 %s 2>&1 | FileCheck --check-prefix=GFX1250 %s // RUN: %clang -### -target amdgcn -mcpu=gfx1251 %s 2>&1 | FileCheck --check-prefix=GFX1251 %s +// RUN: %clang -### -target amdgcn -mcpu=gfx1310 %s 2>&1 | FileCheck --check-prefix=GFX1310 %s // RUN: %clang -### -target amdgcn -mcpu=gfx9-generic %s 2>&1 | FileCheck --check-prefix=GFX9_GENERIC %s // RUN: %clang -### -target amdgcn -mcpu=gfx9-4-generic %s 2>&1 | FileCheck --check-prefix=GFX9_4_GENERIC %s @@ -173,6 +174,7 @@ // GFX1201: "-target-cpu" "gfx1201" // GFX1250: "-target-cpu" "gfx1250" // GFX1251: "-target-cpu" "gfx1251" +// GFX1310: "-target-cpu" "gfx1310" // GFX9_GENERIC: "-target-cpu" "gfx9-generic" // GFX9_4_GENERIC: "-target-cpu" "gfx9-4-generic" diff --git a/clang/test/Misc/target-invalid-cpu-note/amdgcn.c b/clang/test/Misc/target-invalid-cpu-note/amdgcn.c index d31a7246e9d80..c554dad4171e4 100644 --- a/clang/test/Misc/target-invalid-cpu-note/amdgcn.c +++ b/clang/test/Misc/target-invalid-cpu-note/amdgcn.c @@ -70,6 +70,7 @@ // CHECK-SAME: {{^}}, gfx1201 // CHECK-SAME: {{^}}, gfx1250 // CHECK-SAME: {{^}}, gfx1251 +// CHECK-SAME: {{^}}, gfx1310 // CHECK-SAME: {{^}}, gfx9-generic // CHECK-SAME: {{^}}, gfx10-1-generic // CHECK-SAME: {{^}}, gfx10-3-generic diff --git a/clang/test/Misc/target-invalid-cpu-note/nvptx.c b/clang/test/Misc/target-invalid-cpu-note/nvptx.c index 03c3cd974967c..8dd485a1fdbca 100644 --- a/clang/test/Misc/target-invalid-cpu-note/nvptx.c +++ b/clang/test/Misc/target-invalid-cpu-note/nvptx.c @@ -92,5 +92,6 @@ // CHECK-SAME: {{^}}, gfx1201 // CHECK-SAME: {{^}}, gfx1250 // CHECK-SAME: {{^}}, gfx1251 +// CHECK-SAME: {{^}}, gfx1310 // CHECK-SAME: {{^}}, amdgcnspirv // CHECK-SAME: {{$}} diff --git a/libclc/CMakeLists.txt b/libclc/CMakeLists.txt index d060b71f3db11..88a32797d5915 100644 --- a/libclc/CMakeLists.txt +++ b/libclc/CMakeLists.txt @@ -232,6 +232,7 @@ set( tahiti_aliases pitcairn verde oland hainan bonaire kabini kaveri hawaii gfx1100 gfx1101 gfx1102 gfx1103 gfx1150 gfx1151 gfx1152 gfx1153 gfx1200 gfx1201 gfx1250 gfx1251 + gfx1310 ) # pkg-config file diff --git a/llvm/docs/AMDGPUUsage.rst b/llvm/docs/AMDGPUUsage.rst index 39280a37e8d30..101ba4e896638 100644 --- a/llvm/docs/AMDGPUUsage.rst +++ b/llvm/docs/AMDGPUUsage.rst @@ -556,6 +556,15 @@ Every processor supports every OS ABI (see :ref:`amdgpu-os`) with the following - Workgroup Clusters + **GCN GFX13 (RDNA 5)** + ----------------------------------------------------------------------------------------------------------------------- + ``gfx1310`` ``amdgcn`` dGPU - cumode - Architected *TBA* + - wavefrontsize64 flat + scratch .. TODO:: + - Packed + work-item Add product + IDs names. + =========== =============== ============ ===== ================= =============== =============== ====================== Generic processors allow execution of a single code object on any of the processors that @@ -2579,7 +2588,7 @@ The AMDGPU backend uses the following ELF header: *reserved* 0x04d Reserved. ``EF_AMDGPU_MACH_AMDGCN_GFX1201`` 0x04e ``gfx1201`` ``EF_AMDGPU_MACH_AMDGCN_GFX950`` 0x04f ``gfx950`` - *reserved* 0x050 Reserved. + ``EF_AMDGPU_MACH_AMDGCN_GFX1310`` 0x050 ``gfx1310`` ``EF_AMDGPU_MACH_AMDGCN_GFX9_GENERIC`` 0x051 ``gfx9-generic`` ``EF_AMDGPU_MACH_AMDGCN_GFX10_1_GENERIC`` 0x052 ``gfx10-1-generic`` ``EF_AMDGPU_MACH_AMDGCN_GFX10_3_GENERIC`` 0x053 ``gfx10-3-generic`` diff --git a/llvm/include/llvm/BinaryFormat/ELF.h b/llvm/include/llvm/BinaryFormat/ELF.h index 5e6e948fc1417..ae954167c3d3a 100644 --- a/llvm/include/llvm/BinaryFormat/ELF.h +++ b/llvm/include/llvm/BinaryFormat/ELF.h @@ -851,7 +851,7 @@ enum : unsigned { EF_AMDGPU_MACH_AMDGCN_RESERVED_0X4D = 0x04d, EF_AMDGPU_MACH_AMDGCN_GFX1201 = 0x04e, EF_AMDGPU_MACH_AMDGCN_GFX950 = 0x04f, - EF_AMDGPU_MACH_AMDGCN_RESERVED_0X50 = 0x050, + EF_AMDGPU_MACH_AMDGCN_GFX1310 = 0x050, EF_AMDGPU_MACH_AMDGCN_GFX9_GENERIC = 0x051, EF_AMDGPU_MACH_AMDGCN_GFX10_1_GENERIC = 0x052, EF_AMDGPU_MACH_AMDGCN_GFX10_3_GENERIC = 0x053, diff --git a/llvm/include/llvm/TargetParser/TargetParser.h b/llvm/include/llvm/TargetParser/TargetParser.h index 9dfa50c1ad1ba..96bf367eff2c0 100644 --- a/llvm/include/llvm/TargetParser/TargetParser.h +++ b/llvm/include/llvm/TargetParser/TargetParser.h @@ -115,8 +115,10 @@ enum GPUKind : uint32_t { GK_GFX1250, GK_GFX1251, + GK_GFX1310, + GK_AMDGCN_FIRST = GK_GFX600, - GK_AMDGCN_LAST = GK_GFX1251, + GK_AMDGCN_LAST = GK_GFX1310, GK_GFX9_GENERIC, GK_GFX10_1_GENERIC, diff --git a/llvm/lib/Object/ELFObjectFile.cpp b/llvm/lib/Object/ELFObjectFile.cpp index 3f0ecbe5e439b..5bdb4a9262a1b 100644 --- a/llvm/lib/Object/ELFObjectFile.cpp +++ b/llvm/lib/Object/ELFObjectFile.cpp @@ -606,6 +606,10 @@ StringRef ELFObjectFileBase::getAMDGPUCPUName() const { case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1251: return "gfx1251"; + // AMDGCN GFX13. + case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1310: + return "gfx1310"; + // Generic AMDGCN targets case ELF::EF_AMDGPU_MACH_AMDGCN_GFX9_GENERIC: return "gfx9-generic"; diff --git a/llvm/lib/ObjectYAML/ELFYAML.cpp b/llvm/lib/ObjectYAML/ELFYAML.cpp index 18b3abb613f84..21dee1f4a341e 100644 --- a/llvm/lib/ObjectYAML/ELFYAML.cpp +++ b/llvm/lib/ObjectYAML/ELFYAML.cpp @@ -653,6 +653,7 @@ void ScalarBitSetTraits<ELFYAML::ELF_EF>::bitset(IO &IO, BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1201, EF_AMDGPU_MACH); BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1250, EF_AMDGPU_MACH); BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1251, EF_AMDGPU_MACH); + BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1310, EF_AMDGPU_MACH); BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX9_GENERIC, EF_AMDGPU_MACH); BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX9_4_GENERIC, EF_AMDGPU_MACH); BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX10_1_GENERIC, EF_AMDGPU_MACH); diff --git a/llvm/lib/Target/AMDGPU/GCNProcessors.td b/llvm/lib/Target/AMDGPU/GCNProcessors.td index c6fb31f9cdbd2..e13be88410862 100644 --- a/llvm/lib/Target/AMDGPU/GCNProcessors.td +++ b/llvm/lib/Target/AMDGPU/GCNProcessors.td @@ -333,3 +333,11 @@ def : ProcessorModel<"gfx1250", GFX1250SpeedModel, def : ProcessorModel<"gfx1251", GFX1250SpeedModel, FeatureISAVersion12_51.Features >; + +//===----------------------------------------------------------------------===// +// GCN GFX13. +//===----------------------------------------------------------------------===// + +def : ProcessorModel<"gfx1310", GFX12SpeedModel, + FeatureISAVersion12_50.Features +>; diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp index 0855d6d4d37ce..27786836fead9 100644 --- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp +++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp @@ -118,6 +118,7 @@ StringRef AMDGPUTargetStreamer::getArchNameFromElfMach(unsigned ElfMach) { case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1201: AK = GK_GFX1201; break; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1250: AK = GK_GFX1250; break; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1251: AK = GK_GFX1251; break; + case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1310: AK = GK_GFX1310; break; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX9_GENERIC: AK = GK_GFX9_GENERIC; break; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX9_4_GENERIC: AK = GK_GFX9_4_GENERIC; break; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX10_1_GENERIC: AK = GK_GFX10_1_GENERIC; break; @@ -205,6 +206,7 @@ unsigned AMDGPUTargetStreamer::getElfMach(StringRef GPU) { case GK_GFX1201: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX1201; case GK_GFX1250: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX1250; case GK_GFX1251: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX1251; + case GK_GFX1310: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX1310; case GK_GFX9_GENERIC: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX9_GENERIC; case GK_GFX9_4_GENERIC: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX9_4_GENERIC; case GK_GFX10_1_GENERIC: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX10_1_GENERIC; diff --git a/llvm/lib/TargetParser/TargetParser.cpp b/llvm/lib/TargetParser/TargetParser.cpp index d5e3daaea33c9..4f9d94a1a8fcd 100644 --- a/llvm/lib/TargetParser/TargetParser.cpp +++ b/llvm/lib/TargetParser/TargetParser.cpp @@ -176,6 +176,7 @@ constexpr GPUInfo AMDGCNGPUs[] = { {{"gfx1201"}, {"gfx1201"}, GK_GFX1201, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP}, {{"gfx1250"}, {"gfx1250"}, GK_GFX1250, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_XNACK_ALWAYS}, {{"gfx1251"}, {"gfx1251"}, GK_GFX1251, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_XNACK_ALWAYS}, + {{"gfx1310"}, {"gfx1310"}, GK_GFX1310, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP}, {{"gfx9-generic"}, {"gfx9-generic"}, GK_GFX9_GENERIC, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_XNACK}, {{"gfx10-1-generic"}, {"gfx10-1-generic"}, GK_GFX10_1_GENERIC, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_XNACK|FEATURE_WGP}, @@ -332,6 +333,7 @@ AMDGPU::IsaVersion AMDGPU::getIsaVersion(StringRef GPU) { case GK_GFX1201: return {12, 0, 1}; case GK_GFX1250: return {12, 5, 0}; case GK_GFX1251: return {12, 5, 1}; + case GK_GFX1310: return {13, 1, 0}; // Generic targets return the lowest common denominator // within their family. That is, the ISA that is the most @@ -429,6 +431,7 @@ static void fillAMDGCNFeatureMap(StringRef GPU, const Triple &T, StringMap<bool> &Features) { AMDGPU::GPUKind Kind = parseArchAMDGCN(GPU); switch (Kind) { + case GK_GFX1310: case GK_GFX1251: case GK_GFX1250: Features["ci-insts"] = true; diff --git a/llvm/test/CodeGen/AMDGPU/directive-amdgcn-target.ll b/llvm/test/CodeGen/AMDGPU/directive-amdgcn-target.ll index d545562939e43..2e7247b3b924b 100644 --- a/llvm/test/CodeGen/AMDGPU/directive-amdgcn-target.ll +++ b/llvm/test/CodeGen/AMDGPU/directive-amdgcn-target.ll @@ -108,6 +108,7 @@ ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1201 < %s | FileCheck --check-prefixes=GFX1201 %s ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1250 < %s | FileCheck --check-prefixes=GFX1250 %s ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1251 < %s | FileCheck --check-prefixes=GFX1251 %s +; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1310 < %s | FileCheck --check-prefixes=GFX1310 %s ; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx9-generic -mattr=-xnack < %s | FileCheck --check-prefixes=GFX9_GENERIC_NOXNACK %s ; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx9-generic -mattr=+xnack < %s | FileCheck --check-prefixes=GFX9_GENERIC_XNACK %s @@ -207,6 +208,7 @@ ; GFX1201: .amdgcn_target "amdgcn-amd-amdhsa--gfx1201" ; GFX1250: .amdgcn_target "amdgcn-amd-amdhsa--gfx1250" ; GFX1251: .amdgcn_target "amdgcn-amd-amdhsa--gfx1251" +; GFX1310: .amdgcn_target "amdgcn-amd-amdhsa--gfx1310" ; GFX9_GENERIC_NOXNACK: .amdgcn_target "amdgcn-amd-amdhsa--gfx9-generic:xnack-" ; GFX9_GENERIC_XNACK: .amdgcn_target "amdgcn-amd-amdhsa--gfx9-generic:xnack+" diff --git a/llvm/test/CodeGen/AMDGPU/elf-header-flags-mach.ll b/llvm/test/CodeGen/AMDGPU/elf-header-flags-mach.ll index df911bfd7522e..4253c593b3e7e 100644 --- a/llvm/test/CodeGen/AMDGPU/elf-header-flags-mach.ll +++ b/llvm/test/CodeGen/AMDGPU/elf-header-flags-mach.ll @@ -79,6 +79,7 @@ ; RUN: llc -filetype=obj -mtriple=amdgcn -mcpu=gfx1201 < %s | llvm-readobj --file-header - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX1201 %s ; RUN: llc -filetype=obj -mtriple=amdgcn -mcpu=gfx1250 < %s | llvm-readobj --file-header - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX1250 %s ; RUN: llc -filetype=obj -mtriple=amdgcn -mcpu=gfx1251 < %s | llvm-readobj --file-header - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX1251 %s +; RUN: llc -filetype=obj -mtriple=amdgcn -mcpu=gfx1310 < %s | llvm-readobj --file-header - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX1310 %s ; RUN: llc -filetype=obj --amdhsa-code-object-version=6 -mtriple=amdgcn -mcpu=gfx9-generic < %s | llvm-readobj --file-header - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX9_GENERIC %s ; RUN: llc -filetype=obj --amdhsa-code-object-version=6 -mtriple=amdgcn -mcpu=gfx9-4-generic < %s | llvm-readobj --file-header - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX9_4_GENERIC %s @@ -162,6 +163,7 @@ ; GFX1201: EF_AMDGPU_MACH_AMDGCN_GFX1201 (0x4E) ; GFX1250: EF_AMDGPU_MACH_AMDGCN_GFX1250 (0x49) ; GFX1251: EF_AMDGPU_MACH_AMDGCN_GFX1251 (0x5A) +; GFX1310: EF_AMDGPU_MACH_AMDGCN_GFX1310 (0x50) ; GFX9_GENERIC: EF_AMDGPU_MACH_AMDGCN_GFX9_GENERIC (0x51) ; GFX9_4_GENERIC: EF_AMDGPU_MACH_AMDGCN_GFX9_4_GENERIC (0x5F) diff --git a/llvm/test/CodeGen/AMDGPU/occupancy-levels.ll b/llvm/test/CodeGen/AMDGPU/occupancy-levels.ll index 9278c024f8905..d71091dc20093 100644 --- a/llvm/test/CodeGen/AMDGPU/occupancy-levels.ll +++ b/llvm/test/CodeGen/AMDGPU/occupancy-levels.ll @@ -21,6 +21,7 @@ ; RUN: llc -mtriple=amdgcn -mcpu=gfx1200 < %s | FileCheck --check-prefixes=GCN,GFX1100,GFX1100W32 %s ; RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -mattr=+wavefrontsize64 < %s | FileCheck --check-prefixes=GCN,GFX1100,GFX1100W64 %s ; RUN: llc -mtriple=amdgcn -mcpu=gfx1250 < %s | FileCheck --check-prefixes=GCN,GFX1250 %s +; RUN: llc -mtriple=amdgcn -mcpu=gfx1310 < %s | FileCheck --check-prefixes=GCN,GFX1250 %s ; GCN-LABEL: {{^}}max_occupancy: ; GFX9: ; Occupancy: 10 diff --git a/llvm/test/Object/AMDGPU/elf-header-flags-mach.yaml b/llvm/test/Object/AMDGPU/elf-header-flags-mach.yaml index 3c81d3e61aa88..fbbedd4acfc99 100644 --- a/llvm/test/Object/AMDGPU/elf-header-flags-mach.yaml +++ b/llvm/test/Object/AMDGPU/elf-header-flags-mach.yaml @@ -250,6 +250,10 @@ # RUN: llvm-readobj -S --file-headers %t.o.AMDGCN_GFX1251 | FileCheck --check-prefixes=ELF-AMDGCN-ALL,ELF-AMDGCN-GFX1251 %s # RUN: obj2yaml %t.o.AMDGCN_GFX1251 | FileCheck --check-prefixes=YAML-AMDGCN-ALL,YAML-AMDGCN-GFX1251 %s +# RUN: sed -e 's/<BITS>/64/' -e 's/<MACH>/AMDGCN_GFX1310/' %s | yaml2obj -o %t.o.AMDGCN_GFX1310 +# RUN: llvm-readobj -S --file-headers %t.o.AMDGCN_GFX1310 | FileCheck --check-prefixes=ELF-AMDGCN-ALL,ELF-AMDGCN-GFX1310 %s +# RUN: obj2yaml %t.o.AMDGCN_GFX1310 | FileCheck --check-prefixes=YAML-AMDGCN-ALL,YAML-AMDGCN-GFX1310 %s + # RUN: sed -e 's/<BITS>/64/' -e 's/<MACH>/AMDGCN_GFX9_GENERIC/' %s | yaml2obj -o %t.o.AMDGCN_GFX9_GENERIC # RUN: llvm-readobj -S --file-headers %t.o.AMDGCN_GFX9_GENERIC | FileCheck --check-prefixes=ELF-AMDGCN-ALL,ELF-AMDGCN-GFX9_GENERIC %s # RUN: obj2yaml %t.o.AMDGCN_GFX9_GENERIC | FileCheck --check-prefixes=YAML-AMDGCN-ALL,YAML-AMDGCN-GFX9_GENERIC %s @@ -481,6 +485,9 @@ # ELF-AMDGCN-GFX1251: EF_AMDGPU_MACH_AMDGCN_GFX1251 (0x5A) # YAML-AMDGCN-GFX1251: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX1251 ] +# ELF-AMDGCN-GFX1310: EF_AMDGPU_MACH_AMDGCN_GFX1310 (0x50) +# YAML-AMDGCN-GFX1310: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX1310 ] + # ELF-AMDGCN-GFX9_GENERIC: EF_AMDGPU_MACH_AMDGCN_GFX9_GENERIC (0x51) # YAML-AMDGCN-GFX9_GENERIC: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX9_GENERIC ] diff --git a/llvm/test/tools/llvm-objdump/ELF/AMDGPU/subtarget.ll b/llvm/test/tools/llvm-objdump/ELF/AMDGPU/subtarget.ll index 49e1f1bac8150..5c571f39227e5 100644 --- a/llvm/test/tools/llvm-objdump/ELF/AMDGPU/subtarget.ll +++ b/llvm/test/tools/llvm-objdump/ELF/AMDGPU/subtarget.ll @@ -4,6 +4,13 @@ define amdgpu_kernel void @test_kernel() { ; Test subtarget detection. Disassembly is only supported for GFX8 and beyond. ; +; ----------------------------------GFX13-------------------------------------- +; +; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1310 -filetype=obj -O0 -o %t.o %s +; RUN: llvm-objdump -D --arch-name=amdgcn --mcpu=gfx1310 %t.o > %t-specify.txt +; RUN: llvm-objdump -D %t.o > %t-detect.txt +; RUN: diff %t-specify.txt %t-detect.txt +; ; ----------------------------------GFX12-------------------------------------- ; ; RUN: llc -mtriple=amdgcn-amd-amdhsa --amdhsa-code-object-version=6 -mcpu=gfx12-generic -filetype=obj -O0 -o %t.o %s diff --git a/llvm/test/tools/llvm-readobj/ELF/AMDGPU/elf-headers.test b/llvm/test/tools/llvm-readobj/ELF/AMDGPU/elf-headers.test index 2ae0943a537e9..f6786a606f833 100644 --- a/llvm/test/tools/llvm-readobj/ELF/AMDGPU/elf-headers.test +++ b/llvm/test/tools/llvm-readobj/ELF/AMDGPU/elf-headers.test @@ -472,6 +472,15 @@ # RUN: yaml2obj %s -o %t -DABI_VERSION=2 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1251 # RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=2 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1251 -DFLAG_VALUE=0x5A +# RUN: yaml2obj %s -o %t -DABI_VERSION=0 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1310 +# RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=0 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1310 -DFLAG_VALUE=0x50 + +# RUN: yaml2obj %s -o %t -DABI_VERSION=1 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1310 +# RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=1 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1310 -DFLAG_VALUE=0x50 + +# RUN: yaml2obj %s -o %t -DABI_VERSION=2 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1310 +# RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=2 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1310 -DFLAG_VALUE=0x50 + --- !ELF FileHeader: Class: ELFCLASS64 diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp index 2aa405b3e69f2..dd5a37b1c650d 100644 --- a/llvm/tools/llvm-readobj/ELFDumper.cpp +++ b/llvm/tools/llvm-readobj/ELFDumper.cpp @@ -1668,6 +1668,7 @@ const EnumEntry<unsigned> ElfHeaderMipsFlags[] = { ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1201, "gfx1201"), \ ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1250, "gfx1250"), \ ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1251, "gfx1251"), \ + ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1310, "gfx1310"), \ ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX9_GENERIC, "gfx9-generic"), \ ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX9_4_GENERIC, "gfx9-4-generic"), \ ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX10_1_GENERIC, "gfx10-1-generic"), \ >From 41cd87603518e77bed5996d523067d222389a2d1 Mon Sep 17 00:00:00 2001 From: Mariusz Sikora <[email protected]> Date: Thu, 22 Jan 2026 09:18:38 -0500 Subject: [PATCH 2/3] Add comment about gfx1310 initial support to ReleaseNotes.md --- llvm/docs/ReleaseNotes.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/docs/ReleaseNotes.md b/llvm/docs/ReleaseNotes.md index ff6de8612b6ea..22333ff546e99 100644 --- a/llvm/docs/ReleaseNotes.md +++ b/llvm/docs/ReleaseNotes.md @@ -84,6 +84,8 @@ Changes to the AArch64 Backend Changes to the AMDGPU Backend ----------------------------- +* Initial support for gfx1310 + Changes to the ARM Backend -------------------------- >From 3a0f7280d0c9c0407d21a5040af20fa2a00c98ca Mon Sep 17 00:00:00 2001 From: Mariusz Sikora <[email protected]> Date: Thu, 22 Jan 2026 09:23:51 -0500 Subject: [PATCH 3/3] Update clang ReleaseNotes --- clang/docs/ReleaseNotes.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index e97b9c14cc700..791212dafd342 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -196,6 +196,8 @@ Target Specific Changes AMDGPU Support ^^^^^^^^^^^^^^ +- Initial support for gfx1310 + NVPTX Support ^^^^^^^^^^^^^^ _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
