https://github.com/mbrkusanin created https://github.com/llvm/llvm-project/pull/205363
gfx11-7-generic = 0x062 gfx13-generic = 0x063 Co-Authored-By: Claude [email protected] From 292f3783261baa0d1a59cab3b1962ec4ae0b07b1 Mon Sep 17 00:00:00 2001 From: Mirko Brkusanin <[email protected]> Date: Tue, 23 Jun 2026 16:53:51 +0200 Subject: [PATCH] [AMDGPU] Add more generic targets gfx11-7-generic = 0x062 gfx13-generic = 0x063 Co-Authored-By: Claude [email protected] --- clang/include/clang/Basic/OffloadArch.h | 4 +++- clang/lib/Basic/OffloadArch.cpp | 4 +++- clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp | 4 +++- clang/test/Driver/amdgpu-macros.cl | 2 ++ clang/test/Driver/amdgpu-mcpu.cl | 4 ++++ .../Driver/offload-arch-translation-amdgpu.cu | 4 ++++ clang/test/Misc/target-invalid-cpu-note/amdgcn.c | 4 +++- clang/test/Misc/target-invalid-cpu-note/nvptx.c | 4 +++- llvm/docs/AMDGPUUsage.rst | 15 +++++++++++++++ llvm/include/llvm/BinaryFormat/ELF.h | 8 ++++++-- .../llvm/TargetParser/AMDGPUTargetParser.def | 4 +++- .../llvm/TargetParser/AMDGPUTargetParser.h | 2 +- llvm/lib/Target/AMDGPU/AMDGPU.td | 8 ++++++++ llvm/lib/Target/AMDGPU/GCNProcessors.td | 10 ++++++++++ .../AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp | 10 ++++++++++ llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h | 2 ++ llvm/lib/TargetParser/AMDGPUTargetParser.cpp | 2 ++ .../CodeGen/AMDGPU/directive-amdgcn-target.ll | 4 ++++ llvm/test/CodeGen/AMDGPU/elf-header-flags-mach.ll | 4 ++++ .../CodeGen/AMDGPU/generic-targets-require-v6.ll | 6 ++++++ .../CodeGen/AMDGPU/hsa-generic-target-features.ll | 8 +++++++- .../test/Object/AMDGPU/elf-header-flags-mach.yaml | 14 ++++++++++++++ .../tools/llvm-objdump/ELF/AMDGPU/subtarget.ll | 10 ++++++++++ .../llvm-readobj/ELF/AMDGPU/elf-headers.test | 6 ++++++ offload/plugins-nextgen/common/src/Utils/ELF.cpp | 2 +- 25 files changed, 134 insertions(+), 11 deletions(-) diff --git a/clang/include/clang/Basic/OffloadArch.h b/clang/include/clang/Basic/OffloadArch.h index 5ad2129b9548c..552f1b0316ccf 100644 --- a/clang/include/clang/Basic/OffloadArch.h +++ b/clang/include/clang/Basic/OffloadArch.h @@ -112,15 +112,17 @@ enum class OffloadArch { GFX1152, GFX1153, GFX1154, + GFX11_7_GENERIC, GFX1170, GFX1171, GFX1172, GFX12_GENERIC, GFX1200, GFX1201, + GFX12_5_GENERIC, GFX1250, GFX1251, - GFX12_5_GENERIC, + GFX13_GENERIC, GFX1310, AMDGCNSPIRV, Generic, // A processor model named 'generic' if the target backend defines a diff --git a/clang/lib/Basic/OffloadArch.cpp b/clang/lib/Basic/OffloadArch.cpp index 8cf97d1f7597e..2a333662455e4 100644 --- a/clang/lib/Basic/OffloadArch.cpp +++ b/clang/lib/Basic/OffloadArch.cpp @@ -105,15 +105,17 @@ static const OffloadArchToStringMap ArchNames[] = { GFX(1152), // gfx1152 GFX(1153), // gfx1153 GFX(1154), // gfx1154 + {OffloadArch::GFX11_7_GENERIC, "gfx11-7-generic", "compute_amdgcn"}, GFX(1170), // gfx1170 GFX(1171), // gfx1171 GFX(1172), // gfx1172 {OffloadArch::GFX12_GENERIC, "gfx12-generic", "compute_amdgcn"}, GFX(1200), // gfx1200 GFX(1201), // gfx1201 + {OffloadArch::GFX12_5_GENERIC, "gfx12-5-generic", "compute_amdgcn"}, GFX(1250), // gfx1250 GFX(1251), // gfx1251 - {OffloadArch::GFX12_5_GENERIC, "gfx12-5-generic", "compute_amdgcn"}, + {OffloadArch::GFX13_GENERIC, "gfx13-generic", "compute_amdgcn"}, GFX(1310), // gfx1310 {OffloadArch::AMDGCNSPIRV, "amdgcnspirv", "compute_amdgcn"}, // Intel CPUs diff --git a/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp b/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp index dec3bca0ef3eb..3fccd3a291d37 100644 --- a/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp +++ b/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp @@ -2367,15 +2367,17 @@ void CGOpenMPRuntimeGPU::processRequiresDirective(const OMPRequiresDecl *D) { case OffloadArch::GFX1152: case OffloadArch::GFX1153: case OffloadArch::GFX1154: + case OffloadArch::GFX11_7_GENERIC: case OffloadArch::GFX1170: case OffloadArch::GFX1171: case OffloadArch::GFX1172: case OffloadArch::GFX12_GENERIC: case OffloadArch::GFX1200: case OffloadArch::GFX1201: + case OffloadArch::GFX12_5_GENERIC: case OffloadArch::GFX1250: case OffloadArch::GFX1251: - case OffloadArch::GFX12_5_GENERIC: + case OffloadArch::GFX13_GENERIC: case OffloadArch::GFX1310: case OffloadArch::AMDGCNSPIRV: case OffloadArch::Generic: diff --git a/clang/test/Driver/amdgpu-macros.cl b/clang/test/Driver/amdgpu-macros.cl index 21b6db8445a8f..f162b0cc541df 100644 --- a/clang/test/Driver/amdgpu-macros.cl +++ b/clang/test/Driver/amdgpu-macros.cl @@ -144,8 +144,10 @@ // RUN: %clang -E -dM -target amdgcn -mcpu=gfx10-1-generic %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx10_1_generic -DFAMILY=GFX10 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx10-3-generic %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx10_3_generic -DFAMILY=GFX10 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx11-generic %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx11_generic -DFAMILY=GFX11 +// RUN: %clang -E -dM -target amdgcn -mcpu=gfx11-7-generic %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx11_7_generic -DFAMILY=GFX11 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx12-generic %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx12_generic -DFAMILY=GFX12 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx12-5-generic %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx12_5_generic -DFAMILY=GFX12 +// RUN: %clang -E -dM -target amdgcn -mcpu=gfx13-generic %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx13_generic -DFAMILY=GFX13 // ARCH-GCN-DAG: #define FP_FAST_FMA 1 // ARCH-GCN-DAG: #define FP_FAST_FMA_HALF 1 diff --git a/clang/test/Driver/amdgpu-mcpu.cl b/clang/test/Driver/amdgpu-mcpu.cl index 97f4153525fe2..931e08fcd9f01 100644 --- a/clang/test/Driver/amdgpu-mcpu.cl +++ b/clang/test/Driver/amdgpu-mcpu.cl @@ -128,8 +128,10 @@ // RUN: %clang -### -target amdgcn -mcpu=gfx10-1-generic %s 2>&1 | FileCheck --check-prefix=GFX10_1_GENERIC %s // RUN: %clang -### -target amdgcn -mcpu=gfx10-3-generic %s 2>&1 | FileCheck --check-prefix=GFX10_3_GENERIC %s // RUN: %clang -### -target amdgcn -mcpu=gfx11-generic %s 2>&1 | FileCheck --check-prefix=GFX11_GENERIC %s +// RUN: %clang -### -target amdgcn -mcpu=gfx11-7-generic %s 2>&1 | FileCheck --check-prefix=GFX11_7_GENERIC %s // RUN: %clang -### -target amdgcn -mcpu=gfx12-generic %s 2>&1 | FileCheck --check-prefix=GFX12_GENERIC %s // RUN: %clang -### -target amdgcn -mcpu=gfx12-5-generic %s 2>&1 | FileCheck --check-prefix=GFX12_5_GENERIC %s +// RUN: %clang -### -target amdgcn -mcpu=gfx13-generic %s 2>&1 | FileCheck --check-prefix=GFX13_GENERIC %s // GCNDEFAULT-NOT: -target-cpu // GFX600: "-target-cpu" "gfx600" @@ -190,5 +192,7 @@ // GFX10_1_GENERIC: "-target-cpu" "gfx10-1-generic" // GFX10_3_GENERIC: "-target-cpu" "gfx10-3-generic" // GFX11_GENERIC: "-target-cpu" "gfx11-generic" +// GFX11_7_GENERIC: "-target-cpu" "gfx11-7-generic" // GFX12_GENERIC: "-target-cpu" "gfx12-generic" // GFX12_5_GENERIC: "-target-cpu" "gfx12-5-generic" +// GFX13_GENERIC: "-target-cpu" "gfx13-generic" diff --git a/clang/test/Driver/offload-arch-translation-amdgpu.cu b/clang/test/Driver/offload-arch-translation-amdgpu.cu index bf542870cd24d..a5176315fbaf2 100644 --- a/clang/test/Driver/offload-arch-translation-amdgpu.cu +++ b/clang/test/Driver/offload-arch-translation-amdgpu.cu @@ -65,8 +65,10 @@ // RUN: %clang -x hip -### --target=x86_64-linux-gnu -c --cuda-gpu-arch=gfx10-1-generic -nogpuinc -nogpulib %s 2>&1 | FileCheck --check-prefixes=HIP,GFX10_1_GENERIC %s // RUN: %clang -x hip -### --target=x86_64-linux-gnu -c --cuda-gpu-arch=gfx10-3-generic -nogpuinc -nogpulib %s 2>&1 | FileCheck --check-prefixes=HIP,GFX10_3_GENERIC %s // RUN: %clang -x hip -### --target=x86_64-linux-gnu -c --cuda-gpu-arch=gfx11-generic -nogpuinc -nogpulib %s 2>&1 | FileCheck --check-prefixes=HIP,GFX11_GENERIC %s +// RUN: %clang -x hip -### --target=x86_64-linux-gnu -c --cuda-gpu-arch=gfx11-7-generic -nogpuinc -nogpulib %s 2>&1 | FileCheck --check-prefixes=HIP,GFX11_7_GENERIC %s // RUN: %clang -x hip -### --target=x86_64-linux-gnu -c --cuda-gpu-arch=gfx12-generic -nogpuinc -nogpulib %s 2>&1 | FileCheck --check-prefixes=HIP,GFX12_GENERIC %s // RUN: %clang -x hip -### --target=x86_64-linux-gnu -c --cuda-gpu-arch=gfx12-5-generic -nogpuinc -nogpulib %s 2>&1 | FileCheck --check-prefixes=HIP,GFX12_5_GENERIC %s +// RUN: %clang -x hip -### --target=x86_64-linux-gnu -c --cuda-gpu-arch=gfx13-generic -nogpuinc -nogpulib %s 2>&1 | FileCheck --check-prefixes=HIP,GFX13_GENERIC %s // // Feature modifier coverage @@ -135,7 +137,9 @@ // GFX10_1_GENERIC: triple=amdgcn-amd-amdhsa,arch=gfx10-1-generic // GFX10_3_GENERIC: triple=amdgcn-amd-amdhsa,arch=gfx10-3-generic // GFX11_GENERIC: triple=amdgcn-amd-amdhsa,arch=gfx11-generic +// GFX11_7_GENERIC: triple=amdgcn-amd-amdhsa,arch=gfx11-7-generic // GFX12_GENERIC: triple=amdgcn-amd-amdhsa,arch=gfx12-generic // GFX12_5_GENERIC: triple=amdgcn-amd-amdhsa,arch=gfx12-5-generic +// GFX13_GENERIC: triple=amdgcn-amd-amdhsa,arch=gfx13-generic // SPIRV: triple=spirv64-amd-amdhsa,arch=amdgcnspirv diff --git a/clang/test/Misc/target-invalid-cpu-note/amdgcn.c b/clang/test/Misc/target-invalid-cpu-note/amdgcn.c index 44c6a61b184af..0f4336d15e698 100644 --- a/clang/test/Misc/target-invalid-cpu-note/amdgcn.c +++ b/clang/test/Misc/target-invalid-cpu-note/amdgcn.c @@ -76,10 +76,12 @@ // CHECK-SAME: {{^}}, gfx1251 // CHECK-SAME: {{^}}, gfx1310 // CHECK-SAME: {{^}}, gfx9-generic +// CHECK-SAME: {{^}}, gfx9-4-generic // CHECK-SAME: {{^}}, gfx10-1-generic // CHECK-SAME: {{^}}, gfx10-3-generic // CHECK-SAME: {{^}}, gfx11-generic +// CHECK-SAME: {{^}}, gfx11-7-generic // CHECK-SAME: {{^}}, gfx12-generic -// CHECK-SAME: {{^}}, gfx9-4-generic // CHECK-SAME: {{^}}, gfx12-5-generic +// CHECK-SAME: {{^}}, gfx13-generic // CHECK-SAME: {{$}} diff --git a/clang/test/Misc/target-invalid-cpu-note/nvptx.c b/clang/test/Misc/target-invalid-cpu-note/nvptx.c index 6c234cc3a5c5c..decbdfd44d6eb 100644 --- a/clang/test/Misc/target-invalid-cpu-note/nvptx.c +++ b/clang/test/Misc/target-invalid-cpu-note/nvptx.c @@ -94,15 +94,17 @@ // CHECK-SAME: {{^}}, gfx1152 // CHECK-SAME: {{^}}, gfx1153 // CHECK-SAME: {{^}}, gfx1154 +// CHECK-SAME: {{^}}, gfx11-7-generic // CHECK-SAME: {{^}}, gfx1170 // CHECK-SAME: {{^}}, gfx1171 // CHECK-SAME: {{^}}, gfx1172 // CHECK-SAME: {{^}}, gfx12-generic // CHECK-SAME: {{^}}, gfx1200 // CHECK-SAME: {{^}}, gfx1201 +// CHECK-SAME: {{^}}, gfx12-5-generic // CHECK-SAME: {{^}}, gfx1250 // CHECK-SAME: {{^}}, gfx1251 -// CHECK-SAME: {{^}}, gfx12-5-generic +// CHECK-SAME: {{^}}, gfx13-generic // CHECK-SAME: {{^}}, gfx1310 // CHECK-SAME: {{^}}, amdgcnspirv // CHECK-SAME: {{$}} diff --git a/llvm/docs/AMDGPUUsage.rst b/llvm/docs/AMDGPUUsage.rst index 8aad903f98561..2b522395ee892 100644 --- a/llvm/docs/AMDGPUUsage.rst +++ b/llvm/docs/AMDGPUUsage.rst @@ -701,6 +701,12 @@ Generic processor code objects are versioned. See :ref:`amdgpu-generic-processor - ``gfx1103`` + ``gfx11-7-generic`` ``amdgcn`` - ``gfx1170`` - wavefrontsize64 - Architected No restrictions. + - ``gfx1171`` - cumode flat scratch + - ``gfx1172`` - Packed + work-item + IDs + ``gfx12-generic`` ``amdgcn`` - ``gfx1200`` - wavefrontsize64 - Architected No restrictions. - ``gfx1201`` - cumode flat scratch - Packed @@ -712,6 +718,12 @@ Generic processor code objects are versioned. See :ref:`amdgpu-generic-processor - Packed work-item IDs + + ``gfx13-generic`` ``amdgcn`` - ``gfx1310`` - wavefrontsize64 - Architected No restrictions. + - cumode flat scratch + - Packed + work-item + IDs ==================== ============== ================= ================== ================= ================================= .. _amdgpu-generic-processor-versioning: @@ -3063,6 +3075,9 @@ The AMDGPU backend uses the following ELF header: ``EF_AMDGPU_MACH_AMDGCN_GFX1171`` 0x05e ``gfx1171`` ``EF_AMDGPU_MACH_AMDGCN_GFX9_4_GENERIC`` 0x05f ``gfx9-4-generic`` *reserved* 0x060 Reserved. + *reserved* 0x061 Reserved. + ``EF_AMDGPU_MACH_AMDGCN_GFX11_7_GENERIC`` 0x062 ``gfx11-7-generic`` + ``EF_AMDGPU_MACH_AMDGCN_GFX13_GENERIC`` 0x063 ``gfx13-generic`` *reserved* 0x070 Reserved. ========================================== ========== ============================= diff --git a/llvm/include/llvm/BinaryFormat/ELF.h b/llvm/include/llvm/BinaryFormat/ELF.h index 5b9ed6100f20f..3f1889f236ea1 100644 --- a/llvm/include/llvm/BinaryFormat/ELF.h +++ b/llvm/include/llvm/BinaryFormat/ELF.h @@ -840,7 +840,9 @@ enum { X(0x5c, EF_AMDGPU_MACH_AMDGCN_GFX1172, "gfx1172") \ X(0x5d, EF_AMDGPU_MACH_AMDGCN_GFX1170, "gfx1170") \ X(0x5e, EF_AMDGPU_MACH_AMDGCN_GFX1171, "gfx1171") \ - X(0x5f, EF_AMDGPU_MACH_AMDGCN_GFX9_4_GENERIC, "gfx9-4-generic") + X(0x5f, EF_AMDGPU_MACH_AMDGCN_GFX9_4_GENERIC, "gfx9-4-generic") \ + X(0x62, EF_AMDGPU_MACH_AMDGCN_GFX11_7_GENERIC, "gfx11-7-generic") \ + X(0x63, EF_AMDGPU_MACH_AMDGCN_GFX13_GENERIC, "gfx13-generic") enum : unsigned { // clang-format off @@ -868,10 +870,12 @@ enum : unsigned { EF_AMDGPU_MACH_AMDGCN_RESERVED_0X4D = 0x04d, EF_AMDGPU_MACH_AMDGCN_RESERVED_0X56 = 0x056, EF_AMDGPU_MACH_AMDGCN_RESERVED_0X57 = 0x057, + EF_AMDGPU_MACH_AMDGCN_RESERVED_0X60 = 0x060, + EF_AMDGPU_MACH_AMDGCN_RESERVED_0X61 = 0x061, // First/last AMDGCN-based processors. EF_AMDGPU_MACH_AMDGCN_FIRST = EF_AMDGPU_MACH_AMDGCN_GFX600, - EF_AMDGPU_MACH_AMDGCN_LAST = EF_AMDGPU_MACH_AMDGCN_GFX9_4_GENERIC, + EF_AMDGPU_MACH_AMDGCN_LAST = EF_AMDGPU_MACH_AMDGCN_GFX13_GENERIC, // Indicates if the "xnack" target feature is enabled for all code contained // in the object. diff --git a/llvm/include/llvm/TargetParser/AMDGPUTargetParser.def b/llvm/include/llvm/TargetParser/AMDGPUTargetParser.def index 3c8b756ae2705..9e633e16b80dc 100644 --- a/llvm/include/llvm/TargetParser/AMDGPUTargetParser.def +++ b/llvm/include/llvm/TargetParser/AMDGPUTargetParser.def @@ -142,12 +142,14 @@ AMDGCN_GPU ("gfx1310", GK_GFX1310, (13, 1, 0), FEATURE_FAST_FMA_F32|FEAT // TODO: Split up this API depending on its caller so // generic target handling is more obvious and less risky. AMDGCN_GPU ("gfx9-generic", GK_GFX9_GENERIC, ( 9, 0, 0), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_XNACK|FEATURE_XNACK_ON_OFF_MODES) +AMDGCN_GPU ("gfx9-4-generic", GK_GFX9_4_GENERIC, ( 9, 4, 0), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_XNACK|FEATURE_XNACK_ON_OFF_MODES|FEATURE_SRAMECC) AMDGCN_GPU ("gfx10-1-generic", GK_GFX10_1_GENERIC, (10, 1, 0), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_XNACK|FEATURE_XNACK_ON_OFF_MODES|FEATURE_WGP) AMDGCN_GPU ("gfx10-3-generic", GK_GFX10_3_GENERIC, (10, 3, 0), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP) AMDGCN_GPU ("gfx11-generic", GK_GFX11_GENERIC, (11, 0, 3), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP) +AMDGCN_GPU ("gfx11-7-generic", GK_GFX11_7_GENERIC, (11, 7, 0), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP) AMDGCN_GPU ("gfx12-generic", GK_GFX12_GENERIC, (12, 0, 0), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP) -AMDGCN_GPU ("gfx9-4-generic", GK_GFX9_4_GENERIC, ( 9, 4, 0), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_XNACK|FEATURE_XNACK_ON_OFF_MODES|FEATURE_SRAMECC) AMDGCN_GPU ("gfx12-5-generic", GK_GFX12_5_GENERIC, (12, 5, 0), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_XNACK) +AMDGCN_GPU ("gfx13-generic", GK_GFX13_GENERIC, (13, 1, 0), FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP) #undef AMDGCN_GPU #undef AMDGCN_GPU_ALIAS diff --git a/llvm/include/llvm/TargetParser/AMDGPUTargetParser.h b/llvm/include/llvm/TargetParser/AMDGPUTargetParser.h index 1376f0942852d..ba447dd346d80 100644 --- a/llvm/include/llvm/TargetParser/AMDGPUTargetParser.h +++ b/llvm/include/llvm/TargetParser/AMDGPUTargetParser.h @@ -39,7 +39,7 @@ enum GPUKind : uint32_t { #include "AMDGPUTargetParser.def" GK_AMDGCN_GENERIC_FIRST = GK_GFX9_GENERIC, - GK_AMDGCN_GENERIC_LAST = GK_GFX12_5_GENERIC, + GK_AMDGCN_GENERIC_LAST = GK_GFX13_GENERIC, }; /// Instruction set architecture version. diff --git a/llvm/lib/Target/AMDGPU/AMDGPU.td b/llvm/lib/Target/AMDGPU/AMDGPU.td index 705e76ebeb7e5..84c4f46a0d8d2 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPU.td +++ b/llvm/lib/Target/AMDGPU/AMDGPU.td @@ -2071,6 +2071,10 @@ def FeatureISAVersion11_7_Common : FeatureSet< FeatureMinimum3Maximum3F16, FeatureNoF16PseudoScalarTransInlineConstants])>; +def FeatureISAVersion11_7_Generic: FeatureSet< + !listconcat(FeatureISAVersion11_7_Common.Features, + [FeatureRequiresCOV6])>; + def FeatureISAVersion12 : FeatureSet< [FeatureGFX12, FeatureBackOffBarrier, @@ -2341,6 +2345,10 @@ def FeatureISAVersion13 : FeatureSet< FeatureSmemPrefetchInsts ]>; +def FeatureISAVersion13_Generic: FeatureSet< + !listconcat(FeatureISAVersion13.Features, + [FeatureRequiresCOV6])>; + //===----------------------------------------------------------------------===// def AMDGPUInstrInfo : InstrInfo { diff --git a/llvm/lib/Target/AMDGPU/GCNProcessors.td b/llvm/lib/Target/AMDGPU/GCNProcessors.td index 20c9655739890..2edd83527992c 100644 --- a/llvm/lib/Target/AMDGPU/GCNProcessors.td +++ b/llvm/lib/Target/AMDGPU/GCNProcessors.td @@ -326,6 +326,11 @@ def : ProcessorModel<"gfx11-generic", GFX11SpeedModel, FeatureISAVersion11_Generic.Features >; +// [gfx1170, gfx1171, gfx1172] +def : ProcessorModel<"gfx11-7-generic", GFX11SpeedModel, + FeatureISAVersion11_7_Generic.Features +>; + //===----------------------------------------------------------------------===// // GCN GFX12. //===----------------------------------------------------------------------===// @@ -363,3 +368,8 @@ def : ProcessorModel<"gfx12-5-generic", GFX125xGenericSpeedModel, def : ProcessorModel<"gfx1310", GFX12SpeedModel, FeatureISAVersion13.Features >; + +// [gfx1310] +def : ProcessorModel<"gfx13-generic", GFX12SpeedModel, + FeatureISAVersion13_Generic.Features +>; diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp index 5db46edf18e67..97bcec66fe318 100644 --- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp +++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp @@ -131,8 +131,10 @@ StringRef AMDGPUTargetStreamer::getArchNameFromElfMach(unsigned ElfMach) { case ELF::EF_AMDGPU_MACH_AMDGCN_GFX10_1_GENERIC: AK = GK_GFX10_1_GENERIC; break; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX10_3_GENERIC: AK = GK_GFX10_3_GENERIC; break; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX11_GENERIC: AK = GK_GFX11_GENERIC; break; + case ELF::EF_AMDGPU_MACH_AMDGCN_GFX11_7_GENERIC: AK = GK_GFX11_7_GENERIC; break; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX12_GENERIC: AK = GK_GFX12_GENERIC; break; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX12_5_GENERIC: AK = GK_GFX12_5_GENERIC; break; + case ELF::EF_AMDGPU_MACH_AMDGCN_GFX13_GENERIC: AK = GK_GFX13_GENERIC; break; case ELF::EF_AMDGPU_MACH_NONE: AK = GK_NONE; break; default: AK = GK_NONE; break; } @@ -224,8 +226,10 @@ unsigned AMDGPUTargetStreamer::getElfMach(StringRef GPU) { case GK_GFX10_1_GENERIC: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX10_1_GENERIC; case GK_GFX10_3_GENERIC: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX10_3_GENERIC; case GK_GFX11_GENERIC: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX11_GENERIC; + case GK_GFX11_7_GENERIC: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX11_7_GENERIC; case GK_GFX12_GENERIC: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX12_GENERIC; case GK_GFX12_5_GENERIC: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX12_5_GENERIC; + case GK_GFX13_GENERIC: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX13_GENERIC; case GK_NONE: return ELF::EF_AMDGPU_MACH_NONE; } // clang-format on @@ -969,12 +973,18 @@ unsigned AMDGPUTargetELFStreamer::getEFlagsV6() { case AMDGPU::GK_GFX11_GENERIC: Version = GenericVersion::GFX11; break; + case AMDGPU::GK_GFX11_7_GENERIC: + Version = GenericVersion::GFX11_7; + break; case AMDGPU::GK_GFX12_GENERIC: Version = GenericVersion::GFX12; break; case AMDGPU::GK_GFX12_5_GENERIC: Version = GenericVersion::GFX12_5; break; + case AMDGPU::GK_GFX13_GENERIC: + Version = GenericVersion::GFX13; + break; default: break; } diff --git a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h index 1623dc72d2810..e660a47bdafa1 100644 --- a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h +++ b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h @@ -58,8 +58,10 @@ static constexpr unsigned GFX9_4 = 1; static constexpr unsigned GFX10_1 = 1; static constexpr unsigned GFX10_3 = 1; static constexpr unsigned GFX11 = 1; +static constexpr unsigned GFX11_7 = 1; static constexpr unsigned GFX12 = 1; static constexpr unsigned GFX12_5 = 1; +static constexpr unsigned GFX13 = 1; } // namespace GenericVersion enum { AMDHSA_COV4 = 4, AMDHSA_COV5 = 5, AMDHSA_COV6 = 6 }; diff --git a/llvm/lib/TargetParser/AMDGPUTargetParser.cpp b/llvm/lib/TargetParser/AMDGPUTargetParser.cpp index bc9a94c4bbade..d22e0ea8b4ff3 100644 --- a/llvm/lib/TargetParser/AMDGPUTargetParser.cpp +++ b/llvm/lib/TargetParser/AMDGPUTargetParser.cpp @@ -215,6 +215,7 @@ static void fillAMDGCNFeatureMap(StringRef GPU, const Triple &T, Features["swmmac-gfx1250-insts"] = true; [[fallthrough]]; case GK_GFX1310: + case GK_GFX13_GENERIC: Features["cube-insts"] = true; Features["cvt-pknorm-vop2-insts"] = true; Features["lerp-inst"] = true; @@ -311,6 +312,7 @@ static void fillAMDGCNFeatureMap(StringRef GPU, const Triple &T, case GK_GFX1170: case GK_GFX1171: case GK_GFX1172: + case GK_GFX11_7_GENERIC: Features["ci-insts"] = true; Features["dot7-insts"] = true; Features["dot8-insts"] = true; diff --git a/llvm/test/CodeGen/AMDGPU/directive-amdgcn-target.ll b/llvm/test/CodeGen/AMDGPU/directive-amdgcn-target.ll index 7f1923edeb204..0164332637131 100644 --- a/llvm/test/CodeGen/AMDGPU/directive-amdgcn-target.ll +++ b/llvm/test/CodeGen/AMDGPU/directive-amdgcn-target.ll @@ -122,8 +122,10 @@ ; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx10-1-generic -mattr=+xnack < %s | FileCheck --check-prefixes=GFX10_1_GENERIC_XNACK %s ; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx10-3-generic < %s | FileCheck --check-prefixes=GFX10_3_GENERIC %s ; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx11-generic < %s | FileCheck --check-prefixes=GFX11_GENERIC %s +; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx11-7-generic < %s | FileCheck --check-prefixes=GFX11_7_GENERIC %s ; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx12-generic < %s | FileCheck --check-prefixes=GFX12_GENERIC %s ; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx12-5-generic < %s | FileCheck --check-prefixes=GFX12_5_GENERIC %s +; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx13-generic < %s | FileCheck --check-prefixes=GFX13_GENERIC %s ; GFX600: .amdgcn_target "amdgcn-amd-amdhsa-unknown-gfx600" ; GFX601: .amdgcn_target "amdgcn-amd-amdhsa-unknown-gfx601" @@ -227,8 +229,10 @@ ; GFX10_1_GENERIC_XNACK: .amdgcn_target "amdgcn-amd-amdhsa-unknown-gfx10-1-generic:xnack+" ; GFX10_3_GENERIC: .amdgcn_target "amdgcn-amd-amdhsa-unknown-gfx10-3-generic" ; GFX11_GENERIC: .amdgcn_target "amdgcn-amd-amdhsa-unknown-gfx11-generic" +; GFX11_7_GENERIC: .amdgcn_target "amdgcn-amd-amdhsa-unknown-gfx11-7-generic" ; GFX12_GENERIC: .amdgcn_target "amdgcn-amd-amdhsa-unknown-gfx12-generic" ; GFX12_5_GENERIC: .amdgcn_target "amdgcn-amd-amdhsa-unknown-gfx12-5-generic" +; GFX13_GENERIC: .amdgcn_target "amdgcn-amd-amdhsa-unknown-gfx13-generic" define amdgpu_kernel void @directive_amdgcn_target() { ret void diff --git a/llvm/test/CodeGen/AMDGPU/elf-header-flags-mach.ll b/llvm/test/CodeGen/AMDGPU/elf-header-flags-mach.ll index 04b7415b8a4da..bcc8e96cedd6e 100644 --- a/llvm/test/CodeGen/AMDGPU/elf-header-flags-mach.ll +++ b/llvm/test/CodeGen/AMDGPU/elf-header-flags-mach.ll @@ -90,8 +90,10 @@ ; RUN: llc -filetype=obj --amdhsa-code-object-version=6 -mtriple=amdgcn -mcpu=gfx10-1-generic < %s | llvm-readobj --file-header - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX10_1_GENERIC %s ; RUN: llc -filetype=obj --amdhsa-code-object-version=6 -mtriple=amdgcn -mcpu=gfx10-3-generic < %s | llvm-readobj --file-header - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX10_3_GENERIC %s ; RUN: llc -filetype=obj --amdhsa-code-object-version=6 -mtriple=amdgcn -mcpu=gfx11-generic < %s | llvm-readobj --file-header - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX11_GENERIC %s +; RUN: llc -filetype=obj --amdhsa-code-object-version=6 -mtriple=amdgcn -mcpu=gfx11-7-generic < %s | llvm-readobj --file-header - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX11_7_GENERIC %s ; RUN: llc -filetype=obj --amdhsa-code-object-version=6 -mtriple=amdgcn -mcpu=gfx12-generic < %s | llvm-readobj --file-header - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX12_GENERIC %s ; RUN: llc -filetype=obj --amdhsa-code-object-version=6 -mtriple=amdgcn -mcpu=gfx12-5-generic < %s | llvm-readobj --file-header - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX12_5_GENERIC %s +; RUN: llc -filetype=obj --amdhsa-code-object-version=6 -mtriple=amdgcn -mcpu=gfx13-generic < %s | llvm-readobj --file-header - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX13_GENERIC %s ; FIXME: With the default attributes the eflags are not accurate for ; xnack and sramecc. Subsequent Target-ID patches will address this. @@ -179,8 +181,10 @@ ; GFX10_1_GENERIC: EF_AMDGPU_MACH_AMDGCN_GFX10_1_GENERIC (0x52) ; GFX10_3_GENERIC: EF_AMDGPU_MACH_AMDGCN_GFX10_3_GENERIC (0x53) ; GFX11_GENERIC: EF_AMDGPU_MACH_AMDGCN_GFX11_GENERIC (0x54) +; GFX11_7_GENERIC: EF_AMDGPU_MACH_AMDGCN_GFX11_7_GENERIC (0x62) ; GFX12_GENERIC: EF_AMDGPU_MACH_AMDGCN_GFX12_GENERIC (0x59) ; GFX12_5_GENERIC: EF_AMDGPU_MACH_AMDGCN_GFX12_5_GENERIC (0x5B) +; GFX13_GENERIC: EF_AMDGPU_MACH_AMDGCN_GFX13_GENERIC (0x63) ; ALL: ] define amdgpu_kernel void @elf_header() { diff --git a/llvm/test/CodeGen/AMDGPU/generic-targets-require-v6.ll b/llvm/test/CodeGen/AMDGPU/generic-targets-require-v6.ll index 9d06165ceb773..00a13a0fb68d2 100644 --- a/llvm/test/CodeGen/AMDGPU/generic-targets-require-v6.ll +++ b/llvm/test/CodeGen/AMDGPU/generic-targets-require-v6.ll @@ -3,24 +3,30 @@ ; RUN: not llc -mtriple=amdgcn -mcpu=gfx10-1-generic --amdhsa-code-object-version=5 -o - %s 2>&1 | FileCheck --check-prefix=GFX101-V5 %s ; RUN: not llc -mtriple=amdgcn -mcpu=gfx10-3-generic --amdhsa-code-object-version=5 -o - %s 2>&1 | FileCheck --check-prefix=GFX103-V5 %s ; RUN: not llc -mtriple=amdgcn -mcpu=gfx11-generic --amdhsa-code-object-version=5 -o - %s 2>&1 | FileCheck --check-prefix=GFX11-V5 %s +; RUN: not llc -mtriple=amdgcn -mcpu=gfx11-7-generic --amdhsa-code-object-version=5 -o - %s 2>&1 | FileCheck --check-prefix=GFX117-V5 %s ; RUN: not llc -mtriple=amdgcn -mcpu=gfx12-generic --amdhsa-code-object-version=5 -o - %s 2>&1 | FileCheck --check-prefix=GFX12-V5 %s ; RUN: not llc -mtriple=amdgcn -mcpu=gfx12-5-generic --amdhsa-code-object-version=5 -o - %s 2>&1 | FileCheck --check-prefix=GFX125-V5 %s +; RUN: not llc -mtriple=amdgcn -mcpu=gfx13-generic --amdhsa-code-object-version=5 -o - %s 2>&1 | FileCheck --check-prefix=GFX13-V5 %s ; RUN: llc -mtriple=amdgcn -mcpu=gfx9-generic --amdhsa-code-object-version=6 -o - %s ; RUN: llc -mtriple=amdgcn -mcpu=gfx9-4-generic --amdhsa-code-object-version=6 -o - %s ; RUN: llc -mtriple=amdgcn -mcpu=gfx10-1-generic --amdhsa-code-object-version=6 -o - %s ; RUN: llc -mtriple=amdgcn -mcpu=gfx10-3-generic --amdhsa-code-object-version=6 -o - %s ; RUN: llc -mtriple=amdgcn -mcpu=gfx11-generic --amdhsa-code-object-version=6 -o - %s +; RUN: llc -mtriple=amdgcn -mcpu=gfx11-7-generic --amdhsa-code-object-version=6 -o - %s ; RUN: llc -mtriple=amdgcn -mcpu=gfx12-generic --amdhsa-code-object-version=6 -o - %s ; RUN: llc -mtriple=amdgcn -mcpu=gfx12-5-generic --amdhsa-code-object-version=6 -o - %s +; RUN: llc -mtriple=amdgcn -mcpu=gfx13-generic --amdhsa-code-object-version=6 -o - %s ; GFX9-V5: gfx9-generic is only available on code object version 6 or better ; GFX9-4-V5: gfx9-4-generic is only available on code object version 6 or better ; GFX101-V5: gfx10-1-generic is only available on code object version 6 or better ; GFX103-V5: gfx10-3-generic is only available on code object version 6 or better ; GFX11-V5: gfx11-generic is only available on code object version 6 or better +; GFX117-V5: gfx11-7-generic is only available on code object version 6 or better ; GFX12-V5: gfx12-generic is only available on code object version 6 or better ; GFX125-V5: gfx12-5-generic is only available on code object version 6 or better +; GFX13-V5: gfx13-generic is only available on code object version 6 or better define void @foo() { ret void diff --git a/llvm/test/CodeGen/AMDGPU/hsa-generic-target-features.ll b/llvm/test/CodeGen/AMDGPU/hsa-generic-target-features.ll index 864c99c34f728..23b8ea9962f90 100644 --- a/llvm/test/CodeGen/AMDGPU/hsa-generic-target-features.ll +++ b/llvm/test/CodeGen/AMDGPU/hsa-generic-target-features.ll @@ -4,6 +4,9 @@ ; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx10-3-generic < %s | FileCheck -check-prefix=CU %s ; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx11-generic -mattr=+cumode < %s | FileCheck -check-prefix=NOCU %s ; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx11-generic < %s | FileCheck -check-prefix=CU %s +; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx11-7-generic -mattr=+cumode < %s | FileCheck -check-prefix=NOCU %s +; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx11-7-generic < %s | FileCheck -check-prefix=CU %s +; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx12-generic -mattr=+cumode < %s | FileCheck -check-prefix=NOCU %s ; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx12-generic < %s | FileCheck -check-prefix=CU %s ; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx10-1-generic -mattr=+wavefrontsize32 < %s | FileCheck -check-prefix=W32 %s @@ -12,10 +15,13 @@ ; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx10-3-generic -mattr=+wavefrontsize64 < %s | FileCheck -check-prefix=W64 %s ; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx11-generic -mattr=+wavefrontsize32 < %s | FileCheck -check-prefix=W32 %s ; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx11-generic -mattr=+wavefrontsize64 < %s | FileCheck -check-prefix=W64 %s +; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx11-7-generic -mattr=+wavefrontsize32 < %s | FileCheck -check-prefix=W32 %s +; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx11-7-generic -mattr=+wavefrontsize64 < %s | FileCheck -check-prefix=W64 %s +; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx12-generic -mattr=+wavefrontsize32 < %s | FileCheck -check-prefix=W32 %s ; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx12-generic -mattr=+wavefrontsize64 < %s | FileCheck -check-prefix=W64 %s ; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx12-5-generic < %s | FileCheck -check-prefix=W32 %s -; Checks 10.1, 10.3 and 11 generic targets allow cumode/wave64. +; Checks 10.1, 10.3, 11, 11.7 and 12 generic targets allow cumode/wave64. ; NOCU: .amdhsa_workgroup_processor_mode 0 ; NOCU: .workgroup_processor_mode: 0 diff --git a/llvm/test/Object/AMDGPU/elf-header-flags-mach.yaml b/llvm/test/Object/AMDGPU/elf-header-flags-mach.yaml index 94d5c19b3faa8..9975a52a6c68e 100644 --- a/llvm/test/Object/AMDGPU/elf-header-flags-mach.yaml +++ b/llvm/test/Object/AMDGPU/elf-header-flags-mach.yaml @@ -290,6 +290,10 @@ # RUN: llvm-readobj -S --file-headers %t.o.AMDGCN_GFX11_GENERIC | FileCheck --check-prefixes=ELF-AMDGCN-ALL,ELF-AMDGCN-GFX11_GENERIC %s # RUN: obj2yaml %t.o.AMDGCN_GFX11_GENERIC | FileCheck --check-prefixes=YAML-AMDGCN-ALL,YAML-AMDGCN-GFX11_GENERIC %s +# RUN: sed -e 's/<BITS>/64/' -e 's/<MACH>/AMDGCN_GFX11_7_GENERIC/' %s | yaml2obj -o %t.o.AMDGCN_GFX11_7_GENERIC +# RUN: llvm-readobj -S --file-headers %t.o.AMDGCN_GFX11_7_GENERIC | FileCheck --check-prefixes=ELF-AMDGCN-ALL,ELF-AMDGCN-GFX11_7_GENERIC %s +# RUN: obj2yaml %t.o.AMDGCN_GFX11_7_GENERIC | FileCheck --check-prefixes=YAML-AMDGCN-ALL,YAML-AMDGCN-GFX11_7_GENERIC %s + # RUN: sed -e 's/<BITS>/64/' -e 's/<MACH>/AMDGCN_GFX12_GENERIC/' %s | yaml2obj -o %t.o.AMDGCN_GFX12_GENERIC # RUN: llvm-readobj -S --file-headers %t.o.AMDGCN_GFX12_GENERIC | FileCheck --check-prefixes=ELF-AMDGCN-ALL,ELF-AMDGCN-GFX12_GENERIC %s # RUN: obj2yaml %t.o.AMDGCN_GFX12_GENERIC | FileCheck --check-prefixes=YAML-AMDGCN-ALL,YAML-AMDGCN-GFX12_GENERIC %s @@ -298,6 +302,10 @@ # RUN: llvm-readobj -S --file-headers %t.o.AMDGCN_GFX12_5_GENERIC | FileCheck --check-prefixes=ELF-AMDGCN-ALL,ELF-AMDGCN-GFX12_5_GENERIC %s # RUN: obj2yaml %t.o.AMDGCN_GFX12_5_GENERIC | FileCheck --check-prefixes=YAML-AMDGCN-ALL,YAML-AMDGCN-GFX12_5_GENERIC %s +# RUN: sed -e 's/<BITS>/64/' -e 's/<MACH>/AMDGCN_GFX13_GENERIC/' %s | yaml2obj -o %t.o.AMDGCN_GFX13_GENERIC +# RUN: llvm-readobj -S --file-headers %t.o.AMDGCN_GFX13_GENERIC | FileCheck --check-prefixes=ELF-AMDGCN-ALL,ELF-AMDGCN-GFX13_GENERIC %s +# RUN: obj2yaml %t.o.AMDGCN_GFX13_GENERIC | FileCheck --check-prefixes=YAML-AMDGCN-ALL,YAML-AMDGCN-GFX13_GENERIC %s + # ELF-R600-ALL: Format: elf32-amdgpu # ELF-R600-ALL: Arch: r600 @@ -535,12 +543,18 @@ # ELF-AMDGCN-GFX11_GENERIC: EF_AMDGPU_MACH_AMDGCN_GFX11_GENERIC (0x54) # YAML-AMDGCN-GFX11_GENERIC: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX11_GENERIC ] +# ELF-AMDGCN-GFX11_7_GENERIC: EF_AMDGPU_MACH_AMDGCN_GFX11_7_GENERIC (0x62) +# YAML-AMDGCN-GFX11_7_GENERIC: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX11_7_GENERIC ] + # ELF-AMDGCN-GFX12_GENERIC: EF_AMDGPU_MACH_AMDGCN_GFX12_GENERIC (0x59) # YAML-AMDGCN-GFX12_GENERIC: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX12_GENERIC ] # ELF-AMDGCN-GFX12_5_GENERIC: EF_AMDGPU_MACH_AMDGCN_GFX12_5_GENERIC (0x5B) # YAML-AMDGCN-GFX12_5_GENERIC: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX12_5_GENERIC ] +# ELF-AMDGCN-GFX13_GENERIC: EF_AMDGPU_MACH_AMDGCN_GFX13_GENERIC (0x63) +# YAML-AMDGCN-GFX13_GENERIC: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX13_GENERIC ] + # ELF-AMDGCN-ALL: ] diff --git a/llvm/test/tools/llvm-objdump/ELF/AMDGPU/subtarget.ll b/llvm/test/tools/llvm-objdump/ELF/AMDGPU/subtarget.ll index ce5d4032cd420..df34fd13f7026 100644 --- a/llvm/test/tools/llvm-objdump/ELF/AMDGPU/subtarget.ll +++ b/llvm/test/tools/llvm-objdump/ELF/AMDGPU/subtarget.ll @@ -11,6 +11,11 @@ define amdgpu_kernel void @test_kernel() { ; RUN: llvm-objdump -D %t.o > %t-detect.txt ; RUN: diff %t-specify.txt %t-detect.txt ; +; RUN: llc -mtriple=amdgcn-amd-amdhsa --amdhsa-code-object-version=6 -mcpu=gfx13-generic -filetype=obj -O0 -o %t.o %s +; RUN: llvm-objdump -D --arch-name=amdgcn -mllvm --amdhsa-code-object-version=6 --mcpu=gfx13-generic %t.o > %t-specify.txt +; RUN: llvm-objdump -D -mllvm --amdhsa-code-object-version=6 %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 @@ -45,6 +50,11 @@ define amdgpu_kernel void @test_kernel() { ; ----------------------------------GFX11-------------------------------------- ; +; RUN: llc -mtriple=amdgcn-amd-amdhsa --amdhsa-code-object-version=6 -mcpu=gfx11-7-generic -filetype=obj -O0 -o %t.o %s +; RUN: llvm-objdump -D --arch-name=amdgcn -mllvm --amdhsa-code-object-version=6 --mcpu=gfx11-7-generic %t.o > %t-specify.txt +; RUN: llvm-objdump -D -mllvm --amdhsa-code-object-version=6 %t.o > %t-detect.txt +; RUN: diff %t-specify.txt %t-detect.txt + ; RUN: llc -mtriple=amdgcn-amd-amdhsa --amdhsa-code-object-version=6 -mcpu=gfx11-generic -filetype=obj -O0 -o %t.o %s ; RUN: llvm-objdump -D --arch-name=amdgcn -mllvm --amdhsa-code-object-version=6 --mcpu=gfx11-generic %t.o > %t-specify.txt ; RUN: llvm-objdump -D -mllvm --amdhsa-code-object-version=6 %t.o > %t-detect.txt 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 2dc41ad792c3f..848d9784025df 100644 --- a/llvm/test/tools/llvm-readobj/ELF/AMDGPU/elf-headers.test +++ b/llvm/test/tools/llvm-readobj/ELF/AMDGPU/elf-headers.test @@ -469,6 +469,9 @@ # RUN: yaml2obj %s -o %t -DABI_VERSION=2 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1172 # 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_GFX1172 -DFLAG_VALUE=0x5C +# RUN: yaml2obj %s -o %t -DABI_VERSION=4 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX11_7_GENERIC +# RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=4 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX11_7_GENERIC -DFLAG_VALUE=0x62 + # RUN: yaml2obj %s -o %t -DABI_VERSION=0 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1200 # 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_GFX1200 -DFLAG_VALUE=0x48 @@ -520,6 +523,9 @@ # 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 +# RUN: yaml2obj %s -o %t -DABI_VERSION=4 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX13_GENERIC +# RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=4 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX13_GENERIC -DFLAG_VALUE=0x63 + --- !ELF FileHeader: Class: ELFCLASS64 diff --git a/offload/plugins-nextgen/common/src/Utils/ELF.cpp b/offload/plugins-nextgen/common/src/Utils/ELF.cpp index 6ddf8f1a3d270..0150b6d394a2b 100644 --- a/offload/plugins-nextgen/common/src/Utils/ELF.cpp +++ b/offload/plugins-nextgen/common/src/Utils/ELF.cpp @@ -77,7 +77,7 @@ checkMachineImpl(const object::ELFObjectFile<ELFT> &ELFObj, uint16_t EMachine) { return createError("invalid AMD ABI version, must be version 5 or above"); if ((Header.e_flags & EF_AMDGPU_MACH) < EF_AMDGPU_MACH_AMDGCN_GFX700 || (Header.e_flags & EF_AMDGPU_MACH) > - EF_AMDGPU_MACH_AMDGCN_GFX9_4_GENERIC) + EF_AMDGPU_MACH_AMDGCN_GFX13_GENERIC) return createError("unsupported AMDGPU architecture"); } else if (Header.e_machine == EM_CUDA) { if (Header.e_ident[EI_ABIVERSION] == ELFABIVERSION_CUDA_V1) { _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
