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

Reply via email to