https://github.com/rampitec updated https://github.com/llvm/llvm-project/pull/218543
>From a2e2c70fb247fd18deaee71024f683c4977d2f6e Mon Sep 17 00:00:00 2001 From: Stanislav Mekhanoshin <[email protected]> Date: Mon, 24 Aug 2026 15:25:44 -0700 Subject: [PATCH] [AMDGPU] Define gfx1250-strict target --- clang/test/Driver/amdgpu-macros.cl | 1 + clang/test/Driver/amdgpu-mcpu.cl | 2 ++ clang/test/Driver/cuda-bad-arch.cu | 2 ++ .../Misc/target-invalid-cpu-note/amdgcn.c | 1 + .../test/Misc/target-invalid-cpu-note/nvptx.c | 1 + llvm/docs/AMDGPUUsage.rst | 13 ++++++++ llvm/include/llvm/BinaryFormat/ELF.h | 5 ++-- llvm/include/llvm/TargetParser/Triple.h | 1 + llvm/lib/Target/AMDGPU/AMDGPU.td | 30 +++++++++++++++++++ llvm/lib/Target/AMDGPU/GCNProcessors.td | 6 ++++ llvm/lib/Target/AMDGPU/GCNSubtarget.cpp | 1 + .../MCTargetDesc/AMDGPUTargetStreamer.cpp | 2 ++ llvm/lib/TargetParser/Triple.cpp | 1 + llvm/test/CodeGen/AMDGPU/amdgpu-triple.ll | 5 ++++ .../CodeGen/AMDGPU/elf-header-flags-mach.ll | 2 ++ .../Object/AMDGPU/elf-header-flags-mach.yaml | 7 +++++ .../llvm-objdump/ELF/AMDGPU/subtarget.ll | 5 ++++ .../llvm-readobj/ELF/AMDGPU/elf-headers.test | 9 ++++++ .../TargetParser/TargetParserTest.cpp | 5 ++++ 19 files changed, 97 insertions(+), 2 deletions(-) diff --git a/clang/test/Driver/amdgpu-macros.cl b/clang/test/Driver/amdgpu-macros.cl index f162b0cc541df..586a01f2766d0 100644 --- a/clang/test/Driver/amdgpu-macros.cl +++ b/clang/test/Driver/amdgpu-macros.cl @@ -136,6 +136,7 @@ // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1200 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx1200 -DFAMILY=GFX12 // 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=gfx1250-strict %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx1250_strict -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 diff --git a/clang/test/Driver/amdgpu-mcpu.cl b/clang/test/Driver/amdgpu-mcpu.cl index 32dc3e6fe4205..3b2fe51cea315 100644 --- a/clang/test/Driver/amdgpu-mcpu.cl +++ b/clang/test/Driver/amdgpu-mcpu.cl @@ -120,6 +120,7 @@ // RUN: %clang -### -target amdgcn -mcpu=gfx1200 %s 2>&1 | FileCheck --check-prefix=GFX1200 %s // 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=gfx1250-strict %s 2>&1 | FileCheck --check-prefix=GFX1250-STRICT %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 @@ -190,6 +191,7 @@ // GFX1200: "-target-cpu" "gfx1200" // GFX1201: "-target-cpu" "gfx1201" // GFX1250: "-target-cpu" "gfx1250" +// GFX1250-STRICT: "-target-cpu" "gfx1250-strict" // GFX1251: "-target-cpu" "gfx1251" // GFX1310: "-target-cpu" "gfx1310" diff --git a/clang/test/Driver/cuda-bad-arch.cu b/clang/test/Driver/cuda-bad-arch.cu index 41eb96f5e3fae..9046517bd6f02 100644 --- a/clang/test/Driver/cuda-bad-arch.cu +++ b/clang/test/Driver/cuda-bad-arch.cu @@ -33,6 +33,8 @@ // RUN: | FileCheck -check-prefix OK %s // RUN: %clang -### -x hip --target=x86_64-linux-gnu -nogpulib -nogpuinc --cuda-gpu-arch=gfx1250 -c %s 2>&1 \ // RUN: | FileCheck -check-prefix OK %s +// RUN: %clang -### -x hip --target=x86_64-linux-gnu -nogpulib -nogpuinc --cuda-gpu-arch=gfx1250-strict -c %s 2>&1 \ +// RUN: | FileCheck -check-prefix OK %s // RUN: %clang -### -x hip --target=x86_64-linux-gnu -nogpulib -nogpuinc --cuda-gpu-arch=gfx1251 -c %s 2>&1 \ // RUN: | FileCheck -check-prefix OK %s diff --git a/clang/test/Misc/target-invalid-cpu-note/amdgcn.c b/clang/test/Misc/target-invalid-cpu-note/amdgcn.c index 3e641a3944397..3848eb308758a 100644 --- a/clang/test/Misc/target-invalid-cpu-note/amdgcn.c +++ b/clang/test/Misc/target-invalid-cpu-note/amdgcn.c @@ -54,6 +54,7 @@ // CHECK-SAME: {{^}}, gfx1172 // CHECK-SAME: {{^}}, gfx1200 // CHECK-SAME: {{^}}, gfx1201 +// CHECK-SAME: {{^}}, gfx1250-strict // CHECK-SAME: {{^}}, gfx1250 // CHECK-SAME: {{^}}, gfx1251 // CHECK-SAME: {{^}}, gfx1310 diff --git a/clang/test/Misc/target-invalid-cpu-note/nvptx.c b/clang/test/Misc/target-invalid-cpu-note/nvptx.c index af57f6a102e2d..20dbd8dc6aa3b 100644 --- a/clang/test/Misc/target-invalid-cpu-note/nvptx.c +++ b/clang/test/Misc/target-invalid-cpu-note/nvptx.c @@ -97,6 +97,7 @@ // CHECK-SAME: {{^}}, gfx1172 // CHECK-SAME: {{^}}, gfx1200 // CHECK-SAME: {{^}}, gfx1201 +// CHECK-SAME: {{^}}, gfx1250-strict // CHECK-SAME: {{^}}, gfx1250 // CHECK-SAME: {{^}}, gfx1251 // CHECK-SAME: {{^}}, gfx1310 diff --git a/llvm/docs/AMDGPUUsage.rst b/llvm/docs/AMDGPUUsage.rst index 9b436e00a43ab..97f2e28631222 100644 --- a/llvm/docs/AMDGPUUsage.rst +++ b/llvm/docs/AMDGPUUsage.rst @@ -667,6 +667,18 @@ Every processor supports every OS ABI (see :ref:`amdgpu-os`) with the following work-item IDs + ``gfx1250-strict`` ``amdgpu12.50s`` APU - sramecc - Architected *TBA* + flat + scratch .. TODO:: + - Packed + work-item Add product + IDs names. + - Globally + Accessible + Scratch + - Workgroup + Clusters + ``gfx1250`` ``amdgpu12.50`` APU - sramecc - Architected *TBA* flat scratch .. TODO:: @@ -3309,6 +3321,7 @@ The AMDGPU backend uses the following ELF header: ``EF_AMDGPU_MACH_AMDGCN_GFX11_7_GENERIC`` 0x062 ``gfx11-7-generic`` ``EF_AMDGPU_MACH_AMDGCN_GFX13_GENERIC`` 0x063 ``gfx13-generic`` *reserved* 0x070 Reserved. + ``EF_AMDGPU_MACH_AMDGCN_GFX1250_STRICT`` 0x0eb ``gfx1250-strict`` ========================================== ========== ============================= Sections diff --git a/llvm/include/llvm/BinaryFormat/ELF.h b/llvm/include/llvm/BinaryFormat/ELF.h index 823a08d7dd81b..46d806e1b9d8a 100644 --- a/llvm/include/llvm/BinaryFormat/ELF.h +++ b/llvm/include/llvm/BinaryFormat/ELF.h @@ -842,7 +842,8 @@ enum { X(0x5e, EF_AMDGPU_MACH_AMDGCN_GFX1171, "gfx1171") \ 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") + X(0x63, EF_AMDGPU_MACH_AMDGCN_GFX13_GENERIC, "gfx13-generic") \ + X(0xeb, EF_AMDGPU_MACH_AMDGCN_GFX1250_STRICT, "gfx1250-strict") enum : unsigned { // clang-format off @@ -875,7 +876,7 @@ enum : unsigned { // First/last AMDGCN-based processors. EF_AMDGPU_MACH_AMDGCN_FIRST = EF_AMDGPU_MACH_AMDGCN_GFX600, - EF_AMDGPU_MACH_AMDGCN_LAST = EF_AMDGPU_MACH_AMDGCN_GFX13_GENERIC, + EF_AMDGPU_MACH_AMDGCN_LAST = EF_AMDGPU_MACH_AMDGCN_GFX1250_STRICT, // Indicates if the "xnack" target feature is enabled for all code contained // in the object. diff --git a/llvm/include/llvm/TargetParser/Triple.h b/llvm/include/llvm/TargetParser/Triple.h index 18634a8bbe6ff..4344ffbd4519a 100644 --- a/llvm/include/llvm/TargetParser/Triple.h +++ b/llvm/include/llvm/TargetParser/Triple.h @@ -268,6 +268,7 @@ class Triple { AMDGPUSubArch1201, AMDGPUSubArch12_5, + AMDGPUSubArch1250_STRICT, AMDGPUSubArch1250, AMDGPUSubArch1251, diff --git a/llvm/lib/Target/AMDGPU/AMDGPU.td b/llvm/lib/Target/AMDGPU/AMDGPU.td index 160e91cb0da66..47171468dd1aa 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPU.td +++ b/llvm/lib/Target/AMDGPU/AMDGPU.td @@ -1555,6 +1555,11 @@ def FeatureUseAddPC64Inst : SubtargetFeature<"use-add-pc64-inst", "Use s_add_pc_i64 instruction." >; +defm GFX1250_STRICT : AMDGPUSubtargetFeature<"gfx1250-strict", + "gfx1250 strict mode", + /*GenPredicate=*/0 +>; + defm VOP3PX2IncrementsVaVdstTwice : AMDGPUSubtargetFeature<"vop3px2-increments-va-vdst-twice", "VOP3PX2 encoded instructions increment the VaVdst counter twice", GenPredicate=false >; @@ -2386,6 +2391,31 @@ def FeatureISAVersion12_50_Common : FeatureSet< FeatureVMulU64Inst, ]>; +def FeatureISAVersion12_50_STRICT : FeatureSet< + !listconcat(FeatureISAVersion12_50_Common.Features, + [FeatureGFX1250_STRICT, + FeatureAddressableLocalMemorySize327680, + FeatureVOP3PX2IncrementsVaVdstTwice, + FeatureSetregVGPRMSBFixup, + FeatureCubeInsts, + FeatureLerpInst, + FeatureSadInsts, + FeatureQsadInsts, + FeatureMsadInsts, + FeatureMqsadPkInsts, + FeatureMqsadInsts, + FeatureCvtNormInsts, + FeatureCvtPkNormVOP2Insts, + FeatureCvtPkNormVOP3Insts, + FeatureSWMMACGfx1200Insts, + FeatureSWMMACGfx1250Insts, + FeatureTransCoexecutionHazard, + FeatureWMMACoexecutionHazards, + FeatureDataCacheLineSize128, + FeatureRequiresInitialUnclausedVmem, + FeatureNeedsTDMDrain, + ])>; + def FeatureISAVersion12_50 : FeatureSet< !listconcat(FeatureISAVersion12_50_Common.Features, [FeatureAddressableLocalMemorySize327680, diff --git a/llvm/lib/Target/AMDGPU/GCNProcessors.td b/llvm/lib/Target/AMDGPU/GCNProcessors.td index 47dc1f182c7b4..fa32a86cddad1 100644 --- a/llvm/lib/Target/AMDGPU/GCNProcessors.td +++ b/llvm/lib/Target/AMDGPU/GCNProcessors.td @@ -368,6 +368,11 @@ def GFX12_GENERIC : AMDGPUProcessorModel<"gfx12-generic", GFX12SpeedModel, let CoveredGPUs = [GFX1200, GFX1201]; } +def GFX1250_STRICT : AMDGPUProcessorModel<"gfx1250-strict", GFX1250SpeedModel, + FeatureISAVersion12_50_STRICT.Features, [12, 5, 0]> { + let ArchFeatures = [FEATURE_FAST_FMA_F32, FEATURE_FAST_DENORMAL_F32, FEATURE_WAVE32, FEATURE_XNACK, FEATURE_SRAMECC]; +} + def GFX1250 : AMDGPUProcessorModel<"gfx1250", GFX1250SpeedModel, FeatureISAVersion12_50.Features, [12, 5, 0]> { let ArchFeatures = [FEATURE_FAST_FMA_F32, FEATURE_FAST_DENORMAL_F32, FEATURE_WAVE32, FEATURE_XNACK, FEATURE_SRAMECC]; @@ -404,3 +409,4 @@ def GFX13_GENERIC : AMDGPUProcessorModel<"gfx13-generic", GFX12SpeedModel, def : AMDGPUFamily<"6", [GFX600, GFX601, GFX602]>; def : AMDGPUFamily<"7", [GFX700, GFX701, GFX702, GFX703, GFX704, GFX705]>; def : AMDGPUFamily<"8", [GFX801, GFX802, GFX803, GFX805]>; +def : AMDGPUFamily<"1250_STRICT", [GFX1250_STRICT]>; diff --git a/llvm/lib/Target/AMDGPU/GCNSubtarget.cpp b/llvm/lib/Target/AMDGPU/GCNSubtarget.cpp index 225cdfeb914c6..1778af5e84745 100644 --- a/llvm/lib/Target/AMDGPU/GCNSubtarget.cpp +++ b/llvm/lib/Target/AMDGPU/GCNSubtarget.cpp @@ -83,6 +83,7 @@ static AMDGPUSubtarget::Generation computeDefaultGeneration(const Triple &TT) { return AMDGPUSubtarget::GFX11; case Triple::AMDGPUSubArch12: case Triple::AMDGPUSubArch12_5: + case Triple::AMDGPUSubArch1250_STRICT: return AMDGPUSubtarget::GFX12; case Triple::AMDGPUSubArch13: return AMDGPUSubtarget::GFX13; diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp index 463387f064ef0..be162919c46ce 100644 --- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp +++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp @@ -132,6 +132,7 @@ StringRef AMDGPUTargetStreamer::getArchNameFromElfMach(unsigned ElfMach) { case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1172: AK = GK_GFX1172; break; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1200: AK = GK_GFX1200; break; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1201: AK = GK_GFX1201; break; + case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1250_STRICT: AK = GK_GFX1250_STRICT; 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; @@ -227,6 +228,7 @@ unsigned AMDGPUTargetStreamer::getElfMach(StringRef GPU) { case GK_GFX1172: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX1172; case GK_GFX1200: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX1200; case GK_GFX1201: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX1201; + case GK_GFX1250_STRICT: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX1250_STRICT; 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; diff --git a/llvm/lib/TargetParser/Triple.cpp b/llvm/lib/TargetParser/Triple.cpp index 5bfaae7fbc998..231c8641c590e 100644 --- a/llvm/lib/TargetParser/Triple.cpp +++ b/llvm/lib/TargetParser/Triple.cpp @@ -840,6 +840,7 @@ Triple::SubArchType Triple::parseSubArch(StringRef SubArchName) { .Case("12.01", Triple::AMDGPUSubArch1201) .Case("12.5", Triple::AMDGPUSubArch12_5) .Case("12.50", Triple::AMDGPUSubArch1250) + .Case("12.50s", Triple::AMDGPUSubArch1250_STRICT) .Case("12.51", Triple::AMDGPUSubArch1251) .Case("13", Triple::AMDGPUSubArch13) .Case("13.10", Triple::AMDGPUSubArch1310) diff --git a/llvm/test/CodeGen/AMDGPU/amdgpu-triple.ll b/llvm/test/CodeGen/AMDGPU/amdgpu-triple.ll index f7187fb03f072..4f93ba23919bc 100644 --- a/llvm/test/CodeGen/AMDGPU/amdgpu-triple.ll +++ b/llvm/test/CodeGen/AMDGPU/amdgpu-triple.ll @@ -33,6 +33,9 @@ ; RUN: llc -mtriple=amdgpu12.5-amd-amdhsa < %s | FileCheck -check-prefixes=GFX125 %s ; RUN: llc -mtriple=amdgpu12.5-amd-amdhsa -mcpu=gfx1250 < %s | FileCheck -check-prefixes=GFX1250 %s +; RUN: llc -mtriple=amdgpu12.50s-amd-amdhsa < %s | FileCheck -check-prefixes=GFX1250-STRICT %s +; RUN: llc -mtriple=amdgpu12.50s-amd-amdhsa -mcpu=gfx1250-strict < %s | FileCheck -check-prefixes=GFX1250-STRICT %s + ; RUN: llc -mtriple=amdgpu13-amd-amdhsa < %s | FileCheck -check-prefixes=GFX13 %s ; RUN: llc -mtriple=amdgpu13-amd-amdhsa -mcpu=gfx1310 < %s | FileCheck -check-prefixes=GFX1310 %s @@ -71,6 +74,8 @@ ; GFX125: .amdgcn_target "amdgpu12.5-amd-amdhsa-unknown-gfx12-5-generic" ; GFX1250: .amdgcn_target "amdgpu12.5-amd-amdhsa-unknown-gfx1250" +; GFX1250-STRICT: .amdgcn_target "amdgpu12.50s-amd-amdhsa-unknown-gfx1250-strict" + ; GFX13: .amdgcn_target "amdgpu13-amd-amdhsa-unknown-gfx13-generic" ; GFX1310: .amdgcn_target "amdgpu13-amd-amdhsa-unknown-gfx1310" define amdgpu_kernel void @kernel() { diff --git a/llvm/test/CodeGen/AMDGPU/elf-header-flags-mach.ll b/llvm/test/CodeGen/AMDGPU/elf-header-flags-mach.ll index 24e17a76043a5..dad87e78d3748 100644 --- a/llvm/test/CodeGen/AMDGPU/elf-header-flags-mach.ll +++ b/llvm/test/CodeGen/AMDGPU/elf-header-flags-mach.ll @@ -81,6 +81,7 @@ ; RUN: llc -filetype=obj -mtriple=amdgpu11.72 < %s | llvm-readobj --file-header - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX1172 %s ; RUN: llc -filetype=obj -mtriple=amdgpu12.00 < %s | llvm-readobj --file-header - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX1200 %s ; RUN: llc -filetype=obj -mtriple=amdgpu12.01 < %s | llvm-readobj --file-header - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX1201 %s +; RUN: llc -filetype=obj -mtriple=amdgpu12.50s < %s | llvm-readobj --file-header - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX1250_STRICT %s ; RUN: llc -filetype=obj -mtriple=amdgpu12.50 < %s | llvm-readobj --file-header - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX1250 %s ; RUN: llc -filetype=obj -mtriple=amdgpu12.51 < %s | llvm-readobj --file-header - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX1251 %s ; RUN: llc -filetype=obj -mtriple=amdgpu13.10 < %s | llvm-readobj --file-header - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX1310 %s @@ -172,6 +173,7 @@ ; GFX1172: EF_AMDGPU_MACH_AMDGCN_GFX1172 (0x5C) ; GFX1200: EF_AMDGPU_MACH_AMDGCN_GFX1200 (0x48) ; GFX1201: EF_AMDGPU_MACH_AMDGCN_GFX1201 (0x4E) +; GFX1250_STRICT: EF_AMDGPU_MACH_AMDGCN_GFX1250_STRICT (0xEB) ; GFX1250: EF_AMDGPU_MACH_AMDGCN_GFX1250 (0x49) ; GFX1251: EF_AMDGPU_MACH_AMDGCN_GFX1251 (0x5A) ; GFX1310: EF_AMDGPU_MACH_AMDGCN_GFX1310 (0x50) diff --git a/llvm/test/Object/AMDGPU/elf-header-flags-mach.yaml b/llvm/test/Object/AMDGPU/elf-header-flags-mach.yaml index 2a24c2d438e7f..34340f307d19e 100644 --- a/llvm/test/Object/AMDGPU/elf-header-flags-mach.yaml +++ b/llvm/test/Object/AMDGPU/elf-header-flags-mach.yaml @@ -262,6 +262,10 @@ # RUN: llvm-readobj -S --file-headers %t.o.AMDGCN_GFX1250 | FileCheck --check-prefixes=ELF-AMDGCN-ALL,ELF-AMDGCN-GFX1250 %s # RUN: obj2yaml %t.o.AMDGCN_GFX1250 | FileCheck --check-prefixes=YAML-AMDGCN-ALL,YAML-AMDGCN-GFX1250 %s +# RUN: sed -e 's/<BITS>/64/' -e 's/<MACH>/AMDGCN_GFX1250_STRICT/' %s | yaml2obj -o %t.o.AMDGCN_GFX1250_STRICT +# RUN: llvm-readobj -S --file-headers %t.o.AMDGCN_GFX1250_STRICT | FileCheck --check-prefixes=ELF-AMDGCN-ALL,ELF-AMDGCN-GFX1250-STRICT %s +# RUN: obj2yaml %t.o.AMDGCN_GFX1250_STRICT | FileCheck --check-prefixes=YAML-AMDGCN-ALL,YAML-AMDGCN-GFX1250-STRICT %s + # RUN: sed -e 's/<BITS>/64/' -e 's/<MACH>/AMDGCN_GFX1251/' %s | yaml2obj -o %t.o.AMDGCN_GFX1251 # 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 @@ -522,6 +526,9 @@ # ELF-AMDGCN-GFX1250: EF_AMDGPU_MACH_AMDGCN_GFX1250 (0x49) # YAML-AMDGCN-GFX1250: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX1250 ] +# ELF-AMDGCN-GFX1250-STRICT: EF_AMDGPU_MACH_AMDGCN_GFX1250_STRICT (0xEB) +# YAML-AMDGCN-GFX1250-STRICT: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX1250_STRICT ] + # ELF-AMDGCN-GFX1251: EF_AMDGPU_MACH_AMDGCN_GFX1251 (0x5A) # YAML-AMDGCN-GFX1251: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX1251 ] diff --git a/llvm/test/tools/llvm-objdump/ELF/AMDGPU/subtarget.ll b/llvm/test/tools/llvm-objdump/ELF/AMDGPU/subtarget.ll index 218a7e8dec159..f478eb649c3d9 100644 --- a/llvm/test/tools/llvm-objdump/ELF/AMDGPU/subtarget.ll +++ b/llvm/test/tools/llvm-objdump/ELF/AMDGPU/subtarget.ll @@ -43,6 +43,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 -mcpu=gfx1250-strict -filetype=obj -O0 -o %t.o %s +; RUN: llvm-objdump -D --arch-name=amdgpu --mcpu=gfx1250-strict %t.o > %t-specify.txt +; RUN: llvm-objdump -D %t.o > %t-detect.txt +; RUN: diff %t-specify.txt %t-detect.txt + ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1251 -filetype=obj -O0 -o %t.o %s ; RUN: llvm-objdump -D --arch-name=amdgpu --mcpu=gfx1251 %t.o > %t-specify.txt ; RUN: llvm-objdump -D %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 c802aed428631..974cb1dea5ec0 100644 --- a/llvm/test/tools/llvm-readobj/ELF/AMDGPU/elf-headers.test +++ b/llvm/test/tools/llvm-readobj/ELF/AMDGPU/elf-headers.test @@ -502,6 +502,15 @@ # RUN: yaml2obj %s -o %t -DABI_VERSION=2 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1250 # 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_GFX1250 -DFLAG_VALUE=0x49 +# RUN: yaml2obj %s -o %t -DABI_VERSION=0 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1250_STRICT +# 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_GFX1250_STRICT -DFLAG_VALUE=0xEB + +# RUN: yaml2obj %s -o %t -DABI_VERSION=1 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1250_STRICT +# 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_GFX1250_STRICT -DFLAG_VALUE=0xEB + +# RUN: yaml2obj %s -o %t -DABI_VERSION=2 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1250_STRICT +# 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_GFX1250_STRICT -DFLAG_VALUE=0xEB + # RUN: yaml2obj %s -o %t -DABI_VERSION=0 -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=0 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1251 -DFLAG_VALUE=0x5A diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp index 0b09569868d36..6159dd61f4c31 100644 --- a/llvm/unittests/TargetParser/TargetParserTest.cpp +++ b/llvm/unittests/TargetParser/TargetParserTest.cpp @@ -2516,6 +2516,8 @@ TEST(TargetParserTest, testAMDGPUArch) { EXPECT_EQ(Triple("amdgpu12.01--").getSubArch(), Triple::AMDGPUSubArch1201); EXPECT_EQ(Triple("amdgpu12.5--").getSubArch(), Triple::AMDGPUSubArch12_5); EXPECT_EQ(Triple("amdgpu12.50--").getSubArch(), Triple::AMDGPUSubArch1250); + EXPECT_EQ(Triple("amdgpu12.50s--").getSubArch(), + Triple::AMDGPUSubArch1250_STRICT); EXPECT_EQ(Triple("amdgpu12.51--").getSubArch(), Triple::AMDGPUSubArch1251); EXPECT_EQ(Triple("amdgpu122--").getSubArch(), Triple::NoSubArch); // Unknown EXPECT_EQ(Triple("amdgpu12.59--").getSubArch(), @@ -2946,6 +2948,7 @@ TEST(TargetParserTest, testAMDGPUgetGPUKindFromSubArch) { {Triple::AMDGPUSubArch1200, AMDGPU::GK_GFX1200}, {Triple::AMDGPUSubArch1201, AMDGPU::GK_GFX1201}, {Triple::AMDGPUSubArch12_5, AMDGPU::GK_GFX12_5_GENERIC}, + {Triple::AMDGPUSubArch1250_STRICT, AMDGPU::GK_GFX1250_STRICT}, {Triple::AMDGPUSubArch1250, AMDGPU::GK_GFX1250}, {Triple::AMDGPUSubArch1251, AMDGPU::GK_GFX1251}, @@ -2966,6 +2969,8 @@ TEST(TargetParserTest, testAMDGPUgetIsaVersionFromSubArch) { (AMDGPU::IsaVersion{9, 0, 0})); EXPECT_EQ(AMDGPU::getIsaVersion(Triple::AMDGPUSubArch1250), (AMDGPU::IsaVersion{12, 5, 0})); + EXPECT_EQ(AMDGPU::getIsaVersion(Triple::AMDGPUSubArch1250_STRICT), + (AMDGPU::IsaVersion{12, 5, 0})); EXPECT_EQ(AMDGPU::getIsaVersion(Triple::AMDGPUSubArch1251), (AMDGPU::IsaVersion{12, 5, 1})); EXPECT_EQ(AMDGPU::getIsaVersion(Triple::AMDGPUSubArch1310), _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
