1# RUN: llc -march=amdgcn -mcpu=gfx900 -verify-machineinstrs -run-pass si-load-store-opt -o - %s | FileCheck -check-prefix=GFX9 %s
2# RUN: llc -march=amdgcn -mcpu=gfx1010 -verify-machineinstrs -run-pass si-load-store-opt -o - %s | FileCheck -check-prefix=GFX10 %s
3# RUN: llc -march=amdgcn -mcpu=gfx1100 -verify-machineinstrs -run-pass si-load-store-opt -o - %s | FileCheck -check-prefix=GFX11 %s
4
5#
6# GFX9 tests
7#
8
9# GFX9-LABEL: name: gfx9_tbuffer_load_x_xyz
10# GFX9: %{{[0-9]+}}:vreg_128 = TBUFFER_LOAD_FORMAT_XYZW_OFFSET %4, 0, 4, 126, 0, 0, 0, implicit $exec :: (dereferenceable load (s128), align 1, addrspace 4)
11# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %7.sub0
12# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %7.sub1_sub2_sub3
13name: gfx9_tbuffer_load_x_xyz
14body:             |
15  bb.0.entry:
16    %0:sgpr_32 = COPY $sgpr0
17    %1:sgpr_32 = COPY $sgpr1
18    %2:sgpr_32 = COPY $sgpr2
19    %3:sgpr_32 = COPY $sgpr3
20    %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
21    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
22    %8:vreg_96 = TBUFFER_LOAD_FORMAT_XYZ_OFFSET %5:sgpr_128, 0, 8, 125, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4)
23...
24---
25
26# GFX9-LABEL: name: gfx9_tbuffer_load_xyz_x
27# GFX9: %{{[0-9]+}}:vreg_128 = TBUFFER_LOAD_FORMAT_XYZW_OFFSET %4, 0, 4, 126, 0, 0, 0, implicit $exec :: (dereferenceable load (s128), align 1, addrspace 4)
28# GFX9: %{{[0-9]+}}:vreg_96 = COPY %7.sub0_sub1_sub2
29# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %7.sub3
30name: gfx9_tbuffer_load_xyz_x
31body:             |
32  bb.0.entry:
33    %0:sgpr_32 = COPY $sgpr0
34    %1:sgpr_32 = COPY $sgpr1
35    %2:sgpr_32 = COPY $sgpr2
36    %3:sgpr_32 = COPY $sgpr3
37    %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
38    %7:vreg_96 = TBUFFER_LOAD_FORMAT_XYZ_OFFSET %5:sgpr_128, 0, 4, 125, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4)
39    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 16, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
40...
41---
42
43# GFX9-LABEL: name: gfx9_tbuffer_load_xy_xy
44# GFX9: %{{[0-9]+}}:vreg_128 = TBUFFER_LOAD_FORMAT_XYZW_OFFSET %4, 0, 4, 126, 0, 0, 0, implicit $exec :: (dereferenceable load (s128), align 1, addrspace 4)
45# GFX9: %{{[0-9]+}}:vreg_64 = COPY %7.sub0_sub1
46# GFX9: %{{[0-9]+}}:vreg_64 = COPY killed %7.sub2_sub3
47name: gfx9_tbuffer_load_xy_xy
48body:             |
49  bb.0.entry:
50    %0:sgpr_32 = COPY $sgpr0
51    %1:sgpr_32 = COPY $sgpr1
52    %2:sgpr_32 = COPY $sgpr2
53    %3:sgpr_32 = COPY $sgpr3
54    %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
55    %7:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %5:sgpr_128, 0, 4, 123, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
56    %8:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %5:sgpr_128, 0, 12, 123, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
57...
58---
59
60# GFX9-LABEL: name: gfx9_tbuffer_load_x_xy
61# GFX9: %{{[0-9]+}}:vreg_96 = TBUFFER_LOAD_FORMAT_XYZ_OFFSET %4, 0, 4, 125, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4)
62# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %7.sub0
63# GFX9: %{{[0-9]+}}:vreg_64 = COPY killed %7.sub1_sub2
64name: gfx9_tbuffer_load_x_xy
65body:             |
66  bb.0.entry:
67    %0:sgpr_32 = COPY $sgpr0
68    %1:sgpr_32 = COPY $sgpr1
69    %2:sgpr_32 = COPY $sgpr2
70    %3:sgpr_32 = COPY $sgpr3
71    %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
72    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
73    %8:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %5:sgpr_128, 0, 8, 123, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
74...
75---
76
77# GFX9-LABEL: name: gfx9_tbuffer_load_xy_x
78# GFX9: %{{[0-9]+}}:vreg_96 = TBUFFER_LOAD_FORMAT_XYZ_OFFSET %4, 0, 4, 125, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4)
79# GFX9: %{{[0-9]+}}:vreg_64 = COPY %7.sub0_sub1
80# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %7.sub2
81name: gfx9_tbuffer_load_xy_x
82body:             |
83  bb.0.entry:
84    %0:sgpr_32 = COPY $sgpr0
85    %1:sgpr_32 = COPY $sgpr1
86    %2:sgpr_32 = COPY $sgpr2
87    %3:sgpr_32 = COPY $sgpr3
88    %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
89    %7:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %5:sgpr_128, 0, 4, 123, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
90    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 12, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
91...
92---
93
94
95# GFX9-LABEL: name: gfx9_tbuffer_load_x_x
96# GFX9: %{{[0-9]+}}:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %4, 0, 4, 123, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
97# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %7.sub0
98# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %7.sub1
99
100name: gfx9_tbuffer_load_x_x
101body:             |
102  bb.0.entry:
103    %0:sgpr_32 = COPY $sgpr0
104    %1:sgpr_32 = COPY $sgpr1
105    %2:sgpr_32 = COPY $sgpr2
106    %3:sgpr_32 = COPY $sgpr3
107    %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
108    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
109    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
110...
111---
112
113# GFX9-LABEL: name: gfx9_tbuffer_load_x_x_format_32_32_32_32
114# GFX9: %{{[0-9]+}}:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %4, 0, 4, 123, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
115# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %7.sub0
116# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %7.sub1
117
118name: gfx9_tbuffer_load_x_x_format_32_32_32_32
119body:             |
120  bb.0.entry:
121    %0:sgpr_32 = COPY $sgpr0
122    %1:sgpr_32 = COPY $sgpr1
123    %2:sgpr_32 = COPY $sgpr2
124    %3:sgpr_32 = COPY $sgpr3
125    %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
126    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 126, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
127    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 126, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
128...
129---
130
131
132# GFX9-LABEL: name: gfx9_tbuffer_load_float_32
133# GFX9: %{{[0-9]+}}:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %4, 0, 4, 123, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
134# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %14.sub0
135# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %14.sub1
136# GFX9: %{{[0-9]+}}:vreg_128 = TBUFFER_LOAD_FORMAT_XYZW_OFFSET %4, 0, 16, 126, 0, 0, 0, implicit $exec :: (dereferenceable load (s128), align 1, addrspace 4)
137# GFX9: %{{[0-9]+}}:vreg_96 = COPY %17.sub0_sub1_sub2
138# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %17.sub3
139# GFX9: %{{[0-9]+}}:vreg_64 = COPY %16.sub0_sub1
140# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %16.sub2
141# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %15.sub0
142# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %15.sub1
143# GFX9: %{{[0-9]+}}:vreg_96 = TBUFFER_LOAD_FORMAT_XYZ_OFFSET %4, 0, 36, 125, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4)
144# GFX9: %{{[0-9]+}}:vreg_64 = COPY %19.sub0_sub1
145# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %19.sub2
146# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %18.sub0
147# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %18.sub1
148
149name: gfx9_tbuffer_load_float_32
150body:             |
151  bb.0.entry:
152    %0:sgpr_32 = COPY $sgpr0
153    %1:sgpr_32 = COPY $sgpr1
154    %2:sgpr_32 = COPY $sgpr2
155    %3:sgpr_32 = COPY $sgpr3
156    %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
157    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
158    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
159    %9:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 16, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
160    %10:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 20, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
161    %11:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 24, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
162    %12:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 28, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
163    %13:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 36, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
164    %14:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 40, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
165    %15:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 44, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
166...
167---
168
169# GFX9-LABEL: name: gfx9_tbuffer_load_sint_32
170# GFX9: %{{[0-9]+}}:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %4, 0, 4, 91, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
171# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %14.sub0
172# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %14.sub1
173# GFX9: %{{[0-9]+}}:vreg_128 = TBUFFER_LOAD_FORMAT_XYZW_OFFSET %4, 0, 16, 94, 0, 0, 0, implicit $exec :: (dereferenceable load (s128), align 1, addrspace 4)
174# GFX9: %{{[0-9]+}}:vreg_96 = COPY %17.sub0_sub1_sub2
175# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %17.sub3
176# GFX9: %{{[0-9]+}}:vreg_64 = COPY %16.sub0_sub1
177# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %16.sub2
178# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %15.sub0
179# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %15.sub1
180# GFX9: %{{[0-9]+}}:vreg_96 = TBUFFER_LOAD_FORMAT_XYZ_OFFSET %4, 0, 36, 93, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4)
181# GFX9: %{{[0-9]+}}:vreg_64 = COPY %19.sub0_sub1
182# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %19.sub2
183# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %18.sub0
184# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %18.sub1
185
186name: gfx9_tbuffer_load_sint_32
187body:             |
188  bb.0.entry:
189    %0:sgpr_32 = COPY $sgpr0
190    %1:sgpr_32 = COPY $sgpr1
191    %2:sgpr_32 = COPY $sgpr2
192    %3:sgpr_32 = COPY $sgpr3
193    %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
194    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 84, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
195    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 84, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
196    %9:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 16, 84, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
197    %10:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 20, 84, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
198    %11:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 24, 84, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
199    %12:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 28, 84, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
200    %13:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 36, 84, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
201    %14:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 40, 84, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
202    %15:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 44, 84, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
203...
204---
205
206# GFX9-LABEL: name: gfx9_tbuffer_load_uint_32
207# GFX9: %{{[0-9]+}}:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %4, 0, 4, 75, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
208# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %14.sub0
209# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %14.sub1
210# GFX9: %{{[0-9]+}}:vreg_128 = TBUFFER_LOAD_FORMAT_XYZW_OFFSET %4, 0, 16, 78, 0, 0, 0, implicit $exec :: (dereferenceable load (s128), align 1, addrspace 4)
211# GFX9: %{{[0-9]+}}:vreg_96 = COPY %17.sub0_sub1_sub2
212# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %17.sub3
213# GFX9: %{{[0-9]+}}:vreg_64 = COPY %16.sub0_sub1
214# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %16.sub2
215# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %15.sub0
216# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %15.sub1
217# GFX9: %{{[0-9]+}}:vreg_96 = TBUFFER_LOAD_FORMAT_XYZ_OFFSET %4, 0, 36, 77, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4)
218# GFX9: %{{[0-9]+}}:vreg_64 = COPY %19.sub0_sub1
219# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %19.sub2
220# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %18.sub0
221# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %18.sub1
222
223name: gfx9_tbuffer_load_uint_32
224body:             |
225  bb.0.entry:
226    %0:sgpr_32 = COPY $sgpr0
227    %1:sgpr_32 = COPY $sgpr1
228    %2:sgpr_32 = COPY $sgpr2
229    %3:sgpr_32 = COPY $sgpr3
230    %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
231    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 68, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
232    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 68, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
233    %9:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 16, 68, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
234    %10:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 20, 68, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
235    %11:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 24, 68, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
236    %12:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 28, 68, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
237    %13:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 36, 68, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
238    %14:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 40, 68, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
239    %15:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 44, 68, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
240...
241---
242
243# GFX9-LABEL: name: gfx9_tbuffer_load_not_merged_data_format_mismatch
244# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
245# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
246# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
247# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
248# GFX9: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %0, %subreg.sub0, %1, %subreg.sub1, %2, %subreg.sub2, %3, %subreg.sub3
249# GFX9: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 4, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
250# GFX9: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 8, 114, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
251# GFX9: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 16, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
252# GFX9: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 20, 114, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
253# GFX9: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 24, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
254# GFX9: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 28, 114, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
255# GFX9: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 36, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
256# GFX9: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 40, 114, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
257# GFX9: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 44, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
258
259
260name: gfx9_tbuffer_load_not_merged_data_format_mismatch
261body:             |
262  bb.0.entry:
263    %0:sgpr_32 = COPY $sgpr0
264    %1:sgpr_32 = COPY $sgpr1
265    %2:sgpr_32 = COPY $sgpr2
266    %3:sgpr_32 = COPY $sgpr3
267    %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
268    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
269    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 114, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
270    %9:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 16, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
271    %10:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 20, 114, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
272    %11:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 24, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
273    %12:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 28, 114, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
274    %13:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 36, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
275    %14:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 40, 114, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
276    %15:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 44, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
277...
278---
279
280# GFX9-LABEL: name: gfx9_tbuffer_load_not_merged_num_format_mismatch
281# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
282# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
283# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
284# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
285# GFX9: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %0, %subreg.sub0, %1, %subreg.sub1, %2, %subreg.sub2, %3, %subreg.sub3
286# GFX9: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 4, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
287# GFX9: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 8, 84, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
288# GFX9: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 16, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
289# GFX9: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 20, 84, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
290# GFX9: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 24, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
291# GFX9: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 28, 84, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
292# GFX9: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 36, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
293# GFX9: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 40, 84, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
294# GFX9: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 44, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
295name: gfx9_tbuffer_load_not_merged_num_format_mismatch
296body:             |
297  bb.0.entry:
298    %0:sgpr_32 = COPY $sgpr0
299    %1:sgpr_32 = COPY $sgpr1
300    %2:sgpr_32 = COPY $sgpr2
301    %3:sgpr_32 = COPY $sgpr3
302    %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
303    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
304    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 84, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
305    %9:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 16, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
306    %10:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 20, 84, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
307    %11:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 24, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
308    %12:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 28, 84, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
309    %13:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 36, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
310    %14:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 40, 84, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
311    %15:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 44, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
312...
313---
314
315# GFX9-LABEL: name: gfx9_tbuffer_store_x_xyz
316# GFX9: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE %3, %subreg.sub0, %2, %subreg.sub1, %1, %subreg.sub2
317# GFX9: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE %0, %subreg.sub0, %9, %subreg.sub1_sub2_sub3
318# GFX9: TBUFFER_STORE_FORMAT_XYZW_OFFSET_exact killed %10, %8, 0, 4, 126, 0, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 4)
319name: gfx9_tbuffer_store_x_xyz
320body:             |
321  bb.0.entry:
322    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
323    %7:vgpr_32 = COPY $vgpr3
324    %6:vgpr_32 = COPY $vgpr2
325    %5:vgpr_32 = COPY $vgpr1
326    %4:vgpr_32 = COPY $vgpr0
327    %3:sgpr_32 = COPY $sgpr3
328    %2:sgpr_32 = COPY $sgpr2
329    %1:sgpr_32 = COPY $sgpr1
330    %0:sgpr_32 = COPY $sgpr0
331    %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
332    %14:vreg_96 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1, %6:vgpr_32, %subreg.sub2
333    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 4, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
334    TBUFFER_STORE_FORMAT_XYZ_OFFSET_exact %14:vreg_96, %13:sgpr_128, 0, 8, 125, 0, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4)
335...
336---
337
338
339
340# GFX9-LABEL: name: gfx9_tbuffer_store_xyz_x
341# GFX9: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE %3, %subreg.sub0, %2, %subreg.sub1, %1, %subreg.sub2
342# GFX9: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE %9, %subreg.sub0_sub1_sub2, %0, %subreg.sub3
343# GFX9: TBUFFER_STORE_FORMAT_XYZW_OFFSET_exact killed %10, %8, 0, 4, 126, 0, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 4)
344name: gfx9_tbuffer_store_xyz_x
345body:             |
346  bb.0.entry:
347    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
348    %7:vgpr_32 = COPY $vgpr3
349    %6:vgpr_32 = COPY $vgpr2
350    %5:vgpr_32 = COPY $vgpr1
351    %4:vgpr_32 = COPY $vgpr0
352    %3:sgpr_32 = COPY $sgpr3
353    %2:sgpr_32 = COPY $sgpr2
354    %1:sgpr_32 = COPY $sgpr1
355    %0:sgpr_32 = COPY $sgpr0
356    %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
357    %14:vreg_96 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1, %6:vgpr_32, %subreg.sub2
358    TBUFFER_STORE_FORMAT_XYZ_OFFSET_exact %14:vreg_96, %13:sgpr_128, 0, 4, 125, 0, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4)
359    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 16, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
360...
361---
362
363# GFX9-LABEL: name: gfx9_tbuffer_store_xy_xy
364# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %3, %subreg.sub0, %2, %subreg.sub1
365# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %1, %subreg.sub0, %0, %subreg.sub1
366# GFX9: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE %9, %subreg.sub0_sub1, %10, %subreg.sub2_sub3
367# GFX9: TBUFFER_STORE_FORMAT_XYZW_OFFSET_exact killed %11, %8, 0, 4, 126, 0, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 4)
368name: gfx9_tbuffer_store_xy_xy
369body:             |
370  bb.0.entry:
371    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
372    %7:vgpr_32 = COPY $vgpr3
373    %6:vgpr_32 = COPY $vgpr2
374    %5:vgpr_32 = COPY $vgpr1
375    %4:vgpr_32 = COPY $vgpr0
376    %3:sgpr_32 = COPY $sgpr3
377    %2:sgpr_32 = COPY $sgpr2
378    %1:sgpr_32 = COPY $sgpr1
379    %0:sgpr_32 = COPY $sgpr0
380    %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
381    %14:vreg_64 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1
382    %15:vreg_64 = REG_SEQUENCE %6:vgpr_32, %subreg.sub0, %7:vgpr_32, %subreg.sub1
383    TBUFFER_STORE_FORMAT_XY_OFFSET_exact %14:vreg_64, %13:sgpr_128, 0, 4, 123, 0, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
384    TBUFFER_STORE_FORMAT_XY_OFFSET_exact %15:vreg_64, %13:sgpr_128, 0, 12, 123, 0, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
385...
386---
387
388# GFX9-LABEL: name: gfx9_tbuffer_store_x_xy
389# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %3, %subreg.sub0, %2, %subreg.sub1
390# GFX9: %{{[0-9]+}}:vreg_64, %subreg.sub1_sub2
391# GFX9: TBUFFER_STORE_FORMAT_XYZ_OFFSET_exact killed %11, %8, 0, 4, 125, 0, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4)
392name: gfx9_tbuffer_store_x_xy
393body:             |
394  bb.0.entry:
395    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
396    %7:vgpr_32 = COPY $vgpr3
397    %6:vgpr_32 = COPY $vgpr2
398    %5:vgpr_32 = COPY $vgpr1
399    %4:vgpr_32 = COPY $vgpr0
400    %3:sgpr_32 = COPY $sgpr3
401    %2:sgpr_32 = COPY $sgpr2
402    %1:sgpr_32 = COPY $sgpr1
403    %0:sgpr_32 = COPY $sgpr0
404    %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
405    %14:vreg_64 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1
406    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 4, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
407    TBUFFER_STORE_FORMAT_XY_OFFSET_exact %15:vreg_64, %13:sgpr_128, 0, 8, 123, 0, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
408...
409---
410
411# GFX9-LABEL: name: gfx9_tbuffer_store_xy_x
412# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %3, %subreg.sub0, %2, %subreg.sub1
413# GFX9: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE %9, %subreg.sub0_sub1, %0, %subreg.sub2
414# GFX9: TBUFFER_STORE_FORMAT_XYZ_OFFSET_exact killed %10, %8, 0, 4, 125, 0, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4)
415name: gfx9_tbuffer_store_xy_x
416body:             |
417  bb.0.entry:
418    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
419    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
420    %7:vgpr_32 = COPY $vgpr3
421    %6:vgpr_32 = COPY $vgpr2
422    %5:vgpr_32 = COPY $vgpr1
423    %4:vgpr_32 = COPY $vgpr0
424    %3:sgpr_32 = COPY $sgpr3
425    %2:sgpr_32 = COPY $sgpr2
426    %1:sgpr_32 = COPY $sgpr1
427    %0:sgpr_32 = COPY $sgpr0
428    %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
429    %14:vreg_64 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1
430    TBUFFER_STORE_FORMAT_XY_OFFSET_exact %14:vreg_64, %13:sgpr_128, 0, 4, 123, 0, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
431    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 12, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
432...
433---
434
435
436# GFX9-LABEL: name: gfx9_tbuffer_store_x_x
437# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %1, %subreg.sub0, %0, %subreg.sub1
438# GFX9: TBUFFER_STORE_FORMAT_XY_OFFSET_exact killed %9, %8, 0, 4, 123, 0, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
439name: gfx9_tbuffer_store_x_x
440body:             |
441  bb.0.entry:
442    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
443    %7:vgpr_32 = COPY $vgpr3
444    %6:vgpr_32 = COPY $vgpr2
445    %5:vgpr_32 = COPY $vgpr1
446    %4:vgpr_32 = COPY $vgpr0
447    %3:sgpr_32 = COPY $sgpr3
448    %2:sgpr_32 = COPY $sgpr2
449    %1:sgpr_32 = COPY $sgpr1
450    %0:sgpr_32 = COPY $sgpr0
451    %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
452    TBUFFER_STORE_FORMAT_X_OFFSET_exact %6:vgpr_32, %13:sgpr_128, 0, 4, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
453    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 8, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
454...
455---
456
457# GFX9-LABEL: name: gfx9_tbuffer_store_x_x_format_32_32_32_32
458# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %1, %subreg.sub0, %0, %subreg.sub1
459# GFX9: TBUFFER_STORE_FORMAT_XY_OFFSET_exact killed %9, %8, 0, 4, 123, 0, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
460name: gfx9_tbuffer_store_x_x_format_32_32_32_32
461body:             |
462  bb.0.entry:
463    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
464    %7:vgpr_32 = COPY $vgpr3
465    %6:vgpr_32 = COPY $vgpr2
466    %5:vgpr_32 = COPY $vgpr1
467    %4:vgpr_32 = COPY $vgpr0
468    %3:sgpr_32 = COPY $sgpr3
469    %2:sgpr_32 = COPY $sgpr2
470    %1:sgpr_32 = COPY $sgpr1
471    %0:sgpr_32 = COPY $sgpr0
472    %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
473    TBUFFER_STORE_FORMAT_X_OFFSET_exact %6:vgpr_32, %13:sgpr_128, 0, 4, 126, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
474    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 8, 126, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
475...
476---
477
478# GFX9-LABEL: name: gfx9_tbuffer_store_float32
479# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr8
480# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr7
481# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr6
482# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr5
483# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr4
484# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr3
485# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr2
486# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr1
487# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr0
488# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
489# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
490# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
491# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
492# GFX9: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %12, %subreg.sub0, %11, %subreg.sub1, %10, %subreg.sub2, %9, %subreg.sub3
493# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %8, %subreg.sub0, %7, %subreg.sub1
494# GFX9: TBUFFER_STORE_FORMAT_XY_OFFSET_exact killed %14, %13, 0, 4, 123, 0, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
495# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %6, %subreg.sub0, %5, %subreg.sub1
496# GFX9: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %15, %subreg.sub0_sub1, %4, %subreg.sub2
497# GFX9: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE killed %16, %subreg.sub0_sub1_sub2, %3, %subreg.sub3
498# GFX9: TBUFFER_STORE_FORMAT_XYZW_OFFSET_exact killed %17, %13, 0, 16, 126, 0, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 4)
499# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %2, %subreg.sub0, %1, %subreg.sub1
500# GFX9: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %18, %subreg.sub0_sub1, %0, %subreg.sub2
501# GFX9: TBUFFER_STORE_FORMAT_XYZ_OFFSET_exact killed %19, %13, 0, 36, 125, 0, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4)
502name: gfx9_tbuffer_store_float32
503body:             |
504  bb.0.entry:
505    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
506    %12:vgpr_32 = COPY $vgpr8
507    %11:vgpr_32 = COPY $vgpr7
508    %10:vgpr_32 = COPY $vgpr6
509    %9:vgpr_32 = COPY $vgpr5
510    %8:vgpr_32 = COPY $vgpr4
511    %7:vgpr_32 = COPY $vgpr3
512    %6:vgpr_32 = COPY $vgpr2
513    %5:vgpr_32 = COPY $vgpr1
514    %4:vgpr_32 = COPY $vgpr0
515    %3:sgpr_32 = COPY $sgpr3
516    %2:sgpr_32 = COPY $sgpr2
517    %1:sgpr_32 = COPY $sgpr1
518    %0:sgpr_32 = COPY $sgpr0
519    %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
520    TBUFFER_STORE_FORMAT_X_OFFSET_exact %4:vgpr_32, %13:sgpr_128, 0, 4, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
521    TBUFFER_STORE_FORMAT_X_OFFSET_exact %5:vgpr_32, %13:sgpr_128, 0, 8, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
522    TBUFFER_STORE_FORMAT_X_OFFSET_exact %6:vgpr_32, %13:sgpr_128, 0, 16, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
523    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 20, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
524    TBUFFER_STORE_FORMAT_X_OFFSET_exact %8:vgpr_32, %13:sgpr_128, 0, 24, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
525    TBUFFER_STORE_FORMAT_X_OFFSET_exact %9:vgpr_32, %13:sgpr_128, 0, 28, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
526    TBUFFER_STORE_FORMAT_X_OFFSET_exact %10:vgpr_32, %13:sgpr_128, 0, 36, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
527    TBUFFER_STORE_FORMAT_X_OFFSET_exact %11:vgpr_32, %13:sgpr_128, 0, 40, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
528    TBUFFER_STORE_FORMAT_X_OFFSET_exact %12:vgpr_32, %13:sgpr_128, 0, 44, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
529...
530---
531
532# GFX9-LABEL: name: gfx9_tbuffer_store_sint32
533# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr8
534# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr7
535# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr6
536# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr5
537# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr4
538# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr3
539# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr2
540# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr1
541# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr0
542# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
543# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
544# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
545# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
546# GFX9: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %12, %subreg.sub0, %11, %subreg.sub1, %10, %subreg.sub2, %9, %subreg.sub3
547# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %8, %subreg.sub0, %7, %subreg.sub1
548# GFX9: TBUFFER_STORE_FORMAT_XY_OFFSET_exact killed %14, %13, 0, 4, 91, 0, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
549# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %6, %subreg.sub0, %5, %subreg.sub1
550# GFX9: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %15, %subreg.sub0_sub1, %4, %subreg.sub2
551# GFX9: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE killed %16, %subreg.sub0_sub1_sub2, %3, %subreg.sub3
552# GFX9: TBUFFER_STORE_FORMAT_XYZW_OFFSET_exact killed %17, %13, 0, 16, 94, 0, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 4)
553# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %2, %subreg.sub0, %1, %subreg.sub1
554# GFX9: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %18, %subreg.sub0_sub1, %0, %subreg.sub2
555# GFX9: TBUFFER_STORE_FORMAT_XYZ_OFFSET_exact killed %19, %13, 0, 36, 93, 0, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4)
556name: gfx9_tbuffer_store_sint32
557body:             |
558  bb.0.entry:
559    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
560    %12:vgpr_32 = COPY $vgpr8
561    %11:vgpr_32 = COPY $vgpr7
562    %10:vgpr_32 = COPY $vgpr6
563    %9:vgpr_32 = COPY $vgpr5
564    %8:vgpr_32 = COPY $vgpr4
565    %7:vgpr_32 = COPY $vgpr3
566    %6:vgpr_32 = COPY $vgpr2
567    %5:vgpr_32 = COPY $vgpr1
568    %4:vgpr_32 = COPY $vgpr0
569    %3:sgpr_32 = COPY $sgpr3
570    %2:sgpr_32 = COPY $sgpr2
571    %1:sgpr_32 = COPY $sgpr1
572    %0:sgpr_32 = COPY $sgpr0
573    %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
574    TBUFFER_STORE_FORMAT_X_OFFSET_exact %4:vgpr_32, %13:sgpr_128, 0, 4, 84, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
575    TBUFFER_STORE_FORMAT_X_OFFSET_exact %5:vgpr_32, %13:sgpr_128, 0, 8, 84, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
576    TBUFFER_STORE_FORMAT_X_OFFSET_exact %6:vgpr_32, %13:sgpr_128, 0, 16, 84, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
577    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 20, 84, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
578    TBUFFER_STORE_FORMAT_X_OFFSET_exact %8:vgpr_32, %13:sgpr_128, 0, 24, 84, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
579    TBUFFER_STORE_FORMAT_X_OFFSET_exact %9:vgpr_32, %13:sgpr_128, 0, 28, 84, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
580    TBUFFER_STORE_FORMAT_X_OFFSET_exact %10:vgpr_32, %13:sgpr_128, 0, 36, 84, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
581    TBUFFER_STORE_FORMAT_X_OFFSET_exact %11:vgpr_32, %13:sgpr_128, 0, 40, 84, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
582    TBUFFER_STORE_FORMAT_X_OFFSET_exact %12:vgpr_32, %13:sgpr_128, 0, 44, 84, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
583...
584---
585
586# GFX9-LABEL: name: gfx9_tbuffer_store_uint32
587# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr8
588# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr7
589# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr6
590# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr5
591# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr4
592# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr3
593# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr2
594# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr1
595# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr0
596# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
597# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
598# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
599# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
600# GFX9: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %12, %subreg.sub0, %11, %subreg.sub1, %10, %subreg.sub2, %9, %subreg.sub3
601# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %8, %subreg.sub0, %7, %subreg.sub1
602# GFX9: TBUFFER_STORE_FORMAT_XY_OFFSET_exact killed %14, %13, 0, 4, 75, 0, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
603# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %6, %subreg.sub0, %5, %subreg.sub1
604# GFX9: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %15, %subreg.sub0_sub1, %4, %subreg.sub2
605# GFX9: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE killed %16, %subreg.sub0_sub1_sub2, %3, %subreg.sub3
606# GFX9: TBUFFER_STORE_FORMAT_XYZW_OFFSET_exact killed %17, %13, 0, 16, 78, 0, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 4)
607# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %2, %subreg.sub0, %1, %subreg.sub1
608# GFX9: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %18, %subreg.sub0_sub1, %0, %subreg.sub2
609# GFX9: TBUFFER_STORE_FORMAT_XYZ_OFFSET_exact killed %19, %13, 0, 36, 77, 0, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4)
610name: gfx9_tbuffer_store_uint32
611body:             |
612  bb.0.entry:
613    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
614    %12:vgpr_32 = COPY $vgpr8
615    %11:vgpr_32 = COPY $vgpr7
616    %10:vgpr_32 = COPY $vgpr6
617    %9:vgpr_32 = COPY $vgpr5
618    %8:vgpr_32 = COPY $vgpr4
619    %7:vgpr_32 = COPY $vgpr3
620    %6:vgpr_32 = COPY $vgpr2
621    %5:vgpr_32 = COPY $vgpr1
622    %4:vgpr_32 = COPY $vgpr0
623    %3:sgpr_32 = COPY $sgpr3
624    %2:sgpr_32 = COPY $sgpr2
625    %1:sgpr_32 = COPY $sgpr1
626    %0:sgpr_32 = COPY $sgpr0
627    %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
628    TBUFFER_STORE_FORMAT_X_OFFSET_exact %4:vgpr_32, %13:sgpr_128, 0, 4, 68, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
629    TBUFFER_STORE_FORMAT_X_OFFSET_exact %5:vgpr_32, %13:sgpr_128, 0, 8, 68, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
630    TBUFFER_STORE_FORMAT_X_OFFSET_exact %6:vgpr_32, %13:sgpr_128, 0, 16, 68, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
631    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 20, 68, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
632    TBUFFER_STORE_FORMAT_X_OFFSET_exact %8:vgpr_32, %13:sgpr_128, 0, 24, 68, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
633    TBUFFER_STORE_FORMAT_X_OFFSET_exact %9:vgpr_32, %13:sgpr_128, 0, 28, 68, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
634    TBUFFER_STORE_FORMAT_X_OFFSET_exact %10:vgpr_32, %13:sgpr_128, 0, 36, 68, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
635    TBUFFER_STORE_FORMAT_X_OFFSET_exact %11:vgpr_32, %13:sgpr_128, 0, 40, 68, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
636    TBUFFER_STORE_FORMAT_X_OFFSET_exact %12:vgpr_32, %13:sgpr_128, 0, 44, 68, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
637...
638---
639
640# GFX9-LABEL: name: gfx9_tbuffer_store_not_merged_data_format_mismatch
641# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr8
642# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr7
643# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr6
644# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr5
645# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr4
646# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr3
647# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr2
648# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr1
649# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr0
650# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
651# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
652# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
653# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
654# GFX9: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %12, %subreg.sub0, %11, %subreg.sub1, %10, %subreg.sub2, %9, %subreg.sub3
655# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %8, %13, 0, 4, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
656# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %7, %13, 0, 8, 84, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
657# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %6, %13, 0, 16, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
658# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %5, %13, 0, 20, 84, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
659# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %4, %13, 0, 24, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
660# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %3, %13, 0, 28, 84, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
661# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %2, %13, 0, 36, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
662# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %1, %13, 0, 40, 84, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
663# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %0, %13, 0, 44, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
664name: gfx9_tbuffer_store_not_merged_data_format_mismatch
665body:             |
666  bb.0.entry:
667    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
668    %12:vgpr_32 = COPY $vgpr8
669    %11:vgpr_32 = COPY $vgpr7
670    %10:vgpr_32 = COPY $vgpr6
671    %9:vgpr_32 = COPY $vgpr5
672    %8:vgpr_32 = COPY $vgpr4
673    %7:vgpr_32 = COPY $vgpr3
674    %6:vgpr_32 = COPY $vgpr2
675    %5:vgpr_32 = COPY $vgpr1
676    %4:vgpr_32 = COPY $vgpr0
677    %3:sgpr_32 = COPY $sgpr3
678    %2:sgpr_32 = COPY $sgpr2
679    %1:sgpr_32 = COPY $sgpr1
680    %0:sgpr_32 = COPY $sgpr0
681    %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
682    TBUFFER_STORE_FORMAT_X_OFFSET_exact %4:vgpr_32, %13:sgpr_128, 0, 4, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
683    TBUFFER_STORE_FORMAT_X_OFFSET_exact %5:vgpr_32, %13:sgpr_128, 0, 8, 84, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
684    TBUFFER_STORE_FORMAT_X_OFFSET_exact %6:vgpr_32, %13:sgpr_128, 0, 16, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
685    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 20, 84, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
686    TBUFFER_STORE_FORMAT_X_OFFSET_exact %8:vgpr_32, %13:sgpr_128, 0, 24, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
687    TBUFFER_STORE_FORMAT_X_OFFSET_exact %9:vgpr_32, %13:sgpr_128, 0, 28, 84, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
688    TBUFFER_STORE_FORMAT_X_OFFSET_exact %10:vgpr_32, %13:sgpr_128, 0, 36, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
689    TBUFFER_STORE_FORMAT_X_OFFSET_exact %11:vgpr_32, %13:sgpr_128, 0, 40, 84, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
690    TBUFFER_STORE_FORMAT_X_OFFSET_exact %12:vgpr_32, %13:sgpr_128, 0, 44, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
691...
692---
693
694# GFX9-LABEL: name: gfx9_tbuffer_store_not_merged_num_format_mismatch
695# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr8
696# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr7
697# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr6
698# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr5
699# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr4
700# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr3
701# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr2
702# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr1
703# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr0
704# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
705# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
706# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
707# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
708# GFX9: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %12, %subreg.sub0, %11, %subreg.sub1, %10, %subreg.sub2, %9, %subreg.sub3
709# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %8, %13, 0, 4, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
710# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %7, %13, 0, 8, 114, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
711# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %6, %13, 0, 16, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
712# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %5, %13, 0, 20, 114, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
713# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %4, %13, 0, 24, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
714# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %3, %13, 0, 28, 114, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
715# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %2, %13, 0, 36, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
716# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %1, %13, 0, 40, 114, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
717# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %0, %13, 0, 44, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
718name: gfx9_tbuffer_store_not_merged_num_format_mismatch
719body:             |
720  bb.0.entry:
721    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
722    %12:vgpr_32 = COPY $vgpr8
723    %11:vgpr_32 = COPY $vgpr7
724    %10:vgpr_32 = COPY $vgpr6
725    %9:vgpr_32 = COPY $vgpr5
726    %8:vgpr_32 = COPY $vgpr4
727    %7:vgpr_32 = COPY $vgpr3
728    %6:vgpr_32 = COPY $vgpr2
729    %5:vgpr_32 = COPY $vgpr1
730    %4:vgpr_32 = COPY $vgpr0
731    %3:sgpr_32 = COPY $sgpr3
732    %2:sgpr_32 = COPY $sgpr2
733    %1:sgpr_32 = COPY $sgpr1
734    %0:sgpr_32 = COPY $sgpr0
735    %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
736    TBUFFER_STORE_FORMAT_X_OFFSET_exact %4:vgpr_32, %13:sgpr_128, 0, 4, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
737    TBUFFER_STORE_FORMAT_X_OFFSET_exact %5:vgpr_32, %13:sgpr_128, 0, 8, 114, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
738    TBUFFER_STORE_FORMAT_X_OFFSET_exact %6:vgpr_32, %13:sgpr_128, 0, 16, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
739    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 20, 114, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
740    TBUFFER_STORE_FORMAT_X_OFFSET_exact %8:vgpr_32, %13:sgpr_128, 0, 24, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
741    TBUFFER_STORE_FORMAT_X_OFFSET_exact %9:vgpr_32, %13:sgpr_128, 0, 28, 114, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
742    TBUFFER_STORE_FORMAT_X_OFFSET_exact %10:vgpr_32, %13:sgpr_128, 0, 36, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
743    TBUFFER_STORE_FORMAT_X_OFFSET_exact %11:vgpr_32, %13:sgpr_128, 0, 40, 114, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
744    TBUFFER_STORE_FORMAT_X_OFFSET_exact %12:vgpr_32, %13:sgpr_128, 0, 44, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
745...
746---
747
748
749# GFX9-LABEL: name: gfx9_tbuffer_load_not_merged_swizzled_0
750# GFX9: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 4, 116, 0, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
751# GFX9: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 8, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
752name: gfx9_tbuffer_load_not_merged_swizzled_0
753body:             |
754  bb.0.entry:
755    %0:sgpr_32 = COPY $sgpr0
756    %1:sgpr_32 = COPY $sgpr1
757    %2:sgpr_32 = COPY $sgpr2
758    %3:sgpr_32 = COPY $sgpr3
759    %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
760    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 116, 0, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
761    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
762...
763---
764
765
766# GFX9-LABEL: name: gfx9_tbuffer_load_not_merged_swizzled_1
767# GFX9: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 4, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
768# GFX9: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 8, 116, 0, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
769name: gfx9_tbuffer_load_not_merged_swizzled_1
770body:             |
771  bb.0.entry:
772    %0:sgpr_32 = COPY $sgpr0
773    %1:sgpr_32 = COPY $sgpr1
774    %2:sgpr_32 = COPY $sgpr2
775    %3:sgpr_32 = COPY $sgpr3
776    %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
777    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
778    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 116, 0, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
779...
780---
781
782
783# GFX9-LABEL: name: gfx9_tbuffer_load_merge_across_swizzle
784# GFX9-DAG: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 12, 116, 0, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
785# GFX9-DAG: %{{[0-9]+}}:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %4, 0, 4, 123, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
786name: gfx9_tbuffer_load_merge_across_swizzle
787body:             |
788  bb.0.entry:
789    %0:sgpr_32 = COPY $sgpr0
790    %1:sgpr_32 = COPY $sgpr1
791    %2:sgpr_32 = COPY $sgpr2
792    %3:sgpr_32 = COPY $sgpr3
793    %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
794    %5:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4:sgpr_128, 0, 4, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
795    %6:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4:sgpr_128, 0, 12, 116, 0, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
796    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4:sgpr_128, 0, 8, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
797...
798---
799
800
801# GFX9-LABEL: name: gfx9_tbuffer_load_merge_across_swizzled_store
802# GFX9: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5, 0, 4, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
803# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %4, %5, 0, 6, 116, 0, 0, 1, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
804# GFX9: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5, 0, 8, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
805name: gfx9_tbuffer_load_merge_across_swizzled_store
806body:             |
807  bb.0.entry:
808    %0:sgpr_32 = COPY $sgpr0
809    %1:sgpr_32 = COPY $sgpr1
810    %2:sgpr_32 = COPY $sgpr2
811    %3:sgpr_32 = COPY $sgpr3
812    %4:vgpr_32 = COPY $vgpr0
813    %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
814    %6:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
815    TBUFFER_STORE_FORMAT_X_OFFSET_exact %4:vgpr_32, %5:sgpr_128, 0, 6, 116, 0, 0, 1, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
816    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 116, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
817...
818---
819
820
821#
822# GFX10 tests
823#
824
825# GFX10-LABEL: name: gfx10_tbuffer_load_x_xyz
826# GFX10: %{{[0-9]+}}:vreg_128 = TBUFFER_LOAD_FORMAT_XYZW_OFFSET %4, 0, 4, 77, 0, 0, 0, implicit $exec :: (dereferenceable load (s128), align 1, addrspace 4)
827# GFX10: %{{[0-9]+}}:vgpr_32 = COPY %7.sub0
828# GFX10: %{{[0-9]+}}:vreg_96 = COPY killed %7.sub1_sub2_sub3
829name: gfx10_tbuffer_load_x_xyz
830body:             |
831  bb.0.entry:
832    %0:sgpr_32 = COPY $sgpr0
833    %1:sgpr_32 = COPY $sgpr1
834    %2:sgpr_32 = COPY $sgpr2
835    %3:sgpr_32 = COPY $sgpr3
836    %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
837    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
838    %8:vreg_96 = TBUFFER_LOAD_FORMAT_XYZ_OFFSET %5:sgpr_128, 0, 8, 74, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4)
839...
840---
841
842# GFX10-LABEL: name: gfx10_tbuffer_load_xyz_x
843# GFX10: %{{[0-9]+}}:vreg_128 = TBUFFER_LOAD_FORMAT_XYZW_OFFSET %4, 0, 4, 77, 0, 0, 0, implicit $exec :: (dereferenceable load (s128), align 1, addrspace 4)
844# GFX10: %{{[0-9]+}}:vreg_96 = COPY %7.sub0_sub1_sub2
845# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %7.sub3
846name: gfx10_tbuffer_load_xyz_x
847body:             |
848  bb.0.entry:
849    %0:sgpr_32 = COPY $sgpr0
850    %1:sgpr_32 = COPY $sgpr1
851    %2:sgpr_32 = COPY $sgpr2
852    %3:sgpr_32 = COPY $sgpr3
853    %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
854    %7:vreg_96 = TBUFFER_LOAD_FORMAT_XYZ_OFFSET %5:sgpr_128, 0, 4, 74, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
855    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 16, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4)
856...
857---
858
859# GFX10-LABEL: name: gfx10_tbuffer_load_xy_xy
860# GFX10: %{{[0-9]+}}:vreg_128 = TBUFFER_LOAD_FORMAT_XYZW_OFFSET %4, 0, 4, 77, 0, 0, 0, implicit $exec :: (dereferenceable load (s128), align 1, addrspace 4)
861# GFX10: %{{[0-9]+}}:vreg_64 = COPY %7.sub0_sub1
862# GFX10: %{{[0-9]+}}:vreg_64 = COPY killed %7.sub2_sub3
863name: gfx10_tbuffer_load_xy_xy
864body:             |
865  bb.0.entry:
866    %0:sgpr_32 = COPY $sgpr0
867    %1:sgpr_32 = COPY $sgpr1
868    %2:sgpr_32 = COPY $sgpr2
869    %3:sgpr_32 = COPY $sgpr3
870    %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
871    %7:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %5:sgpr_128, 0, 4, 64, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
872    %8:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %5:sgpr_128, 0, 12, 64, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
873...
874---
875
876# GFX10-LABEL: name: gfx10_tbuffer_load_x_xy
877# GFX10: %{{[0-9]+}}:vreg_96 = TBUFFER_LOAD_FORMAT_XYZ_OFFSET %4, 0, 4, 74, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4)
878# GFX10: %{{[0-9]+}}:vgpr_32 = COPY %7.sub0
879# GFX10: %{{[0-9]+}}:vreg_64 = COPY killed %7.sub1_sub2
880name: gfx10_tbuffer_load_x_xy
881body:             |
882  bb.0.entry:
883    %0:sgpr_32 = COPY $sgpr0
884    %1:sgpr_32 = COPY $sgpr1
885    %2:sgpr_32 = COPY $sgpr2
886    %3:sgpr_32 = COPY $sgpr3
887    %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
888    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
889    %8:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %5:sgpr_128, 0, 8, 64, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
890...
891---
892
893# GFX10-LABEL: name: gfx10_tbuffer_load_xy_x
894# GFX10: %{{[0-9]+}}:vreg_96 = TBUFFER_LOAD_FORMAT_XYZ_OFFSET %4, 0, 4, 74, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4)
895# GFX10: %{{[0-9]+}}:vreg_64 = COPY %7.sub0_sub1
896# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %7.sub2
897name: gfx10_tbuffer_load_xy_x
898body:             |
899  bb.0.entry:
900    %0:sgpr_32 = COPY $sgpr0
901    %1:sgpr_32 = COPY $sgpr1
902    %2:sgpr_32 = COPY $sgpr2
903    %3:sgpr_32 = COPY $sgpr3
904    %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
905    %7:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %5:sgpr_128, 0, 4, 64, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
906    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 12, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
907...
908---
909
910
911# GFX10-LABEL: name: gfx10_tbuffer_load_x_x
912# GFX10: %{{[0-9]+}}:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %4, 0, 4, 64, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
913# GFX10: %{{[0-9]+}}:vgpr_32 = COPY %7.sub0
914# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %7.sub1
915
916name: gfx10_tbuffer_load_x_x
917body:             |
918  bb.0.entry:
919    %0:sgpr_32 = COPY $sgpr0
920    %1:sgpr_32 = COPY $sgpr1
921    %2:sgpr_32 = COPY $sgpr2
922    %3:sgpr_32 = COPY $sgpr3
923    %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
924    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
925    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
926...
927---
928
929# GFX10-LABEL: name: gfx10_tbuffer_load_x_x_format_32_32_32_32
930# GFX10: %{{[0-9]+}}:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %4, 0, 4, 64, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
931# GFX10: %{{[0-9]+}}:vgpr_32 = COPY %7.sub0
932# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %7.sub1
933
934name: gfx10_tbuffer_load_x_x_format_32_32_32_32
935body:             |
936  bb.0.entry:
937    %0:sgpr_32 = COPY $sgpr0
938    %1:sgpr_32 = COPY $sgpr1
939    %2:sgpr_32 = COPY $sgpr2
940    %3:sgpr_32 = COPY $sgpr3
941    %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
942    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 77, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
943    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 77, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
944...
945---
946
947
948# GFX10-LABEL: name: gfx10_tbuffer_load_float_32
949# GFX10: %{{[0-9]+}}:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %4, 0, 4, 64, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
950# GFX10: %{{[0-9]+}}:vgpr_32 = COPY %14.sub0
951# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %14.sub1
952# GFX10: %{{[0-9]+}}:vreg_128 = TBUFFER_LOAD_FORMAT_XYZW_OFFSET %4, 0, 16, 77, 0, 0, 0, implicit $exec :: (dereferenceable load (s128), align 1, addrspace 4)
953# GFX10: %{{[0-9]+}}:vreg_96 = COPY %17.sub0_sub1_sub2
954# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %17.sub3
955# GFX10: %{{[0-9]+}}:vreg_64 = COPY %16.sub0_sub1
956# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %16.sub2
957# GFX10: %{{[0-9]+}}:vgpr_32 = COPY %15.sub0
958# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %15.sub1
959# GFX10: %{{[0-9]+}}:vreg_96 = TBUFFER_LOAD_FORMAT_XYZ_OFFSET %4, 0, 36, 74, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4)
960# GFX10: %{{[0-9]+}}:vreg_64 = COPY %19.sub0_sub1
961# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %19.sub2
962# GFX10: %{{[0-9]+}}:vgpr_32 = COPY %18.sub0
963# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %18.sub1
964
965name: gfx10_tbuffer_load_float_32
966body:             |
967  bb.0.entry:
968    %0:sgpr_32 = COPY $sgpr0
969    %1:sgpr_32 = COPY $sgpr1
970    %2:sgpr_32 = COPY $sgpr2
971    %3:sgpr_32 = COPY $sgpr3
972    %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
973    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
974    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
975    %9:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 16, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
976    %10:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 20, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
977    %11:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 24, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
978    %12:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 28, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
979    %13:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 36, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
980    %14:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 40, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
981    %15:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 44, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
982...
983---
984
985# GFX10-LABEL: name: gfx10_tbuffer_load_sint_32
986# GFX10: %{{[0-9]+}}:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %4, 0, 4, 63, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
987# GFX10: %{{[0-9]+}}:vgpr_32 = COPY %14.sub0
988# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %14.sub1
989# GFX10: %{{[0-9]+}}:vreg_128 = TBUFFER_LOAD_FORMAT_XYZW_OFFSET %4, 0, 16, 76, 0, 0, 0, implicit $exec :: (dereferenceable load (s128), align 1, addrspace 4)
990# GFX10: %{{[0-9]+}}:vreg_96 = COPY %17.sub0_sub1_sub2
991# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %17.sub3
992# GFX10: %{{[0-9]+}}:vreg_64 = COPY %16.sub0_sub1
993# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %16.sub2
994# GFX10: %{{[0-9]+}}:vgpr_32 = COPY %15.sub0
995# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %15.sub1
996# GFX10: %{{[0-9]+}}:vreg_96 = TBUFFER_LOAD_FORMAT_XYZ_OFFSET %4, 0, 36, 73, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4)
997# GFX10: %{{[0-9]+}}:vreg_64 = COPY %19.sub0_sub1
998# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %19.sub2
999# GFX10: %{{[0-9]+}}:vgpr_32 = COPY %18.sub0
1000# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %18.sub1
1001
1002name: gfx10_tbuffer_load_sint_32
1003body:             |
1004  bb.0.entry:
1005    %0:sgpr_32 = COPY $sgpr0
1006    %1:sgpr_32 = COPY $sgpr1
1007    %2:sgpr_32 = COPY $sgpr2
1008    %3:sgpr_32 = COPY $sgpr3
1009    %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
1010    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 21, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1011    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 21, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1012    %9:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 16, 21, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1013    %10:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 20, 21, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1014    %11:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 24, 21, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1015    %12:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 28, 21, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1016    %13:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 36, 21, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1017    %14:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 40, 21, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1018    %15:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 44, 21, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1019...
1020---
1021
1022# GFX10-LABEL: name: gfx10_tbuffer_load_uint_32
1023# GFX10: %{{[0-9]+}}:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %4, 0, 4, 62, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
1024# GFX10: %{{[0-9]+}}:vgpr_32 = COPY %14.sub0
1025# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %14.sub1
1026# GFX10: %{{[0-9]+}}:vreg_128 = TBUFFER_LOAD_FORMAT_XYZW_OFFSET %4, 0, 16, 75, 0, 0, 0, implicit $exec :: (dereferenceable load (s128), align 1, addrspace 4)
1027# GFX10: %{{[0-9]+}}:vreg_96 = COPY %17.sub0_sub1_sub2
1028# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %17.sub3
1029# GFX10: %{{[0-9]+}}:vreg_64 = COPY %16.sub0_sub1
1030# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %16.sub2
1031# GFX10: %{{[0-9]+}}:vgpr_32 = COPY %15.sub0
1032# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %15.sub1
1033# GFX10: %{{[0-9]+}}:vreg_96 = TBUFFER_LOAD_FORMAT_XYZ_OFFSET %4, 0, 36, 72, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4)
1034# GFX10: %{{[0-9]+}}:vreg_64 = COPY %19.sub0_sub1
1035# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %19.sub2
1036# GFX10: %{{[0-9]+}}:vgpr_32 = COPY %18.sub0
1037# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %18.sub1
1038
1039name: gfx10_tbuffer_load_uint_32
1040body:             |
1041  bb.0.entry:
1042    %0:sgpr_32 = COPY $sgpr0
1043    %1:sgpr_32 = COPY $sgpr1
1044    %2:sgpr_32 = COPY $sgpr2
1045    %3:sgpr_32 = COPY $sgpr3
1046    %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    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 20, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1048    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 20, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1049    %9:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 16, 20, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1050    %10:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 20, 20, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1051    %11:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 24, 20, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1052    %12:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 28, 20, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1053    %13:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 36, 20, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1054    %14:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 40, 20, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1055    %15:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 44, 20, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1056...
1057---
1058
1059# GFX10-LABEL: name: gfx10_tbuffer_load_not_merged_data_format_mismatch
1060# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
1061# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
1062# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
1063# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
1064# GFX10: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %0, %subreg.sub0, %1, %subreg.sub1, %2, %subreg.sub2, %3, %subreg.sub3
1065# GFX10: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1066# GFX10: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 8, 13, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1067# GFX10: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 16, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1068# GFX10: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 20, 13, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1069# GFX10: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 24, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1070# GFX10: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 28, 13, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1071# GFX10: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 36, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1072# GFX10: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 40, 13, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1073# GFX10: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 44, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1074
1075
1076name: gfx10_tbuffer_load_not_merged_data_format_mismatch
1077body:             |
1078  bb.0.entry:
1079    %0:sgpr_32 = COPY $sgpr0
1080    %1:sgpr_32 = COPY $sgpr1
1081    %2:sgpr_32 = COPY $sgpr2
1082    %3:sgpr_32 = COPY $sgpr3
1083    %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
1084    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1085    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 13, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1086    %9:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 16, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1087    %10:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 20, 13, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1088    %11:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 24, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1089    %12:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 28, 13, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1090    %13:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 36, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1091    %14:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 40, 13, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1092    %15:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 44, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1093...
1094---
1095
1096# GFX10-LABEL: name: gfx10_tbuffer_load_not_merged_num_format_mismatch
1097# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
1098# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
1099# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
1100# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
1101# GFX10: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %0, %subreg.sub0, %1, %subreg.sub1, %2, %subreg.sub2, %3, %subreg.sub3
1102# GFX10: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1103# GFX10: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 8, 21, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1104# GFX10: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 16, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1105# GFX10: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 20, 21, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1106# GFX10: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 24, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1107# GFX10: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 28, 21, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1108# GFX10: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 36, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1109# GFX10: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 40, 21, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1110# GFX10: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 44, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1111name: gfx10_tbuffer_load_not_merged_num_format_mismatch
1112body:             |
1113  bb.0.entry:
1114    %0:sgpr_32 = COPY $sgpr0
1115    %1:sgpr_32 = COPY $sgpr1
1116    %2:sgpr_32 = COPY $sgpr2
1117    %3:sgpr_32 = COPY $sgpr3
1118    %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
1119    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1120    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 21, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1121    %9:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 16, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1122    %10:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 20, 21, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1123    %11:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 24, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1124    %12:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 28, 21, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1125    %13:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 36, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1126    %14:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 40, 21, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1127    %15:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 44, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1128...
1129---
1130
1131
1132
1133# GFX10-LABEL: name: gfx10_tbuffer_store_x_xyz
1134# GFX10: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE %3, %subreg.sub0, %2, %subreg.sub1, %1, %subreg.sub2
1135# GFX10: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE %0, %subreg.sub0, %9, %subreg.sub1_sub2_sub3
1136# GFX10: TBUFFER_STORE_FORMAT_XYZW_OFFSET_exact killed %10, %8, 0, 4, 77, 0, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 4)
1137name: gfx10_tbuffer_store_x_xyz
1138body:             |
1139  bb.0.entry:
1140    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
1141    %7:vgpr_32 = COPY $vgpr3
1142    %6:vgpr_32 = COPY $vgpr2
1143    %5:vgpr_32 = COPY $vgpr1
1144    %4:vgpr_32 = COPY $vgpr0
1145    %3:sgpr_32 = COPY $sgpr3
1146    %2:sgpr_32 = COPY $sgpr2
1147    %1:sgpr_32 = COPY $sgpr1
1148    %0:sgpr_32 = COPY $sgpr0
1149    %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
1150    %14:vreg_96 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1, %6:vgpr_32, %subreg.sub2
1151    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1152    TBUFFER_STORE_FORMAT_XYZ_OFFSET_exact %14:vreg_96, %13:sgpr_128, 0, 8, 74, 0, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4)
1153...
1154---
1155
1156
1157# GFX10-LABEL: name: gfx10_tbuffer_store_xyz_x
1158# GFX10: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE %3, %subreg.sub0, %2, %subreg.sub1, %1, %subreg.sub2
1159# GFX10: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE %9, %subreg.sub0_sub1_sub2, %0, %subreg.sub3
1160# GFX10: TBUFFER_STORE_FORMAT_XYZW_OFFSET_exact killed %10, %8, 0, 4, 77, 0, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 4)
1161name: gfx10_tbuffer_store_xyz_x
1162body:             |
1163  bb.0.entry:
1164    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
1165    %7:vgpr_32 = COPY $vgpr3
1166    %6:vgpr_32 = COPY $vgpr2
1167    %5:vgpr_32 = COPY $vgpr1
1168    %4:vgpr_32 = COPY $vgpr0
1169    %3:sgpr_32 = COPY $sgpr3
1170    %2:sgpr_32 = COPY $sgpr2
1171    %1:sgpr_32 = COPY $sgpr1
1172    %0:sgpr_32 = COPY $sgpr0
1173    %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
1174    %14:vreg_96 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1, %6:vgpr_32, %subreg.sub2
1175    TBUFFER_STORE_FORMAT_XYZ_OFFSET_exact %14:vreg_96, %13:sgpr_128, 0, 4, 74, 0, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4)
1176    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 16, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1177...
1178---
1179
1180# GFX10-LABEL: name: gfx10_tbuffer_store_xy_xy
1181# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %3, %subreg.sub0, %2, %subreg.sub1
1182# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %1, %subreg.sub0, %0, %subreg.sub1
1183# GFX10: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE %9, %subreg.sub0_sub1, %10, %subreg.sub2_sub3
1184# GFX10: TBUFFER_STORE_FORMAT_XYZW_OFFSET_exact killed %11, %8, 0, 4, 77, 0, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 4)
1185name: gfx10_tbuffer_store_xy_xy
1186body:             |
1187  bb.0.entry:
1188    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
1189    %7:vgpr_32 = COPY $vgpr3
1190    %6:vgpr_32 = COPY $vgpr2
1191    %5:vgpr_32 = COPY $vgpr1
1192    %4:vgpr_32 = COPY $vgpr0
1193    %3:sgpr_32 = COPY $sgpr3
1194    %2:sgpr_32 = COPY $sgpr2
1195    %1:sgpr_32 = COPY $sgpr1
1196    %0:sgpr_32 = COPY $sgpr0
1197    %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
1198    %14:vreg_64 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1
1199    %15:vreg_64 = REG_SEQUENCE %6:vgpr_32, %subreg.sub0, %7:vgpr_32, %subreg.sub1
1200    TBUFFER_STORE_FORMAT_XY_OFFSET_exact %14:vreg_64, %13:sgpr_128, 0, 4, 64, 0, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
1201    TBUFFER_STORE_FORMAT_XY_OFFSET_exact %15:vreg_64, %13:sgpr_128, 0, 12, 64, 0, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
1202...
1203---
1204
1205# GFX10-LABEL: name: gfx10_tbuffer_store_x_xy
1206# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %3, %subreg.sub0, %2, %subreg.sub1
1207# GFX10: %{{[0-9]+}}:vreg_64, %subreg.sub1_sub2
1208# GFX10: TBUFFER_STORE_FORMAT_XYZ_OFFSET_exact killed %11, %8, 0, 4, 74, 0, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4)
1209name: gfx10_tbuffer_store_x_xy
1210body:             |
1211  bb.0.entry:
1212    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
1213    %7:vgpr_32 = COPY $vgpr3
1214    %6:vgpr_32 = COPY $vgpr2
1215    %5:vgpr_32 = COPY $vgpr1
1216    %4:vgpr_32 = COPY $vgpr0
1217    %3:sgpr_32 = COPY $sgpr3
1218    %2:sgpr_32 = COPY $sgpr2
1219    %1:sgpr_32 = COPY $sgpr1
1220    %0:sgpr_32 = COPY $sgpr0
1221    %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
1222    %14:vreg_64 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1
1223    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1224    TBUFFER_STORE_FORMAT_XY_OFFSET_exact %15:vreg_64, %13:sgpr_128, 0, 8, 64, 0, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
1225...
1226---
1227
1228# GFX10-LABEL: name: gfx10_tbuffer_store_xy_x
1229# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %3, %subreg.sub0, %2, %subreg.sub1
1230# GFX10: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE %9, %subreg.sub0_sub1, %0, %subreg.sub2
1231# GFX10: TBUFFER_STORE_FORMAT_XYZ_OFFSET_exact killed %10, %8, 0, 4, 74, 0, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4)
1232name: gfx10_tbuffer_store_xy_x
1233body:             |
1234  bb.0.entry:
1235    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
1236    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
1237    %7:vgpr_32 = COPY $vgpr3
1238    %6:vgpr_32 = COPY $vgpr2
1239    %5:vgpr_32 = COPY $vgpr1
1240    %4:vgpr_32 = COPY $vgpr0
1241    %3:sgpr_32 = COPY $sgpr3
1242    %2:sgpr_32 = COPY $sgpr2
1243    %1:sgpr_32 = COPY $sgpr1
1244    %0:sgpr_32 = COPY $sgpr0
1245    %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
1246    %14:vreg_64 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1
1247    TBUFFER_STORE_FORMAT_XY_OFFSET_exact %14:vreg_64, %13:sgpr_128, 0, 4, 64, 0, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
1248    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 12, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1249...
1250---
1251
1252
1253# GFX10-LABEL: name: gfx10_tbuffer_store_x_x
1254# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %1, %subreg.sub0, %0, %subreg.sub1
1255# GFX10: TBUFFER_STORE_FORMAT_XY_OFFSET_exact killed %9, %8, 0, 4, 64, 0, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
1256name: gfx10_tbuffer_store_x_x
1257body:             |
1258  bb.0.entry:
1259    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
1260    %7:vgpr_32 = COPY $vgpr3
1261    %6:vgpr_32 = COPY $vgpr2
1262    %5:vgpr_32 = COPY $vgpr1
1263    %4:vgpr_32 = COPY $vgpr0
1264    %3:sgpr_32 = COPY $sgpr3
1265    %2:sgpr_32 = COPY $sgpr2
1266    %1:sgpr_32 = COPY $sgpr1
1267    %0:sgpr_32 = COPY $sgpr0
1268    %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
1269    TBUFFER_STORE_FORMAT_X_OFFSET_exact %6:vgpr_32, %13:sgpr_128, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1270    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 8, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1271...
1272---
1273
1274# GFX10-LABEL: name: gfx10_tbuffer_store_x_x_format_32_32_32_32
1275# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %1, %subreg.sub0, %0, %subreg.sub1
1276# GFX10: TBUFFER_STORE_FORMAT_XY_OFFSET_exact killed %9, %8, 0, 4, 64, 0, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
1277name: gfx10_tbuffer_store_x_x_format_32_32_32_32
1278body:             |
1279  bb.0.entry:
1280    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
1281    %7:vgpr_32 = COPY $vgpr3
1282    %6:vgpr_32 = COPY $vgpr2
1283    %5:vgpr_32 = COPY $vgpr1
1284    %4:vgpr_32 = COPY $vgpr0
1285    %3:sgpr_32 = COPY $sgpr3
1286    %2:sgpr_32 = COPY $sgpr2
1287    %1:sgpr_32 = COPY $sgpr1
1288    %0:sgpr_32 = COPY $sgpr0
1289    %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
1290    TBUFFER_STORE_FORMAT_X_OFFSET_exact %6:vgpr_32, %13:sgpr_128, 0, 4, 77, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1291    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 8, 77, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1292...
1293---
1294
1295# GFX10-LABEL: name: gfx10_tbuffer_store_float32
1296# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr8
1297# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr7
1298# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr6
1299# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr5
1300# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr4
1301# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr3
1302# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr2
1303# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr1
1304# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr0
1305# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
1306# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
1307# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
1308# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
1309# GFX10: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %12, %subreg.sub0, %11, %subreg.sub1, %10, %subreg.sub2, %9, %subreg.sub3
1310# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %8, %subreg.sub0, %7, %subreg.sub1
1311# GFX10: TBUFFER_STORE_FORMAT_XY_OFFSET_exact killed %14, %13, 0, 4, 64, 0, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
1312# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %6, %subreg.sub0, %5, %subreg.sub1
1313# GFX10: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %15, %subreg.sub0_sub1, %4, %subreg.sub2
1314# GFX10: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE killed %16, %subreg.sub0_sub1_sub2, %3, %subreg.sub3
1315# GFX10: TBUFFER_STORE_FORMAT_XYZW_OFFSET_exact killed %17, %13, 0, 16, 77, 0, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 4)
1316# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %2, %subreg.sub0, %1, %subreg.sub1
1317# GFX10: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %18, %subreg.sub0_sub1, %0, %subreg.sub2
1318# GFX10: TBUFFER_STORE_FORMAT_XYZ_OFFSET_exact killed %19, %13, 0, 36, 74, 0, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4)
1319name: gfx10_tbuffer_store_float32
1320body:             |
1321  bb.0.entry:
1322    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
1323    %12:vgpr_32 = COPY $vgpr8
1324    %11:vgpr_32 = COPY $vgpr7
1325    %10:vgpr_32 = COPY $vgpr6
1326    %9:vgpr_32 = COPY $vgpr5
1327    %8:vgpr_32 = COPY $vgpr4
1328    %7:vgpr_32 = COPY $vgpr3
1329    %6:vgpr_32 = COPY $vgpr2
1330    %5:vgpr_32 = COPY $vgpr1
1331    %4:vgpr_32 = COPY $vgpr0
1332    %3:sgpr_32 = COPY $sgpr3
1333    %2:sgpr_32 = COPY $sgpr2
1334    %1:sgpr_32 = COPY $sgpr1
1335    %0:sgpr_32 = COPY $sgpr0
1336    %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
1337    TBUFFER_STORE_FORMAT_X_OFFSET_exact %4:vgpr_32, %13:sgpr_128, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1338    TBUFFER_STORE_FORMAT_X_OFFSET_exact %5:vgpr_32, %13:sgpr_128, 0, 8, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1339    TBUFFER_STORE_FORMAT_X_OFFSET_exact %6:vgpr_32, %13:sgpr_128, 0, 16, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1340    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 20, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1341    TBUFFER_STORE_FORMAT_X_OFFSET_exact %8:vgpr_32, %13:sgpr_128, 0, 24, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1342    TBUFFER_STORE_FORMAT_X_OFFSET_exact %9:vgpr_32, %13:sgpr_128, 0, 28, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1343    TBUFFER_STORE_FORMAT_X_OFFSET_exact %10:vgpr_32, %13:sgpr_128, 0, 36, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1344    TBUFFER_STORE_FORMAT_X_OFFSET_exact %11:vgpr_32, %13:sgpr_128, 0, 40, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1345    TBUFFER_STORE_FORMAT_X_OFFSET_exact %12:vgpr_32, %13:sgpr_128, 0, 44, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1346...
1347---
1348
1349# GFX10-LABEL: name: gfx10_tbuffer_store_sint32
1350# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr8
1351# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr7
1352# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr6
1353# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr5
1354# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr4
1355# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr3
1356# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr2
1357# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr1
1358# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr0
1359# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
1360# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
1361# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
1362# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
1363# GFX10: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %12, %subreg.sub0, %11, %subreg.sub1, %10, %subreg.sub2, %9, %subreg.sub3
1364# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %8, %subreg.sub0, %7, %subreg.sub1
1365# GFX10: TBUFFER_STORE_FORMAT_XY_OFFSET_exact killed %14, %13, 0, 4, 63, 0, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
1366# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %6, %subreg.sub0, %5, %subreg.sub1
1367# GFX10: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %15, %subreg.sub0_sub1, %4, %subreg.sub2
1368# GFX10: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE killed %16, %subreg.sub0_sub1_sub2, %3, %subreg.sub3
1369# GFX10: TBUFFER_STORE_FORMAT_XYZW_OFFSET_exact killed %17, %13, 0, 16, 76, 0, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 4)
1370# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %2, %subreg.sub0, %1, %subreg.sub1
1371# GFX10: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %18, %subreg.sub0_sub1, %0, %subreg.sub2
1372# GFX10: TBUFFER_STORE_FORMAT_XYZ_OFFSET_exact killed %19, %13, 0, 36, 73, 0, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4)
1373name: gfx10_tbuffer_store_sint32
1374body:             |
1375  bb.0.entry:
1376    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
1377    %12:vgpr_32 = COPY $vgpr8
1378    %11:vgpr_32 = COPY $vgpr7
1379    %10:vgpr_32 = COPY $vgpr6
1380    %9:vgpr_32 = COPY $vgpr5
1381    %8:vgpr_32 = COPY $vgpr4
1382    %7:vgpr_32 = COPY $vgpr3
1383    %6:vgpr_32 = COPY $vgpr2
1384    %5:vgpr_32 = COPY $vgpr1
1385    %4:vgpr_32 = COPY $vgpr0
1386    %3:sgpr_32 = COPY $sgpr3
1387    %2:sgpr_32 = COPY $sgpr2
1388    %1:sgpr_32 = COPY $sgpr1
1389    %0:sgpr_32 = COPY $sgpr0
1390    %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
1391    TBUFFER_STORE_FORMAT_X_OFFSET_exact %4:vgpr_32, %13:sgpr_128, 0, 4, 21, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1392    TBUFFER_STORE_FORMAT_X_OFFSET_exact %5:vgpr_32, %13:sgpr_128, 0, 8, 21, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1393    TBUFFER_STORE_FORMAT_X_OFFSET_exact %6:vgpr_32, %13:sgpr_128, 0, 16, 21, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1394    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 20, 21, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1395    TBUFFER_STORE_FORMAT_X_OFFSET_exact %8:vgpr_32, %13:sgpr_128, 0, 24, 21, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1396    TBUFFER_STORE_FORMAT_X_OFFSET_exact %9:vgpr_32, %13:sgpr_128, 0, 28, 21, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1397    TBUFFER_STORE_FORMAT_X_OFFSET_exact %10:vgpr_32, %13:sgpr_128, 0, 36, 21, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1398    TBUFFER_STORE_FORMAT_X_OFFSET_exact %11:vgpr_32, %13:sgpr_128, 0, 40, 21, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1399    TBUFFER_STORE_FORMAT_X_OFFSET_exact %12:vgpr_32, %13:sgpr_128, 0, 44, 21, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1400...
1401---
1402
1403# GFX10-LABEL: name: gfx10_tbuffer_store_uint32
1404# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr8
1405# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr7
1406# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr6
1407# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr5
1408# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr4
1409# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr3
1410# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr2
1411# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr1
1412# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr0
1413# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
1414# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
1415# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
1416# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
1417# GFX10: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %12, %subreg.sub0, %11, %subreg.sub1, %10, %subreg.sub2, %9, %subreg.sub3
1418# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %8, %subreg.sub0, %7, %subreg.sub1
1419# GFX10: TBUFFER_STORE_FORMAT_XY_OFFSET_exact killed %14, %13, 0, 4, 62, 0, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
1420# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %6, %subreg.sub0, %5, %subreg.sub1
1421# GFX10: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %15, %subreg.sub0_sub1, %4, %subreg.sub2
1422# GFX10: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE killed %16, %subreg.sub0_sub1_sub2, %3, %subreg.sub3
1423# GFX10: TBUFFER_STORE_FORMAT_XYZW_OFFSET_exact killed %17, %13, 0, 16, 75, 0, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 4)
1424# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %2, %subreg.sub0, %1, %subreg.sub1
1425# GFX10: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %18, %subreg.sub0_sub1, %0, %subreg.sub2
1426# GFX10: TBUFFER_STORE_FORMAT_XYZ_OFFSET_exact killed %19, %13, 0, 36, 72, 0, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4)
1427name: gfx10_tbuffer_store_uint32
1428body:             |
1429  bb.0.entry:
1430    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
1431    %12:vgpr_32 = COPY $vgpr8
1432    %11:vgpr_32 = COPY $vgpr7
1433    %10:vgpr_32 = COPY $vgpr6
1434    %9:vgpr_32 = COPY $vgpr5
1435    %8:vgpr_32 = COPY $vgpr4
1436    %7:vgpr_32 = COPY $vgpr3
1437    %6:vgpr_32 = COPY $vgpr2
1438    %5:vgpr_32 = COPY $vgpr1
1439    %4:vgpr_32 = COPY $vgpr0
1440    %3:sgpr_32 = COPY $sgpr3
1441    %2:sgpr_32 = COPY $sgpr2
1442    %1:sgpr_32 = COPY $sgpr1
1443    %0:sgpr_32 = COPY $sgpr0
1444    %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
1445    TBUFFER_STORE_FORMAT_X_OFFSET_exact %4:vgpr_32, %13:sgpr_128, 0, 4, 20, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1446    TBUFFER_STORE_FORMAT_X_OFFSET_exact %5:vgpr_32, %13:sgpr_128, 0, 8, 20, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1447    TBUFFER_STORE_FORMAT_X_OFFSET_exact %6:vgpr_32, %13:sgpr_128, 0, 16, 20, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1448    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 20, 20, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1449    TBUFFER_STORE_FORMAT_X_OFFSET_exact %8:vgpr_32, %13:sgpr_128, 0, 24, 20, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1450    TBUFFER_STORE_FORMAT_X_OFFSET_exact %9:vgpr_32, %13:sgpr_128, 0, 28, 20, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1451    TBUFFER_STORE_FORMAT_X_OFFSET_exact %10:vgpr_32, %13:sgpr_128, 0, 36, 20, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1452    TBUFFER_STORE_FORMAT_X_OFFSET_exact %11:vgpr_32, %13:sgpr_128, 0, 40, 20, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1453    TBUFFER_STORE_FORMAT_X_OFFSET_exact %12:vgpr_32, %13:sgpr_128, 0, 44, 20, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1454...
1455---
1456
1457# GFX10-LABEL: name: gfx10_tbuffer_store_not_merged_data_format_mismatch
1458# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr8
1459# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr7
1460# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr6
1461# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr5
1462# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr4
1463# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr3
1464# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr2
1465# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr1
1466# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr0
1467# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
1468# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
1469# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
1470# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
1471# GFX10: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %12, %subreg.sub0, %11, %subreg.sub1, %10, %subreg.sub2, %9, %subreg.sub3
1472# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %8, %13, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1473# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %7, %13, 0, 8, 21, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1474# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %6, %13, 0, 16, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1475# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %5, %13, 0, 20, 21, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1476# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %4, %13, 0, 24, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1477# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %3, %13, 0, 28, 21, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1478# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %2, %13, 0, 36, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1479# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %1, %13, 0, 40, 21, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1480# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %0, %13, 0, 44, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1481name: gfx10_tbuffer_store_not_merged_data_format_mismatch
1482body:             |
1483  bb.0.entry:
1484    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
1485    %12:vgpr_32 = COPY $vgpr8
1486    %11:vgpr_32 = COPY $vgpr7
1487    %10:vgpr_32 = COPY $vgpr6
1488    %9:vgpr_32 = COPY $vgpr5
1489    %8:vgpr_32 = COPY $vgpr4
1490    %7:vgpr_32 = COPY $vgpr3
1491    %6:vgpr_32 = COPY $vgpr2
1492    %5:vgpr_32 = COPY $vgpr1
1493    %4:vgpr_32 = COPY $vgpr0
1494    %3:sgpr_32 = COPY $sgpr3
1495    %2:sgpr_32 = COPY $sgpr2
1496    %1:sgpr_32 = COPY $sgpr1
1497    %0:sgpr_32 = COPY $sgpr0
1498    %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
1499    TBUFFER_STORE_FORMAT_X_OFFSET_exact %4:vgpr_32, %13:sgpr_128, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1500    TBUFFER_STORE_FORMAT_X_OFFSET_exact %5:vgpr_32, %13:sgpr_128, 0, 8, 21, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1501    TBUFFER_STORE_FORMAT_X_OFFSET_exact %6:vgpr_32, %13:sgpr_128, 0, 16, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1502    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 20, 21, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1503    TBUFFER_STORE_FORMAT_X_OFFSET_exact %8:vgpr_32, %13:sgpr_128, 0, 24, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1504    TBUFFER_STORE_FORMAT_X_OFFSET_exact %9:vgpr_32, %13:sgpr_128, 0, 28, 21, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1505    TBUFFER_STORE_FORMAT_X_OFFSET_exact %10:vgpr_32, %13:sgpr_128, 0, 36, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1506    TBUFFER_STORE_FORMAT_X_OFFSET_exact %11:vgpr_32, %13:sgpr_128, 0, 40, 21, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1507    TBUFFER_STORE_FORMAT_X_OFFSET_exact %12:vgpr_32, %13:sgpr_128, 0, 44, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1508...
1509---
1510
1511# GFX10-LABEL: name: gfx10_tbuffer_store_not_merged_num_format_mismatch
1512# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr8
1513# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr7
1514# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr6
1515# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr5
1516# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr4
1517# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr3
1518# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr2
1519# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr1
1520# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr0
1521# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
1522# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
1523# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
1524# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
1525# GFX10: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %12, %subreg.sub0, %11, %subreg.sub1, %10, %subreg.sub2, %9, %subreg.sub3
1526# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %8, %13, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1527# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %7, %13, 0, 8, 13, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1528# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %6, %13, 0, 16, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1529# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %5, %13, 0, 20, 13, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1530# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %4, %13, 0, 24, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1531# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %3, %13, 0, 28, 13, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1532# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %2, %13, 0, 36, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1533# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %1, %13, 0, 40, 13, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1534# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %0, %13, 0, 44, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1535name: gfx10_tbuffer_store_not_merged_num_format_mismatch
1536body:             |
1537  bb.0.entry:
1538    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
1539    %12:vgpr_32 = COPY $vgpr8
1540    %11:vgpr_32 = COPY $vgpr7
1541    %10:vgpr_32 = COPY $vgpr6
1542    %9:vgpr_32 = COPY $vgpr5
1543    %8:vgpr_32 = COPY $vgpr4
1544    %7:vgpr_32 = COPY $vgpr3
1545    %6:vgpr_32 = COPY $vgpr2
1546    %5:vgpr_32 = COPY $vgpr1
1547    %4:vgpr_32 = COPY $vgpr0
1548    %3:sgpr_32 = COPY $sgpr3
1549    %2:sgpr_32 = COPY $sgpr2
1550    %1:sgpr_32 = COPY $sgpr1
1551    %0:sgpr_32 = COPY $sgpr0
1552    %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
1553    TBUFFER_STORE_FORMAT_X_OFFSET_exact %4:vgpr_32, %13:sgpr_128, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1554    TBUFFER_STORE_FORMAT_X_OFFSET_exact %5:vgpr_32, %13:sgpr_128, 0, 8, 13, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1555    TBUFFER_STORE_FORMAT_X_OFFSET_exact %6:vgpr_32, %13:sgpr_128, 0, 16, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1556    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 20, 13, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1557    TBUFFER_STORE_FORMAT_X_OFFSET_exact %8:vgpr_32, %13:sgpr_128, 0, 24, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1558    TBUFFER_STORE_FORMAT_X_OFFSET_exact %9:vgpr_32, %13:sgpr_128, 0, 28, 13, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1559    TBUFFER_STORE_FORMAT_X_OFFSET_exact %10:vgpr_32, %13:sgpr_128, 0, 36, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1560    TBUFFER_STORE_FORMAT_X_OFFSET_exact %11:vgpr_32, %13:sgpr_128, 0, 40, 13, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1561    TBUFFER_STORE_FORMAT_X_OFFSET_exact %12:vgpr_32, %13:sgpr_128, 0, 44, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1562...
1563---
1564
1565
1566# GFX10-LABEL: name: gfx10_tbuffer_load_not_merged_swizzled_0
1567# GFX10: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 4, 22, 0, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1568# GFX10: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 8, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1569name: gfx10_tbuffer_load_not_merged_swizzled_0
1570body:             |
1571  bb.0.entry:
1572    %0:sgpr_32 = COPY $sgpr0
1573    %1:sgpr_32 = COPY $sgpr1
1574    %2:sgpr_32 = COPY $sgpr2
1575    %3:sgpr_32 = COPY $sgpr3
1576    %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
1577    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 22, 0, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1578    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1579...
1580---
1581
1582
1583# GFX10-LABEL: name: gfx10_tbuffer_load_not_merged_swizzled_1
1584# GFX10: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1585# GFX10: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 8, 22, 0, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1586name: gfx10_tbuffer_load_not_merged_swizzled_1
1587body:             |
1588  bb.0.entry:
1589    %0:sgpr_32 = COPY $sgpr0
1590    %1:sgpr_32 = COPY $sgpr1
1591    %2:sgpr_32 = COPY $sgpr2
1592    %3:sgpr_32 = COPY $sgpr3
1593    %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
1594    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1595    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 22, 0, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1596...
1597---
1598
1599
1600# GFX10-LABEL: name: gfx10_tbuffer_load_merge_across_swizzle
1601# GFX10-DAG: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 12, 22, 0, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1602# GFX10-DAG: %{{[0-9]+}}:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %4, 0, 4, 64, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
1603name: gfx10_tbuffer_load_merge_across_swizzle
1604body:             |
1605  bb.0.entry:
1606    %0:sgpr_32 = COPY $sgpr0
1607    %1:sgpr_32 = COPY $sgpr1
1608    %2:sgpr_32 = COPY $sgpr2
1609    %3:sgpr_32 = COPY $sgpr3
1610    %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
1611    %5:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4:sgpr_128, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1612    %6:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4:sgpr_128, 0, 12, 22, 0, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1613    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4:sgpr_128, 0, 8, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1614...
1615---
1616
1617
1618#
1619# GFX11 tests
1620#
1621
1622# GFX11-LABEL: name: gfx11_tbuffer_load_x_xyz
1623# GFX11: %{{[0-9]+}}:vreg_128 = TBUFFER_LOAD_FORMAT_XYZW_OFFSET %4, 0, 4, 63, 0, 0, 0, implicit $exec :: (dereferenceable load (s128), align 1, addrspace 4)
1624# GFX11: %{{[0-9]+}}:vgpr_32 = COPY %7.sub0
1625# GFX11: %{{[0-9]+}}:vreg_96 = COPY killed %7.sub1_sub2_sub3
1626name: gfx11_tbuffer_load_x_xyz
1627body:             |
1628  bb.0.entry:
1629    %0:sgpr_32 = COPY $sgpr0
1630    %1:sgpr_32 = COPY $sgpr1
1631    %2:sgpr_32 = COPY $sgpr2
1632    %3:sgpr_32 = COPY $sgpr3
1633    %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
1634    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1635    %8:vreg_96 = TBUFFER_LOAD_FORMAT_XYZ_OFFSET %5:sgpr_128, 0, 8, 60, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 1, addrspace 4)
1636...
1637---
1638
1639# GFX11-LABEL: name: gfx11_tbuffer_load_xyz_x
1640# GFX11: %{{[0-9]+}}:vreg_128 = TBUFFER_LOAD_FORMAT_XYZW_OFFSET %4, 0, 4, 63, 0, 0, 0, implicit $exec :: (dereferenceable load (s128), align 1, addrspace 4)
1641# GFX11: %{{[0-9]+}}:vreg_96 = COPY %7.sub0_sub1_sub2
1642# GFX11: %{{[0-9]+}}:vgpr_32 = COPY killed %7.sub3
1643name: gfx11_tbuffer_load_xyz_x
1644body:             |
1645  bb.0.entry:
1646    %0:sgpr_32 = COPY $sgpr0
1647    %1:sgpr_32 = COPY $sgpr1
1648    %2:sgpr_32 = COPY $sgpr2
1649    %3:sgpr_32 = COPY $sgpr3
1650    %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
1651    %7:vreg_96 = TBUFFER_LOAD_FORMAT_XYZ_OFFSET %5:sgpr_128, 0, 4, 60, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1652    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 16, 22, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 1, addrspace 4)
1653...
1654---
1655
1656# GFX11-LABEL: name: gfx11_tbuffer_load_xy_xy
1657# GFX11: %{{[0-9]+}}:vreg_128 = TBUFFER_LOAD_FORMAT_XYZW_OFFSET %4, 0, 4, 63, 0, 0, 0, implicit $exec :: (dereferenceable load (s128), align 1, addrspace 4)
1658# GFX11: %{{[0-9]+}}:vreg_64 = COPY %7.sub0_sub1
1659# GFX11: %{{[0-9]+}}:vreg_64 = COPY killed %7.sub2_sub3
1660name: gfx11_tbuffer_load_xy_xy
1661body:             |
1662  bb.0.entry:
1663    %0:sgpr_32 = COPY $sgpr0
1664    %1:sgpr_32 = COPY $sgpr1
1665    %2:sgpr_32 = COPY $sgpr2
1666    %3:sgpr_32 = COPY $sgpr3
1667    %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
1668    %7:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %5:sgpr_128, 0, 4, 50, 0, 0, 0, implicit $exec :: (dereferenceable load 8, align 1, addrspace 4)
1669    %8:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %5:sgpr_128, 0, 12, 50, 0, 0, 0, implicit $exec :: (dereferenceable load 8, align 1, addrspace 4)
1670...
1671---
1672
1673# GFX11-LABEL: name: gfx11_tbuffer_load_x_xy
1674# GFX11: %{{[0-9]+}}:vreg_96 = TBUFFER_LOAD_FORMAT_XYZ_OFFSET %4, 0, 4, 60, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4)
1675# GFX11: %{{[0-9]+}}:vgpr_32 = COPY %7.sub0
1676# GFX11: %{{[0-9]+}}:vreg_64 = COPY killed %7.sub1_sub2
1677name: gfx11_tbuffer_load_x_xy
1678body:             |
1679  bb.0.entry:
1680    %0:sgpr_32 = COPY $sgpr0
1681    %1:sgpr_32 = COPY $sgpr1
1682    %2:sgpr_32 = COPY $sgpr2
1683    %3:sgpr_32 = COPY $sgpr3
1684    %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
1685    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1686    %8:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %5:sgpr_128, 0, 8, 50, 0, 0, 0, implicit $exec :: (dereferenceable load 8, align 1, addrspace 4)
1687...
1688---
1689
1690# GFX11-LABEL: name: gfx11_tbuffer_load_xy_x
1691# GFX11: %{{[0-9]+}}:vreg_96 = TBUFFER_LOAD_FORMAT_XYZ_OFFSET %4, 0, 4, 60, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4)
1692# GFX11: %{{[0-9]+}}:vreg_64 = COPY %7.sub0_sub1
1693# GFX11: %{{[0-9]+}}:vgpr_32 = COPY killed %7.sub2
1694name: gfx11_tbuffer_load_xy_x
1695body:             |
1696  bb.0.entry:
1697    %0:sgpr_32 = COPY $sgpr0
1698    %1:sgpr_32 = COPY $sgpr1
1699    %2:sgpr_32 = COPY $sgpr2
1700    %3:sgpr_32 = COPY $sgpr3
1701    %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
1702    %7:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %5:sgpr_128, 0, 4, 50, 0, 0, 0, implicit $exec :: (dereferenceable load 8, align 1, addrspace 4)
1703    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 12, 22, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1704...
1705---
1706
1707
1708# GFX11-LABEL: name: gfx11_tbuffer_load_x_x
1709# GFX11: %{{[0-9]+}}:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %4, 0, 4, 50, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
1710# GFX11: %{{[0-9]+}}:vgpr_32 = COPY %7.sub0
1711# GFX11: %{{[0-9]+}}:vgpr_32 = COPY killed %7.sub1
1712
1713name: gfx11_tbuffer_load_x_x
1714body:             |
1715  bb.0.entry:
1716    %0:sgpr_32 = COPY $sgpr0
1717    %1:sgpr_32 = COPY $sgpr1
1718    %2:sgpr_32 = COPY $sgpr2
1719    %3:sgpr_32 = COPY $sgpr3
1720    %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
1721    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1722    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 22, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1723...
1724---
1725
1726# GFX11-LABEL: name: gfx11_tbuffer_load_x_x_format_32_32_32_32
1727# GFX11: %{{[0-9]+}}:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %4, 0, 4, 50, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
1728# GFX11: %{{[0-9]+}}:vgpr_32 = COPY %7.sub0
1729# GFX11: %{{[0-9]+}}:vgpr_32 = COPY killed %7.sub1
1730
1731name: gfx11_tbuffer_load_x_x_format_32_32_32_32
1732body:             |
1733  bb.0.entry:
1734    %0:sgpr_32 = COPY $sgpr0
1735    %1:sgpr_32 = COPY $sgpr1
1736    %2:sgpr_32 = COPY $sgpr2
1737    %3:sgpr_32 = COPY $sgpr3
1738    %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
1739    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 63, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1740    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 63, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1741...
1742---
1743
1744
1745# GFX11-LABEL: name: gfx11_tbuffer_load_float_32
1746# GFX11: %{{[0-9]+}}:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %4, 0, 4, 50, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
1747# GFX11: %{{[0-9]+}}:vgpr_32 = COPY %14.sub0
1748# GFX11: %{{[0-9]+}}:vgpr_32 = COPY killed %14.sub1
1749# GFX11: %{{[0-9]+}}:vreg_128 = TBUFFER_LOAD_FORMAT_XYZW_OFFSET %4, 0, 16, 63, 0, 0, 0, implicit $exec :: (dereferenceable load (s128), align 1, addrspace 4)
1750# GFX11: %{{[0-9]+}}:vreg_96 = COPY %17.sub0_sub1_sub2
1751# GFX11: %{{[0-9]+}}:vgpr_32 = COPY killed %17.sub3
1752# GFX11: %{{[0-9]+}}:vreg_64 = COPY %16.sub0_sub1
1753# GFX11: %{{[0-9]+}}:vgpr_32 = COPY killed %16.sub2
1754# GFX11: %{{[0-9]+}}:vgpr_32 = COPY %15.sub0
1755# GFX11: %{{[0-9]+}}:vgpr_32 = COPY killed %15.sub1
1756# GFX11: %{{[0-9]+}}:vreg_96 = TBUFFER_LOAD_FORMAT_XYZ_OFFSET %4, 0, 36, 60, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4)
1757# GFX11: %{{[0-9]+}}:vreg_64 = COPY %19.sub0_sub1
1758# GFX11: %{{[0-9]+}}:vgpr_32 = COPY killed %19.sub2
1759# GFX11: %{{[0-9]+}}:vgpr_32 = COPY %18.sub0
1760# GFX11: %{{[0-9]+}}:vgpr_32 = COPY killed %18.sub1
1761
1762name: gfx11_tbuffer_load_float_32
1763body:             |
1764  bb.0.entry:
1765    %0:sgpr_32 = COPY $sgpr0
1766    %1:sgpr_32 = COPY $sgpr1
1767    %2:sgpr_32 = COPY $sgpr2
1768    %3:sgpr_32 = COPY $sgpr3
1769    %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
1770    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1771    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 22, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1772    %9:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 16, 22, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1773    %10:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 20, 22, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1774    %11:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 24, 22, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1775    %12:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 28, 22, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1776    %13:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 36, 22, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1777    %14:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 40, 22, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1778    %15:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 44, 22, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1779...
1780---
1781
1782# GFX11-LABEL: name: gfx11_tbuffer_load_sint_32
1783# GFX11: %{{[0-9]+}}:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %4, 0, 4, 49, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
1784# GFX11: %{{[0-9]+}}:vgpr_32 = COPY %14.sub0
1785# GFX11: %{{[0-9]+}}:vgpr_32 = COPY killed %14.sub1
1786# GFX11: %{{[0-9]+}}:vreg_128 = TBUFFER_LOAD_FORMAT_XYZW_OFFSET %4, 0, 16, 62, 0, 0, 0, implicit $exec :: (dereferenceable load (s128), align 1, addrspace 4)
1787# GFX11: %{{[0-9]+}}:vreg_96 = COPY %17.sub0_sub1_sub2
1788# GFX11: %{{[0-9]+}}:vgpr_32 = COPY killed %17.sub3
1789# GFX11: %{{[0-9]+}}:vreg_64 = COPY %16.sub0_sub1
1790# GFX11: %{{[0-9]+}}:vgpr_32 = COPY killed %16.sub2
1791# GFX11: %{{[0-9]+}}:vgpr_32 = COPY %15.sub0
1792# GFX11: %{{[0-9]+}}:vgpr_32 = COPY killed %15.sub1
1793# GFX11: %{{[0-9]+}}:vreg_96 = TBUFFER_LOAD_FORMAT_XYZ_OFFSET %4, 0, 36, 59, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4)
1794# GFX11: %{{[0-9]+}}:vreg_64 = COPY %19.sub0_sub1
1795# GFX11: %{{[0-9]+}}:vgpr_32 = COPY killed %19.sub2
1796# GFX11: %{{[0-9]+}}:vgpr_32 = COPY %18.sub0
1797# GFX11: %{{[0-9]+}}:vgpr_32 = COPY killed %18.sub1
1798
1799name: gfx11_tbuffer_load_sint_32
1800body:             |
1801  bb.0.entry:
1802    %0:sgpr_32 = COPY $sgpr0
1803    %1:sgpr_32 = COPY $sgpr1
1804    %2:sgpr_32 = COPY $sgpr2
1805    %3:sgpr_32 = COPY $sgpr3
1806    %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
1807    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 21, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1808    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 21, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1809    %9:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 16, 21, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1810    %10:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 20, 21, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1811    %11:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 24, 21, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1812    %12:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 28, 21, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1813    %13:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 36, 21, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1814    %14:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 40, 21, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1815    %15:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 44, 21, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1816...
1817---
1818
1819# GFX11-LABEL: name: gfx11_tbuffer_load_uint_32
1820# GFX11: %{{[0-9]+}}:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %4, 0, 4, 48, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
1821# GFX11: %{{[0-9]+}}:vgpr_32 = COPY %14.sub0
1822# GFX11: %{{[0-9]+}}:vgpr_32 = COPY killed %14.sub1
1823# GFX11: %{{[0-9]+}}:vreg_128 = TBUFFER_LOAD_FORMAT_XYZW_OFFSET %4, 0, 16, 61, 0, 0, 0, implicit $exec :: (dereferenceable load (s128), align 1, addrspace 4)
1824# GFX11: %{{[0-9]+}}:vreg_96 = COPY %17.sub0_sub1_sub2
1825# GFX11: %{{[0-9]+}}:vgpr_32 = COPY killed %17.sub3
1826# GFX11: %{{[0-9]+}}:vreg_64 = COPY %16.sub0_sub1
1827# GFX11: %{{[0-9]+}}:vgpr_32 = COPY killed %16.sub2
1828# GFX11: %{{[0-9]+}}:vgpr_32 = COPY %15.sub0
1829# GFX11: %{{[0-9]+}}:vgpr_32 = COPY killed %15.sub1
1830# GFX11: %{{[0-9]+}}:vreg_96 = TBUFFER_LOAD_FORMAT_XYZ_OFFSET %4, 0, 36, 58, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4)
1831# GFX11: %{{[0-9]+}}:vreg_64 = COPY %19.sub0_sub1
1832# GFX11: %{{[0-9]+}}:vgpr_32 = COPY killed %19.sub2
1833# GFX11: %{{[0-9]+}}:vgpr_32 = COPY %18.sub0
1834# GFX11: %{{[0-9]+}}:vgpr_32 = COPY killed %18.sub1
1835
1836name: gfx11_tbuffer_load_uint_32
1837body:             |
1838  bb.0.entry:
1839    %0:sgpr_32 = COPY $sgpr0
1840    %1:sgpr_32 = COPY $sgpr1
1841    %2:sgpr_32 = COPY $sgpr2
1842    %3:sgpr_32 = COPY $sgpr3
1843    %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
1844    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 20, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1845    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 20, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1846    %9:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 16, 20, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1847    %10:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 20, 20, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1848    %11:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 24, 20, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1849    %12:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 28, 20, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1850    %13:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 36, 20, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1851    %14:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 40, 20, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1852    %15:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 44, 20, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1853...
1854---
1855
1856# GFX11-LABEL: name: gfx11_tbuffer_load_not_merged_data_format_mismatch
1857# GFX11: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
1858# GFX11: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
1859# GFX11: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
1860# GFX11: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
1861# GFX11: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %0, %subreg.sub0, %1, %subreg.sub1, %2, %subreg.sub2, %3, %subreg.sub3
1862# GFX11: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1863# GFX11: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 8, 13, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1864# GFX11: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 16, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1865# GFX11: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 20, 13, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1866# GFX11: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 24, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1867# GFX11: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 28, 13, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1868# GFX11: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 36, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1869# GFX11: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 40, 13, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1870# GFX11: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 44, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1871
1872
1873name: gfx11_tbuffer_load_not_merged_data_format_mismatch
1874body:             |
1875  bb.0.entry:
1876    %0:sgpr_32 = COPY $sgpr0
1877    %1:sgpr_32 = COPY $sgpr1
1878    %2:sgpr_32 = COPY $sgpr2
1879    %3:sgpr_32 = COPY $sgpr3
1880    %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
1881    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1882    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 13, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1883    %9:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 16, 22, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1884    %10:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 20, 13, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1885    %11:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 24, 22, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1886    %12:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 28, 13, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1887    %13:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 36, 22, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1888    %14:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 40, 13, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1889    %15:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 44, 22, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1890...
1891---
1892
1893# GFX11-LABEL: name: gfx11_tbuffer_load_not_merged_num_format_mismatch
1894# GFX11: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
1895# GFX11: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
1896# GFX11: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
1897# GFX11: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
1898# GFX11: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %0, %subreg.sub0, %1, %subreg.sub1, %2, %subreg.sub2, %3, %subreg.sub3
1899# GFX11: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1900# GFX11: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 8, 21, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1901# GFX11: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 16, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1902# GFX11: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 20, 21, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1903# GFX11: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 24, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1904# GFX11: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 28, 21, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1905# GFX11: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 36, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1906# GFX11: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 40, 21, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1907# GFX11: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 44, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
1908name: gfx11_tbuffer_load_not_merged_num_format_mismatch
1909body:             |
1910  bb.0.entry:
1911    %0:sgpr_32 = COPY $sgpr0
1912    %1:sgpr_32 = COPY $sgpr1
1913    %2:sgpr_32 = COPY $sgpr2
1914    %3:sgpr_32 = COPY $sgpr3
1915    %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
1916    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1917    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 21, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1918    %9:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 16, 22, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1919    %10:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 20, 21, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1920    %11:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 24, 22, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1921    %12:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 28, 21, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1922    %13:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 36, 22, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1923    %14:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 40, 21, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1924    %15:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 44, 22, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
1925...
1926---
1927
1928
1929
1930# GFX11-LABEL: name: gfx11_tbuffer_store_x_xyz
1931# GFX11: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE %3, %subreg.sub0, %2, %subreg.sub1, %1, %subreg.sub2
1932# GFX11: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE %0, %subreg.sub0, %9, %subreg.sub1_sub2_sub3
1933# GFX11: TBUFFER_STORE_FORMAT_XYZW_OFFSET_exact killed %10, %8, 0, 4, 63, 0, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 4)
1934name: gfx11_tbuffer_store_x_xyz
1935body:             |
1936  bb.0.entry:
1937    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
1938    %7:vgpr_32 = COPY $vgpr3
1939    %6:vgpr_32 = COPY $vgpr2
1940    %5:vgpr_32 = COPY $vgpr1
1941    %4:vgpr_32 = COPY $vgpr0
1942    %3:sgpr_32 = COPY $sgpr3
1943    %2:sgpr_32 = COPY $sgpr2
1944    %1:sgpr_32 = COPY $sgpr1
1945    %0:sgpr_32 = COPY $sgpr0
1946    %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
1947    %14:vreg_96 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1, %6:vgpr_32, %subreg.sub2
1948    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
1949    TBUFFER_STORE_FORMAT_XYZ_OFFSET_exact %14:vreg_96, %13:sgpr_128, 0, 8, 60, 0, 0, 0, implicit $exec :: (dereferenceable store 12, align 1, addrspace 4)
1950...
1951---
1952
1953
1954# GFX11-LABEL: name: gfx11_tbuffer_store_xyz_x
1955# GFX11: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE %3, %subreg.sub0, %2, %subreg.sub1, %1, %subreg.sub2
1956# GFX11: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE %9, %subreg.sub0_sub1_sub2, %0, %subreg.sub3
1957# GFX11: TBUFFER_STORE_FORMAT_XYZW_OFFSET_exact killed %10, %8, 0, 4, 63, 0, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 4)
1958name: gfx11_tbuffer_store_xyz_x
1959body:             |
1960  bb.0.entry:
1961    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
1962    %7:vgpr_32 = COPY $vgpr3
1963    %6:vgpr_32 = COPY $vgpr2
1964    %5:vgpr_32 = COPY $vgpr1
1965    %4:vgpr_32 = COPY $vgpr0
1966    %3:sgpr_32 = COPY $sgpr3
1967    %2:sgpr_32 = COPY $sgpr2
1968    %1:sgpr_32 = COPY $sgpr1
1969    %0:sgpr_32 = COPY $sgpr0
1970    %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
1971    %14:vreg_96 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1, %6:vgpr_32, %subreg.sub2
1972    TBUFFER_STORE_FORMAT_XYZ_OFFSET_exact %14:vreg_96, %13:sgpr_128, 0, 4, 60, 0, 0, 0, implicit $exec :: (dereferenceable store 12, align 1, addrspace 4)
1973    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 16, 22, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
1974...
1975---
1976
1977# GFX11-LABEL: name: gfx11_tbuffer_store_xy_xy
1978# GFX11: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %3, %subreg.sub0, %2, %subreg.sub1
1979# GFX11: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %1, %subreg.sub0, %0, %subreg.sub1
1980# GFX11: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE %9, %subreg.sub0_sub1, %10, %subreg.sub2_sub3
1981# GFX11: TBUFFER_STORE_FORMAT_XYZW_OFFSET_exact killed %11, %8, 0, 4, 63, 0, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 4)
1982name: gfx11_tbuffer_store_xy_xy
1983body:             |
1984  bb.0.entry:
1985    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
1986    %7:vgpr_32 = COPY $vgpr3
1987    %6:vgpr_32 = COPY $vgpr2
1988    %5:vgpr_32 = COPY $vgpr1
1989    %4:vgpr_32 = COPY $vgpr0
1990    %3:sgpr_32 = COPY $sgpr3
1991    %2:sgpr_32 = COPY $sgpr2
1992    %1:sgpr_32 = COPY $sgpr1
1993    %0:sgpr_32 = COPY $sgpr0
1994    %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
1995    %14:vreg_64 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1
1996    %15:vreg_64 = REG_SEQUENCE %6:vgpr_32, %subreg.sub0, %7:vgpr_32, %subreg.sub1
1997    TBUFFER_STORE_FORMAT_XY_OFFSET_exact %14:vreg_64, %13:sgpr_128, 0, 4, 50, 0, 0, 0, implicit $exec :: (dereferenceable store 8, align 1, addrspace 4)
1998    TBUFFER_STORE_FORMAT_XY_OFFSET_exact %15:vreg_64, %13:sgpr_128, 0, 12, 50, 0, 0, 0, implicit $exec :: (dereferenceable store 8, align 1, addrspace 4)
1999...
2000---
2001
2002# GFX11-LABEL: name: gfx11_tbuffer_store_x_xy
2003# GFX11: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %3, %subreg.sub0, %2, %subreg.sub1
2004# GFX11: %{{[0-9]+}}:vreg_64, %subreg.sub1_sub2
2005# GFX11: TBUFFER_STORE_FORMAT_XYZ_OFFSET_exact killed %11, %8, 0, 4, 60, 0, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4)
2006name: gfx11_tbuffer_store_x_xy
2007body:             |
2008  bb.0.entry:
2009    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
2010    %7:vgpr_32 = COPY $vgpr3
2011    %6:vgpr_32 = COPY $vgpr2
2012    %5:vgpr_32 = COPY $vgpr1
2013    %4:vgpr_32 = COPY $vgpr0
2014    %3:sgpr_32 = COPY $sgpr3
2015    %2:sgpr_32 = COPY $sgpr2
2016    %1:sgpr_32 = COPY $sgpr1
2017    %0:sgpr_32 = COPY $sgpr0
2018    %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
2019    %14:vreg_64 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1
2020    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2021    TBUFFER_STORE_FORMAT_XY_OFFSET_exact %15:vreg_64, %13:sgpr_128, 0, 8, 50, 0, 0, 0, implicit $exec :: (dereferenceable store 8, align 1, addrspace 4)
2022...
2023---
2024
2025# GFX11-LABEL: name: gfx11_tbuffer_store_xy_x
2026# GFX11: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %3, %subreg.sub0, %2, %subreg.sub1
2027# GFX11: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE %9, %subreg.sub0_sub1, %0, %subreg.sub2
2028# GFX11: TBUFFER_STORE_FORMAT_XYZ_OFFSET_exact killed %10, %8, 0, 4, 60, 0, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4)
2029name: gfx11_tbuffer_store_xy_x
2030body:             |
2031  bb.0.entry:
2032    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
2033    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
2034    %7:vgpr_32 = COPY $vgpr3
2035    %6:vgpr_32 = COPY $vgpr2
2036    %5:vgpr_32 = COPY $vgpr1
2037    %4:vgpr_32 = COPY $vgpr0
2038    %3:sgpr_32 = COPY $sgpr3
2039    %2:sgpr_32 = COPY $sgpr2
2040    %1:sgpr_32 = COPY $sgpr1
2041    %0:sgpr_32 = COPY $sgpr0
2042    %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
2043    %14:vreg_64 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1
2044    TBUFFER_STORE_FORMAT_XY_OFFSET_exact %14:vreg_64, %13:sgpr_128, 0, 4, 50, 0, 0, 0, implicit $exec :: (dereferenceable store 8, align 1, addrspace 4)
2045    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 12, 22, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2046...
2047---
2048
2049
2050# GFX11-LABEL: name: gfx11_tbuffer_store_x_x
2051# GFX11: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %1, %subreg.sub0, %0, %subreg.sub1
2052# GFX11: TBUFFER_STORE_FORMAT_XY_OFFSET_exact killed %9, %8, 0, 4, 50, 0, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
2053name: gfx11_tbuffer_store_x_x
2054body:             |
2055  bb.0.entry:
2056    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
2057    %7:vgpr_32 = COPY $vgpr3
2058    %6:vgpr_32 = COPY $vgpr2
2059    %5:vgpr_32 = COPY $vgpr1
2060    %4:vgpr_32 = COPY $vgpr0
2061    %3:sgpr_32 = COPY $sgpr3
2062    %2:sgpr_32 = COPY $sgpr2
2063    %1:sgpr_32 = COPY $sgpr1
2064    %0:sgpr_32 = COPY $sgpr0
2065    %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
2066    TBUFFER_STORE_FORMAT_X_OFFSET_exact %6:vgpr_32, %13:sgpr_128, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2067    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 8, 22, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2068...
2069---
2070
2071# GFX11-LABEL: name: gfx11_tbuffer_store_x_x_format_32_32_32_32
2072# GFX11: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %1, %subreg.sub0, %0, %subreg.sub1
2073# GFX11: TBUFFER_STORE_FORMAT_XY_OFFSET_exact killed %9, %8, 0, 4, 50, 0, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
2074name: gfx11_tbuffer_store_x_x_format_32_32_32_32
2075body:             |
2076  bb.0.entry:
2077    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
2078    %7:vgpr_32 = COPY $vgpr3
2079    %6:vgpr_32 = COPY $vgpr2
2080    %5:vgpr_32 = COPY $vgpr1
2081    %4:vgpr_32 = COPY $vgpr0
2082    %3:sgpr_32 = COPY $sgpr3
2083    %2:sgpr_32 = COPY $sgpr2
2084    %1:sgpr_32 = COPY $sgpr1
2085    %0:sgpr_32 = COPY $sgpr0
2086    %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
2087    TBUFFER_STORE_FORMAT_X_OFFSET_exact %6:vgpr_32, %13:sgpr_128, 0, 4, 63, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2088    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 8, 63, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2089...
2090---
2091
2092# GFX11-LABEL: name: gfx11_tbuffer_store_float32
2093# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr8
2094# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr7
2095# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr6
2096# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr5
2097# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr4
2098# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr3
2099# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr2
2100# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr1
2101# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr0
2102# GFX11: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
2103# GFX11: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
2104# GFX11: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
2105# GFX11: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
2106# GFX11: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %12, %subreg.sub0, %11, %subreg.sub1, %10, %subreg.sub2, %9, %subreg.sub3
2107# GFX11: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %8, %subreg.sub0, %7, %subreg.sub1
2108# GFX11: TBUFFER_STORE_FORMAT_XY_OFFSET_exact killed %14, %13, 0, 4, 50, 0, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
2109# GFX11: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %6, %subreg.sub0, %5, %subreg.sub1
2110# GFX11: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %15, %subreg.sub0_sub1, %4, %subreg.sub2
2111# GFX11: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE killed %16, %subreg.sub0_sub1_sub2, %3, %subreg.sub3
2112# GFX11: TBUFFER_STORE_FORMAT_XYZW_OFFSET_exact killed %17, %13, 0, 16, 63, 0, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 4)
2113# GFX11: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %2, %subreg.sub0, %1, %subreg.sub1
2114# GFX11: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %18, %subreg.sub0_sub1, %0, %subreg.sub2
2115# GFX11: TBUFFER_STORE_FORMAT_XYZ_OFFSET_exact killed %19, %13, 0, 36, 60, 0, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4)
2116name: gfx11_tbuffer_store_float32
2117body:             |
2118  bb.0.entry:
2119    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
2120    %12:vgpr_32 = COPY $vgpr8
2121    %11:vgpr_32 = COPY $vgpr7
2122    %10:vgpr_32 = COPY $vgpr6
2123    %9:vgpr_32 = COPY $vgpr5
2124    %8:vgpr_32 = COPY $vgpr4
2125    %7:vgpr_32 = COPY $vgpr3
2126    %6:vgpr_32 = COPY $vgpr2
2127    %5:vgpr_32 = COPY $vgpr1
2128    %4:vgpr_32 = COPY $vgpr0
2129    %3:sgpr_32 = COPY $sgpr3
2130    %2:sgpr_32 = COPY $sgpr2
2131    %1:sgpr_32 = COPY $sgpr1
2132    %0:sgpr_32 = COPY $sgpr0
2133    %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
2134    TBUFFER_STORE_FORMAT_X_OFFSET_exact %4:vgpr_32, %13:sgpr_128, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2135    TBUFFER_STORE_FORMAT_X_OFFSET_exact %5:vgpr_32, %13:sgpr_128, 0, 8, 22, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2136    TBUFFER_STORE_FORMAT_X_OFFSET_exact %6:vgpr_32, %13:sgpr_128, 0, 16, 22, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2137    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 20, 22, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2138    TBUFFER_STORE_FORMAT_X_OFFSET_exact %8:vgpr_32, %13:sgpr_128, 0, 24, 22, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2139    TBUFFER_STORE_FORMAT_X_OFFSET_exact %9:vgpr_32, %13:sgpr_128, 0, 28, 22, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2140    TBUFFER_STORE_FORMAT_X_OFFSET_exact %10:vgpr_32, %13:sgpr_128, 0, 36, 22, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2141    TBUFFER_STORE_FORMAT_X_OFFSET_exact %11:vgpr_32, %13:sgpr_128, 0, 40, 22, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2142    TBUFFER_STORE_FORMAT_X_OFFSET_exact %12:vgpr_32, %13:sgpr_128, 0, 44, 22, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2143...
2144---
2145
2146# GFX11-LABEL: name: gfx11_tbuffer_store_sint32
2147# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr8
2148# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr7
2149# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr6
2150# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr5
2151# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr4
2152# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr3
2153# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr2
2154# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr1
2155# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr0
2156# GFX11: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
2157# GFX11: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
2158# GFX11: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
2159# GFX11: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
2160# GFX11: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %12, %subreg.sub0, %11, %subreg.sub1, %10, %subreg.sub2, %9, %subreg.sub3
2161# GFX11: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %8, %subreg.sub0, %7, %subreg.sub1
2162# GFX11: TBUFFER_STORE_FORMAT_XY_OFFSET_exact killed %14, %13, 0, 4, 49, 0, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
2163# GFX11: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %6, %subreg.sub0, %5, %subreg.sub1
2164# GFX11: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %15, %subreg.sub0_sub1, %4, %subreg.sub2
2165# GFX11: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE killed %16, %subreg.sub0_sub1_sub2, %3, %subreg.sub3
2166# GFX11: TBUFFER_STORE_FORMAT_XYZW_OFFSET_exact killed %17, %13, 0, 16, 62, 0, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 4)
2167# GFX11: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %2, %subreg.sub0, %1, %subreg.sub1
2168# GFX11: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %18, %subreg.sub0_sub1, %0, %subreg.sub2
2169# GFX11: TBUFFER_STORE_FORMAT_XYZ_OFFSET_exact killed %19, %13, 0, 36, 59, 0, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4)
2170name: gfx11_tbuffer_store_sint32
2171body:             |
2172  bb.0.entry:
2173    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
2174    %12:vgpr_32 = COPY $vgpr8
2175    %11:vgpr_32 = COPY $vgpr7
2176    %10:vgpr_32 = COPY $vgpr6
2177    %9:vgpr_32 = COPY $vgpr5
2178    %8:vgpr_32 = COPY $vgpr4
2179    %7:vgpr_32 = COPY $vgpr3
2180    %6:vgpr_32 = COPY $vgpr2
2181    %5:vgpr_32 = COPY $vgpr1
2182    %4:vgpr_32 = COPY $vgpr0
2183    %3:sgpr_32 = COPY $sgpr3
2184    %2:sgpr_32 = COPY $sgpr2
2185    %1:sgpr_32 = COPY $sgpr1
2186    %0:sgpr_32 = COPY $sgpr0
2187    %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
2188    TBUFFER_STORE_FORMAT_X_OFFSET_exact %4:vgpr_32, %13:sgpr_128, 0, 4, 21, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2189    TBUFFER_STORE_FORMAT_X_OFFSET_exact %5:vgpr_32, %13:sgpr_128, 0, 8, 21, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2190    TBUFFER_STORE_FORMAT_X_OFFSET_exact %6:vgpr_32, %13:sgpr_128, 0, 16, 21, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2191    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 20, 21, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2192    TBUFFER_STORE_FORMAT_X_OFFSET_exact %8:vgpr_32, %13:sgpr_128, 0, 24, 21, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2193    TBUFFER_STORE_FORMAT_X_OFFSET_exact %9:vgpr_32, %13:sgpr_128, 0, 28, 21, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2194    TBUFFER_STORE_FORMAT_X_OFFSET_exact %10:vgpr_32, %13:sgpr_128, 0, 36, 21, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2195    TBUFFER_STORE_FORMAT_X_OFFSET_exact %11:vgpr_32, %13:sgpr_128, 0, 40, 21, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2196    TBUFFER_STORE_FORMAT_X_OFFSET_exact %12:vgpr_32, %13:sgpr_128, 0, 44, 21, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2197...
2198---
2199
2200# GFX11-LABEL: name: gfx11_tbuffer_store_uint32
2201# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr8
2202# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr7
2203# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr6
2204# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr5
2205# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr4
2206# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr3
2207# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr2
2208# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr1
2209# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr0
2210# GFX11: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
2211# GFX11: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
2212# GFX11: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
2213# GFX11: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
2214# GFX11: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %12, %subreg.sub0, %11, %subreg.sub1, %10, %subreg.sub2, %9, %subreg.sub3
2215# GFX11: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %8, %subreg.sub0, %7, %subreg.sub1
2216# GFX11: TBUFFER_STORE_FORMAT_XY_OFFSET_exact killed %14, %13, 0, 4, 48, 0, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4)
2217# GFX11: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %6, %subreg.sub0, %5, %subreg.sub1
2218# GFX11: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %15, %subreg.sub0_sub1, %4, %subreg.sub2
2219# GFX11: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE killed %16, %subreg.sub0_sub1_sub2, %3, %subreg.sub3
2220# GFX11: TBUFFER_STORE_FORMAT_XYZW_OFFSET_exact killed %17, %13, 0, 16, 61, 0, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 4)
2221# GFX11: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %2, %subreg.sub0, %1, %subreg.sub1
2222# GFX11: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %18, %subreg.sub0_sub1, %0, %subreg.sub2
2223# GFX11: TBUFFER_STORE_FORMAT_XYZ_OFFSET_exact killed %19, %13, 0, 36, 58, 0, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4)
2224name: gfx11_tbuffer_store_uint32
2225body:             |
2226  bb.0.entry:
2227    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
2228    %12:vgpr_32 = COPY $vgpr8
2229    %11:vgpr_32 = COPY $vgpr7
2230    %10:vgpr_32 = COPY $vgpr6
2231    %9:vgpr_32 = COPY $vgpr5
2232    %8:vgpr_32 = COPY $vgpr4
2233    %7:vgpr_32 = COPY $vgpr3
2234    %6:vgpr_32 = COPY $vgpr2
2235    %5:vgpr_32 = COPY $vgpr1
2236    %4:vgpr_32 = COPY $vgpr0
2237    %3:sgpr_32 = COPY $sgpr3
2238    %2:sgpr_32 = COPY $sgpr2
2239    %1:sgpr_32 = COPY $sgpr1
2240    %0:sgpr_32 = COPY $sgpr0
2241    %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
2242    TBUFFER_STORE_FORMAT_X_OFFSET_exact %4:vgpr_32, %13:sgpr_128, 0, 4, 20, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2243    TBUFFER_STORE_FORMAT_X_OFFSET_exact %5:vgpr_32, %13:sgpr_128, 0, 8, 20, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2244    TBUFFER_STORE_FORMAT_X_OFFSET_exact %6:vgpr_32, %13:sgpr_128, 0, 16, 20, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2245    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 20, 20, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2246    TBUFFER_STORE_FORMAT_X_OFFSET_exact %8:vgpr_32, %13:sgpr_128, 0, 24, 20, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2247    TBUFFER_STORE_FORMAT_X_OFFSET_exact %9:vgpr_32, %13:sgpr_128, 0, 28, 20, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2248    TBUFFER_STORE_FORMAT_X_OFFSET_exact %10:vgpr_32, %13:sgpr_128, 0, 36, 20, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2249    TBUFFER_STORE_FORMAT_X_OFFSET_exact %11:vgpr_32, %13:sgpr_128, 0, 40, 20, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2250    TBUFFER_STORE_FORMAT_X_OFFSET_exact %12:vgpr_32, %13:sgpr_128, 0, 44, 20, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2251...
2252---
2253
2254# GFX11-LABEL: name: gfx11_tbuffer_store_not_merged_data_format_mismatch
2255# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr8
2256# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr7
2257# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr6
2258# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr5
2259# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr4
2260# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr3
2261# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr2
2262# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr1
2263# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr0
2264# GFX11: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
2265# GFX11: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
2266# GFX11: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
2267# GFX11: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
2268# GFX11: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %12, %subreg.sub0, %11, %subreg.sub1, %10, %subreg.sub2, %9, %subreg.sub3
2269# GFX11: TBUFFER_STORE_FORMAT_X_OFFSET_exact %8, %13, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
2270# GFX11: TBUFFER_STORE_FORMAT_X_OFFSET_exact %7, %13, 0, 8, 21, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
2271# GFX11: TBUFFER_STORE_FORMAT_X_OFFSET_exact %6, %13, 0, 16, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
2272# GFX11: TBUFFER_STORE_FORMAT_X_OFFSET_exact %5, %13, 0, 20, 21, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
2273# GFX11: TBUFFER_STORE_FORMAT_X_OFFSET_exact %4, %13, 0, 24, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
2274# GFX11: TBUFFER_STORE_FORMAT_X_OFFSET_exact %3, %13, 0, 28, 21, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
2275# GFX11: TBUFFER_STORE_FORMAT_X_OFFSET_exact %2, %13, 0, 30, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
2276# GFX11: TBUFFER_STORE_FORMAT_X_OFFSET_exact %1, %13, 0, 40, 21, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
2277# GFX11: TBUFFER_STORE_FORMAT_X_OFFSET_exact %0, %13, 0, 32, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
2278name: gfx11_tbuffer_store_not_merged_data_format_mismatch
2279body:             |
2280  bb.0.entry:
2281    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
2282    %12:vgpr_32 = COPY $vgpr8
2283    %11:vgpr_32 = COPY $vgpr7
2284    %10:vgpr_32 = COPY $vgpr6
2285    %9:vgpr_32 = COPY $vgpr5
2286    %8:vgpr_32 = COPY $vgpr4
2287    %7:vgpr_32 = COPY $vgpr3
2288    %6:vgpr_32 = COPY $vgpr2
2289    %5:vgpr_32 = COPY $vgpr1
2290    %4:vgpr_32 = COPY $vgpr0
2291    %3:sgpr_32 = COPY $sgpr3
2292    %2:sgpr_32 = COPY $sgpr2
2293    %1:sgpr_32 = COPY $sgpr1
2294    %0:sgpr_32 = COPY $sgpr0
2295    %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
2296    TBUFFER_STORE_FORMAT_X_OFFSET_exact %4:vgpr_32, %13:sgpr_128, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2297    TBUFFER_STORE_FORMAT_X_OFFSET_exact %5:vgpr_32, %13:sgpr_128, 0, 8, 21, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2298    TBUFFER_STORE_FORMAT_X_OFFSET_exact %6:vgpr_32, %13:sgpr_128, 0, 16, 22, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2299    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 20, 21, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2300    TBUFFER_STORE_FORMAT_X_OFFSET_exact %8:vgpr_32, %13:sgpr_128, 0, 24, 22, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2301    TBUFFER_STORE_FORMAT_X_OFFSET_exact %9:vgpr_32, %13:sgpr_128, 0, 28, 21, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2302    TBUFFER_STORE_FORMAT_X_OFFSET_exact %10:vgpr_32, %13:sgpr_128, 0, 30, 22, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2303    TBUFFER_STORE_FORMAT_X_OFFSET_exact %11:vgpr_32, %13:sgpr_128, 0, 40, 21, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2304    TBUFFER_STORE_FORMAT_X_OFFSET_exact %12:vgpr_32, %13:sgpr_128, 0, 32, 22, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2305...
2306---
2307
2308# GFX11-LABEL: name: gfx11_tbuffer_store_not_merged_num_format_mismatch
2309# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr8
2310# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr7
2311# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr6
2312# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr5
2313# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr4
2314# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr3
2315# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr2
2316# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr1
2317# GFX11: %{{[0-9]+}}:vgpr_32 = COPY $vgpr0
2318# GFX11: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
2319# GFX11: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
2320# GFX11: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
2321# GFX11: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
2322# GFX11: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %12, %subreg.sub0, %11, %subreg.sub1, %10, %subreg.sub2, %9, %subreg.sub3
2323# GFX11: TBUFFER_STORE_FORMAT_X_OFFSET_exact %8, %13, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
2324# GFX11: TBUFFER_STORE_FORMAT_X_OFFSET_exact %7, %13, 0, 8, 13, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
2325# GFX11: TBUFFER_STORE_FORMAT_X_OFFSET_exact %6, %13, 0, 16, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
2326# GFX11: TBUFFER_STORE_FORMAT_X_OFFSET_exact %5, %13, 0, 20, 13, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
2327# GFX11: TBUFFER_STORE_FORMAT_X_OFFSET_exact %4, %13, 0, 24, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
2328# GFX11: TBUFFER_STORE_FORMAT_X_OFFSET_exact %3, %13, 0, 28, 13, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
2329# GFX11: TBUFFER_STORE_FORMAT_X_OFFSET_exact %2, %13, 0, 30, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
2330# GFX11: TBUFFER_STORE_FORMAT_X_OFFSET_exact %1, %13, 0, 40, 13, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
2331# GFX11: TBUFFER_STORE_FORMAT_X_OFFSET_exact %0, %13, 0, 32, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
2332name: gfx11_tbuffer_store_not_merged_num_format_mismatch
2333body:             |
2334  bb.0.entry:
2335    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
2336    %12:vgpr_32 = COPY $vgpr8
2337    %11:vgpr_32 = COPY $vgpr7
2338    %10:vgpr_32 = COPY $vgpr6
2339    %9:vgpr_32 = COPY $vgpr5
2340    %8:vgpr_32 = COPY $vgpr4
2341    %7:vgpr_32 = COPY $vgpr3
2342    %6:vgpr_32 = COPY $vgpr2
2343    %5:vgpr_32 = COPY $vgpr1
2344    %4:vgpr_32 = COPY $vgpr0
2345    %3:sgpr_32 = COPY $sgpr3
2346    %2:sgpr_32 = COPY $sgpr2
2347    %1:sgpr_32 = COPY $sgpr1
2348    %0:sgpr_32 = COPY $sgpr0
2349    %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
2350    TBUFFER_STORE_FORMAT_X_OFFSET_exact %4:vgpr_32, %13:sgpr_128, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2351    TBUFFER_STORE_FORMAT_X_OFFSET_exact %5:vgpr_32, %13:sgpr_128, 0, 8, 13, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2352    TBUFFER_STORE_FORMAT_X_OFFSET_exact %6:vgpr_32, %13:sgpr_128, 0, 16, 22, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2353    TBUFFER_STORE_FORMAT_X_OFFSET_exact %7:vgpr_32, %13:sgpr_128, 0, 20, 13, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2354    TBUFFER_STORE_FORMAT_X_OFFSET_exact %8:vgpr_32, %13:sgpr_128, 0, 24, 22, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2355    TBUFFER_STORE_FORMAT_X_OFFSET_exact %9:vgpr_32, %13:sgpr_128, 0, 28, 13, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2356    TBUFFER_STORE_FORMAT_X_OFFSET_exact %10:vgpr_32, %13:sgpr_128, 0, 30, 22, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2357    TBUFFER_STORE_FORMAT_X_OFFSET_exact %11:vgpr_32, %13:sgpr_128, 0, 40, 13, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2358    TBUFFER_STORE_FORMAT_X_OFFSET_exact %12:vgpr_32, %13:sgpr_128, 0, 32, 22, 0, 0, 0, implicit $exec :: (dereferenceable store 4, align 1, addrspace 4)
2359...
2360---
2361
2362
2363# GFX11-LABEL: name: gfx11_tbuffer_load_not_merged_swizzled_0
2364# GFX11: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 4, 22, 0, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
2365# GFX11: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 8, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
2366name: gfx11_tbuffer_load_not_merged_swizzled_0
2367body:             |
2368  bb.0.entry:
2369    %0:sgpr_32 = COPY $sgpr0
2370    %1:sgpr_32 = COPY $sgpr1
2371    %2:sgpr_32 = COPY $sgpr2
2372    %3:sgpr_32 = COPY $sgpr3
2373    %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
2374    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 22, 0, 0, 1, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
2375    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 22, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
2376...
2377---
2378
2379
2380# GFX11-LABEL: name: gfx11_tbuffer_load_not_merged_swizzled_1
2381# GFX11: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
2382# GFX11: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 8, 22, 0, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
2383name: gfx11_tbuffer_load_not_merged_swizzled_1
2384body:             |
2385  bb.0.entry:
2386    %0:sgpr_32 = COPY $sgpr0
2387    %1:sgpr_32 = COPY $sgpr1
2388    %2:sgpr_32 = COPY $sgpr2
2389    %3:sgpr_32 = COPY $sgpr3
2390    %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
2391    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
2392    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 22, 0, 0, 1, implicit $exec :: (dereferenceable load 4, align 1, addrspace 4)
2393...
2394---
2395
2396
2397# GFX11-LABEL: name: gfx11_tbuffer_load_merge_across_swizzle
2398# GFX11: %{{[0-9]+}}:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFSET %4, 0, 4, 50, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4)
2399# GFX11: %{{[0-9]+}}:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %4, 0, 12, 22, 0, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
2400name: gfx11_tbuffer_load_merge_across_swizzle
2401body:             |
2402  bb.0.entry:
2403    %0:sgpr_32 = COPY $sgpr0
2404    %1:sgpr_32 = COPY $sgpr1
2405    %2:sgpr_32 = COPY $sgpr2
2406    %3:sgpr_32 = COPY $sgpr3
2407    %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
2408    %7:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
2409    %8:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 12, 22, 0, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
2410    %9:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFSET %5:sgpr_128, 0, 8, 22, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
2411...
2412---
2413