xref: /llvm-project/llvm/test/CodeGen/AMDGPU/merge-buffer-gfx12.mir (revision 06cfbe3cfd44cd2ca9eb970b8c0e5f4911468440)
1*06cfbe3cSDavid Stuttard# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 2
2*06cfbe3cSDavid Stuttard# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -verify-machineinstrs -run-pass si-load-store-opt -o - %s | FileCheck -check-prefixes=GFX12 %s
3*06cfbe3cSDavid Stuttard
4*06cfbe3cSDavid Stuttard---
5*06cfbe3cSDavid Stuttardname: buffer_load_dword_dwordx3
6*06cfbe3cSDavid Stuttardbody:             |
7*06cfbe3cSDavid Stuttard  bb.0.entry:
8*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dword_dwordx3
9*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
10*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
11*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
12*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
13*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
14*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s128), align 1, addrspace 4)
15*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET]].sub0
16*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vreg_96 = COPY killed [[BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET]].sub1_sub2_sub3
17*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
18*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
19*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
20*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
21*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
22*06cfbe3cSDavid Stuttard    %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
23*06cfbe3cSDavid Stuttard    %8:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4)
24*06cfbe3cSDavid Stuttard...
25*06cfbe3cSDavid Stuttard---
26*06cfbe3cSDavid Stuttard
27*06cfbe3cSDavid Stuttardname: buffer_load_dwordx3_dword
28*06cfbe3cSDavid Stuttardbody:             |
29*06cfbe3cSDavid Stuttard  bb.0.entry:
30*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dwordx3_dword
31*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
32*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
33*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
34*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
35*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
36*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s128), align 1, addrspace 4)
37*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vreg_96 = COPY [[BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET]].sub0_sub1_sub2
38*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET]].sub3
39*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
40*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
41*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
42*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
43*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
44*06cfbe3cSDavid Stuttard    %7:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4)
45*06cfbe3cSDavid Stuttard    %8:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 16, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
46*06cfbe3cSDavid Stuttard...
47*06cfbe3cSDavid Stuttard---
48*06cfbe3cSDavid Stuttard
49*06cfbe3cSDavid Stuttardname: buffer_load_dwordx2_dwordx2
50*06cfbe3cSDavid Stuttardbody:             |
51*06cfbe3cSDavid Stuttard  bb.0.entry:
52*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dwordx2_dwordx2
53*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
54*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
55*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
56*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
57*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
58*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s128), align 1, addrspace 4)
59*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY [[BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET]].sub0_sub1
60*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vreg_64 = COPY killed [[BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET]].sub2_sub3
61*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
62*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
63*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
64*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
65*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
66*06cfbe3cSDavid Stuttard    %7:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
67*06cfbe3cSDavid Stuttard    %8:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
68*06cfbe3cSDavid Stuttard...
69*06cfbe3cSDavid Stuttard---
70*06cfbe3cSDavid Stuttard
71*06cfbe3cSDavid Stuttardname: buffer_load_dword_dwordx2
72*06cfbe3cSDavid Stuttardbody:             |
73*06cfbe3cSDavid Stuttard  bb.0.entry:
74*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dword_dwordx2
75*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
76*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
77*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
78*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
79*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
80*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX3_VBUFFER_OFFSET:%[0-9]+]]:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4)
81*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX3_VBUFFER_OFFSET]].sub0
82*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vreg_64 = COPY killed [[BUFFER_LOAD_DWORDX3_VBUFFER_OFFSET]].sub1_sub2
83*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
84*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
85*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
86*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
87*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
88*06cfbe3cSDavid Stuttard    %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
89*06cfbe3cSDavid Stuttard    %8:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
90*06cfbe3cSDavid Stuttard...
91*06cfbe3cSDavid Stuttard---
92*06cfbe3cSDavid Stuttard
93*06cfbe3cSDavid Stuttardname: buffer_load_dwordx2_dword
94*06cfbe3cSDavid Stuttardbody:             |
95*06cfbe3cSDavid Stuttard  bb.0.entry:
96*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dwordx2_dword
97*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
98*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
99*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
100*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
101*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
102*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX3_VBUFFER_OFFSET:%[0-9]+]]:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4)
103*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY [[BUFFER_LOAD_DWORDX3_VBUFFER_OFFSET]].sub0_sub1
104*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX3_VBUFFER_OFFSET]].sub2
105*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
106*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
107*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
108*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
109*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
110*06cfbe3cSDavid Stuttard    %7:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
111*06cfbe3cSDavid Stuttard    %8:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
112*06cfbe3cSDavid Stuttard...
113*06cfbe3cSDavid Stuttard---
114*06cfbe3cSDavid Stuttard
115*06cfbe3cSDavid Stuttard
116*06cfbe3cSDavid Stuttardname: buffer_load_dword_dword
117*06cfbe3cSDavid Stuttardbody:             |
118*06cfbe3cSDavid Stuttard  bb.0.entry:
119*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dword_dword
120*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
121*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
122*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
123*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
124*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
125*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
126*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET]].sub0
127*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET]].sub1
128*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
129*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
130*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
131*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
132*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
133*06cfbe3cSDavid Stuttard    %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
134*06cfbe3cSDavid Stuttard    %8:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
135*06cfbe3cSDavid Stuttard...
136*06cfbe3cSDavid Stuttard---
137*06cfbe3cSDavid Stuttard
138*06cfbe3cSDavid Stuttardname: buffer_load_dword_32
139*06cfbe3cSDavid Stuttardbody:             |
140*06cfbe3cSDavid Stuttard  bb.0.entry:
141*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dword_32
142*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
143*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
144*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
145*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
146*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
147*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
148*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET]].sub0
149*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET]].sub1
150*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 16, 0, 0, implicit $exec :: (dereferenceable load (s128), align 1, addrspace 4)
151*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vreg_96 = COPY [[BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET]].sub0_sub1_sub2
152*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY7:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET]].sub3
153*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY8:%[0-9]+]]:vreg_64 = COPY [[COPY6]].sub0_sub1
154*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY9:%[0-9]+]]:vgpr_32 = COPY killed [[COPY6]].sub2
155*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY10:%[0-9]+]]:vgpr_32 = COPY [[COPY8]].sub0
156*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY11:%[0-9]+]]:vgpr_32 = COPY killed [[COPY8]].sub1
157*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX3_VBUFFER_OFFSET:%[0-9]+]]:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 36, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4)
158*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY12:%[0-9]+]]:vreg_64 = COPY [[BUFFER_LOAD_DWORDX3_VBUFFER_OFFSET]].sub0_sub1
159*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY13:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX3_VBUFFER_OFFSET]].sub2
160*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY14:%[0-9]+]]:vgpr_32 = COPY [[COPY12]].sub0
161*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY15:%[0-9]+]]:vgpr_32 = COPY killed [[COPY12]].sub1
162*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
163*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
164*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
165*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
166*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
167*06cfbe3cSDavid Stuttard    %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
168*06cfbe3cSDavid Stuttard    %8:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
169*06cfbe3cSDavid Stuttard    %9:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 16, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
170*06cfbe3cSDavid Stuttard    %10:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 20, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
171*06cfbe3cSDavid Stuttard    %11:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 24, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
172*06cfbe3cSDavid Stuttard    %12:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 28, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
173*06cfbe3cSDavid Stuttard    %13:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 36, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
174*06cfbe3cSDavid Stuttard    %14:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 40, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
175*06cfbe3cSDavid Stuttard    %15:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 44, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
176*06cfbe3cSDavid Stuttard...
177*06cfbe3cSDavid Stuttard---
178*06cfbe3cSDavid Stuttard
179*06cfbe3cSDavid Stuttard#
180*06cfbe3cSDavid Stuttard# buffer_store_dword
181*06cfbe3cSDavid Stuttard#
182*06cfbe3cSDavid Stuttard
183*06cfbe3cSDavid Stuttardname: buffer_store_dword_xyz
184*06cfbe3cSDavid Stuttardbody:             |
185*06cfbe3cSDavid Stuttard  bb.0.entry:
186*06cfbe3cSDavid Stuttard    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
187*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_store_dword_xyz
188*06cfbe3cSDavid Stuttard    ; GFX12: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
189*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: {{  $}}
190*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr3
191*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
192*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr1
193*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr0
194*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr3
195*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:sgpr_32 = COPY $sgpr2
196*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:sgpr_32 = COPY $sgpr1
197*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY7:%[0-9]+]]:sgpr_32 = COPY $sgpr0
198*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY7]], %subreg.sub0, [[COPY6]], %subreg.sub1, [[COPY5]], %subreg.sub2, [[COPY4]], %subreg.sub3
199*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:vreg_96 = REG_SEQUENCE [[COPY3]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY1]], %subreg.sub2
200*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE2:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[REG_SEQUENCE1]], %subreg.sub1_sub2_sub3
201*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: BUFFER_STORE_DWORDX4_VBUFFER_OFFSET_exact killed [[REG_SEQUENCE2]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 4)
202*06cfbe3cSDavid Stuttard    %7:vgpr_32 = COPY $vgpr3
203*06cfbe3cSDavid Stuttard    %6:vgpr_32 = COPY $vgpr2
204*06cfbe3cSDavid Stuttard    %5:vgpr_32 = COPY $vgpr1
205*06cfbe3cSDavid Stuttard    %4:vgpr_32 = COPY $vgpr0
206*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
207*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
208*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
209*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
210*06cfbe3cSDavid Stuttard    %13:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
211*06cfbe3cSDavid Stuttard    %14:vreg_96 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1, %6:vgpr_32, %subreg.sub2
212*06cfbe3cSDavid Stuttard    BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %7:vgpr_32, %13:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
213*06cfbe3cSDavid Stuttard    BUFFER_STORE_DWORDX3_VBUFFER_OFFSET_exact %14:vreg_96, %13:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4)
214*06cfbe3cSDavid Stuttard...
215*06cfbe3cSDavid Stuttard---
216*06cfbe3cSDavid Stuttard
217*06cfbe3cSDavid Stuttardname: buffer_store_dwordx3_dword
218*06cfbe3cSDavid Stuttardbody:             |
219*06cfbe3cSDavid Stuttard  bb.0.entry:
220*06cfbe3cSDavid Stuttard    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
221*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_store_dwordx3_dword
222*06cfbe3cSDavid Stuttard    ; GFX12: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
223*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: {{  $}}
224*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr3
225*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
226*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr1
227*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr0
228*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr3
229*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:sgpr_32 = COPY $sgpr2
230*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:sgpr_32 = COPY $sgpr1
231*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY7:%[0-9]+]]:sgpr_32 = COPY $sgpr0
232*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY7]], %subreg.sub0, [[COPY6]], %subreg.sub1, [[COPY5]], %subreg.sub2, [[COPY4]], %subreg.sub3
233*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:vreg_96 = REG_SEQUENCE [[COPY3]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY1]], %subreg.sub2
234*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE2:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[REG_SEQUENCE1]], %subreg.sub0_sub1_sub2, [[COPY]], %subreg.sub3
235*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: BUFFER_STORE_DWORDX4_VBUFFER_OFFSET_exact killed [[REG_SEQUENCE2]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 4)
236*06cfbe3cSDavid Stuttard    %7:vgpr_32 = COPY $vgpr3
237*06cfbe3cSDavid Stuttard    %6:vgpr_32 = COPY $vgpr2
238*06cfbe3cSDavid Stuttard    %5:vgpr_32 = COPY $vgpr1
239*06cfbe3cSDavid Stuttard    %4:vgpr_32 = COPY $vgpr0
240*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
241*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
242*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
243*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
244*06cfbe3cSDavid Stuttard    %13:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
245*06cfbe3cSDavid Stuttard    %14:vreg_96 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1, %6:vgpr_32, %subreg.sub2
246*06cfbe3cSDavid Stuttard    BUFFER_STORE_DWORDX3_VBUFFER_OFFSET_exact %14:vreg_96, %13:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4)
247*06cfbe3cSDavid Stuttard    BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %7:vgpr_32, %13:sgpr_128, $sgpr_null, 16, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
248*06cfbe3cSDavid Stuttard...
249*06cfbe3cSDavid Stuttard---
250*06cfbe3cSDavid Stuttard
251*06cfbe3cSDavid Stuttardname: buffer_store_dwordx2_dwordx2
252*06cfbe3cSDavid Stuttardbody:             |
253*06cfbe3cSDavid Stuttard  bb.0.entry:
254*06cfbe3cSDavid Stuttard    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
255*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_store_dwordx2_dwordx2
256*06cfbe3cSDavid Stuttard    ; GFX12: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
257*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: {{  $}}
258*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr3
259*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
260*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr1
261*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr0
262*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr3
263*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:sgpr_32 = COPY $sgpr2
264*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:sgpr_32 = COPY $sgpr1
265*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY7:%[0-9]+]]:sgpr_32 = COPY $sgpr0
266*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY7]], %subreg.sub0, [[COPY6]], %subreg.sub1, [[COPY5]], %subreg.sub2, [[COPY4]], %subreg.sub3
267*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY3]], %subreg.sub0, [[COPY2]], %subreg.sub1
268*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE2:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY]], %subreg.sub1
269*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE3:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[REG_SEQUENCE1]], %subreg.sub0_sub1, [[REG_SEQUENCE2]], %subreg.sub2_sub3
270*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: BUFFER_STORE_DWORDX4_VBUFFER_OFFSET_exact killed [[REG_SEQUENCE3]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 4)
271*06cfbe3cSDavid Stuttard    %7:vgpr_32 = COPY $vgpr3
272*06cfbe3cSDavid Stuttard    %6:vgpr_32 = COPY $vgpr2
273*06cfbe3cSDavid Stuttard    %5:vgpr_32 = COPY $vgpr1
274*06cfbe3cSDavid Stuttard    %4:vgpr_32 = COPY $vgpr0
275*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
276*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
277*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
278*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
279*06cfbe3cSDavid Stuttard    %13:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
280*06cfbe3cSDavid Stuttard    %14:vreg_64 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1
281*06cfbe3cSDavid Stuttard    %15:vreg_64 = REG_SEQUENCE %6:vgpr_32, %subreg.sub0, %7:vgpr_32, %subreg.sub1
282*06cfbe3cSDavid Stuttard    BUFFER_STORE_DWORDX2_VBUFFER_OFFSET_exact %14:vreg_64, %13:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
283*06cfbe3cSDavid Stuttard    BUFFER_STORE_DWORDX2_VBUFFER_OFFSET_exact %15:vreg_64, %13:sgpr_128, $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
284*06cfbe3cSDavid Stuttard...
285*06cfbe3cSDavid Stuttard---
286*06cfbe3cSDavid Stuttard
287*06cfbe3cSDavid Stuttardname: buffer_store_dword_dwordx2
288*06cfbe3cSDavid Stuttardbody:             |
289*06cfbe3cSDavid Stuttard  bb.0.entry:
290*06cfbe3cSDavid Stuttard    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
291*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_store_dword_dwordx2
292*06cfbe3cSDavid Stuttard    ; GFX12: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
293*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: {{  $}}
294*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr3
295*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
296*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr1
297*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr0
298*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr3
299*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:sgpr_32 = COPY $sgpr2
300*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:sgpr_32 = COPY $sgpr1
301*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY7:%[0-9]+]]:sgpr_32 = COPY $sgpr0
302*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY7]], %subreg.sub0, [[COPY6]], %subreg.sub1, [[COPY5]], %subreg.sub2, [[COPY4]], %subreg.sub3
303*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY3]], %subreg.sub0, [[COPY2]], %subreg.sub1
304*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE2:%[0-9]+]]:vreg_96 = REG_SEQUENCE [[COPY]], %subreg.sub0, %10:vreg_64, %subreg.sub1_sub2
305*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: BUFFER_STORE_DWORDX3_VBUFFER_OFFSET_exact killed [[REG_SEQUENCE2]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4)
306*06cfbe3cSDavid Stuttard    %7:vgpr_32 = COPY $vgpr3
307*06cfbe3cSDavid Stuttard    %6:vgpr_32 = COPY $vgpr2
308*06cfbe3cSDavid Stuttard    %5:vgpr_32 = COPY $vgpr1
309*06cfbe3cSDavid Stuttard    %4:vgpr_32 = COPY $vgpr0
310*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
311*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
312*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
313*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
314*06cfbe3cSDavid Stuttard    %13:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
315*06cfbe3cSDavid Stuttard    %14:vreg_64 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1
316*06cfbe3cSDavid Stuttard    BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %7:vgpr_32, %13:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
317*06cfbe3cSDavid Stuttard    BUFFER_STORE_DWORDX2_VBUFFER_OFFSET_exact %15:vreg_64, %13:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
318*06cfbe3cSDavid Stuttard...
319*06cfbe3cSDavid Stuttard---
320*06cfbe3cSDavid Stuttard
321*06cfbe3cSDavid Stuttardname: buffer_store_dwordx2_dword
322*06cfbe3cSDavid Stuttardbody:             |
323*06cfbe3cSDavid Stuttard  bb.0.entry:
324*06cfbe3cSDavid Stuttard    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
325*06cfbe3cSDavid Stuttard    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
326*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_store_dwordx2_dword
327*06cfbe3cSDavid Stuttard    ; GFX12: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
328*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: {{  $}}
329*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr3
330*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
331*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr1
332*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr0
333*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr3
334*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:sgpr_32 = COPY $sgpr2
335*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:sgpr_32 = COPY $sgpr1
336*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY7:%[0-9]+]]:sgpr_32 = COPY $sgpr0
337*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY7]], %subreg.sub0, [[COPY6]], %subreg.sub1, [[COPY5]], %subreg.sub2, [[COPY4]], %subreg.sub3
338*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY3]], %subreg.sub0, [[COPY2]], %subreg.sub1
339*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE2:%[0-9]+]]:vreg_96 = REG_SEQUENCE [[REG_SEQUENCE1]], %subreg.sub0_sub1, [[COPY]], %subreg.sub2
340*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: BUFFER_STORE_DWORDX3_VBUFFER_OFFSET_exact killed [[REG_SEQUENCE2]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4)
341*06cfbe3cSDavid Stuttard    %7:vgpr_32 = COPY $vgpr3
342*06cfbe3cSDavid Stuttard    %6:vgpr_32 = COPY $vgpr2
343*06cfbe3cSDavid Stuttard    %5:vgpr_32 = COPY $vgpr1
344*06cfbe3cSDavid Stuttard    %4:vgpr_32 = COPY $vgpr0
345*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
346*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
347*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
348*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
349*06cfbe3cSDavid Stuttard    %13:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
350*06cfbe3cSDavid Stuttard    %14:vreg_64 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1
351*06cfbe3cSDavid Stuttard    BUFFER_STORE_DWORDX2_VBUFFER_OFFSET_exact %14:vreg_64, %13:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
352*06cfbe3cSDavid Stuttard    BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %7:vgpr_32, %13:sgpr_128, $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
353*06cfbe3cSDavid Stuttard...
354*06cfbe3cSDavid Stuttard---
355*06cfbe3cSDavid Stuttard
356*06cfbe3cSDavid Stuttardname: buffer_store_dword_dword
357*06cfbe3cSDavid Stuttardbody:             |
358*06cfbe3cSDavid Stuttard  bb.0.entry:
359*06cfbe3cSDavid Stuttard    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
360*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_store_dword_dword
361*06cfbe3cSDavid Stuttard    ; GFX12: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
362*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: {{  $}}
363*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr3
364*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
365*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr1
366*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr0
367*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr3
368*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:sgpr_32 = COPY $sgpr2
369*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:sgpr_32 = COPY $sgpr1
370*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY7:%[0-9]+]]:sgpr_32 = COPY $sgpr0
371*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY7]], %subreg.sub0, [[COPY6]], %subreg.sub1, [[COPY5]], %subreg.sub2, [[COPY4]], %subreg.sub3
372*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY]], %subreg.sub1
373*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: BUFFER_STORE_DWORDX2_VBUFFER_OFFSET_exact killed [[REG_SEQUENCE1]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
374*06cfbe3cSDavid Stuttard    %7:vgpr_32 = COPY $vgpr3
375*06cfbe3cSDavid Stuttard    %6:vgpr_32 = COPY $vgpr2
376*06cfbe3cSDavid Stuttard    %5:vgpr_32 = COPY $vgpr1
377*06cfbe3cSDavid Stuttard    %4:vgpr_32 = COPY $vgpr0
378*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
379*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
380*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
381*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
382*06cfbe3cSDavid Stuttard    %13:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
383*06cfbe3cSDavid Stuttard    BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %6:vgpr_32, %13:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
384*06cfbe3cSDavid Stuttard    BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %7:vgpr_32, %13:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
385*06cfbe3cSDavid Stuttard...
386*06cfbe3cSDavid Stuttard---
387*06cfbe3cSDavid Stuttard
388*06cfbe3cSDavid Stuttardname: buffer_store_dword_32
389*06cfbe3cSDavid Stuttardbody:             |
390*06cfbe3cSDavid Stuttard  bb.0.entry:
391*06cfbe3cSDavid Stuttard    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
392*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_store_dword_32
393*06cfbe3cSDavid Stuttard    ; GFX12: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
394*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: {{  $}}
395*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr8
396*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr7
397*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr6
398*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr5
399*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr4
400*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr3
401*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY $vgpr2
402*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY7:%[0-9]+]]:vgpr_32 = COPY $vgpr1
403*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY8:%[0-9]+]]:vgpr_32 = COPY $vgpr0
404*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY9:%[0-9]+]]:sgpr_32 = COPY $sgpr3
405*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY10:%[0-9]+]]:sgpr_32 = COPY $sgpr2
406*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY11:%[0-9]+]]:sgpr_32 = COPY $sgpr1
407*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY12:%[0-9]+]]:sgpr_32 = COPY $sgpr0
408*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY12]], %subreg.sub0, [[COPY11]], %subreg.sub1, [[COPY10]], %subreg.sub2, [[COPY9]], %subreg.sub3
409*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY8]], %subreg.sub0, [[COPY7]], %subreg.sub1
410*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: BUFFER_STORE_DWORDX2_VBUFFER_OFFSET_exact killed [[REG_SEQUENCE1]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
411*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE2:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY6]], %subreg.sub0, [[COPY5]], %subreg.sub1
412*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE3:%[0-9]+]]:vreg_96 = REG_SEQUENCE killed [[REG_SEQUENCE2]], %subreg.sub0_sub1, [[COPY4]], %subreg.sub2
413*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE4:%[0-9]+]]:vreg_128 = REG_SEQUENCE killed [[REG_SEQUENCE3]], %subreg.sub0_sub1_sub2, [[COPY3]], %subreg.sub3
414*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: BUFFER_STORE_DWORDX4_VBUFFER_OFFSET_exact killed [[REG_SEQUENCE4]], [[REG_SEQUENCE]], $sgpr_null, 16, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 4)
415*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE5:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY2]], %subreg.sub0, [[COPY1]], %subreg.sub1
416*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE6:%[0-9]+]]:vreg_96 = REG_SEQUENCE killed [[REG_SEQUENCE5]], %subreg.sub0_sub1, [[COPY]], %subreg.sub2
417*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: BUFFER_STORE_DWORDX3_VBUFFER_OFFSET_exact killed [[REG_SEQUENCE6]], [[REG_SEQUENCE]], $sgpr_null, 36, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4)
418*06cfbe3cSDavid Stuttard    %12:vgpr_32 = COPY $vgpr8
419*06cfbe3cSDavid Stuttard    %11:vgpr_32 = COPY $vgpr7
420*06cfbe3cSDavid Stuttard    %10:vgpr_32 = COPY $vgpr6
421*06cfbe3cSDavid Stuttard    %9:vgpr_32 = COPY $vgpr5
422*06cfbe3cSDavid Stuttard    %8:vgpr_32 = COPY $vgpr4
423*06cfbe3cSDavid Stuttard    %7:vgpr_32 = COPY $vgpr3
424*06cfbe3cSDavid Stuttard    %6:vgpr_32 = COPY $vgpr2
425*06cfbe3cSDavid Stuttard    %5:vgpr_32 = COPY $vgpr1
426*06cfbe3cSDavid Stuttard    %4:vgpr_32 = COPY $vgpr0
427*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
428*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
429*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
430*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
431*06cfbe3cSDavid Stuttard    %13:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
432*06cfbe3cSDavid Stuttard    BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %4:vgpr_32, %13:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
433*06cfbe3cSDavid Stuttard    BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %5:vgpr_32, %13:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
434*06cfbe3cSDavid Stuttard    BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %6:vgpr_32, %13:sgpr_128, $sgpr_null, 16, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
435*06cfbe3cSDavid Stuttard    BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %7:vgpr_32, %13:sgpr_128, $sgpr_null, 20, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
436*06cfbe3cSDavid Stuttard    BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %8:vgpr_32, %13:sgpr_128, $sgpr_null, 24, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
437*06cfbe3cSDavid Stuttard    BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %9:vgpr_32, %13:sgpr_128, $sgpr_null, 28, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
438*06cfbe3cSDavid Stuttard    BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %10:vgpr_32, %13:sgpr_128, $sgpr_null, 36, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
439*06cfbe3cSDavid Stuttard    BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %11:vgpr_32, %13:sgpr_128, $sgpr_null, 40, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
440*06cfbe3cSDavid Stuttard    BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %12:vgpr_32, %13:sgpr_128, $sgpr_null, 44, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
441*06cfbe3cSDavid Stuttard...
442*06cfbe3cSDavid Stuttard---
443*06cfbe3cSDavid Stuttard
444*06cfbe3cSDavid Stuttardname: buffer_load_dword_not_merged_swizzled_0
445*06cfbe3cSDavid Stuttardbody:             |
446*06cfbe3cSDavid Stuttard  bb.0.entry:
447*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dword_not_merged_swizzled_0
448*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
449*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
450*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
451*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
452*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
453*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORD_VBUFFER_OFFSET:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 4, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
454*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORD_VBUFFER_OFFSET1:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
455*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
456*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
457*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
458*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
459*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
460*06cfbe3cSDavid Stuttard    %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 4, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
461*06cfbe3cSDavid Stuttard    %8:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
462*06cfbe3cSDavid Stuttard...
463*06cfbe3cSDavid Stuttard---
464*06cfbe3cSDavid Stuttard
465*06cfbe3cSDavid Stuttardname: buffer_load_dword_not_merged_swizzled_1
466*06cfbe3cSDavid Stuttardbody:             |
467*06cfbe3cSDavid Stuttard  bb.0.entry:
468*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dword_not_merged_swizzled_1
469*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
470*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
471*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
472*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
473*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
474*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORD_VBUFFER_OFFSET:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
475*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORD_VBUFFER_OFFSET1:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 8, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
476*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
477*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
478*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
479*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
480*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
481*06cfbe3cSDavid Stuttard    %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
482*06cfbe3cSDavid Stuttard    %8:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 8, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
483*06cfbe3cSDavid Stuttard...
484*06cfbe3cSDavid Stuttard---
485*06cfbe3cSDavid Stuttard
486*06cfbe3cSDavid Stuttardname: buffer_load_dword_merge_across_swizzle
487*06cfbe3cSDavid Stuttardbody:             |
488*06cfbe3cSDavid Stuttard  bb.0.entry:
489*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dword_merge_across_swizzle
490*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
491*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
492*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
493*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
494*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
495*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
496*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET]].sub0
497*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET]].sub1
498*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORD_VBUFFER_OFFSET:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 12, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
499*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
500*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
501*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
502*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
503*06cfbe3cSDavid Stuttard    %4:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
504*06cfbe3cSDavid Stuttard    %5:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %4:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
505*06cfbe3cSDavid Stuttard    %6:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %4:sgpr_128, $sgpr_null, 12, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
506*06cfbe3cSDavid Stuttard    %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %4:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
507*06cfbe3cSDavid Stuttard...
508*06cfbe3cSDavid Stuttard---
509*06cfbe3cSDavid Stuttard
510*06cfbe3cSDavid Stuttardname: buffer_load_dword_not_merge_across_swizzled_store
511*06cfbe3cSDavid Stuttardbody:             |
512*06cfbe3cSDavid Stuttard  bb.0.entry:
513*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dword_not_merge_across_swizzled_store
514*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
515*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
516*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
517*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
518*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0
519*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
520*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORD_VBUFFER_OFFSET:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
521*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 6, 0, 1, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
522*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORD_VBUFFER_OFFSET1:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
523*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
524*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
525*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
526*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
527*06cfbe3cSDavid Stuttard    %4:vgpr_32 = COPY $vgpr0
528*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
529*06cfbe3cSDavid Stuttard    %6:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
530*06cfbe3cSDavid Stuttard    BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %4:vgpr_32, %5:sgpr_128, $sgpr_null, 6, 0, 1, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
531*06cfbe3cSDavid Stuttard    %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
532*06cfbe3cSDavid Stuttard...
533*06cfbe3cSDavid Stuttard---
534*06cfbe3cSDavid Stuttard
535*06cfbe3cSDavid Stuttardname: buffer_load_dword_merge_across_swizzled_store
536*06cfbe3cSDavid Stuttardbody:             |
537*06cfbe3cSDavid Stuttard  bb.0.entry:
538*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dword_merge_across_swizzled_store
539*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
540*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
541*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
542*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
543*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0
544*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
545*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
546*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET]].sub0
547*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET]].sub1
548*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 12, 0, 1, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
549*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
550*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
551*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
552*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
553*06cfbe3cSDavid Stuttard    %4:vgpr_32 = COPY $vgpr0
554*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
555*06cfbe3cSDavid Stuttard    %6:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
556*06cfbe3cSDavid Stuttard    BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %4:vgpr_32, %5:sgpr_128, $sgpr_null, 12, 0, 1, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
557*06cfbe3cSDavid Stuttard    %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
558*06cfbe3cSDavid Stuttard...
559*06cfbe3cSDavid Stuttard---
560*06cfbe3cSDavid Stuttard
561*06cfbe3cSDavid Stuttardname: buffer_load_dword_dword_idxen
562*06cfbe3cSDavid Stuttardbody:             |
563*06cfbe3cSDavid Stuttard  bb.0.entry:
564*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dword_dword_idxen
565*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
566*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
567*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
568*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
569*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0
570*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
571*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
572*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN]].sub0
573*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN]].sub1
574*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
575*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
576*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
577*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
578*06cfbe3cSDavid Stuttard    %4:vgpr_32 = COPY $vgpr0
579*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
580*06cfbe3cSDavid Stuttard    %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN %4, %5:sgpr_128, $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
581*06cfbe3cSDavid Stuttard    %8:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
582*06cfbe3cSDavid Stuttard...
583*06cfbe3cSDavid Stuttard---
584*06cfbe3cSDavid Stuttard
585*06cfbe3cSDavid Stuttardname: buffer_load_dword_dwordx2_idxen
586*06cfbe3cSDavid Stuttardbody:             |
587*06cfbe3cSDavid Stuttard  bb.0.entry:
588*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dword_dwordx2_idxen
589*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
590*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
591*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
592*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
593*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0
594*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
595*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX3_VBUFFER_IDXEN:%[0-9]+]]:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_IDXEN [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
596*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX3_VBUFFER_IDXEN]].sub0
597*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vreg_64 = COPY killed [[BUFFER_LOAD_DWORDX3_VBUFFER_IDXEN]].sub1_sub2
598*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
599*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
600*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
601*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
602*06cfbe3cSDavid Stuttard    %4:vgpr_32 = COPY $vgpr0
603*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
604*06cfbe3cSDavid Stuttard    %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN %4, %5:sgpr_128, $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
605*06cfbe3cSDavid Stuttard    %8:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
606*06cfbe3cSDavid Stuttard...
607*06cfbe3cSDavid Stuttard---
608*06cfbe3cSDavid Stuttard
609*06cfbe3cSDavid Stuttardname: buffer_load_dwordx2_dwordx2_idxen
610*06cfbe3cSDavid Stuttardbody:             |
611*06cfbe3cSDavid Stuttard  bb.0.entry:
612*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dwordx2_dwordx2_idxen
613*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
614*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
615*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
616*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
617*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0
618*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
619*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
620*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vreg_64 = COPY [[BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN]].sub0_sub1
621*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vreg_64 = COPY killed [[BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN]].sub2_sub3
622*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
623*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
624*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
625*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
626*06cfbe3cSDavid Stuttard    %4:vgpr_32 = COPY $vgpr0
627*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
628*06cfbe3cSDavid Stuttard    %7:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
629*06cfbe3cSDavid Stuttard    %8:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN %4, %5:sgpr_128, $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
630*06cfbe3cSDavid Stuttard...
631*06cfbe3cSDavid Stuttard---
632*06cfbe3cSDavid Stuttard
633*06cfbe3cSDavid Stuttardname: buffer_load_dword_dwordx3_idxen
634*06cfbe3cSDavid Stuttardbody:             |
635*06cfbe3cSDavid Stuttard  bb.0.entry:
636*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dword_dwordx3_idxen
637*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
638*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
639*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
640*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
641*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0
642*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
643*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
644*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN]].sub0
645*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vreg_96 = COPY killed [[BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN]].sub1_sub2_sub3
646*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
647*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
648*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
649*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
650*06cfbe3cSDavid Stuttard    %4:vgpr_32 = COPY $vgpr0
651*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
652*06cfbe3cSDavid Stuttard    %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
653*06cfbe3cSDavid Stuttard    %8:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_IDXEN %4, %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
654*06cfbe3cSDavid Stuttard...
655*06cfbe3cSDavid Stuttard---
656*06cfbe3cSDavid Stuttard
657*06cfbe3cSDavid Stuttardname: buffer_load_dword_dword_bothen
658*06cfbe3cSDavid Stuttardbody:             |
659*06cfbe3cSDavid Stuttard  bb.0.entry:
660*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dword_dword_bothen
661*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
662*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
663*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
664*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
665*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr0
666*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
667*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
668*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN]].sub0
669*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN]].sub1
670*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
671*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
672*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
673*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
674*06cfbe3cSDavid Stuttard    %4:vreg_64 = COPY $vgpr0
675*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
676*06cfbe3cSDavid Stuttard    %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN %4, %5:sgpr_128, $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
677*06cfbe3cSDavid Stuttard    %8:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
678*06cfbe3cSDavid Stuttard...
679*06cfbe3cSDavid Stuttard---
680*06cfbe3cSDavid Stuttard
681*06cfbe3cSDavid Stuttardname: buffer_load_dword_dwordx2_bothen
682*06cfbe3cSDavid Stuttardbody:             |
683*06cfbe3cSDavid Stuttard  bb.0.entry:
684*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dword_dwordx2_bothen
685*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
686*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
687*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
688*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
689*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr0
690*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
691*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX3_VBUFFER_BOTHEN:%[0-9]+]]:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_BOTHEN [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
692*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX3_VBUFFER_BOTHEN]].sub0
693*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vreg_64 = COPY killed [[BUFFER_LOAD_DWORDX3_VBUFFER_BOTHEN]].sub1_sub2
694*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
695*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
696*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
697*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
698*06cfbe3cSDavid Stuttard    %4:vreg_64 = COPY $vgpr0
699*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
700*06cfbe3cSDavid Stuttard    %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN %4, %5:sgpr_128, $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
701*06cfbe3cSDavid Stuttard    %8:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
702*06cfbe3cSDavid Stuttard...
703*06cfbe3cSDavid Stuttard---
704*06cfbe3cSDavid Stuttard
705*06cfbe3cSDavid Stuttardname: buffer_load_dwordx2_dwordx2_bothen
706*06cfbe3cSDavid Stuttardbody:             |
707*06cfbe3cSDavid Stuttard  bb.0.entry:
708*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dwordx2_dwordx2_bothen
709*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
710*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
711*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
712*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
713*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr0
714*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
715*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
716*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vreg_64 = COPY [[BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN]].sub0_sub1
717*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vreg_64 = COPY killed [[BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN]].sub2_sub3
718*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
719*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
720*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
721*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
722*06cfbe3cSDavid Stuttard    %4:vreg_64 = COPY $vgpr0
723*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
724*06cfbe3cSDavid Stuttard    %7:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN %4, %5:sgpr_128, $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
725*06cfbe3cSDavid Stuttard    %8:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN %4, %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
726*06cfbe3cSDavid Stuttard...
727*06cfbe3cSDavid Stuttard---
728*06cfbe3cSDavid Stuttard
729*06cfbe3cSDavid Stuttardname: buffer_load_dword_dwordx3_bothen
730*06cfbe3cSDavid Stuttardbody:             |
731*06cfbe3cSDavid Stuttard  bb.0.entry:
732*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dword_dwordx3_bothen
733*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
734*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
735*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
736*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
737*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr0
738*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
739*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
740*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN]].sub0
741*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vreg_96 = COPY killed [[BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN]].sub1_sub2_sub3
742*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
743*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
744*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
745*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
746*06cfbe3cSDavid Stuttard    %4:vreg_64 = COPY $vgpr0
747*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
748*06cfbe3cSDavid Stuttard    %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN %4, %5:sgpr_128, $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
749*06cfbe3cSDavid Stuttard    %8:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_BOTHEN %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
750*06cfbe3cSDavid Stuttard...
751*06cfbe3cSDavid Stuttard---
752*06cfbe3cSDavid Stuttard
753*06cfbe3cSDavid Stuttardname: buffer_load_dword_dword_idxen_exact
754*06cfbe3cSDavid Stuttardbody:             |
755*06cfbe3cSDavid Stuttard  bb.0.entry:
756*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dword_dword_idxen_exact
757*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
758*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
759*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
760*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
761*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0
762*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
763*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
764*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact]].sub0
765*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact]].sub1
766*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
767*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
768*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
769*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
770*06cfbe3cSDavid Stuttard    %4:vgpr_32 = COPY $vgpr0
771*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
772*06cfbe3cSDavid Stuttard    %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN_exact %4, %5:sgpr_128, $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
773*06cfbe3cSDavid Stuttard    %8:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN_exact %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
774*06cfbe3cSDavid Stuttard...
775*06cfbe3cSDavid Stuttard---
776*06cfbe3cSDavid Stuttard
777*06cfbe3cSDavid Stuttardname: buffer_load_dword_dwordx2_idxen_exact
778*06cfbe3cSDavid Stuttardbody:             |
779*06cfbe3cSDavid Stuttard  bb.0.entry:
780*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dword_dwordx2_idxen_exact
781*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
782*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
783*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
784*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
785*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0
786*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
787*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX3_VBUFFER_IDXEN_exact:%[0-9]+]]:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_IDXEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
788*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX3_VBUFFER_IDXEN_exact]].sub0
789*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vreg_64 = COPY killed [[BUFFER_LOAD_DWORDX3_VBUFFER_IDXEN_exact]].sub1_sub2
790*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
791*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
792*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
793*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
794*06cfbe3cSDavid Stuttard    %4:vgpr_32 = COPY $vgpr0
795*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
796*06cfbe3cSDavid Stuttard    %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN_exact %4, %5:sgpr_128, $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
797*06cfbe3cSDavid Stuttard    %8:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
798*06cfbe3cSDavid Stuttard...
799*06cfbe3cSDavid Stuttard---
800*06cfbe3cSDavid Stuttard
801*06cfbe3cSDavid Stuttardname: buffer_load_dwordx2_dwordx2_idxen_exact
802*06cfbe3cSDavid Stuttardbody:             |
803*06cfbe3cSDavid Stuttard  bb.0.entry:
804*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dwordx2_dwordx2_idxen_exact
805*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
806*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
807*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
808*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
809*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0
810*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
811*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN_exact:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
812*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vreg_64 = COPY [[BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN_exact]].sub0_sub1
813*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vreg_64 = COPY killed [[BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN_exact]].sub2_sub3
814*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
815*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
816*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
817*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
818*06cfbe3cSDavid Stuttard    %4:vgpr_32 = COPY $vgpr0
819*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
820*06cfbe3cSDavid Stuttard    %7:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
821*06cfbe3cSDavid Stuttard    %8:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact %4, %5:sgpr_128, $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
822*06cfbe3cSDavid Stuttard...
823*06cfbe3cSDavid Stuttard---
824*06cfbe3cSDavid Stuttard
825*06cfbe3cSDavid Stuttardname: buffer_load_dword_dwordx3_idxen_exact
826*06cfbe3cSDavid Stuttardbody:             |
827*06cfbe3cSDavid Stuttard  bb.0.entry:
828*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dword_dwordx3_idxen_exact
829*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
830*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
831*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
832*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
833*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0
834*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
835*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN_exact:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
836*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN_exact]].sub0
837*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vreg_96 = COPY killed [[BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN_exact]].sub1_sub2_sub3
838*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
839*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
840*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
841*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
842*06cfbe3cSDavid Stuttard    %4:vgpr_32 = COPY $vgpr0
843*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
844*06cfbe3cSDavid Stuttard    %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN_exact %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
845*06cfbe3cSDavid Stuttard    %8:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_IDXEN_exact %4, %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
846*06cfbe3cSDavid Stuttard...
847*06cfbe3cSDavid Stuttard---
848*06cfbe3cSDavid Stuttard
849*06cfbe3cSDavid Stuttardname: buffer_load_dword_dword_dword_idxen_exact
850*06cfbe3cSDavid Stuttardbody:             |
851*06cfbe3cSDavid Stuttard  bb.0.entry:
852*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dword_dword_dword_idxen_exact
853*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
854*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
855*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
856*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
857*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0
858*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
859*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX3_VBUFFER_IDXEN_exact:%[0-9]+]]:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_IDXEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4)
860*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vreg_64 = COPY [[BUFFER_LOAD_DWORDX3_VBUFFER_IDXEN_exact]].sub0_sub1
861*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX3_VBUFFER_IDXEN_exact]].sub2
862*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY7:%[0-9]+]]:vgpr_32 = COPY [[COPY5]].sub0
863*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY8:%[0-9]+]]:vgpr_32 = COPY killed [[COPY5]].sub1
864*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
865*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
866*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
867*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
868*06cfbe3cSDavid Stuttard    %4:vgpr_32 = COPY $vgpr0
869*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
870*06cfbe3cSDavid Stuttard    %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN_exact %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
871*06cfbe3cSDavid Stuttard    %8:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN_exact %4, %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
872*06cfbe3cSDavid Stuttard    %9:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN_exact %4, %5:sgpr_128, $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
873*06cfbe3cSDavid Stuttard...
874*06cfbe3cSDavid Stuttard---
875*06cfbe3cSDavid Stuttard
876*06cfbe3cSDavid Stuttardname: buffer_load_dword_dword_dword_idxen_exact_swizzled_0
877*06cfbe3cSDavid Stuttardbody:             |
878*06cfbe3cSDavid Stuttard  bb.0.entry:
879*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dword_dword_dword_idxen_exact_swizzled_0
880*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
881*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
882*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
883*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
884*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0
885*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
886*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORD_VBUFFER_IDXEN_exact:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
887*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
888*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact]].sub0
889*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact]].sub1
890*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
891*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
892*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
893*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
894*06cfbe3cSDavid Stuttard    %4:vgpr_32 = COPY $vgpr0
895*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
896*06cfbe3cSDavid Stuttard    %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN_exact %4, %5:sgpr_128, $sgpr_null, 4, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
897*06cfbe3cSDavid Stuttard    %8:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN_exact %4, %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
898*06cfbe3cSDavid Stuttard    %9:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN_exact %4, %5:sgpr_128, $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
899*06cfbe3cSDavid Stuttard...
900*06cfbe3cSDavid Stuttard---
901*06cfbe3cSDavid Stuttard
902*06cfbe3cSDavid Stuttardname: buffer_load_dword_dword_bothen_exact
903*06cfbe3cSDavid Stuttardbody:             |
904*06cfbe3cSDavid Stuttard  bb.0.entry:
905*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dword_dword_bothen_exact
906*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
907*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
908*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
909*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
910*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr0
911*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
912*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
913*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact]].sub0
914*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact]].sub1
915*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
916*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
917*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
918*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
919*06cfbe3cSDavid Stuttard    %4:vreg_64 = COPY $vgpr0
920*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
921*06cfbe3cSDavid Stuttard    %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN_exact %4, %5:sgpr_128, $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
922*06cfbe3cSDavid Stuttard    %8:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN_exact %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
923*06cfbe3cSDavid Stuttard...
924*06cfbe3cSDavid Stuttard---
925*06cfbe3cSDavid Stuttard
926*06cfbe3cSDavid Stuttardname: buffer_load_dword_dwordx2_bothen_exact
927*06cfbe3cSDavid Stuttardbody:             |
928*06cfbe3cSDavid Stuttard  bb.0.entry:
929*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dword_dwordx2_bothen_exact
930*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
931*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
932*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
933*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
934*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr0
935*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
936*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX3_VBUFFER_BOTHEN_exact:%[0-9]+]]:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_BOTHEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
937*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX3_VBUFFER_BOTHEN_exact]].sub0
938*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vreg_64 = COPY killed [[BUFFER_LOAD_DWORDX3_VBUFFER_BOTHEN_exact]].sub1_sub2
939*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
940*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
941*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
942*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
943*06cfbe3cSDavid Stuttard    %4:vreg_64 = COPY $vgpr0
944*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
945*06cfbe3cSDavid Stuttard    %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN_exact %4, %5:sgpr_128, $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
946*06cfbe3cSDavid Stuttard    %8:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
947*06cfbe3cSDavid Stuttard...
948*06cfbe3cSDavid Stuttard---
949*06cfbe3cSDavid Stuttard
950*06cfbe3cSDavid Stuttardname: buffer_load_dwordx2_dwordx2_bothen_exact
951*06cfbe3cSDavid Stuttardbody:             |
952*06cfbe3cSDavid Stuttard  bb.0.entry:
953*06cfbe3cSDavid Stuttard
954*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dwordx2_dwordx2_bothen_exact
955*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
956*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
957*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
958*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
959*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr0
960*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
961*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN_exact:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
962*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vreg_64 = COPY [[BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN_exact]].sub0_sub1
963*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vreg_64 = COPY killed [[BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN_exact]].sub2_sub3
964*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
965*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
966*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
967*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
968*06cfbe3cSDavid Stuttard    %4:vreg_64 = COPY $vgpr0
969*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
970*06cfbe3cSDavid Stuttard    %7:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact %4, %5:sgpr_128, $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
971*06cfbe3cSDavid Stuttard    %8:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact %4, %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
972*06cfbe3cSDavid Stuttard...
973*06cfbe3cSDavid Stuttard---
974*06cfbe3cSDavid Stuttard
975*06cfbe3cSDavid Stuttardname: buffer_load_dword_dwordx3_bothen_exact
976*06cfbe3cSDavid Stuttardbody:             |
977*06cfbe3cSDavid Stuttard  bb.0.entry:
978*06cfbe3cSDavid Stuttard
979*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dword_dwordx3_bothen_exact
980*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
981*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
982*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
983*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
984*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr0
985*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
986*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN_exact:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
987*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN_exact]].sub0
988*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vreg_96 = COPY killed [[BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN_exact]].sub1_sub2_sub3
989*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
990*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
991*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
992*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
993*06cfbe3cSDavid Stuttard    %4:vreg_64 = COPY $vgpr0
994*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
995*06cfbe3cSDavid Stuttard    %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN_exact %4, %5:sgpr_128, $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
996*06cfbe3cSDavid Stuttard    %8:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_BOTHEN_exact %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
997*06cfbe3cSDavid Stuttard...
998*06cfbe3cSDavid Stuttard---
999*06cfbe3cSDavid Stuttard
1000*06cfbe3cSDavid Stuttardname: buffer_load_dword_dword_dword_bothen_exact
1001*06cfbe3cSDavid Stuttardbody:             |
1002*06cfbe3cSDavid Stuttard  bb.0.entry:
1003*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dword_dword_dword_bothen_exact
1004*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
1005*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
1006*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
1007*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
1008*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr0
1009*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
1010*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX3_VBUFFER_BOTHEN_exact:%[0-9]+]]:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_BOTHEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4)
1011*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vreg_64 = COPY [[BUFFER_LOAD_DWORDX3_VBUFFER_BOTHEN_exact]].sub0_sub1
1012*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX3_VBUFFER_BOTHEN_exact]].sub2
1013*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY7:%[0-9]+]]:vgpr_32 = COPY [[COPY5]].sub0
1014*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY8:%[0-9]+]]:vgpr_32 = COPY killed [[COPY5]].sub1
1015*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
1016*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
1017*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
1018*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
1019*06cfbe3cSDavid Stuttard    %4:vreg_64 = COPY $vgpr0
1020*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
1021*06cfbe3cSDavid Stuttard    %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN_exact %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1022*06cfbe3cSDavid Stuttard    %8:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN_exact %4, %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1023*06cfbe3cSDavid Stuttard    %9:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN_exact %4, %5:sgpr_128, $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1024*06cfbe3cSDavid Stuttard...
1025*06cfbe3cSDavid Stuttard---
1026*06cfbe3cSDavid Stuttard
1027*06cfbe3cSDavid Stuttardname: buffer_load_dword_dword_dword_bothen_exact_swizzled_0
1028*06cfbe3cSDavid Stuttardbody:             |
1029*06cfbe3cSDavid Stuttard  bb.0.entry:
1030*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dword_dword_dword_bothen_exact_swizzled_0
1031*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
1032*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
1033*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
1034*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
1035*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr0
1036*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
1037*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORD_VBUFFER_BOTHEN_exact:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1038*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
1039*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact]].sub0
1040*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact]].sub1
1041*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
1042*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
1043*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
1044*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
1045*06cfbe3cSDavid Stuttard    %4:vreg_64 = COPY $vgpr0
1046*06cfbe3cSDavid Stuttard    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
1047*06cfbe3cSDavid Stuttard    %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN_exact %4, %5:sgpr_128, $sgpr_null, 4, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1048*06cfbe3cSDavid Stuttard    %8:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN_exact %4, %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1049*06cfbe3cSDavid Stuttard    %9:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN_exact %4, %5:sgpr_128, $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1050*06cfbe3cSDavid Stuttard...
1051*06cfbe3cSDavid Stuttard---
1052*06cfbe3cSDavid Stuttard
1053*06cfbe3cSDavid Stuttardname: buffer_load_dwordx2_dwordx2_bothen_exact_diff_vaddr
1054*06cfbe3cSDavid Stuttardbody:             |
1055*06cfbe3cSDavid Stuttard  bb.0.entry:
1056*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dwordx2_dwordx2_bothen_exact_diff_vaddr
1057*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
1058*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
1059*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
1060*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
1061*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr0
1062*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vreg_64 = COPY $vgpr1
1063*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
1064*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1065*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact1:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact [[COPY5]], [[REG_SEQUENCE]], $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1066*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
1067*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
1068*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
1069*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
1070*06cfbe3cSDavid Stuttard    %4:vreg_64 = COPY $vgpr0
1071*06cfbe3cSDavid Stuttard    %5:vreg_64 = COPY $vgpr1
1072*06cfbe3cSDavid Stuttard    %6:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
1073*06cfbe3cSDavid Stuttard    %8:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact %4, %6:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1074*06cfbe3cSDavid Stuttard    %9:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact %5, %6:sgpr_128, $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1075*06cfbe3cSDavid Stuttard...
1076*06cfbe3cSDavid Stuttard---
1077*06cfbe3cSDavid Stuttard
1078*06cfbe3cSDavid Stuttardname: buffer_load_dwordx2_dwordx2_bothen_exact_diff_srsrc
1079*06cfbe3cSDavid Stuttardbody:             |
1080*06cfbe3cSDavid Stuttard  bb.0.entry:
1081*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dwordx2_dwordx2_bothen_exact_diff_srsrc
1082*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
1083*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
1084*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
1085*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
1086*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr4
1087*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vreg_64 = COPY $vgpr0
1088*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
1089*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY4]], %subreg.sub3
1090*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact [[COPY5]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1091*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact1:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact [[COPY5]], [[REG_SEQUENCE1]], $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1092*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
1093*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
1094*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
1095*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
1096*06cfbe3cSDavid Stuttard    %4:sgpr_32 = COPY $sgpr4
1097*06cfbe3cSDavid Stuttard    %5:vreg_64 = COPY $vgpr0
1098*06cfbe3cSDavid Stuttard    %6:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
1099*06cfbe3cSDavid Stuttard    %7:sgpr_128 = REG_SEQUENCE %1:sgpr_32, %subreg.sub0, %2:sgpr_32, %subreg.sub1, %3:sgpr_32, %subreg.sub2, %4:sgpr_32, %subreg.sub3
1100*06cfbe3cSDavid Stuttard    %8:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact %5, %6:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1101*06cfbe3cSDavid Stuttard    %9:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact %5, %7:sgpr_128, $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1102*06cfbe3cSDavid Stuttard...
1103*06cfbe3cSDavid Stuttard---
1104*06cfbe3cSDavid Stuttard
1105*06cfbe3cSDavid Stuttardname: buffer_load_dwordx2_dwordx2_idxen_exact_diff_vaddr
1106*06cfbe3cSDavid Stuttardbody:             |
1107*06cfbe3cSDavid Stuttard  bb.0.entry:
1108*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dwordx2_dwordx2_idxen_exact_diff_vaddr
1109*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
1110*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
1111*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
1112*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
1113*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1114*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1115*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
1116*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1117*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact1:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact [[COPY5]], [[REG_SEQUENCE]], $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1118*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
1119*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
1120*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
1121*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
1122*06cfbe3cSDavid Stuttard    %4:vgpr_32 = COPY $vgpr0
1123*06cfbe3cSDavid Stuttard    %5:vgpr_32 = COPY $vgpr1
1124*06cfbe3cSDavid Stuttard    %6:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
1125*06cfbe3cSDavid Stuttard    %8:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact %4, %6:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1126*06cfbe3cSDavid Stuttard    %9:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact %5, %6:sgpr_128, $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1127*06cfbe3cSDavid Stuttard...
1128*06cfbe3cSDavid Stuttard---
1129*06cfbe3cSDavid Stuttard
1130*06cfbe3cSDavid Stuttardname: buffer_load_dwordx2_dwordx2_idxen_exact_diff_srsrc
1131*06cfbe3cSDavid Stuttardbody:             |
1132*06cfbe3cSDavid Stuttard  bb.0.entry:
1133*06cfbe3cSDavid Stuttard    ; GFX12-LABEL: name: buffer_load_dwordx2_dwordx2_idxen_exact_diff_srsrc
1134*06cfbe3cSDavid Stuttard    ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0
1135*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1
1136*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2
1137*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3
1138*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr4
1139*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1140*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
1141*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY4]], %subreg.sub3
1142*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact [[COPY5]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1143*06cfbe3cSDavid Stuttard    ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact1:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact [[COPY5]], [[REG_SEQUENCE1]], $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1144*06cfbe3cSDavid Stuttard    %0:sgpr_32 = COPY $sgpr0
1145*06cfbe3cSDavid Stuttard    %1:sgpr_32 = COPY $sgpr1
1146*06cfbe3cSDavid Stuttard    %2:sgpr_32 = COPY $sgpr2
1147*06cfbe3cSDavid Stuttard    %3:sgpr_32 = COPY $sgpr3
1148*06cfbe3cSDavid Stuttard    %4:sgpr_32 = COPY $sgpr4
1149*06cfbe3cSDavid Stuttard    %5:vgpr_32 = COPY $vgpr0
1150*06cfbe3cSDavid Stuttard    %6:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
1151*06cfbe3cSDavid Stuttard    %7:sgpr_128 = REG_SEQUENCE %1:sgpr_32, %subreg.sub0, %2:sgpr_32, %subreg.sub1, %3:sgpr_32, %subreg.sub2, %4:sgpr_32, %subreg.sub3
1152*06cfbe3cSDavid Stuttard    %8:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact %5, %6:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1153*06cfbe3cSDavid Stuttard    %9:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact %5, %7:sgpr_128, $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1154*06cfbe3cSDavid Stuttard...
1155