https://github.com/rampitec created 
https://github.com/llvm/llvm-project/pull/152592

Change from GFX12: Relax S_CLAUSE rules to all all non-flat memory types in
the same clause, and all Flat types in the same.

For VMEM/FLAT clause types now look like:

- Non-Flat (load, store, atomic): buffer, global, scratch, TDM, Async
- Flat: load, store, atomic

>From 7800b5d664f487df9fddbb085d9578812f598ec0 Mon Sep 17 00:00:00 2001
From: Stanislav Mekhanoshin <stanislav.mekhanos...@amd.com>
Date: Thu, 7 Aug 2025 13:34:44 -0700
Subject: [PATCH] [AMDGPU] Adjust hard clause rules for gfx1250

Change from GFX12: Relax S_CLAUSE rules to all all non-flat memory types in
the same clause, and all Flat types in the same.

For VMEM/FLAT clause types now look like:

- Non-Flat (load, store, atomic): buffer, global, scratch, TDM, Async
- Flat: load, store, atomic
---
 .../lib/Target/AMDGPU/SIInsertHardClauses.cpp |   6 +-
 .../test/CodeGen/AMDGPU/flat-saddr-atomics.ll |   4 +
 llvm/test/CodeGen/AMDGPU/global-load-xcnt.ll  |   5 +-
 .../CodeGen/AMDGPU/hard-clauses-gfx1250.mir   | 608 +++++++++++++++++-
 .../AMDGPU/llvm.amdgcn.struct.buffer.store.ll |   1 +
 5 files changed, 617 insertions(+), 7 deletions(-)

diff --git a/llvm/lib/Target/AMDGPU/SIInsertHardClauses.cpp 
b/llvm/lib/Target/AMDGPU/SIInsertHardClauses.cpp
index d8fe8505bc722..0a68512668c7d 100644
--- a/llvm/lib/Target/AMDGPU/SIInsertHardClauses.cpp
+++ b/llvm/lib/Target/AMDGPU/SIInsertHardClauses.cpp
@@ -51,7 +51,7 @@ static cl::opt<unsigned>
 namespace {
 
 enum HardClauseType {
-  // For GFX10:
+  // For GFX10 and GFX1250:
 
   // Texture, buffer, global or scratch memory instructions.
   HARDCLAUSE_VMEM,
@@ -102,7 +102,8 @@ class SIInsertHardClauses {
 
   HardClauseType getHardClauseType(const MachineInstr &MI) {
     if (MI.mayLoad() || (MI.mayStore() && ST->shouldClusterStores())) {
-      if (ST->getGeneration() == AMDGPUSubtarget::GFX10) {
+      if (ST->getGeneration() == AMDGPUSubtarget::GFX10 ||
+          ST->hasGFX1250Insts()) {
         if ((SIInstrInfo::isVMEM(MI) && !SIInstrInfo::isFLAT(MI)) ||
             SIInstrInfo::isSegmentSpecificFLAT(MI)) {
           if (ST->hasNSAClauseBug()) {
@@ -115,7 +116,6 @@ class SIInsertHardClauses {
         if (SIInstrInfo::isFLAT(MI))
           return HARDCLAUSE_FLAT;
       } else {
-        assert(ST->getGeneration() >= AMDGPUSubtarget::GFX11);
         if (SIInstrInfo::isMIMG(MI)) {
           const AMDGPU::MIMGInfo *Info = AMDGPU::getMIMGInfo(MI.getOpcode());
           const AMDGPU::MIMGBaseOpcodeInfo *BaseInfo =
diff --git a/llvm/test/CodeGen/AMDGPU/flat-saddr-atomics.ll 
b/llvm/test/CodeGen/AMDGPU/flat-saddr-atomics.ll
index 7d36c9f07ea73..004d3c0c1cf53 100644
--- a/llvm/test/CodeGen/AMDGPU/flat-saddr-atomics.ll
+++ b/llvm/test/CodeGen/AMDGPU/flat-saddr-atomics.ll
@@ -284,6 +284,7 @@ define amdgpu_ps <2 x float> @flat_xchg_saddr_i64_rtn(ptr 
inreg %sbase, i32 %vof
 ; GFX1250-SDAG-NEXT:    v_subrev_nc_u32_e32 v0, s1, v4
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc_lo
+; GFX1250-SDAG-NEXT:    s_clause 0x1
 ; GFX1250-SDAG-NEXT:    scratch_load_b64 v[0:1], v4, off
 ; GFX1250-SDAG-NEXT:    scratch_store_b64 v4, v[2:3], off scope:SCOPE_SE
 ; GFX1250-SDAG-NEXT:    s_wait_xcnt 0x0
@@ -329,6 +330,7 @@ define amdgpu_ps <2 x float> @flat_xchg_saddr_i64_rtn(ptr 
inreg %sbase, i32 %vof
 ; GFX1250-GISEL-NEXT:    v_subrev_nc_u32_e32 v0, s1, v6
 ; GFX1250-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-GISEL-NEXT:    v_cndmask_b32_e32 v2, -1, v0, vcc_lo
+; GFX1250-GISEL-NEXT:    s_clause 0x1
 ; GFX1250-GISEL-NEXT:    scratch_load_b64 v[0:1], v2, off
 ; GFX1250-GISEL-NEXT:    scratch_store_b64 v2, v[4:5], off scope:SCOPE_SE
 ; GFX1250-GISEL-NEXT:    s_wait_xcnt 0x0
@@ -382,6 +384,7 @@ define amdgpu_ps <2 x float> 
@flat_xchg_saddr_i64_rtn_neg128(ptr inreg %sbase, i
 ; GFX1250-SDAG-NEXT:    v_subrev_nc_u32_e32 v0, s1, v4
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc_lo
+; GFX1250-SDAG-NEXT:    s_clause 0x1
 ; GFX1250-SDAG-NEXT:    scratch_load_b64 v[0:1], v4, off
 ; GFX1250-SDAG-NEXT:    scratch_store_b64 v4, v[2:3], off scope:SCOPE_SE
 ; GFX1250-SDAG-NEXT:    s_wait_xcnt 0x0
@@ -430,6 +433,7 @@ define amdgpu_ps <2 x float> 
@flat_xchg_saddr_i64_rtn_neg128(ptr inreg %sbase, i
 ; GFX1250-GISEL-NEXT:    v_subrev_nc_u32_e32 v0, s1, v6
 ; GFX1250-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-GISEL-NEXT:    v_cndmask_b32_e32 v2, -1, v0, vcc_lo
+; GFX1250-GISEL-NEXT:    s_clause 0x1
 ; GFX1250-GISEL-NEXT:    scratch_load_b64 v[0:1], v2, off
 ; GFX1250-GISEL-NEXT:    scratch_store_b64 v2, v[4:5], off scope:SCOPE_SE
 ; GFX1250-GISEL-NEXT:    s_wait_xcnt 0x0
diff --git a/llvm/test/CodeGen/AMDGPU/global-load-xcnt.ll 
b/llvm/test/CodeGen/AMDGPU/global-load-xcnt.ll
index 3a898a9214461..f0db321d3931a 100644
--- a/llvm/test/CodeGen/AMDGPU/global-load-xcnt.ll
+++ b/llvm/test/CodeGen/AMDGPU/global-load-xcnt.ll
@@ -244,8 +244,9 @@ define i32 @test_v64i32_load_store(ptr addrspace(1) %ptr, 
i32 %idx, ptr addrspac
 ; GCN-GISEL-NEXT:    global_load_b128 v[60:63], v[0:1], off offset:16
 ; GCN-GISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:240
 ; GCN-GISEL-NEXT:    s_wait_loadcnt 0x0
-; GCN-GISEL-NEXT:    scratch_store_b128 off, v[0:3], s32 offset:64 
scope:SCOPE_SE ; 16-byte Folded Spill
-; GCN-GISEL-NEXT:    scratch_load_b128 v[0:3], off, s32 offset:80 
th:TH_LOAD_LU ; 16-byte Folded Reload
+; GCN-GISEL-NEXT:    s_clause 0x1
+; GCN-GISEL-NEXT:    scratch_store_b128 off, v[0:3], s32 offset:64 
scope:SCOPE_SE
+; GCN-GISEL-NEXT:    scratch_load_b128 v[0:3], off, s32 offset:80 th:TH_LOAD_LU
 ; GCN-GISEL-NEXT:    s_wait_loadcnt 0x0
 ; GCN-GISEL-NEXT:    s_clause 0xe
 ; GCN-GISEL-NEXT:    global_store_b128 v[46:47], v[0:3], off offset:32
diff --git a/llvm/test/CodeGen/AMDGPU/hard-clauses-gfx1250.mir 
b/llvm/test/CodeGen/AMDGPU/hard-clauses-gfx1250.mir
index 8007597a32fbe..492753b5191cd 100644
--- a/llvm/test/CodeGen/AMDGPU/hard-clauses-gfx1250.mir
+++ b/llvm/test/CodeGen/AMDGPU/hard-clauses-gfx1250.mir
@@ -1,6 +1,507 @@
 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
-# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -verify-machineinstrs -run-pass 
si-insert-hard-clauses %s -o - | FileCheck %s -check-prefixes=GFX12
-# RUN: llc -mtriple=amdgcn -mcpu=gfx1250 -run-pass si-insert-hard-clauses %s 
-o - | FileCheck %s -check-prefixes=GFX12
+# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -verify-machineinstrs -run-pass 
si-insert-hard-clauses %s -o - | FileCheck %s -check-prefixes=GFX12,GFX1200
+# RUN: llc -mtriple=amdgcn -mcpu=gfx1250 -run-pass si-insert-hard-clauses %s 
-o - | FileCheck %s -check-prefixes=GFX12,GFX1250
+
+---
+name: long_clause
+tracksRegLiveness: true
+body: |
+  bb.0:
+    liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $vgpr0
+    ; GFX1200-LABEL: name: long_clause
+    ; GFX1200: liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $vgpr0
+    ; GFX1200-NEXT: {{  $}}
+    ; GFX1200-NEXT: BUNDLE implicit-def $vgpr1, implicit-def $vgpr1_lo16, 
implicit-def $vgpr1_hi16, implicit-def $vgpr2, implicit-def $vgpr2_lo16, 
implicit-def $vgpr2_hi16, implicit-def $vgpr3, implicit-def $vgpr3_lo16, 
implicit-def $vgpr3_hi16, implicit-def $vgpr4, implicit-def $vgpr4_lo16, 
implicit-def $vgpr4_hi16, implicit-def $vgpr5, implicit-def $vgpr5_lo16, 
implicit-def $vgpr5_hi16, implicit-def $vgpr6, implicit-def $vgpr6_lo16, 
implicit-def $vgpr6_hi16, implicit-def $vgpr7, implicit-def $vgpr7_lo16, 
implicit-def $vgpr7_hi16, implicit-def $vgpr8, implicit-def $vgpr8_lo16, 
implicit-def $vgpr8_hi16, implicit-def $vgpr9, implicit-def $vgpr9_lo16, 
implicit-def $vgpr9_hi16, implicit-def $vgpr10, implicit-def $vgpr10_lo16, 
implicit-def $vgpr10_hi16, implicit-def $vgpr11, implicit-def $vgpr11_lo16, 
implicit-def $vgpr11_hi16, implicit-def $vgpr12, implicit-def $vgpr12_lo16, 
implicit-def $vgpr12_hi16, implicit-def $vgpr13, implicit-def $vgpr13_lo16, 
implicit-def $vgpr13_hi16, implicit-def $vgpr14, implicit-def $vgpr14_lo16, 
implicit-def $vgpr14_hi16, implicit-def $vgpr15, implicit-def $vgpr15_lo16, 
implicit-def $vgpr15_hi16, implicit-def $vgpr16, implicit-def $vgpr16_lo16, 
implicit-def $vgpr16_hi16, implicit-def $vgpr17, implicit-def $vgpr17_lo16, 
implicit-def $vgpr17_hi16, implicit-def $vgpr18, implicit-def $vgpr18_lo16, 
implicit-def $vgpr18_hi16, implicit-def $vgpr19, implicit-def $vgpr19_lo16, 
implicit-def $vgpr19_hi16, implicit-def $vgpr20, implicit-def $vgpr20_lo16, 
implicit-def $vgpr20_hi16, implicit-def $vgpr21, implicit-def $vgpr21_lo16, 
implicit-def $vgpr21_hi16, implicit-def $vgpr22, implicit-def $vgpr22_lo16, 
implicit-def $vgpr22_hi16, implicit-def $vgpr23, implicit-def $vgpr23_lo16, 
implicit-def $vgpr23_hi16, implicit-def $vgpr24, implicit-def $vgpr24_lo16, 
implicit-def $vgpr24_hi16, implicit-def $vgpr25, implicit-def $vgpr25_lo16, 
implicit-def $vgpr25_hi16, implicit-def $vgpr26, implicit-def $vgpr26_lo16, 
implicit-def $vgpr26_hi16, implicit-def $vgpr27, implicit-def $vgpr27_lo16, 
implicit-def $vgpr27_hi16, implicit-def $vgpr28, implicit-def $vgpr28_lo16, 
implicit-def $vgpr28_hi16, implicit-def $vgpr29, implicit-def $vgpr29_lo16, 
implicit-def $vgpr29_hi16, implicit-def $vgpr30, implicit-def $vgpr30_lo16, 
implicit-def $vgpr30_hi16, implicit-def $vgpr31, implicit-def $vgpr31_lo16, 
implicit-def $vgpr31_hi16, implicit-def $vgpr32, implicit-def $vgpr32_lo16, 
implicit-def $vgpr32_hi16, implicit $vgpr0, implicit $sgpr0_sgpr1_sgpr2_sgpr3, 
implicit $exec {
+    ; GFX1200-NEXT:   S_CLAUSE 31
+    ; GFX1200-NEXT:   $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 4, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr2 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 8, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr3 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 12, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr4 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 16, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr5 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 20, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr6 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 24, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr7 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 28, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr8 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 32, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr9 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 36, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr10 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 40, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr11 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 44, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr12 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 48, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr13 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 52, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr14 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 56, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr15 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 60, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr16 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 64, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr17 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 68, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr18 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 72, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr19 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 76, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr20 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 80, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr21 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 84, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr22 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 88, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr23 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 92, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr24 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 96, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr25 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 100, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr26 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 104, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr27 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 108, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr28 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 112, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr29 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 116, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr30 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 120, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr31 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 124, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr32 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 128, 0, 0, implicit $exec
+    ; GFX1200-NEXT: }
+    ; GFX1200-NEXT: BUNDLE implicit-def $vgpr33, implicit-def $vgpr33_lo16, 
implicit-def $vgpr33_hi16, implicit-def $vgpr34, implicit-def $vgpr34_lo16, 
implicit-def $vgpr34_hi16, implicit-def $vgpr35, implicit-def $vgpr35_lo16, 
implicit-def $vgpr35_hi16, implicit-def $vgpr36, implicit-def $vgpr36_lo16, 
implicit-def $vgpr36_hi16, implicit-def $vgpr37, implicit-def $vgpr37_lo16, 
implicit-def $vgpr37_hi16, implicit-def $vgpr38, implicit-def $vgpr38_lo16, 
implicit-def $vgpr38_hi16, implicit-def $vgpr39, implicit-def $vgpr39_lo16, 
implicit-def $vgpr39_hi16, implicit-def $vgpr40, implicit-def $vgpr40_lo16, 
implicit-def $vgpr40_hi16, implicit-def $vgpr41, implicit-def $vgpr41_lo16, 
implicit-def $vgpr41_hi16, implicit-def $vgpr42, implicit-def $vgpr42_lo16, 
implicit-def $vgpr42_hi16, implicit-def $vgpr43, implicit-def $vgpr43_lo16, 
implicit-def $vgpr43_hi16, implicit-def $vgpr44, implicit-def $vgpr44_lo16, 
implicit-def $vgpr44_hi16, implicit-def $vgpr45, implicit-def $vgpr45_lo16, 
implicit-def $vgpr45_hi16, implicit-def $vgpr46, implicit-def $vgpr46_lo16, 
implicit-def $vgpr46_hi16, implicit-def $vgpr47, implicit-def $vgpr47_lo16, 
implicit-def $vgpr47_hi16, implicit-def $vgpr48, implicit-def $vgpr48_lo16, 
implicit-def $vgpr48_hi16, implicit-def $vgpr49, implicit-def $vgpr49_lo16, 
implicit-def $vgpr49_hi16, implicit-def $vgpr50, implicit-def $vgpr50_lo16, 
implicit-def $vgpr50_hi16, implicit-def $vgpr51, implicit-def $vgpr51_lo16, 
implicit-def $vgpr51_hi16, implicit-def $vgpr52, implicit-def $vgpr52_lo16, 
implicit-def $vgpr52_hi16, implicit-def $vgpr53, implicit-def $vgpr53_lo16, 
implicit-def $vgpr53_hi16, implicit-def $vgpr54, implicit-def $vgpr54_lo16, 
implicit-def $vgpr54_hi16, implicit-def $vgpr55, implicit-def $vgpr55_lo16, 
implicit-def $vgpr55_hi16, implicit-def $vgpr56, implicit-def $vgpr56_lo16, 
implicit-def $vgpr56_hi16, implicit-def $vgpr57, implicit-def $vgpr57_lo16, 
implicit-def $vgpr57_hi16, implicit-def $vgpr58, implicit-def $vgpr58_lo16, 
implicit-def $vgpr58_hi16, implicit-def $vgpr59, implicit-def $vgpr59_lo16, 
implicit-def $vgpr59_hi16, implicit-def $vgpr60, implicit-def $vgpr60_lo16, 
implicit-def $vgpr60_hi16, implicit-def $vgpr61, implicit-def $vgpr61_lo16, 
implicit-def $vgpr61_hi16, implicit-def $vgpr62, implicit-def $vgpr62_lo16, 
implicit-def $vgpr62_hi16, implicit-def $vgpr63, implicit-def $vgpr63_lo16, 
implicit-def $vgpr63_hi16, implicit-def $vgpr64, implicit-def $vgpr64_lo16, 
implicit-def $vgpr64_hi16, implicit $vgpr0, implicit $sgpr0_sgpr1_sgpr2_sgpr3, 
implicit $exec {
+    ; GFX1200-NEXT:   S_CLAUSE 31
+    ; GFX1200-NEXT:   $vgpr33 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 132, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr34 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 136, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr35 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 140, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr36 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 144, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr37 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 148, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr38 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 152, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr39 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 156, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr40 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 160, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr41 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 164, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr42 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 168, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr43 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 172, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr44 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 176, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr45 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 180, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr46 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 184, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr47 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 188, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr48 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 192, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr49 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 196, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr50 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 200, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr51 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 204, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr52 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 208, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr53 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 212, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr54 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 216, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr55 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 220, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr56 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 224, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr57 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 228, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr58 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 232, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr59 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 236, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr60 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 240, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr61 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 244, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr62 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 248, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr63 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 252, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr64 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 256, 0, 0, implicit $exec
+    ; GFX1200-NEXT: }
+    ; GFX1200-NEXT: BUNDLE implicit-def $vgpr65, implicit-def $vgpr65_lo16, 
implicit-def $vgpr65_hi16, implicit-def $vgpr66, implicit-def $vgpr66_lo16, 
implicit-def $vgpr66_hi16, implicit-def $vgpr67, implicit-def $vgpr67_lo16, 
implicit-def $vgpr67_hi16, implicit-def $vgpr68, implicit-def $vgpr68_lo16, 
implicit-def $vgpr68_hi16, implicit-def $vgpr69, implicit-def $vgpr69_lo16, 
implicit-def $vgpr69_hi16, implicit-def $vgpr70, implicit-def $vgpr70_lo16, 
implicit-def $vgpr70_hi16, implicit-def $vgpr71, implicit-def $vgpr71_lo16, 
implicit-def $vgpr71_hi16, implicit-def $vgpr72, implicit-def $vgpr72_lo16, 
implicit-def $vgpr72_hi16, implicit-def $vgpr73, implicit-def $vgpr73_lo16, 
implicit-def $vgpr73_hi16, implicit-def $vgpr74, implicit-def $vgpr74_lo16, 
implicit-def $vgpr74_hi16, implicit-def $vgpr75, implicit-def $vgpr75_lo16, 
implicit-def $vgpr75_hi16, implicit-def $vgpr76, implicit-def $vgpr76_lo16, 
implicit-def $vgpr76_hi16, implicit-def $vgpr77, implicit-def $vgpr77_lo16, 
implicit-def $vgpr77_hi16, implicit-def $vgpr78, implicit-def $vgpr78_lo16, 
implicit-def $vgpr78_hi16, implicit-def $vgpr79, implicit-def $vgpr79_lo16, 
implicit-def $vgpr79_hi16, implicit-def $vgpr80, implicit-def $vgpr80_lo16, 
implicit-def $vgpr80_hi16, implicit $vgpr0, implicit $sgpr0_sgpr1_sgpr2_sgpr3, 
implicit $exec {
+    ; GFX1200-NEXT:   S_CLAUSE 15
+    ; GFX1200-NEXT:   $vgpr65 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 260, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr66 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 264, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr67 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 268, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr68 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 272, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr69 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 276, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr70 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 280, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr71 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 284, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr72 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 288, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr73 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 292, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr74 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 296, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr75 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 300, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr76 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 304, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr77 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 308, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr78 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 312, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr79 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 316, 0, 0, implicit $exec
+    ; GFX1200-NEXT:   $vgpr80 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 320, 0, 0, implicit $exec
+    ; GFX1200-NEXT: }
+    ;
+    ; GFX1250-LABEL: name: long_clause
+    ; GFX1250: liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $vgpr0
+    ; GFX1250-NEXT: {{  $}}
+    ; GFX1250-NEXT: BUNDLE implicit-def $vgpr1, implicit-def $vgpr1_lo16, 
implicit-def $vgpr1_hi16, implicit-def $vgpr2, implicit-def $vgpr2_lo16, 
implicit-def $vgpr2_hi16, implicit-def $vgpr3, implicit-def $vgpr3_lo16, 
implicit-def $vgpr3_hi16, implicit-def $vgpr4, implicit-def $vgpr4_lo16, 
implicit-def $vgpr4_hi16, implicit-def $vgpr5, implicit-def $vgpr5_lo16, 
implicit-def $vgpr5_hi16, implicit-def $vgpr6, implicit-def $vgpr6_lo16, 
implicit-def $vgpr6_hi16, implicit-def $vgpr7, implicit-def $vgpr7_lo16, 
implicit-def $vgpr7_hi16, implicit-def $vgpr8, implicit-def $vgpr8_lo16, 
implicit-def $vgpr8_hi16, implicit-def $vgpr9, implicit-def $vgpr9_lo16, 
implicit-def $vgpr9_hi16, implicit-def $vgpr10, implicit-def $vgpr10_lo16, 
implicit-def $vgpr10_hi16, implicit-def $vgpr11, implicit-def $vgpr11_lo16, 
implicit-def $vgpr11_hi16, implicit-def $vgpr12, implicit-def $vgpr12_lo16, 
implicit-def $vgpr12_hi16, implicit-def $vgpr13, implicit-def $vgpr13_lo16, 
implicit-def $vgpr13_hi16, implicit-def $vgpr14, implicit-def $vgpr14_lo16, 
implicit-def $vgpr14_hi16, implicit-def $vgpr15, implicit-def $vgpr15_lo16, 
implicit-def $vgpr15_hi16, implicit-def $vgpr16, implicit-def $vgpr16_lo16, 
implicit-def $vgpr16_hi16, implicit-def $vgpr17, implicit-def $vgpr17_lo16, 
implicit-def $vgpr17_hi16, implicit-def $vgpr18, implicit-def $vgpr18_lo16, 
implicit-def $vgpr18_hi16, implicit-def $vgpr19, implicit-def $vgpr19_lo16, 
implicit-def $vgpr19_hi16, implicit-def $vgpr20, implicit-def $vgpr20_lo16, 
implicit-def $vgpr20_hi16, implicit-def $vgpr21, implicit-def $vgpr21_lo16, 
implicit-def $vgpr21_hi16, implicit-def $vgpr22, implicit-def $vgpr22_lo16, 
implicit-def $vgpr22_hi16, implicit-def $vgpr23, implicit-def $vgpr23_lo16, 
implicit-def $vgpr23_hi16, implicit-def $vgpr24, implicit-def $vgpr24_lo16, 
implicit-def $vgpr24_hi16, implicit-def $vgpr25, implicit-def $vgpr25_lo16, 
implicit-def $vgpr25_hi16, implicit-def $vgpr26, implicit-def $vgpr26_lo16, 
implicit-def $vgpr26_hi16, implicit-def $vgpr27, implicit-def $vgpr27_lo16, 
implicit-def $vgpr27_hi16, implicit-def $vgpr28, implicit-def $vgpr28_lo16, 
implicit-def $vgpr28_hi16, implicit-def $vgpr29, implicit-def $vgpr29_lo16, 
implicit-def $vgpr29_hi16, implicit-def $vgpr30, implicit-def $vgpr30_lo16, 
implicit-def $vgpr30_hi16, implicit-def $vgpr31, implicit-def $vgpr31_lo16, 
implicit-def $vgpr31_hi16, implicit-def $vgpr32, implicit-def $vgpr32_lo16, 
implicit-def $vgpr32_hi16, implicit-def $vgpr33, implicit-def $vgpr33_lo16, 
implicit-def $vgpr33_hi16, implicit-def $vgpr34, implicit-def $vgpr34_lo16, 
implicit-def $vgpr34_hi16, implicit-def $vgpr35, implicit-def $vgpr35_lo16, 
implicit-def $vgpr35_hi16, implicit-def $vgpr36, implicit-def $vgpr36_lo16, 
implicit-def $vgpr36_hi16, implicit-def $vgpr37, implicit-def $vgpr37_lo16, 
implicit-def $vgpr37_hi16, implicit-def $vgpr38, implicit-def $vgpr38_lo16, 
implicit-def $vgpr38_hi16, implicit-def $vgpr39, implicit-def $vgpr39_lo16, 
implicit-def $vgpr39_hi16, implicit-def $vgpr40, implicit-def $vgpr40_lo16, 
implicit-def $vgpr40_hi16, implicit-def $vgpr41, implicit-def $vgpr41_lo16, 
implicit-def $vgpr41_hi16, implicit-def $vgpr42, implicit-def $vgpr42_lo16, 
implicit-def $vgpr42_hi16, implicit-def $vgpr43, implicit-def $vgpr43_lo16, 
implicit-def $vgpr43_hi16, implicit-def $vgpr44, implicit-def $vgpr44_lo16, 
implicit-def $vgpr44_hi16, implicit-def $vgpr45, implicit-def $vgpr45_lo16, 
implicit-def $vgpr45_hi16, implicit-def $vgpr46, implicit-def $vgpr46_lo16, 
implicit-def $vgpr46_hi16, implicit-def $vgpr47, implicit-def $vgpr47_lo16, 
implicit-def $vgpr47_hi16, implicit-def $vgpr48, implicit-def $vgpr48_lo16, 
implicit-def $vgpr48_hi16, implicit-def $vgpr49, implicit-def $vgpr49_lo16, 
implicit-def $vgpr49_hi16, implicit-def $vgpr50, implicit-def $vgpr50_lo16, 
implicit-def $vgpr50_hi16, implicit-def $vgpr51, implicit-def $vgpr51_lo16, 
implicit-def $vgpr51_hi16, implicit-def $vgpr52, implicit-def $vgpr52_lo16, 
implicit-def $vgpr52_hi16, implicit-def $vgpr53, implicit-def $vgpr53_lo16, 
implicit-def $vgpr53_hi16, implicit-def $vgpr54, implicit-def $vgpr54_lo16, 
implicit-def $vgpr54_hi16, implicit-def $vgpr55, implicit-def $vgpr55_lo16, 
implicit-def $vgpr55_hi16, implicit-def $vgpr56, implicit-def $vgpr56_lo16, 
implicit-def $vgpr56_hi16, implicit-def $vgpr57, implicit-def $vgpr57_lo16, 
implicit-def $vgpr57_hi16, implicit-def $vgpr58, implicit-def $vgpr58_lo16, 
implicit-def $vgpr58_hi16, implicit-def $vgpr59, implicit-def $vgpr59_lo16, 
implicit-def $vgpr59_hi16, implicit-def $vgpr60, implicit-def $vgpr60_lo16, 
implicit-def $vgpr60_hi16, implicit-def $vgpr61, implicit-def $vgpr61_lo16, 
implicit-def $vgpr61_hi16, implicit-def $vgpr62, implicit-def $vgpr62_lo16, 
implicit-def $vgpr62_hi16, implicit-def $vgpr63, implicit-def $vgpr63_lo16, 
implicit-def $vgpr63_hi16, implicit $vgpr0, implicit $sgpr0_sgpr1_sgpr2_sgpr3, 
implicit $exec {
+    ; GFX1250-NEXT:   S_CLAUSE 62
+    ; GFX1250-NEXT:   $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 4, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr2 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 8, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr3 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 12, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr4 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 16, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr5 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 20, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr6 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 24, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr7 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 28, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr8 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 32, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr9 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 36, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr10 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 40, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr11 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 44, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr12 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 48, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr13 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 52, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr14 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 56, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr15 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 60, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr16 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 64, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr17 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 68, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr18 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 72, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr19 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 76, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr20 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 80, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr21 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 84, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr22 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 88, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr23 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 92, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr24 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 96, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr25 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 100, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr26 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 104, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr27 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 108, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr28 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 112, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr29 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 116, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr30 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 120, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr31 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 124, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr32 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 128, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr33 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 132, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr34 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 136, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr35 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 140, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr36 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 144, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr37 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 148, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr38 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 152, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr39 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 156, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr40 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 160, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr41 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 164, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr42 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 168, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr43 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 172, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr44 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 176, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr45 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 180, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr46 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 184, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr47 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 188, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr48 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 192, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr49 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 196, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr50 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 200, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr51 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 204, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr52 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 208, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr53 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 212, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr54 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 216, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr55 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 220, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr56 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 224, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr57 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 228, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr58 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 232, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr59 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 236, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr60 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 240, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr61 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 244, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr62 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 248, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr63 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 252, 0, 0, implicit $exec
+    ; GFX1250-NEXT: }
+    ; GFX1250-NEXT: BUNDLE implicit-def $vgpr64, implicit-def $vgpr64_lo16, 
implicit-def $vgpr64_hi16, implicit-def $vgpr65, implicit-def $vgpr65_lo16, 
implicit-def $vgpr65_hi16, implicit-def $vgpr66, implicit-def $vgpr66_lo16, 
implicit-def $vgpr66_hi16, implicit-def $vgpr67, implicit-def $vgpr67_lo16, 
implicit-def $vgpr67_hi16, implicit-def $vgpr68, implicit-def $vgpr68_lo16, 
implicit-def $vgpr68_hi16, implicit-def $vgpr69, implicit-def $vgpr69_lo16, 
implicit-def $vgpr69_hi16, implicit-def $vgpr70, implicit-def $vgpr70_lo16, 
implicit-def $vgpr70_hi16, implicit-def $vgpr71, implicit-def $vgpr71_lo16, 
implicit-def $vgpr71_hi16, implicit-def $vgpr72, implicit-def $vgpr72_lo16, 
implicit-def $vgpr72_hi16, implicit-def $vgpr73, implicit-def $vgpr73_lo16, 
implicit-def $vgpr73_hi16, implicit-def $vgpr74, implicit-def $vgpr74_lo16, 
implicit-def $vgpr74_hi16, implicit-def $vgpr75, implicit-def $vgpr75_lo16, 
implicit-def $vgpr75_hi16, implicit-def $vgpr76, implicit-def $vgpr76_lo16, 
implicit-def $vgpr76_hi16, implicit-def $vgpr77, implicit-def $vgpr77_lo16, 
implicit-def $vgpr77_hi16, implicit-def $vgpr78, implicit-def $vgpr78_lo16, 
implicit-def $vgpr78_hi16, implicit-def $vgpr79, implicit-def $vgpr79_lo16, 
implicit-def $vgpr79_hi16, implicit-def $vgpr80, implicit-def $vgpr80_lo16, 
implicit-def $vgpr80_hi16, implicit $vgpr0, implicit $sgpr0_sgpr1_sgpr2_sgpr3, 
implicit $exec {
+    ; GFX1250-NEXT:   S_CLAUSE 16
+    ; GFX1250-NEXT:   $vgpr64 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 256, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr65 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 260, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr66 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 264, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr67 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 268, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr68 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 272, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr69 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 276, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr70 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 280, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr71 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 284, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr72 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 288, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr73 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 292, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr74 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 296, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr75 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 300, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr76 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 304, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr77 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 308, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr78 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 312, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr79 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 316, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr80 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 0, 320, 0, 0, implicit $exec
+    ; GFX1250-NEXT: }
+    $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 4, 
0, 0, implicit $exec
+    $vgpr2 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 8, 
0, 0, implicit $exec
+    $vgpr3 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 12, 
0, 0, implicit $exec
+    $vgpr4 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 16, 
0, 0, implicit $exec
+    $vgpr5 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 20, 
0, 0, implicit $exec
+    $vgpr6 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 24, 
0, 0, implicit $exec
+    $vgpr7 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 28, 
0, 0, implicit $exec
+    $vgpr8 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 32, 
0, 0, implicit $exec
+    $vgpr9 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 36, 
0, 0, implicit $exec
+    $vgpr10 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 40, 
0, 0, implicit $exec
+    $vgpr11 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 44, 
0, 0, implicit $exec
+    $vgpr12 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 48, 
0, 0, implicit $exec
+    $vgpr13 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 52, 
0, 0, implicit $exec
+    $vgpr14 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 56, 
0, 0, implicit $exec
+    $vgpr15 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 60, 
0, 0, implicit $exec
+    $vgpr16 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 64, 
0, 0, implicit $exec
+    $vgpr17 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 68, 
0, 0, implicit $exec
+    $vgpr18 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 72, 
0, 0, implicit $exec
+    $vgpr19 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 76, 
0, 0, implicit $exec
+    $vgpr20 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 80, 
0, 0, implicit $exec
+    $vgpr21 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 84, 
0, 0, implicit $exec
+    $vgpr22 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 88, 
0, 0, implicit $exec
+    $vgpr23 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 92, 
0, 0, implicit $exec
+    $vgpr24 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 96, 
0, 0, implicit $exec
+    $vgpr25 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
100, 0, 0, implicit $exec
+    $vgpr26 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
104, 0, 0, implicit $exec
+    $vgpr27 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
108, 0, 0, implicit $exec
+    $vgpr28 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
112, 0, 0, implicit $exec
+    $vgpr29 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
116, 0, 0, implicit $exec
+    $vgpr30 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
120, 0, 0, implicit $exec
+    $vgpr31 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
124, 0, 0, implicit $exec
+    $vgpr32 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
128, 0, 0, implicit $exec
+    $vgpr33 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
132, 0, 0, implicit $exec
+    $vgpr34 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
136, 0, 0, implicit $exec
+    $vgpr35 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
140, 0, 0, implicit $exec
+    $vgpr36 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
144, 0, 0, implicit $exec
+    $vgpr37 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
148, 0, 0, implicit $exec
+    $vgpr38 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
152, 0, 0, implicit $exec
+    $vgpr39 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
156, 0, 0, implicit $exec
+    $vgpr40 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
160, 0, 0, implicit $exec
+    $vgpr41 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
164, 0, 0, implicit $exec
+    $vgpr42 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
168, 0, 0, implicit $exec
+    $vgpr43 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
172, 0, 0, implicit $exec
+    $vgpr44 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
176, 0, 0, implicit $exec
+    $vgpr45 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
180, 0, 0, implicit $exec
+    $vgpr46 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
184, 0, 0, implicit $exec
+    $vgpr47 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
188, 0, 0, implicit $exec
+    $vgpr48 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
192, 0, 0, implicit $exec
+    $vgpr49 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
196, 0, 0, implicit $exec
+    $vgpr50 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
200, 0, 0, implicit $exec
+    $vgpr51 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
204, 0, 0, implicit $exec
+    $vgpr52 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
208, 0, 0, implicit $exec
+    $vgpr53 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
212, 0, 0, implicit $exec
+    $vgpr54 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
216, 0, 0, implicit $exec
+    $vgpr55 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
220, 0, 0, implicit $exec
+    $vgpr56 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
224, 0, 0, implicit $exec
+    $vgpr57 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
228, 0, 0, implicit $exec
+    $vgpr58 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
232, 0, 0, implicit $exec
+    $vgpr59 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
236, 0, 0, implicit $exec
+    $vgpr60 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
240, 0, 0, implicit $exec
+    $vgpr61 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
244, 0, 0, implicit $exec
+    $vgpr62 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
248, 0, 0, implicit $exec
+    $vgpr63 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
252, 0, 0, implicit $exec
+    $vgpr64 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
256, 0, 0, implicit $exec
+    $vgpr65 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
260, 0, 0, implicit $exec
+    $vgpr66 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
264, 0, 0, implicit $exec
+    $vgpr67 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
268, 0, 0, implicit $exec
+    $vgpr68 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
272, 0, 0, implicit $exec
+    $vgpr69 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
276, 0, 0, implicit $exec
+    $vgpr70 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
280, 0, 0, implicit $exec
+    $vgpr71 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
284, 0, 0, implicit $exec
+    $vgpr72 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
288, 0, 0, implicit $exec
+    $vgpr73 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
292, 0, 0, implicit $exec
+    $vgpr74 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
296, 0, 0, implicit $exec
+    $vgpr75 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
300, 0, 0, implicit $exec
+    $vgpr76 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
304, 0, 0, implicit $exec
+    $vgpr77 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
308, 0, 0, implicit $exec
+    $vgpr78 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
312, 0, 0, implicit $exec
+    $vgpr79 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
316, 0, 0, implicit $exec
+    $vgpr80 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 
320, 0, 0, implicit $exec
+...
+
+---
+name: kill
+tracksRegLiveness: true
+body: |
+  bb.0:
+    liveins: $sgpr0_sgpr1, $sgpr4
+    ; GFX12-LABEL: name: kill
+    ; GFX12: liveins: $sgpr0_sgpr1, $sgpr4
+    ; GFX12-NEXT: {{  $}}
+    ; GFX12-NEXT: BUNDLE implicit-def $sgpr2, implicit-def $sgpr2_lo16, 
implicit-def $sgpr2_hi16, implicit-def $sgpr3, implicit-def $sgpr3_lo16, 
implicit-def $sgpr3_hi16, implicit $sgpr0_sgpr1, implicit undef $sgpr4 {
+    ; GFX12-NEXT:   S_CLAUSE 1
+    ; GFX12-NEXT:   $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 0, 0
+    ; GFX12-NEXT:   KILL undef renamable $sgpr4
+    ; GFX12-NEXT:   $sgpr3 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 4, 0
+    ; GFX12-NEXT: }
+    $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 0, 0
+    KILL undef renamable $sgpr4
+    $sgpr3 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 4, 0
+...
+
+---
+name: kill2
+tracksRegLiveness: true
+body: |
+  bb.0:
+    liveins: $sgpr0_sgpr1, $sgpr4, $sgpr5
+    ; GFX12-LABEL: name: kill2
+    ; GFX12: liveins: $sgpr0_sgpr1, $sgpr4, $sgpr5
+    ; GFX12-NEXT: {{  $}}
+    ; GFX12-NEXT: BUNDLE implicit-def $sgpr2, implicit-def $sgpr2_lo16, 
implicit-def $sgpr2_hi16, implicit-def $sgpr3, implicit-def $sgpr3_lo16, 
implicit-def $sgpr3_hi16, implicit $sgpr0_sgpr1, implicit undef $sgpr4 {
+    ; GFX12-NEXT:   S_CLAUSE 1
+    ; GFX12-NEXT:   $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 0, 0
+    ; GFX12-NEXT:   KILL undef renamable $sgpr4
+    ; GFX12-NEXT:   $sgpr3 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 4, 0
+    ; GFX12-NEXT: }
+    ; GFX12-NEXT: KILL undef renamable $sgpr5
+    $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 0, 0
+    KILL undef renamable $sgpr4
+    $sgpr3 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 4, 0
+    KILL undef renamable $sgpr5
+...
+
+---
+name: flat_load_atomic
+tracksRegLiveness: true
+body: |
+  bb.0:
+    liveins: $vgpr0_vgpr1, $vgpr2
+    ; GFX1200-LABEL: name: flat_load_atomic
+    ; GFX1200: liveins: $vgpr0_vgpr1, $vgpr2
+    ; GFX1200-NEXT: {{  $}}
+    ; GFX1200-NEXT: $vgpr3 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit 
$exec, implicit $flat_scr
+    ; GFX1200-NEXT: $vgpr4 = FLAT_ATOMIC_ADD_RTN $vgpr0_vgpr1, $vgpr2, 4, 0, 
implicit $exec, implicit $flat_scr
+    ;
+    ; GFX1250-LABEL: name: flat_load_atomic
+    ; GFX1250: liveins: $vgpr0_vgpr1, $vgpr2
+    ; GFX1250-NEXT: {{  $}}
+    ; GFX1250-NEXT: BUNDLE implicit-def $vgpr3, implicit-def $vgpr3_lo16, 
implicit-def $vgpr3_hi16, implicit-def $vgpr4, implicit-def $vgpr4_lo16, 
implicit-def $vgpr4_hi16, implicit $vgpr0_vgpr1, implicit $exec, implicit 
$flat_scr, implicit $vgpr2 {
+    ; GFX1250-NEXT:   S_CLAUSE 1
+    ; GFX1250-NEXT:   $vgpr3 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit 
$exec, implicit $flat_scr
+    ; GFX1250-NEXT:   $vgpr4 = FLAT_ATOMIC_ADD_RTN $vgpr0_vgpr1, $vgpr2, 4, 0, 
implicit $exec, implicit $flat_scr
+    ; GFX1250-NEXT: }
+    $vgpr3 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit 
$flat_scr
+    $vgpr4 = FLAT_ATOMIC_ADD_RTN $vgpr0_vgpr1, $vgpr2, 4, 0, implicit $exec, 
implicit $flat_scr
+...
+
+---
+name: global_load_atomic
+tracksRegLiveness: true
+body: |
+  bb.0:
+    liveins: $vgpr0_vgpr1, $vgpr2
+    ; GFX1200-LABEL: name: global_load_atomic
+    ; GFX1200: liveins: $vgpr0_vgpr1, $vgpr2
+    ; GFX1200-NEXT: {{  $}}
+    ; GFX1200-NEXT: $vgpr3 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit 
$exec
+    ; GFX1200-NEXT: $vgpr4 = GLOBAL_ATOMIC_ADD_RTN $vgpr0_vgpr1, $vgpr2, 4, 0, 
implicit $exec
+    ;
+    ; GFX1250-LABEL: name: global_load_atomic
+    ; GFX1250: liveins: $vgpr0_vgpr1, $vgpr2
+    ; GFX1250-NEXT: {{  $}}
+    ; GFX1250-NEXT: BUNDLE implicit-def $vgpr3, implicit-def $vgpr3_lo16, 
implicit-def $vgpr3_hi16, implicit-def $vgpr4, implicit-def $vgpr4_lo16, 
implicit-def $vgpr4_hi16, implicit $vgpr0_vgpr1, implicit $exec, implicit 
$vgpr2 {
+    ; GFX1250-NEXT:   S_CLAUSE 1
+    ; GFX1250-NEXT:   $vgpr3 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit 
$exec
+    ; GFX1250-NEXT:   $vgpr4 = GLOBAL_ATOMIC_ADD_RTN $vgpr0_vgpr1, $vgpr2, 4, 
0, implicit $exec
+    ; GFX1250-NEXT: }
+    $vgpr3 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec
+    $vgpr4 = GLOBAL_ATOMIC_ADD_RTN $vgpr0_vgpr1, $vgpr2, 4, 0, implicit $exec
+...
+
+---
+name: flat_global_load
+tracksRegLiveness: true
+body: |
+  bb.0:
+    liveins: $vgpr0_vgpr1
+    ; GFX12-LABEL: name: flat_global_load
+    ; GFX12: liveins: $vgpr0_vgpr1
+    ; GFX12-NEXT: {{  $}}
+    ; GFX12-NEXT: $vgpr2 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, 
implicit $flat_scr
+    ; GFX12-NEXT: $vgpr3 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 4, 0, implicit 
$exec, implicit $flat_scr
+    $vgpr2 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit 
$flat_scr
+    $vgpr3 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 4, 0, implicit $exec, implicit 
$flat_scr
+...
+
+---
+name: buffer_load_atomic
+tracksRegLiveness: true
+body: |
+  bb.0:
+    liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, $vgpr0
+    ; GFX1200-LABEL: name: buffer_load_atomic
+    ; GFX1200: liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, $vgpr0
+    ; GFX1200-NEXT: {{  $}}
+    ; GFX1200-NEXT: $vgpr1 = BUFFER_LOAD_DWORD_OFFSET 
$sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 0, 0, 0, implicit $exec
+    ; GFX1200-NEXT: $vgpr0 = BUFFER_ATOMIC_ADD_OFFSET_RTN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 4, 0, 0, implicit $exec
+    ;
+    ; GFX1250-LABEL: name: buffer_load_atomic
+    ; GFX1250: liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, $vgpr0
+    ; GFX1250-NEXT: {{  $}}
+    ; GFX1250-NEXT: BUNDLE implicit-def $vgpr1, implicit-def $vgpr1_lo16, 
implicit-def $vgpr1_hi16, implicit-def $vgpr0, implicit-def $vgpr0_lo16, 
implicit-def $vgpr0_hi16, implicit $sgpr0_sgpr1_sgpr2_sgpr3, implicit $sgpr4, 
implicit $exec, implicit $vgpr0 {
+    ; GFX1250-NEXT:   S_CLAUSE 1
+    ; GFX1250-NEXT:   $vgpr1 = BUFFER_LOAD_DWORD_OFFSET 
$sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 0, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   $vgpr0 = BUFFER_ATOMIC_ADD_OFFSET_RTN $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, 4, 0, 0, implicit $exec
+    ; GFX1250-NEXT: }
+    $vgpr1 = BUFFER_LOAD_DWORD_OFFSET $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 0, 0, 
0, implicit $exec
+    $vgpr0 = BUFFER_ATOMIC_ADD_OFFSET_RTN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 4, 
0, 0, implicit $exec
+...
+
+---
+name: flat_load_store
+tracksRegLiveness: true
+body: |
+  bb.0:
+    liveins: $vgpr0_vgpr1, $vgpr2
+    ; GFX1200-LABEL: name: flat_load_store
+    ; GFX1200: liveins: $vgpr0_vgpr1, $vgpr2
+    ; GFX1200-NEXT: {{  $}}
+    ; GFX1200-NEXT: $vgpr3 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit 
$exec, implicit $flat_scr
+    ; GFX1200-NEXT: FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 4, 0, implicit 
$exec, implicit $flat_scr
+    ;
+    ; GFX1250-LABEL: name: flat_load_store
+    ; GFX1250: liveins: $vgpr0_vgpr1, $vgpr2
+    ; GFX1250-NEXT: {{  $}}
+    ; GFX1250-NEXT: BUNDLE implicit-def $vgpr3, implicit-def $vgpr3_lo16, 
implicit-def $vgpr3_hi16, implicit $vgpr0_vgpr1, implicit $exec, implicit 
$flat_scr, implicit $vgpr2 {
+    ; GFX1250-NEXT:   S_CLAUSE 1
+    ; GFX1250-NEXT:   $vgpr3 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit 
$exec, implicit $flat_scr
+    ; GFX1250-NEXT:   FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 4, 0, implicit 
$exec, implicit $flat_scr
+    ; GFX1250-NEXT: }
+    $vgpr3 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit 
$flat_scr
+    FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 4, 0, implicit $exec, implicit 
$flat_scr
+...
+
+---
+name: global_load_store
+tracksRegLiveness: true
+body: |
+  bb.0:
+    liveins: $vgpr0_vgpr1, $vgpr2
+    ; GFX1200-LABEL: name: global_load_store
+    ; GFX1200: liveins: $vgpr0_vgpr1, $vgpr2
+    ; GFX1200-NEXT: {{  $}}
+    ; GFX1200-NEXT: $vgpr3 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit 
$exec
+    ; GFX1200-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 4, 0, implicit 
$exec
+    ;
+    ; GFX1250-LABEL: name: global_load_store
+    ; GFX1250: liveins: $vgpr0_vgpr1, $vgpr2
+    ; GFX1250-NEXT: {{  $}}
+    ; GFX1250-NEXT: BUNDLE implicit-def $vgpr3, implicit-def $vgpr3_lo16, 
implicit-def $vgpr3_hi16, implicit $vgpr0_vgpr1, implicit $exec, implicit 
$vgpr2 {
+    ; GFX1250-NEXT:   S_CLAUSE 1
+    ; GFX1250-NEXT:   $vgpr3 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit 
$exec
+    ; GFX1250-NEXT:   GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 4, 0, implicit 
$exec
+    ; GFX1250-NEXT: }
+    $vgpr3 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec
+    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 4, 0, implicit $exec
+...
+
+---
+name: buffer_load_store
+tracksRegLiveness: true
+body: |
+  bb.0:
+    liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, $vgpr0
+    ; GFX1200-LABEL: name: buffer_load_store
+    ; GFX1200: liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, $vgpr0
+    ; GFX1200-NEXT: {{  $}}
+    ; GFX1200-NEXT: $vgpr1 = BUFFER_LOAD_DWORD_OFFSET 
$sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 0, 0, 0, implicit $exec
+    ; GFX1200-NEXT: BUFFER_STORE_DWORD_OFFSET $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 4, 0, 0, implicit $exec
+    ;
+    ; GFX1250-LABEL: name: buffer_load_store
+    ; GFX1250: liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, $vgpr0
+    ; GFX1250-NEXT: {{  $}}
+    ; GFX1250-NEXT: BUNDLE implicit-def $vgpr1, implicit-def $vgpr1_lo16, 
implicit-def $vgpr1_hi16, implicit $sgpr0_sgpr1_sgpr2_sgpr3, implicit $sgpr4, 
implicit $exec, implicit $vgpr0 {
+    ; GFX1250-NEXT:   S_CLAUSE 1
+    ; GFX1250-NEXT:   $vgpr1 = BUFFER_LOAD_DWORD_OFFSET 
$sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 0, 0, 0, implicit $exec
+    ; GFX1250-NEXT:   BUFFER_STORE_DWORD_OFFSET $vgpr0, 
$sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 4, 0, 0, implicit $exec
+    ; GFX1250-NEXT: }
+    $vgpr1 = BUFFER_LOAD_DWORD_OFFSET $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 0, 0, 
0, implicit $exec
+    BUFFER_STORE_DWORD_OFFSET $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 4, 0, 
0, implicit $exec
+...
+
+---
+name: flat_load_global_load
+tracksRegLiveness: true
+body: |
+  bb.0:
+    liveins: $vgpr0_vgpr1, $vgpr2
+    ; GFX12-LABEL: name: flat_load_global_load
+    ; GFX12: liveins: $vgpr0_vgpr1, $vgpr2
+    ; GFX12-NEXT: {{  $}}
+    ; GFX12-NEXT: $vgpr3 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, 
implicit $flat_scr
+    ; GFX12-NEXT: $vgpr4 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec
+    $vgpr3 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit 
$flat_scr
+    $vgpr4 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec
+...
+
+---
+name: global_load_buffer_store
+tracksRegLiveness: true
+body: |
+  bb.0:
+    liveins: $vgpr0_vgpr1, $vgpr2, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4
+    ; GFX12-LABEL: name: global_load_buffer_store
+    ; GFX12: liveins: $vgpr0_vgpr1, $vgpr2, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4
+    ; GFX12-NEXT: {{  $}}
+    ; GFX12-NEXT: $vgpr4 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec
+    ; GFX12-NEXT: BUFFER_STORE_DWORD_OFFSET $vgpr2, $sgpr0_sgpr1_sgpr2_sgpr3, 
$sgpr4, 4, 0, 0, implicit $exec
+    $vgpr4 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec
+    BUFFER_STORE_DWORD_OFFSET $vgpr2, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 4, 0, 
0, implicit $exec
+...
 
 ---
 name: flat_prefetch_flat_load
@@ -31,3 +532,106 @@ body: |
     GLOBAL_PREFETCH_B8 $vgpr0_vgpr1, 0, 0, implicit $exec
     $vgpr3 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit 
$flat_scr
 ...
+
+---
+name: async_load_async_store
+tracksRegLiveness: true
+body: |
+  bb.0:
+    liveins: $vgpr0, $vgpr1, $vgpr2
+    ; GFX12-LABEL: name: async_load_async_store
+    ; GFX12: liveins: $vgpr0, $vgpr1, $vgpr2
+    ; GFX12-NEXT: {{  $}}
+    ; GFX12-NEXT: BUNDLE implicit-def $asynccnt, implicit $vgpr2, implicit 
$vgpr0_vgpr1, implicit $exec, implicit $asynccnt {
+    ; GFX12-NEXT:   S_CLAUSE 1
+    ; GFX12-NEXT:   GLOBAL_LOAD_ASYNC_TO_LDS_B32 $vgpr2, $vgpr0_vgpr1, 0, 0, 
implicit-def $asynccnt, implicit $exec, implicit $asynccnt
+    ; GFX12-NEXT:   GLOBAL_STORE_ASYNC_FROM_LDS_B32 $vgpr0_vgpr1, $vgpr2, 32, 
0, implicit-def $asynccnt, implicit $exec, implicit internal $asynccnt
+    ; GFX12-NEXT: }
+    GLOBAL_LOAD_ASYNC_TO_LDS_B32 $vgpr2, $vgpr0_vgpr1, 0, 0, implicit-def 
$asynccnt, implicit $exec, implicit $asynccnt
+    GLOBAL_STORE_ASYNC_FROM_LDS_B32 $vgpr0_vgpr1, $vgpr2, 32, 0, implicit-def 
$asynccnt, implicit $exec, implicit $asynccnt
+...
+
+---
+name: async_load_ds_load_tr
+tracksRegLiveness: true
+body: |
+  bb.0:
+    liveins: $vgpr0, $vgpr1, $vgpr2
+    ; GFX12-LABEL: name: async_load_ds_load_tr
+    ; GFX12: liveins: $vgpr0, $vgpr1, $vgpr2
+    ; GFX12-NEXT: {{  $}}
+    ; GFX12-NEXT: GLOBAL_LOAD_ASYNC_TO_LDS_B32 $vgpr2, $vgpr0_vgpr1, 0, 0, 
implicit-def $asynccnt, implicit $exec, implicit $asynccnt
+    ; GFX12-NEXT: $vgpr0_vgpr1 = DS_LOAD_TR8_B64 $vgpr2, 8, 0, implicit $exec
+    GLOBAL_LOAD_ASYNC_TO_LDS_B32 $vgpr2, $vgpr0_vgpr1, 0, 0, implicit-def 
$asynccnt, implicit $exec, implicit $asynccnt
+    $vgpr0_vgpr1 = DS_LOAD_TR8_B64 $vgpr2, 8, 0, implicit $exec
+...
+
+---
+name: ds_load_trs_ds_load
+tracksRegLiveness: true
+body: |
+  bb.0:
+    liveins: $vgpr0
+    ; GFX12-LABEL: name: ds_load_trs_ds_load
+    ; GFX12: liveins: $vgpr0
+    ; GFX12-NEXT: {{  $}}
+    ; GFX12-NEXT: $vgpr4_vgpr5 = DS_LOAD_TR8_B64 $vgpr0, 0, 0, implicit $exec
+    ; GFX12-NEXT: $vgpr0_vgpr1 = DS_LOAD_TR8_B64 $vgpr0, 8, 0, implicit $exec
+    ; GFX12-NEXT: $vgpr2_vgpr3 = DS_READ_B64_gfx9 $vgpr0, 16, 0, implicit $exec
+    $vgpr4_vgpr5 = DS_LOAD_TR8_B64 $vgpr0, 0, 0, implicit $exec
+    $vgpr0_vgpr1 = DS_LOAD_TR8_B64 $vgpr0, 8, 0, implicit $exec
+    $vgpr2_vgpr3 = DS_READ_B64_gfx9 $vgpr0, 16, 0, implicit $exec
+...
+
+# Make sure we do not clause DS_ATOMIC_ASYNC_BARRIER_ARRIVE_B64 with anything
+---
+name: ds_atomic_async_barrier_arrive_b64_ds_read
+tracksRegLiveness: true
+body: |
+  bb.0:
+    liveins: $vgpr0, $vgpr1
+    ; GFX12-LABEL: name: ds_atomic_async_barrier_arrive_b64_ds_read
+    ; GFX12: liveins: $vgpr0, $vgpr1
+    ; GFX12-NEXT: {{  $}}
+    ; GFX12-NEXT: $vgpr2 = DS_READ_B32_gfx9 $vgpr0, 0, 0, implicit $exec
+    ; GFX12-NEXT: DS_ATOMIC_ASYNC_BARRIER_ARRIVE_B64 $vgpr1, 0, 0, 
implicit-def $asynccnt, implicit $asynccnt, implicit $exec
+    ; GFX12-NEXT: $vgpr3 = DS_READ_B32_gfx9 $vgpr0, 16, 0, implicit $exec
+    $vgpr2 = DS_READ_B32_gfx9 $vgpr0, 0, 0, implicit $exec
+    DS_ATOMIC_ASYNC_BARRIER_ARRIVE_B64 $vgpr1, 0, 0, implicit-def $asynccnt, 
implicit $asynccnt, implicit $exec
+    $vgpr3 = DS_READ_B32_gfx9 $vgpr0, 16, 0, implicit $exec
+...
+
+---
+name: ds_atomic_async_barrier_arrive_b64_flat_load
+tracksRegLiveness: true
+body: |
+  bb.0:
+    liveins: $vgpr0, $vgpr1
+    ; GFX12-LABEL: name: ds_atomic_async_barrier_arrive_b64_flat_load
+    ; GFX12: liveins: $vgpr0, $vgpr1
+    ; GFX12-NEXT: {{  $}}
+    ; GFX12-NEXT: $vgpr2 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, 
implicit $flat_scr
+    ; GFX12-NEXT: DS_ATOMIC_ASYNC_BARRIER_ARRIVE_B64 $vgpr1, 0, 0, 
implicit-def $asynccnt, implicit $asynccnt, implicit $exec
+    ; GFX12-NEXT: $vgpr3 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 16, 0, implicit 
$exec, implicit $flat_scr
+    $vgpr2 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit 
$flat_scr
+    DS_ATOMIC_ASYNC_BARRIER_ARRIVE_B64 $vgpr1, 0, 0, implicit-def $asynccnt, 
implicit $asynccnt, implicit $exec
+    $vgpr3 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 16, 0, implicit $exec, implicit 
$flat_scr
+...
+
+---
+name: global_load_switching_scope
+tracksRegLiveness: true
+body: |
+  bb.0:
+    liveins: $vgpr0_vgpr1
+    ; GFX12-LABEL: name: global_load_switching_scope
+    ; GFX12: liveins: $vgpr0_vgpr1
+    ; GFX12-NEXT: {{  $}}
+    ; GFX12-NEXT: BUNDLE implicit-def $vgpr2, implicit-def $vgpr2_lo16, 
implicit-def $vgpr2_hi16, implicit-def $vgpr3, implicit-def $vgpr3_lo16, 
implicit-def $vgpr3_hi16, implicit $vgpr0_vgpr1, implicit $exec, implicit 
$flat_scr {
+    ; GFX12-NEXT:   S_CLAUSE 1
+    ; GFX12-NEXT:   $vgpr2 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit 
$exec, implicit $flat_scr
+    ; GFX12-NEXT:   $vgpr3 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 4, 24, implicit 
$exec, implicit $flat_scr
+    ; GFX12-NEXT: }
+    $vgpr2 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit 
$flat_scr
+    $vgpr3 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 4, 24, implicit $exec, implicit 
$flat_scr
+...
diff --git a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.struct.buffer.store.ll 
b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.struct.buffer.store.ll
index 8b46061cebcf7..822016b23c952 100644
--- a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.struct.buffer.store.ll
+++ b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.struct.buffer.store.ll
@@ -181,6 +181,7 @@ define amdgpu_ps void @buffer_store_wait(<4 x i32> inreg, 
<4 x float>, i32, i32,
 ;
 ; GFX12-LABEL: buffer_store_wait:
 ; GFX12:       ; %bb.0: ; %main_body
+; GFX12-NEXT:    s_clause 0x1
 ; GFX12-NEXT:    buffer_store_b128 v[0:3], v4, s[0:3], null idxen
 ; GFX12-NEXT:    buffer_load_b128 v[0:3], v5, s[0:3], null idxen
 ; GFX12-NEXT:    s_wait_loadcnt 0x0

_______________________________________________
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to