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
4#
5# GFX9 tests
6#
7
8# GFX9-LABEL: name: gfx9_tbuffer_load_x_xyz
9# 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)
10# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %7.sub0
11# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %7.sub1_sub2_sub3
12name: gfx9_tbuffer_load_x_xyz
13body:             |
14  bb.0.entry:
15    %0:sgpr_32 = COPY $sgpr0
16    %1:sgpr_32 = COPY $sgpr1
17    %2:sgpr_32 = COPY $sgpr2
18    %3:sgpr_32 = COPY $sgpr3
19    %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
20    %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)
21    %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)
22...
23---
24
25# GFX9-LABEL: name: gfx9_tbuffer_load_xyz_x
26# 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)
27# GFX9: %{{[0-9]+}}:vreg_96 = COPY %7.sub0_sub1_sub2
28# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %7.sub3
29name: gfx9_tbuffer_load_xyz_x
30body:             |
31  bb.0.entry:
32    %0:sgpr_32 = COPY $sgpr0
33    %1:sgpr_32 = COPY $sgpr1
34    %2:sgpr_32 = COPY $sgpr2
35    %3:sgpr_32 = COPY $sgpr3
36    %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
37    %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)
38    %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)
39...
40---
41
42# GFX9-LABEL: name: gfx9_tbuffer_load_xy_xy
43# 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)
44# GFX9: %{{[0-9]+}}:vreg_64 = COPY %7.sub0_sub1
45# GFX9: %{{[0-9]+}}:vreg_64 = COPY killed %7.sub2_sub3
46name: gfx9_tbuffer_load_xy_xy
47body:             |
48  bb.0.entry:
49    %0:sgpr_32 = COPY $sgpr0
50    %1:sgpr_32 = COPY $sgpr1
51    %2:sgpr_32 = COPY $sgpr2
52    %3:sgpr_32 = COPY $sgpr3
53    %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
54    %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)
55    %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)
56...
57---
58
59# GFX9-LABEL: name: gfx9_tbuffer_load_x_xy
60# 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)
61# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %7.sub0
62# GFX9: %{{[0-9]+}}:vreg_64 = COPY killed %7.sub1_sub2
63name: gfx9_tbuffer_load_x_xy
64body:             |
65  bb.0.entry:
66    %0:sgpr_32 = COPY $sgpr0
67    %1:sgpr_32 = COPY $sgpr1
68    %2:sgpr_32 = COPY $sgpr2
69    %3:sgpr_32 = COPY $sgpr3
70    %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
71    %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)
72    %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)
73...
74---
75
76# GFX9-LABEL: name: gfx9_tbuffer_load_xy_x
77# 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)
78# GFX9: %{{[0-9]+}}:vreg_64 = COPY %7.sub0_sub1
79# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %7.sub2
80name: gfx9_tbuffer_load_xy_x
81body:             |
82  bb.0.entry:
83    %0:sgpr_32 = COPY $sgpr0
84    %1:sgpr_32 = COPY $sgpr1
85    %2:sgpr_32 = COPY $sgpr2
86    %3:sgpr_32 = COPY $sgpr3
87    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
88    %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)
89    %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)
90...
91---
92
93
94# GFX9-LABEL: name: gfx9_tbuffer_load_x_x
95# 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)
96# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %7.sub0
97# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %7.sub1
98
99name: gfx9_tbuffer_load_x_x
100body:             |
101  bb.0.entry:
102    %0:sgpr_32 = COPY $sgpr0
103    %1:sgpr_32 = COPY $sgpr1
104    %2:sgpr_32 = COPY $sgpr2
105    %3:sgpr_32 = COPY $sgpr3
106    %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
107    %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)
108    %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)
109...
110---
111
112# GFX9-LABEL: name: gfx9_tbuffer_load_x_x_format_32_32_32_32
113# 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)
114# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %7.sub0
115# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %7.sub1
116
117name: gfx9_tbuffer_load_x_x_format_32_32_32_32
118body:             |
119  bb.0.entry:
120    %0:sgpr_32 = COPY $sgpr0
121    %1:sgpr_32 = COPY $sgpr1
122    %2:sgpr_32 = COPY $sgpr2
123    %3:sgpr_32 = COPY $sgpr3
124    %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
125    %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)
126    %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)
127...
128---
129
130
131# GFX9-LABEL: name: gfx9_tbuffer_load_float_32
132# 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)
133# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %14.sub0
134# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %14.sub1
135# 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)
136# GFX9: %{{[0-9]+}}:vreg_96 = COPY %17.sub0_sub1_sub2
137# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %17.sub3
138# GFX9: %{{[0-9]+}}:vreg_64 = COPY %16.sub0_sub1
139# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %16.sub2
140# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %15.sub0
141# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %15.sub1
142# 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)
143# GFX9: %{{[0-9]+}}:vreg_64 = COPY %19.sub0_sub1
144# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %19.sub2
145# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %18.sub0
146# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %18.sub1
147
148name: gfx9_tbuffer_load_float_32
149body:             |
150  bb.0.entry:
151    %0:sgpr_32 = COPY $sgpr0
152    %1:sgpr_32 = COPY $sgpr1
153    %2:sgpr_32 = COPY $sgpr2
154    %3:sgpr_32 = COPY $sgpr3
155    %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
156    %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)
157    %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)
158    %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)
159    %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)
160    %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)
161    %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)
162    %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)
163    %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)
164    %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)
165...
166---
167
168# GFX9-LABEL: name: gfx9_tbuffer_load_sint_32
169# 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)
170# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %14.sub0
171# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %14.sub1
172# 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)
173# GFX9: %{{[0-9]+}}:vreg_96 = COPY %17.sub0_sub1_sub2
174# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %17.sub3
175# GFX9: %{{[0-9]+}}:vreg_64 = COPY %16.sub0_sub1
176# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %16.sub2
177# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %15.sub0
178# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %15.sub1
179# 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)
180# GFX9: %{{[0-9]+}}:vreg_64 = COPY %19.sub0_sub1
181# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %19.sub2
182# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %18.sub0
183# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %18.sub1
184
185name: gfx9_tbuffer_load_sint_32
186body:             |
187  bb.0.entry:
188    %0:sgpr_32 = COPY $sgpr0
189    %1:sgpr_32 = COPY $sgpr1
190    %2:sgpr_32 = COPY $sgpr2
191    %3:sgpr_32 = COPY $sgpr3
192    %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
193    %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)
194    %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)
195    %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)
196    %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)
197    %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)
198    %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)
199    %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)
200    %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)
201    %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)
202...
203---
204
205# GFX9-LABEL: name: gfx9_tbuffer_load_uint_32
206# 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)
207# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %14.sub0
208# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %14.sub1
209# 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)
210# GFX9: %{{[0-9]+}}:vreg_96 = COPY %17.sub0_sub1_sub2
211# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %17.sub3
212# GFX9: %{{[0-9]+}}:vreg_64 = COPY %16.sub0_sub1
213# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %16.sub2
214# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %15.sub0
215# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %15.sub1
216# 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)
217# GFX9: %{{[0-9]+}}:vreg_64 = COPY %19.sub0_sub1
218# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %19.sub2
219# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %18.sub0
220# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %18.sub1
221
222name: gfx9_tbuffer_load_uint_32
223body:             |
224  bb.0.entry:
225    %0:sgpr_32 = COPY $sgpr0
226    %1:sgpr_32 = COPY $sgpr1
227    %2:sgpr_32 = COPY $sgpr2
228    %3:sgpr_32 = COPY $sgpr3
229    %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
230    %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)
231    %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)
232    %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)
233    %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)
234    %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)
235    %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)
236    %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)
237    %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)
238    %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)
239...
240---
241
242# GFX9-LABEL: name: gfx9_tbuffer_load_not_merged_data_format_mismatch
243# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
244# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
245# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
246# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
247# GFX9: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %0, %subreg.sub0, %1, %subreg.sub1, %2, %subreg.sub2, %3, %subreg.sub3
248# 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)
249# 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)
250# 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)
251# 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)
252# 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)
253# 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)
254# 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)
255# 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)
256# 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)
257
258
259name: gfx9_tbuffer_load_not_merged_data_format_mismatch
260body:             |
261  bb.0.entry:
262    %0:sgpr_32 = COPY $sgpr0
263    %1:sgpr_32 = COPY $sgpr1
264    %2:sgpr_32 = COPY $sgpr2
265    %3:sgpr_32 = COPY $sgpr3
266    %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
267    %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)
268    %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)
269    %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)
270    %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)
271    %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)
272    %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)
273    %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)
274    %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)
275    %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)
276...
277---
278
279# GFX9-LABEL: name: gfx9_tbuffer_load_not_merged_num_format_mismatch
280# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
281# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
282# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
283# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
284# GFX9: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %0, %subreg.sub0, %1, %subreg.sub1, %2, %subreg.sub2, %3, %subreg.sub3
285# 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)
286# 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)
287# 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)
288# 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)
289# 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)
290# 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)
291# 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)
292# 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)
293# 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)
294name: gfx9_tbuffer_load_not_merged_num_format_mismatch
295body:             |
296  bb.0.entry:
297    %0:sgpr_32 = COPY $sgpr0
298    %1:sgpr_32 = COPY $sgpr1
299    %2:sgpr_32 = COPY $sgpr2
300    %3:sgpr_32 = COPY $sgpr3
301    %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
302    %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)
303    %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)
304    %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)
305    %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)
306    %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)
307    %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)
308    %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)
309    %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)
310    %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)
311...
312---
313
314# GFX9-LABEL: name: gfx9_tbuffer_store_x_xyz
315# GFX9: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE %3, %subreg.sub0, %2, %subreg.sub1, %1, %subreg.sub2
316# GFX9: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE %0, %subreg.sub0, %9, %subreg.sub1_sub2_sub3
317# 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)
318name: gfx9_tbuffer_store_x_xyz
319body:             |
320  bb.0.entry:
321    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
322    %7:vgpr_32 = COPY $vgpr3
323    %6:vgpr_32 = COPY $vgpr2
324    %5:vgpr_32 = COPY $vgpr1
325    %4:vgpr_32 = COPY $vgpr0
326    %3:sgpr_32 = COPY $sgpr3
327    %2:sgpr_32 = COPY $sgpr2
328    %1:sgpr_32 = COPY $sgpr1
329    %0:sgpr_32 = COPY $sgpr0
330    %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
331    %14:vreg_96 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1, %6:vgpr_32, %subreg.sub2
332    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)
333    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)
334...
335---
336
337
338
339# GFX9-LABEL: name: gfx9_tbuffer_store_xyz_x
340# GFX9: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE %3, %subreg.sub0, %2, %subreg.sub1, %1, %subreg.sub2
341# GFX9: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE %9, %subreg.sub0_sub1_sub2, %0, %subreg.sub3
342# 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)
343name: gfx9_tbuffer_store_xyz_x
344body:             |
345  bb.0.entry:
346    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
347    %7:vgpr_32 = COPY $vgpr3
348    %6:vgpr_32 = COPY $vgpr2
349    %5:vgpr_32 = COPY $vgpr1
350    %4:vgpr_32 = COPY $vgpr0
351    %3:sgpr_32 = COPY $sgpr3
352    %2:sgpr_32 = COPY $sgpr2
353    %1:sgpr_32 = COPY $sgpr1
354    %0:sgpr_32 = COPY $sgpr0
355    %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
356    %14:vreg_96 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1, %6:vgpr_32, %subreg.sub2
357    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)
358    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)
359...
360---
361
362# GFX9-LABEL: name: gfx9_tbuffer_store_xy_xy
363# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %3, %subreg.sub0, %2, %subreg.sub1
364# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %1, %subreg.sub0, %0, %subreg.sub1
365# GFX9: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE %9, %subreg.sub0_sub1, %10, %subreg.sub2_sub3
366# 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)
367name: gfx9_tbuffer_store_xy_xy
368body:             |
369  bb.0.entry:
370    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
371    %7:vgpr_32 = COPY $vgpr3
372    %6:vgpr_32 = COPY $vgpr2
373    %5:vgpr_32 = COPY $vgpr1
374    %4:vgpr_32 = COPY $vgpr0
375    %3:sgpr_32 = COPY $sgpr3
376    %2:sgpr_32 = COPY $sgpr2
377    %1:sgpr_32 = COPY $sgpr1
378    %0:sgpr_32 = COPY $sgpr0
379    %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
380    %14:vreg_64 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1
381    %15:vreg_64 = REG_SEQUENCE %6:vgpr_32, %subreg.sub0, %7:vgpr_32, %subreg.sub1
382    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)
383    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)
384...
385---
386
387# GFX9-LABEL: name: gfx9_tbuffer_store_x_xy
388# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %3, %subreg.sub0, %2, %subreg.sub1
389# GFX9: %{{[0-9]+}}:vreg_64, %subreg.sub1_sub2
390# 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)
391name: gfx9_tbuffer_store_x_xy
392body:             |
393  bb.0.entry:
394    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
395    %7:vgpr_32 = COPY $vgpr3
396    %6:vgpr_32 = COPY $vgpr2
397    %5:vgpr_32 = COPY $vgpr1
398    %4:vgpr_32 = COPY $vgpr0
399    %3:sgpr_32 = COPY $sgpr3
400    %2:sgpr_32 = COPY $sgpr2
401    %1:sgpr_32 = COPY $sgpr1
402    %0:sgpr_32 = COPY $sgpr0
403    %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
404    %14:vreg_64 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1
405    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)
406    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)
407...
408---
409
410# GFX9-LABEL: name: gfx9_tbuffer_store_xy_x
411# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %3, %subreg.sub0, %2, %subreg.sub1
412# GFX9: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE %9, %subreg.sub0_sub1, %0, %subreg.sub2
413# 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)
414name: gfx9_tbuffer_store_xy_x
415body:             |
416  bb.0.entry:
417    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
418    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
419    %7:vgpr_32 = COPY $vgpr3
420    %6:vgpr_32 = COPY $vgpr2
421    %5:vgpr_32 = COPY $vgpr1
422    %4:vgpr_32 = COPY $vgpr0
423    %3:sgpr_32 = COPY $sgpr3
424    %2:sgpr_32 = COPY $sgpr2
425    %1:sgpr_32 = COPY $sgpr1
426    %0:sgpr_32 = COPY $sgpr0
427    %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
428    %14:vreg_64 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1
429    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)
430    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)
431...
432---
433
434
435# GFX9-LABEL: name: gfx9_tbuffer_store_x_x
436# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %1, %subreg.sub0, %0, %subreg.sub1
437# 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)
438name: gfx9_tbuffer_store_x_x
439body:             |
440  bb.0.entry:
441    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
442    %7:vgpr_32 = COPY $vgpr3
443    %6:vgpr_32 = COPY $vgpr2
444    %5:vgpr_32 = COPY $vgpr1
445    %4:vgpr_32 = COPY $vgpr0
446    %3:sgpr_32 = COPY $sgpr3
447    %2:sgpr_32 = COPY $sgpr2
448    %1:sgpr_32 = COPY $sgpr1
449    %0:sgpr_32 = COPY $sgpr0
450    %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
451    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)
452    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)
453...
454---
455
456# GFX9-LABEL: name: gfx9_tbuffer_store_x_x_format_32_32_32_32
457# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %1, %subreg.sub0, %0, %subreg.sub1
458# 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)
459name: gfx9_tbuffer_store_x_x_format_32_32_32_32
460body:             |
461  bb.0.entry:
462    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
463    %7:vgpr_32 = COPY $vgpr3
464    %6:vgpr_32 = COPY $vgpr2
465    %5:vgpr_32 = COPY $vgpr1
466    %4:vgpr_32 = COPY $vgpr0
467    %3:sgpr_32 = COPY $sgpr3
468    %2:sgpr_32 = COPY $sgpr2
469    %1:sgpr_32 = COPY $sgpr1
470    %0:sgpr_32 = COPY $sgpr0
471    %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
472    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)
473    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)
474...
475---
476
477# GFX9-LABEL: name: gfx9_tbuffer_store_float32
478# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr8
479# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr7
480# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr6
481# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr5
482# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr4
483# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr3
484# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr2
485# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr1
486# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr0
487# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
488# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
489# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
490# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
491# GFX9: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %12, %subreg.sub0, %11, %subreg.sub1, %10, %subreg.sub2, %9, %subreg.sub3
492# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %8, %subreg.sub0, %7, %subreg.sub1
493# 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)
494# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %6, %subreg.sub0, %5, %subreg.sub1
495# GFX9: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %15, %subreg.sub0_sub1, %4, %subreg.sub2
496# GFX9: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE killed %16, %subreg.sub0_sub1_sub2, %3, %subreg.sub3
497# 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)
498# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %2, %subreg.sub0, %1, %subreg.sub1
499# GFX9: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %18, %subreg.sub0_sub1, %0, %subreg.sub2
500# 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)
501name: gfx9_tbuffer_store_float32
502body:             |
503  bb.0.entry:
504    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
505    %12:vgpr_32 = COPY $vgpr8
506    %11:vgpr_32 = COPY $vgpr7
507    %10:vgpr_32 = COPY $vgpr6
508    %9:vgpr_32 = COPY $vgpr5
509    %8:vgpr_32 = COPY $vgpr4
510    %7:vgpr_32 = COPY $vgpr3
511    %6:vgpr_32 = COPY $vgpr2
512    %5:vgpr_32 = COPY $vgpr1
513    %4:vgpr_32 = COPY $vgpr0
514    %3:sgpr_32 = COPY $sgpr3
515    %2:sgpr_32 = COPY $sgpr2
516    %1:sgpr_32 = COPY $sgpr1
517    %0:sgpr_32 = COPY $sgpr0
518    %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
519    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)
520    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)
521    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)
522    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)
523    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)
524    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)
525    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)
526    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)
527    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)
528...
529---
530
531# GFX9-LABEL: name: gfx9_tbuffer_store_sint32
532# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr8
533# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr7
534# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr6
535# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr5
536# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr4
537# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr3
538# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr2
539# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr1
540# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr0
541# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
542# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
543# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
544# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
545# GFX9: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %12, %subreg.sub0, %11, %subreg.sub1, %10, %subreg.sub2, %9, %subreg.sub3
546# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %8, %subreg.sub0, %7, %subreg.sub1
547# 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)
548# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %6, %subreg.sub0, %5, %subreg.sub1
549# GFX9: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %15, %subreg.sub0_sub1, %4, %subreg.sub2
550# GFX9: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE killed %16, %subreg.sub0_sub1_sub2, %3, %subreg.sub3
551# 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)
552# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %2, %subreg.sub0, %1, %subreg.sub1
553# GFX9: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %18, %subreg.sub0_sub1, %0, %subreg.sub2
554# 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)
555name: gfx9_tbuffer_store_sint32
556body:             |
557  bb.0.entry:
558    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
559    %12:vgpr_32 = COPY $vgpr8
560    %11:vgpr_32 = COPY $vgpr7
561    %10:vgpr_32 = COPY $vgpr6
562    %9:vgpr_32 = COPY $vgpr5
563    %8:vgpr_32 = COPY $vgpr4
564    %7:vgpr_32 = COPY $vgpr3
565    %6:vgpr_32 = COPY $vgpr2
566    %5:vgpr_32 = COPY $vgpr1
567    %4:vgpr_32 = COPY $vgpr0
568    %3:sgpr_32 = COPY $sgpr3
569    %2:sgpr_32 = COPY $sgpr2
570    %1:sgpr_32 = COPY $sgpr1
571    %0:sgpr_32 = COPY $sgpr0
572    %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
573    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)
574    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)
575    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)
576    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)
577    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)
578    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)
579    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)
580    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)
581    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)
582...
583---
584
585# GFX9-LABEL: name: gfx9_tbuffer_store_uint32
586# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr8
587# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr7
588# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr6
589# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr5
590# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr4
591# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr3
592# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr2
593# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr1
594# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr0
595# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
596# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
597# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
598# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
599# GFX9: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %12, %subreg.sub0, %11, %subreg.sub1, %10, %subreg.sub2, %9, %subreg.sub3
600# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %8, %subreg.sub0, %7, %subreg.sub1
601# 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)
602# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %6, %subreg.sub0, %5, %subreg.sub1
603# GFX9: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %15, %subreg.sub0_sub1, %4, %subreg.sub2
604# GFX9: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE killed %16, %subreg.sub0_sub1_sub2, %3, %subreg.sub3
605# 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)
606# GFX9: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %2, %subreg.sub0, %1, %subreg.sub1
607# GFX9: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %18, %subreg.sub0_sub1, %0, %subreg.sub2
608# 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)
609name: gfx9_tbuffer_store_uint32
610body:             |
611  bb.0.entry:
612    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
613    %12:vgpr_32 = COPY $vgpr8
614    %11:vgpr_32 = COPY $vgpr7
615    %10:vgpr_32 = COPY $vgpr6
616    %9:vgpr_32 = COPY $vgpr5
617    %8:vgpr_32 = COPY $vgpr4
618    %7:vgpr_32 = COPY $vgpr3
619    %6:vgpr_32 = COPY $vgpr2
620    %5:vgpr_32 = COPY $vgpr1
621    %4:vgpr_32 = COPY $vgpr0
622    %3:sgpr_32 = COPY $sgpr3
623    %2:sgpr_32 = COPY $sgpr2
624    %1:sgpr_32 = COPY $sgpr1
625    %0:sgpr_32 = COPY $sgpr0
626    %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
627    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)
628    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)
629    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)
630    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)
631    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)
632    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)
633    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)
634    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)
635    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)
636...
637---
638
639# GFX9-LABEL: name: gfx9_tbuffer_store_not_merged_data_format_mismatch
640# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr8
641# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr7
642# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr6
643# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr5
644# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr4
645# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr3
646# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr2
647# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr1
648# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr0
649# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
650# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
651# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
652# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
653# GFX9: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %12, %subreg.sub0, %11, %subreg.sub1, %10, %subreg.sub2, %9, %subreg.sub3
654# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %8, %13, 0, 4, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
655# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %7, %13, 0, 8, 84, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
656# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %6, %13, 0, 16, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
657# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %5, %13, 0, 20, 84, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
658# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %4, %13, 0, 24, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
659# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %3, %13, 0, 28, 84, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
660# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %2, %13, 0, 36, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
661# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %1, %13, 0, 40, 84, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
662# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %0, %13, 0, 44, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
663name: gfx9_tbuffer_store_not_merged_data_format_mismatch
664body:             |
665  bb.0.entry:
666    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
667    %12:vgpr_32 = COPY $vgpr8
668    %11:vgpr_32 = COPY $vgpr7
669    %10:vgpr_32 = COPY $vgpr6
670    %9:vgpr_32 = COPY $vgpr5
671    %8:vgpr_32 = COPY $vgpr4
672    %7:vgpr_32 = COPY $vgpr3
673    %6:vgpr_32 = COPY $vgpr2
674    %5:vgpr_32 = COPY $vgpr1
675    %4:vgpr_32 = COPY $vgpr0
676    %3:sgpr_32 = COPY $sgpr3
677    %2:sgpr_32 = COPY $sgpr2
678    %1:sgpr_32 = COPY $sgpr1
679    %0:sgpr_32 = COPY $sgpr0
680    %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
681    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)
682    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)
683    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)
684    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)
685    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)
686    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)
687    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)
688    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)
689    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)
690...
691---
692
693# GFX9-LABEL: name: gfx9_tbuffer_store_not_merged_num_format_mismatch
694# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr8
695# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr7
696# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr6
697# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr5
698# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr4
699# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr3
700# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr2
701# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr1
702# GFX9: %{{[0-9]+}}:vgpr_32 = COPY $vgpr0
703# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
704# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
705# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
706# GFX9: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
707# GFX9: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %12, %subreg.sub0, %11, %subreg.sub1, %10, %subreg.sub2, %9, %subreg.sub3
708# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %8, %13, 0, 4, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
709# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %7, %13, 0, 8, 114, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
710# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %6, %13, 0, 16, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
711# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %5, %13, 0, 20, 114, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
712# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %4, %13, 0, 24, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
713# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %3, %13, 0, 28, 114, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
714# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %2, %13, 0, 36, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
715# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %1, %13, 0, 40, 114, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
716# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %0, %13, 0, 44, 116, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
717name: gfx9_tbuffer_store_not_merged_num_format_mismatch
718body:             |
719  bb.0.entry:
720    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
721    %12:vgpr_32 = COPY $vgpr8
722    %11:vgpr_32 = COPY $vgpr7
723    %10:vgpr_32 = COPY $vgpr6
724    %9:vgpr_32 = COPY $vgpr5
725    %8:vgpr_32 = COPY $vgpr4
726    %7:vgpr_32 = COPY $vgpr3
727    %6:vgpr_32 = COPY $vgpr2
728    %5:vgpr_32 = COPY $vgpr1
729    %4:vgpr_32 = COPY $vgpr0
730    %3:sgpr_32 = COPY $sgpr3
731    %2:sgpr_32 = COPY $sgpr2
732    %1:sgpr_32 = COPY $sgpr1
733    %0:sgpr_32 = COPY $sgpr0
734    %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
735    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)
736    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)
737    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)
738    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)
739    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)
740    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)
741    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)
742    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)
743    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)
744...
745---
746
747
748# GFX9-LABEL: name: gfx9_tbuffer_load_not_merged_swizzled_0
749# 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)
750# 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)
751name: gfx9_tbuffer_load_not_merged_swizzled_0
752body:             |
753  bb.0.entry:
754    %0:sgpr_32 = COPY $sgpr0
755    %1:sgpr_32 = COPY $sgpr1
756    %2:sgpr_32 = COPY $sgpr2
757    %3:sgpr_32 = COPY $sgpr3
758    %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
759    %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)
760    %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)
761...
762---
763
764
765# GFX9-LABEL: name: gfx9_tbuffer_load_not_merged_swizzled_1
766# 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)
767# 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)
768name: gfx9_tbuffer_load_not_merged_swizzled_1
769body:             |
770  bb.0.entry:
771    %0:sgpr_32 = COPY $sgpr0
772    %1:sgpr_32 = COPY $sgpr1
773    %2:sgpr_32 = COPY $sgpr2
774    %3:sgpr_32 = COPY $sgpr3
775    %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
776    %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)
777    %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)
778...
779---
780
781
782# GFX9-LABEL: name: gfx9_tbuffer_load_merge_across_swizzle
783# 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)
784# 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)
785name: gfx9_tbuffer_load_merge_across_swizzle
786body:             |
787  bb.0.entry:
788    %0:sgpr_32 = COPY $sgpr0
789    %1:sgpr_32 = COPY $sgpr1
790    %2:sgpr_32 = COPY $sgpr2
791    %3:sgpr_32 = COPY $sgpr3
792    %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
793    %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)
794    %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)
795    %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)
796...
797---
798
799
800# GFX9-LABEL: name: gfx9_tbuffer_load_merge_across_swizzled_store
801# 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)
802# GFX9: TBUFFER_STORE_FORMAT_X_OFFSET_exact %4, %5, 0, 6, 116, 0, 0, 1, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
803# 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)
804name: gfx9_tbuffer_load_merge_across_swizzled_store
805body:             |
806  bb.0.entry:
807    %0:sgpr_32 = COPY $sgpr0
808    %1:sgpr_32 = COPY $sgpr1
809    %2:sgpr_32 = COPY $sgpr2
810    %3:sgpr_32 = COPY $sgpr3
811    %4:vgpr_32 = COPY $vgpr0
812    %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
813    %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)
814    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)
815    %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)
816...
817---
818
819
820#
821# GFX10 tests
822#
823
824# GFX10-LABEL: name: gfx10_tbuffer_load_x_xyz
825# 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)
826# GFX10: %{{[0-9]+}}:vgpr_32 = COPY %7.sub0
827# GFX10: %{{[0-9]+}}:vreg_96 = COPY killed %7.sub1_sub2_sub3
828name: gfx10_tbuffer_load_x_xyz
829body:             |
830  bb.0.entry:
831    %0:sgpr_32 = COPY $sgpr0
832    %1:sgpr_32 = COPY $sgpr1
833    %2:sgpr_32 = COPY $sgpr2
834    %3:sgpr_32 = COPY $sgpr3
835    %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
836    %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)
837    %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)
838...
839---
840
841# GFX10-LABEL: name: gfx10_tbuffer_load_xyz_x
842# 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)
843# GFX10: %{{[0-9]+}}:vreg_96 = COPY %7.sub0_sub1_sub2
844# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %7.sub3
845name: gfx10_tbuffer_load_xyz_x
846body:             |
847  bb.0.entry:
848    %0:sgpr_32 = COPY $sgpr0
849    %1:sgpr_32 = COPY $sgpr1
850    %2:sgpr_32 = COPY $sgpr2
851    %3:sgpr_32 = COPY $sgpr3
852    %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
853    %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)
854    %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)
855...
856---
857
858# GFX10-LABEL: name: gfx10_tbuffer_load_xy_xy
859# 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)
860# GFX10: %{{[0-9]+}}:vreg_64 = COPY %7.sub0_sub1
861# GFX10: %{{[0-9]+}}:vreg_64 = COPY killed %7.sub2_sub3
862name: gfx10_tbuffer_load_xy_xy
863body:             |
864  bb.0.entry:
865    %0:sgpr_32 = COPY $sgpr0
866    %1:sgpr_32 = COPY $sgpr1
867    %2:sgpr_32 = COPY $sgpr2
868    %3:sgpr_32 = COPY $sgpr3
869    %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3
870    %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)
871    %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)
872...
873---
874
875# GFX10-LABEL: name: gfx10_tbuffer_load_x_xy
876# 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)
877# GFX10: %{{[0-9]+}}:vgpr_32 = COPY %7.sub0
878# GFX10: %{{[0-9]+}}:vreg_64 = COPY killed %7.sub1_sub2
879name: gfx10_tbuffer_load_x_xy
880body:             |
881  bb.0.entry:
882    %0:sgpr_32 = COPY $sgpr0
883    %1:sgpr_32 = COPY $sgpr1
884    %2:sgpr_32 = COPY $sgpr2
885    %3:sgpr_32 = COPY $sgpr3
886    %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
887    %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)
888    %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)
889...
890---
891
892# GFX10-LABEL: name: gfx10_tbuffer_load_xy_x
893# 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)
894# GFX10: %{{[0-9]+}}:vreg_64 = COPY %7.sub0_sub1
895# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %7.sub2
896name: gfx10_tbuffer_load_xy_x
897body:             |
898  bb.0.entry:
899    %0:sgpr_32 = COPY $sgpr0
900    %1:sgpr_32 = COPY $sgpr1
901    %2:sgpr_32 = COPY $sgpr2
902    %3:sgpr_32 = COPY $sgpr3
903    %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
904    %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)
905    %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)
906...
907---
908
909
910# GFX10-LABEL: name: gfx10_tbuffer_load_x_x
911# 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)
912# GFX10: %{{[0-9]+}}:vgpr_32 = COPY %7.sub0
913# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %7.sub1
914
915name: gfx10_tbuffer_load_x_x
916body:             |
917  bb.0.entry:
918    %0:sgpr_32 = COPY $sgpr0
919    %1:sgpr_32 = COPY $sgpr1
920    %2:sgpr_32 = COPY $sgpr2
921    %3:sgpr_32 = COPY $sgpr3
922    %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
923    %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)
924    %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)
925...
926---
927
928# GFX10-LABEL: name: gfx10_tbuffer_load_x_x_format_32_32_32_32
929# 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)
930# GFX10: %{{[0-9]+}}:vgpr_32 = COPY %7.sub0
931# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %7.sub1
932
933name: gfx10_tbuffer_load_x_x_format_32_32_32_32
934body:             |
935  bb.0.entry:
936    %0:sgpr_32 = COPY $sgpr0
937    %1:sgpr_32 = COPY $sgpr1
938    %2:sgpr_32 = COPY $sgpr2
939    %3:sgpr_32 = COPY $sgpr3
940    %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
941    %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)
942    %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)
943...
944---
945
946
947# GFX10-LABEL: name: gfx10_tbuffer_load_float_32
948# 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)
949# GFX10: %{{[0-9]+}}:vgpr_32 = COPY %14.sub0
950# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %14.sub1
951# 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)
952# GFX10: %{{[0-9]+}}:vreg_96 = COPY %17.sub0_sub1_sub2
953# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %17.sub3
954# GFX10: %{{[0-9]+}}:vreg_64 = COPY %16.sub0_sub1
955# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %16.sub2
956# GFX10: %{{[0-9]+}}:vgpr_32 = COPY %15.sub0
957# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %15.sub1
958# 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)
959# GFX10: %{{[0-9]+}}:vreg_64 = COPY %19.sub0_sub1
960# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %19.sub2
961# GFX10: %{{[0-9]+}}:vgpr_32 = COPY %18.sub0
962# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %18.sub1
963
964name: gfx10_tbuffer_load_float_32
965body:             |
966  bb.0.entry:
967    %0:sgpr_32 = COPY $sgpr0
968    %1:sgpr_32 = COPY $sgpr1
969    %2:sgpr_32 = COPY $sgpr2
970    %3:sgpr_32 = COPY $sgpr3
971    %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
972    %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)
973    %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)
974    %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)
975    %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)
976    %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)
977    %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)
978    %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)
979    %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)
980    %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)
981...
982---
983
984# GFX10-LABEL: name: gfx10_tbuffer_load_sint_32
985# 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)
986# GFX10: %{{[0-9]+}}:vgpr_32 = COPY %14.sub0
987# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %14.sub1
988# 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)
989# GFX10: %{{[0-9]+}}:vreg_96 = COPY %17.sub0_sub1_sub2
990# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %17.sub3
991# GFX10: %{{[0-9]+}}:vreg_64 = COPY %16.sub0_sub1
992# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %16.sub2
993# GFX10: %{{[0-9]+}}:vgpr_32 = COPY %15.sub0
994# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %15.sub1
995# 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)
996# GFX10: %{{[0-9]+}}:vreg_64 = COPY %19.sub0_sub1
997# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %19.sub2
998# GFX10: %{{[0-9]+}}:vgpr_32 = COPY %18.sub0
999# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %18.sub1
1000
1001name: gfx10_tbuffer_load_sint_32
1002body:             |
1003  bb.0.entry:
1004    %0:sgpr_32 = COPY $sgpr0
1005    %1:sgpr_32 = COPY $sgpr1
1006    %2:sgpr_32 = COPY $sgpr2
1007    %3:sgpr_32 = COPY $sgpr3
1008    %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
1009    %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)
1010    %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)
1011    %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)
1012    %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)
1013    %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)
1014    %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)
1015    %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)
1016    %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)
1017    %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)
1018...
1019---
1020
1021# GFX10-LABEL: name: gfx10_tbuffer_load_uint_32
1022# 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)
1023# GFX10: %{{[0-9]+}}:vgpr_32 = COPY %14.sub0
1024# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %14.sub1
1025# 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)
1026# GFX10: %{{[0-9]+}}:vreg_96 = COPY %17.sub0_sub1_sub2
1027# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %17.sub3
1028# GFX10: %{{[0-9]+}}:vreg_64 = COPY %16.sub0_sub1
1029# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %16.sub2
1030# GFX10: %{{[0-9]+}}:vgpr_32 = COPY %15.sub0
1031# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %15.sub1
1032# 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)
1033# GFX10: %{{[0-9]+}}:vreg_64 = COPY %19.sub0_sub1
1034# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %19.sub2
1035# GFX10: %{{[0-9]+}}:vgpr_32 = COPY %18.sub0
1036# GFX10: %{{[0-9]+}}:vgpr_32 = COPY killed %18.sub1
1037
1038name: gfx10_tbuffer_load_uint_32
1039body:             |
1040  bb.0.entry:
1041    %0:sgpr_32 = COPY $sgpr0
1042    %1:sgpr_32 = COPY $sgpr1
1043    %2:sgpr_32 = COPY $sgpr2
1044    %3:sgpr_32 = COPY $sgpr3
1045    %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
1046    %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)
1047    %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)
1048    %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)
1049    %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)
1050    %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)
1051    %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)
1052    %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)
1053    %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)
1054    %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)
1055...
1056---
1057
1058# GFX10-LABEL: name: gfx10_tbuffer_load_not_merged_data_format_mismatch
1059# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
1060# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
1061# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
1062# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
1063# GFX10: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %0, %subreg.sub0, %1, %subreg.sub1, %2, %subreg.sub2, %3, %subreg.sub3
1064# 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)
1065# 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)
1066# 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)
1067# 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)
1068# 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)
1069# 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)
1070# 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)
1071# 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)
1072# 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)
1073
1074
1075name: gfx10_tbuffer_load_not_merged_data_format_mismatch
1076body:             |
1077  bb.0.entry:
1078    %0:sgpr_32 = COPY $sgpr0
1079    %1:sgpr_32 = COPY $sgpr1
1080    %2:sgpr_32 = COPY $sgpr2
1081    %3:sgpr_32 = COPY $sgpr3
1082    %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
1083    %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)
1084    %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)
1085    %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)
1086    %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)
1087    %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)
1088    %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)
1089    %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)
1090    %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)
1091    %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)
1092...
1093---
1094
1095# GFX10-LABEL: name: gfx10_tbuffer_load_not_merged_num_format_mismatch
1096# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
1097# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
1098# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
1099# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
1100# GFX10: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %0, %subreg.sub0, %1, %subreg.sub1, %2, %subreg.sub2, %3, %subreg.sub3
1101# 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)
1102# 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)
1103# 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)
1104# 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)
1105# 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)
1106# 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)
1107# 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)
1108# 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)
1109# 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)
1110name: gfx10_tbuffer_load_not_merged_num_format_mismatch
1111body:             |
1112  bb.0.entry:
1113    %0:sgpr_32 = COPY $sgpr0
1114    %1:sgpr_32 = COPY $sgpr1
1115    %2:sgpr_32 = COPY $sgpr2
1116    %3:sgpr_32 = COPY $sgpr3
1117    %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
1118    %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)
1119    %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)
1120    %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)
1121    %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)
1122    %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)
1123    %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)
1124    %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)
1125    %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)
1126    %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)
1127...
1128---
1129
1130
1131
1132# GFX10-LABEL: name: gfx10_tbuffer_store_x_xyz
1133# GFX10: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE %3, %subreg.sub0, %2, %subreg.sub1, %1, %subreg.sub2
1134# GFX10: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE %0, %subreg.sub0, %9, %subreg.sub1_sub2_sub3
1135# 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)
1136name: gfx10_tbuffer_store_x_xyz
1137body:             |
1138  bb.0.entry:
1139    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
1140    %7:vgpr_32 = COPY $vgpr3
1141    %6:vgpr_32 = COPY $vgpr2
1142    %5:vgpr_32 = COPY $vgpr1
1143    %4:vgpr_32 = COPY $vgpr0
1144    %3:sgpr_32 = COPY $sgpr3
1145    %2:sgpr_32 = COPY $sgpr2
1146    %1:sgpr_32 = COPY $sgpr1
1147    %0:sgpr_32 = COPY $sgpr0
1148    %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
1149    %14:vreg_96 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1, %6:vgpr_32, %subreg.sub2
1150    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)
1151    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)
1152...
1153---
1154
1155
1156# GFX10-LABEL: name: gfx10_tbuffer_store_xyz_x
1157# GFX10: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE %3, %subreg.sub0, %2, %subreg.sub1, %1, %subreg.sub2
1158# GFX10: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE %9, %subreg.sub0_sub1_sub2, %0, %subreg.sub3
1159# 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)
1160name: gfx10_tbuffer_store_xyz_x
1161body:             |
1162  bb.0.entry:
1163    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
1164    %7:vgpr_32 = COPY $vgpr3
1165    %6:vgpr_32 = COPY $vgpr2
1166    %5:vgpr_32 = COPY $vgpr1
1167    %4:vgpr_32 = COPY $vgpr0
1168    %3:sgpr_32 = COPY $sgpr3
1169    %2:sgpr_32 = COPY $sgpr2
1170    %1:sgpr_32 = COPY $sgpr1
1171    %0:sgpr_32 = COPY $sgpr0
1172    %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
1173    %14:vreg_96 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1, %6:vgpr_32, %subreg.sub2
1174    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)
1175    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)
1176...
1177---
1178
1179# GFX10-LABEL: name: gfx10_tbuffer_store_xy_xy
1180# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %3, %subreg.sub0, %2, %subreg.sub1
1181# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %1, %subreg.sub0, %0, %subreg.sub1
1182# GFX10: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE %9, %subreg.sub0_sub1, %10, %subreg.sub2_sub3
1183# 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)
1184name: gfx10_tbuffer_store_xy_xy
1185body:             |
1186  bb.0.entry:
1187    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
1188    %7:vgpr_32 = COPY $vgpr3
1189    %6:vgpr_32 = COPY $vgpr2
1190    %5:vgpr_32 = COPY $vgpr1
1191    %4:vgpr_32 = COPY $vgpr0
1192    %3:sgpr_32 = COPY $sgpr3
1193    %2:sgpr_32 = COPY $sgpr2
1194    %1:sgpr_32 = COPY $sgpr1
1195    %0:sgpr_32 = COPY $sgpr0
1196    %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
1197    %14:vreg_64 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1
1198    %15:vreg_64 = REG_SEQUENCE %6:vgpr_32, %subreg.sub0, %7:vgpr_32, %subreg.sub1
1199    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)
1200    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)
1201...
1202---
1203
1204# GFX10-LABEL: name: gfx10_tbuffer_store_x_xy
1205# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %3, %subreg.sub0, %2, %subreg.sub1
1206# GFX10: %{{[0-9]+}}:vreg_64, %subreg.sub1_sub2
1207# 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)
1208name: gfx10_tbuffer_store_x_xy
1209body:             |
1210  bb.0.entry:
1211    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
1212    %7:vgpr_32 = COPY $vgpr3
1213    %6:vgpr_32 = COPY $vgpr2
1214    %5:vgpr_32 = COPY $vgpr1
1215    %4:vgpr_32 = COPY $vgpr0
1216    %3:sgpr_32 = COPY $sgpr3
1217    %2:sgpr_32 = COPY $sgpr2
1218    %1:sgpr_32 = COPY $sgpr1
1219    %0:sgpr_32 = COPY $sgpr0
1220    %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
1221    %14:vreg_64 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1
1222    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)
1223    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)
1224...
1225---
1226
1227# GFX10-LABEL: name: gfx10_tbuffer_store_xy_x
1228# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %3, %subreg.sub0, %2, %subreg.sub1
1229# GFX10: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE %9, %subreg.sub0_sub1, %0, %subreg.sub2
1230# 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)
1231name: gfx10_tbuffer_store_xy_x
1232body:             |
1233  bb.0.entry:
1234    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
1235    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
1236    %7:vgpr_32 = COPY $vgpr3
1237    %6:vgpr_32 = COPY $vgpr2
1238    %5:vgpr_32 = COPY $vgpr1
1239    %4:vgpr_32 = COPY $vgpr0
1240    %3:sgpr_32 = COPY $sgpr3
1241    %2:sgpr_32 = COPY $sgpr2
1242    %1:sgpr_32 = COPY $sgpr1
1243    %0:sgpr_32 = COPY $sgpr0
1244    %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
1245    %14:vreg_64 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1
1246    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)
1247    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)
1248...
1249---
1250
1251
1252# GFX10-LABEL: name: gfx10_tbuffer_store_x_x
1253# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %1, %subreg.sub0, %0, %subreg.sub1
1254# 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)
1255name: gfx10_tbuffer_store_x_x
1256body:             |
1257  bb.0.entry:
1258    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
1259    %7:vgpr_32 = COPY $vgpr3
1260    %6:vgpr_32 = COPY $vgpr2
1261    %5:vgpr_32 = COPY $vgpr1
1262    %4:vgpr_32 = COPY $vgpr0
1263    %3:sgpr_32 = COPY $sgpr3
1264    %2:sgpr_32 = COPY $sgpr2
1265    %1:sgpr_32 = COPY $sgpr1
1266    %0:sgpr_32 = COPY $sgpr0
1267    %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
1268    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)
1269    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)
1270...
1271---
1272
1273# GFX10-LABEL: name: gfx10_tbuffer_store_x_x_format_32_32_32_32
1274# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %1, %subreg.sub0, %0, %subreg.sub1
1275# 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)
1276name: gfx10_tbuffer_store_x_x_format_32_32_32_32
1277body:             |
1278  bb.0.entry:
1279    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3
1280    %7:vgpr_32 = COPY $vgpr3
1281    %6:vgpr_32 = COPY $vgpr2
1282    %5:vgpr_32 = COPY $vgpr1
1283    %4:vgpr_32 = COPY $vgpr0
1284    %3:sgpr_32 = COPY $sgpr3
1285    %2:sgpr_32 = COPY $sgpr2
1286    %1:sgpr_32 = COPY $sgpr1
1287    %0:sgpr_32 = COPY $sgpr0
1288    %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
1289    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)
1290    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)
1291...
1292---
1293
1294# GFX10-LABEL: name: gfx10_tbuffer_store_float32
1295# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr8
1296# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr7
1297# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr6
1298# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr5
1299# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr4
1300# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr3
1301# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr2
1302# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr1
1303# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr0
1304# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
1305# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
1306# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
1307# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
1308# GFX10: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %12, %subreg.sub0, %11, %subreg.sub1, %10, %subreg.sub2, %9, %subreg.sub3
1309# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %8, %subreg.sub0, %7, %subreg.sub1
1310# 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)
1311# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %6, %subreg.sub0, %5, %subreg.sub1
1312# GFX10: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %15, %subreg.sub0_sub1, %4, %subreg.sub2
1313# GFX10: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE killed %16, %subreg.sub0_sub1_sub2, %3, %subreg.sub3
1314# 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)
1315# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %2, %subreg.sub0, %1, %subreg.sub1
1316# GFX10: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %18, %subreg.sub0_sub1, %0, %subreg.sub2
1317# 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)
1318name: gfx10_tbuffer_store_float32
1319body:             |
1320  bb.0.entry:
1321    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
1322    %12:vgpr_32 = COPY $vgpr8
1323    %11:vgpr_32 = COPY $vgpr7
1324    %10:vgpr_32 = COPY $vgpr6
1325    %9:vgpr_32 = COPY $vgpr5
1326    %8:vgpr_32 = COPY $vgpr4
1327    %7:vgpr_32 = COPY $vgpr3
1328    %6:vgpr_32 = COPY $vgpr2
1329    %5:vgpr_32 = COPY $vgpr1
1330    %4:vgpr_32 = COPY $vgpr0
1331    %3:sgpr_32 = COPY $sgpr3
1332    %2:sgpr_32 = COPY $sgpr2
1333    %1:sgpr_32 = COPY $sgpr1
1334    %0:sgpr_32 = COPY $sgpr0
1335    %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
1336    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)
1337    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)
1338    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)
1339    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)
1340    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)
1341    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)
1342    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)
1343    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)
1344    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)
1345...
1346---
1347
1348# GFX10-LABEL: name: gfx10_tbuffer_store_sint32
1349# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr8
1350# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr7
1351# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr6
1352# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr5
1353# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr4
1354# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr3
1355# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr2
1356# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr1
1357# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr0
1358# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
1359# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
1360# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
1361# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
1362# GFX10: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %12, %subreg.sub0, %11, %subreg.sub1, %10, %subreg.sub2, %9, %subreg.sub3
1363# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %8, %subreg.sub0, %7, %subreg.sub1
1364# 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)
1365# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %6, %subreg.sub0, %5, %subreg.sub1
1366# GFX10: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %15, %subreg.sub0_sub1, %4, %subreg.sub2
1367# GFX10: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE killed %16, %subreg.sub0_sub1_sub2, %3, %subreg.sub3
1368# 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)
1369# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %2, %subreg.sub0, %1, %subreg.sub1
1370# GFX10: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %18, %subreg.sub0_sub1, %0, %subreg.sub2
1371# 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)
1372name: gfx10_tbuffer_store_sint32
1373body:             |
1374  bb.0.entry:
1375    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
1376    %12:vgpr_32 = COPY $vgpr8
1377    %11:vgpr_32 = COPY $vgpr7
1378    %10:vgpr_32 = COPY $vgpr6
1379    %9:vgpr_32 = COPY $vgpr5
1380    %8:vgpr_32 = COPY $vgpr4
1381    %7:vgpr_32 = COPY $vgpr3
1382    %6:vgpr_32 = COPY $vgpr2
1383    %5:vgpr_32 = COPY $vgpr1
1384    %4:vgpr_32 = COPY $vgpr0
1385    %3:sgpr_32 = COPY $sgpr3
1386    %2:sgpr_32 = COPY $sgpr2
1387    %1:sgpr_32 = COPY $sgpr1
1388    %0:sgpr_32 = COPY $sgpr0
1389    %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
1390    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)
1391    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)
1392    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)
1393    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)
1394    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)
1395    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)
1396    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)
1397    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)
1398    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)
1399...
1400---
1401
1402# GFX10-LABEL: name: gfx10_tbuffer_store_uint32
1403# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr8
1404# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr7
1405# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr6
1406# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr5
1407# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr4
1408# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr3
1409# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr2
1410# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr1
1411# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr0
1412# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
1413# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
1414# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
1415# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
1416# GFX10: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %12, %subreg.sub0, %11, %subreg.sub1, %10, %subreg.sub2, %9, %subreg.sub3
1417# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %8, %subreg.sub0, %7, %subreg.sub1
1418# 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)
1419# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %6, %subreg.sub0, %5, %subreg.sub1
1420# GFX10: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %15, %subreg.sub0_sub1, %4, %subreg.sub2
1421# GFX10: %{{[0-9]+}}:vreg_128 = REG_SEQUENCE killed %16, %subreg.sub0_sub1_sub2, %3, %subreg.sub3
1422# 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)
1423# GFX10: %{{[0-9]+}}:vreg_64 = REG_SEQUENCE %2, %subreg.sub0, %1, %subreg.sub1
1424# GFX10: %{{[0-9]+}}:vreg_96 = REG_SEQUENCE killed %18, %subreg.sub0_sub1, %0, %subreg.sub2
1425# 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)
1426name: gfx10_tbuffer_store_uint32
1427body:             |
1428  bb.0.entry:
1429    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
1430    %12:vgpr_32 = COPY $vgpr8
1431    %11:vgpr_32 = COPY $vgpr7
1432    %10:vgpr_32 = COPY $vgpr6
1433    %9:vgpr_32 = COPY $vgpr5
1434    %8:vgpr_32 = COPY $vgpr4
1435    %7:vgpr_32 = COPY $vgpr3
1436    %6:vgpr_32 = COPY $vgpr2
1437    %5:vgpr_32 = COPY $vgpr1
1438    %4:vgpr_32 = COPY $vgpr0
1439    %3:sgpr_32 = COPY $sgpr3
1440    %2:sgpr_32 = COPY $sgpr2
1441    %1:sgpr_32 = COPY $sgpr1
1442    %0:sgpr_32 = COPY $sgpr0
1443    %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
1444    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)
1445    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)
1446    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)
1447    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)
1448    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)
1449    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)
1450    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)
1451    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)
1452    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)
1453...
1454---
1455
1456# GFX10-LABEL: name: gfx10_tbuffer_store_not_merged_data_format_mismatch
1457# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr8
1458# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr7
1459# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr6
1460# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr5
1461# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr4
1462# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr3
1463# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr2
1464# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr1
1465# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr0
1466# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
1467# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
1468# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
1469# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
1470# GFX10: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %12, %subreg.sub0, %11, %subreg.sub1, %10, %subreg.sub2, %9, %subreg.sub3
1471# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %8, %13, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1472# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %7, %13, 0, 8, 21, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1473# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %6, %13, 0, 16, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1474# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %5, %13, 0, 20, 21, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1475# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %4, %13, 0, 24, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1476# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %3, %13, 0, 28, 21, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1477# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %2, %13, 0, 36, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1478# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %1, %13, 0, 40, 21, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1479# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %0, %13, 0, 44, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1480name: gfx10_tbuffer_store_not_merged_data_format_mismatch
1481body:             |
1482  bb.0.entry:
1483    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
1484    %12:vgpr_32 = COPY $vgpr8
1485    %11:vgpr_32 = COPY $vgpr7
1486    %10:vgpr_32 = COPY $vgpr6
1487    %9:vgpr_32 = COPY $vgpr5
1488    %8:vgpr_32 = COPY $vgpr4
1489    %7:vgpr_32 = COPY $vgpr3
1490    %6:vgpr_32 = COPY $vgpr2
1491    %5:vgpr_32 = COPY $vgpr1
1492    %4:vgpr_32 = COPY $vgpr0
1493    %3:sgpr_32 = COPY $sgpr3
1494    %2:sgpr_32 = COPY $sgpr2
1495    %1:sgpr_32 = COPY $sgpr1
1496    %0:sgpr_32 = COPY $sgpr0
1497    %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
1498    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)
1499    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)
1500    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)
1501    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)
1502    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)
1503    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)
1504    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)
1505    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)
1506    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)
1507...
1508---
1509
1510# GFX10-LABEL: name: gfx10_tbuffer_store_not_merged_num_format_mismatch
1511# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr8
1512# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr7
1513# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr6
1514# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr5
1515# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr4
1516# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr3
1517# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr2
1518# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr1
1519# GFX10: %{{[0-9]+}}:vgpr_32 = COPY $vgpr0
1520# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr3
1521# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr2
1522# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr1
1523# GFX10: %{{[0-9]+}}:sgpr_32 = COPY $sgpr0
1524# GFX10: %{{[0-9]+}}:sgpr_128 = REG_SEQUENCE %12, %subreg.sub0, %11, %subreg.sub1, %10, %subreg.sub2, %9, %subreg.sub3
1525# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %8, %13, 0, 4, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1526# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %7, %13, 0, 8, 13, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1527# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %6, %13, 0, 16, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1528# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %5, %13, 0, 20, 13, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1529# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %4, %13, 0, 24, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1530# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %3, %13, 0, 28, 13, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1531# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %2, %13, 0, 36, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1532# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %1, %13, 0, 40, 13, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1533# GFX10: TBUFFER_STORE_FORMAT_X_OFFSET_exact %0, %13, 0, 44, 22, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4)
1534name: gfx10_tbuffer_store_not_merged_num_format_mismatch
1535body:             |
1536  bb.0.entry:
1537    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
1538    %12:vgpr_32 = COPY $vgpr8
1539    %11:vgpr_32 = COPY $vgpr7
1540    %10:vgpr_32 = COPY $vgpr6
1541    %9:vgpr_32 = COPY $vgpr5
1542    %8:vgpr_32 = COPY $vgpr4
1543    %7:vgpr_32 = COPY $vgpr3
1544    %6:vgpr_32 = COPY $vgpr2
1545    %5:vgpr_32 = COPY $vgpr1
1546    %4:vgpr_32 = COPY $vgpr0
1547    %3:sgpr_32 = COPY $sgpr3
1548    %2:sgpr_32 = COPY $sgpr2
1549    %1:sgpr_32 = COPY $sgpr1
1550    %0:sgpr_32 = COPY $sgpr0
1551    %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
1552    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)
1553    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)
1554    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)
1555    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)
1556    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)
1557    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)
1558    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)
1559    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)
1560    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)
1561...
1562---
1563
1564
1565# GFX10-LABEL: name: gfx10_tbuffer_load_not_merged_swizzled_0
1566# 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)
1567# 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)
1568name: gfx10_tbuffer_load_not_merged_swizzled_0
1569body:             |
1570  bb.0.entry:
1571    %0:sgpr_32 = COPY $sgpr0
1572    %1:sgpr_32 = COPY $sgpr1
1573    %2:sgpr_32 = COPY $sgpr2
1574    %3:sgpr_32 = COPY $sgpr3
1575    %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
1576    %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)
1577    %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)
1578...
1579---
1580
1581
1582# GFX10-LABEL: name: gfx10_tbuffer_load_not_merged_swizzled_1
1583# 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)
1584# 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)
1585name: gfx10_tbuffer_load_not_merged_swizzled_1
1586body:             |
1587  bb.0.entry:
1588    %0:sgpr_32 = COPY $sgpr0
1589    %1:sgpr_32 = COPY $sgpr1
1590    %2:sgpr_32 = COPY $sgpr2
1591    %3:sgpr_32 = COPY $sgpr3
1592    %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
1593    %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)
1594    %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)
1595...
1596---
1597
1598
1599# GFX10-LABEL: name: gfx10_tbuffer_load_merge_across_swizzle
1600# 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)
1601# 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)
1602name: gfx10_tbuffer_load_merge_across_swizzle
1603body:             |
1604  bb.0.entry:
1605    %0:sgpr_32 = COPY $sgpr0
1606    %1:sgpr_32 = COPY $sgpr1
1607    %2:sgpr_32 = COPY $sgpr2
1608    %3:sgpr_32 = COPY $sgpr3
1609    %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
1610    %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)
1611    %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)
1612    %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)
1613...
1614---
1615