xref: /llvm-project/llvm/test/CodeGen/AMDGPU/merge-image-sample.mir (revision 9e9907f1cfa424366fba58d9520f9305b537cec9)
1# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -verify-machineinstrs -run-pass si-load-store-opt -o - %s | FileCheck -check-prefix=GFX9 %s
2
3# GFX9-LABEL: name: image_sample_l_merged_v1v3
4# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
5# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
6# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
7
8name: image_sample_l_merged_v1v3
9body:             |
10  bb.0.entry:
11    %0:sgpr_64 = COPY $sgpr0_sgpr1
12    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
13    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
14    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
15    %4:vgpr_32 = COPY %2.sub3
16    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
17    %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
18    %7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
19...
20---
21
22# GFX9-LABEL: name: image_sample_l_merged_v1v3_reversed
23# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)
24# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub3
25# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub0_sub1_sub2
26
27name: image_sample_l_merged_v1v3_reversed
28body:             |
29  bb.0.entry:
30    %0:sgpr_64 = COPY $sgpr0_sgpr1
31    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
32    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
33    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
34    %4:vgpr_32 = COPY %2.sub3
35    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
36    %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
37    %7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
38...
39---
40
41# GFX9-LABEL: name: image_sample_l_merged_v2v2
42# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)
43# GFX9: %{{[0-9]+}}:vreg_64 = COPY %8.sub0_sub1
44# GFX9: %{{[0-9]+}}:vreg_64 = COPY killed %8.sub2_sub3
45
46name: image_sample_l_merged_v2v2
47body:             |
48  bb.0.entry:
49    %0:sgpr_64 = COPY $sgpr0_sgpr1
50    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
51    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
52    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
53    %4:vgpr_32 = COPY %2.sub3
54    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
55    %6:vreg_64 = IMAGE_SAMPLE_L_V2_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 3, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s64), align 16, addrspace 4)
56    %7:vreg_64 = IMAGE_SAMPLE_L_V2_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 12, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s64), align 16, addrspace 4)
57...
58---
59
60# GFX9-LABEL: name: image_sample_l_merged_v2v2_reversed
61# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)
62# GFX9: %{{[0-9]+}}:vreg_64 = COPY %8.sub2_sub3
63# GFX9: %{{[0-9]+}}:vreg_64 = COPY killed %8.sub0_sub1
64
65name: image_sample_l_merged_v2v2_reversed
66body:             |
67  bb.0.entry:
68    %0:sgpr_64 = COPY $sgpr0_sgpr1
69    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
70    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
71    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
72    %4:vgpr_32 = COPY %2.sub3
73    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
74    %6:vreg_64 = IMAGE_SAMPLE_L_V2_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 12, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s64), align 16, addrspace 4)
75    %7:vreg_64 = IMAGE_SAMPLE_L_V2_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 3, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s64), align 16, addrspace 4)
76...
77---
78
79# GFX9-LABEL: name: image_sample_l_merged_v3v1
80# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)
81# GFX9: %{{[0-9]+}}:vreg_96 = COPY %8.sub0_sub1_sub2
82# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %8.sub3
83
84name: image_sample_l_merged_v3v1
85body:             |
86  bb.0.entry:
87    %0:sgpr_64 = COPY $sgpr0_sgpr1
88    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
89    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
90    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
91    %4:vgpr_32 = COPY %2.sub3
92    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
93    %6:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
94    %7:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
95...
96---
97
98# GFX9-LABEL: name: image_sample_l_merged_v3v1_reversed
99# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
100# GFX9: %{{[0-9]+}}:vreg_96 = COPY %8.sub1_sub2_sub3
101# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %8.sub0
102
103name: image_sample_l_merged_v3v1_reversed
104body:             |
105  bb.0.entry:
106    %0:sgpr_64 = COPY $sgpr0_sgpr1
107    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
108    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
109    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
110    %4:vgpr_32 = COPY %2.sub3
111    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
112    %6:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
113    %7:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
114...
115---
116
117# GFX9-LABEL: name: image_sample_l_divided_merged
118# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)
119
120name: image_sample_l_divided_merged
121body:             |
122  bb.0.entry:
123    %0:sgpr_64 = COPY $sgpr0_sgpr1
124    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
125    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
126    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
127    %4:vgpr_32 = COPY %2.sub3
128    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
129    %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
130    %7:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
131    %8:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
132    %9:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %7:vreg_128, %3:sgpr_256, %2:sgpr_128, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
133    %10:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
134    %11:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
135...
136---
137
138# GFX9-LABEL: name: image_sample_l_divided_not_merged
139# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
140# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
141
142name: image_sample_l_divided_not_merged
143body:             |
144  bb.0.entry:
145    %0:sgpr_64 = COPY $sgpr0_sgpr1
146    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
147    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
148    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
149    %4:vreg_128 = COPY %2
150    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
151    %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
152    IMAGE_STORE_V4_V4 %4:vreg_128, %5:vreg_128, %3:sgpr_256, 15, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (store (s128))
153    %7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
154...
155---
156
157# GFX9-LABEL: name: image_sample_l_dmask_overlapped_not_merged
158# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 4, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
159# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
160
161name: image_sample_l_dmask_overlapped_not_merged
162body:             |
163  bb.0.entry:
164    %0:sgpr_64 = COPY $sgpr0_sgpr1
165    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
166    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
167    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
168    %4:vgpr_32 = COPY %2.sub3
169    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
170    %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 4, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
171    %7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
172...
173---
174
175# GFX9-LABEL: name: image_sample_l_dmask_zero_not_merged
176# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
177# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
178
179name: image_sample_l_dmask_zero_not_merged
180body:             |
181  bb.0.entry:
182    %0:sgpr_64 = COPY $sgpr0_sgpr1
183    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
184    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
185    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
186    %4:vgpr_32 = COPY %2.sub3
187    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
188    %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
189    %7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
190...
191---
192
193# GFX9-LABEL: name: image_sample_l_dmask_not_disjoint_not_merged
194# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 4, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
195# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 11, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
196
197name: image_sample_l_dmask_not_disjoint_not_merged
198body:             |
199  bb.0.entry:
200    %0:sgpr_64 = COPY $sgpr0_sgpr1
201    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
202    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
203    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
204    %4:vgpr_32 = COPY %2.sub3
205    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
206    %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 4, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
207    %7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 11, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
208...
209---
210
211# GFX9-LABEL: name: image_sample_l_not_merged_0
212# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
213# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %6, %3, %2, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
214
215name: image_sample_l_not_merged_0
216body:             |
217  bb.0.entry:
218    %0:sgpr_64 = COPY $sgpr0_sgpr1
219    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
220    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
221    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
222    %4:vgpr_32 = COPY %2.sub3
223    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
224    %6:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 1, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
225    %7:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
226    %8:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %6, %3, %2, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
227...
228---
229
230# GFX9-LABEL: name: image_sample_l_not_merged_1
231# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %6, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
232# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %6, %4, %2, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
233
234name: image_sample_l_not_merged_1
235body:             |
236  bb.0.entry:
237    %0:sgpr_64 = COPY $sgpr0_sgpr1
238    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
239    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
240    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
241    %4:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
242    %5:vgpr_32 = COPY %2.sub3
243    %6:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
244    %7:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %6, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
245    %8:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %6, %4, %2, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
246...
247---
248
249# GFX9-LABEL: name: image_sample_l_not_merged_2
250# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %6, %4, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
251# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %6, %4, %3, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
252
253name: image_sample_l_not_merged_2
254body:             |
255  bb.0.entry:
256    %0:sgpr_64 = COPY $sgpr0_sgpr1
257    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
258    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
259    %3:sgpr_128 = COPY $sgpr92_sgpr93_sgpr94_sgpr95
260    %4:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
261    %5:vgpr_32 = COPY %2.sub3
262    %6:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
263    %7:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %6, %4, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
264    %8:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %6, %4, %3, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
265...
266---
267
268# GFX9-LABEL: name: image_sample_l_not_merged_3
269# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
270# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 1, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
271
272name: image_sample_l_not_merged_3
273body:             |
274  bb.0.entry:
275    %0:sgpr_64 = COPY $sgpr0_sgpr1
276    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
277    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
278    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
279    %4:vgpr_32 = COPY %2.sub3
280    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
281    %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
282    %7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 1, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
283...
284---
285
286# GFX9-LABEL: name: image_sample_l_not_merged_4
287# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
288# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 1, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
289
290name: image_sample_l_not_merged_4
291body:             |
292  bb.0.entry:
293    %0:sgpr_64 = COPY $sgpr0_sgpr1
294    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
295    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
296    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
297    %4:vgpr_32 = COPY %2.sub3
298    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
299    %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
300    %7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 1, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
301...
302---
303
304# GFX9-LABEL: name: image_sample_l_not_merged_5
305# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
306# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 1, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
307
308name: image_sample_l_not_merged_5
309body:             |
310  bb.0.entry:
311    %0:sgpr_64 = COPY $sgpr0_sgpr1
312    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
313    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
314    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
315    %4:vgpr_32 = COPY %2.sub3
316    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
317    %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
318    %7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 1, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
319...
320---
321
322# GFX9-LABEL: name: image_sample_l_not_merged_6
323# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
324# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 1, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
325
326name: image_sample_l_not_merged_6
327body:             |
328  bb.0.entry:
329    %0:sgpr_64 = COPY $sgpr0_sgpr1
330    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
331    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
332    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
333    %4:vgpr_32 = COPY %2.sub3
334    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
335    %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
336    %7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 1, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
337...
338---
339
340# GFX9-LABEL: name: image_sample_l_not_merged_7
341# GFX9: %{{[0-9]+}}:vreg_64 = IMAGE_SAMPLE_L_V2_V4 %5, %3, %2, 8, 0, 0, 0, 1, 0, -1, 0, implicit $exec :: (dereferenceable load (s64), addrspace 4)
342# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
343
344name: image_sample_l_not_merged_7
345body:             |
346  bb.0.entry:
347    %0:sgpr_64 = COPY $sgpr0_sgpr1
348    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
349    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
350    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
351    %4:vgpr_32 = COPY %2.sub3
352    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
353    %6:vreg_64 = IMAGE_SAMPLE_L_V2_V4 %5, %3, %2, 8, 0, 0, 0, 1, 0, -1, 0, implicit $exec :: (dereferenceable load (s64), addrspace 4)
354    %7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
355...
356---
357
358# GFX9-LABEL: name: image_sample_l_not_merged_8
359# GFX9: %{{[0-9]+}}:vreg_64 = IMAGE_SAMPLE_L_V2_V4 %5, %3, %2, 8, 0, 0, 0, 0, 1, -1, 0, implicit $exec :: (dereferenceable load (s64), addrspace 4)
360# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
361
362name: image_sample_l_not_merged_8
363body:             |
364  bb.0.entry:
365    %0:sgpr_64 = COPY $sgpr0_sgpr1
366    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
367    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
368    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
369    %4:vgpr_32 = COPY %2.sub3
370    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
371    %6:vreg_64 = IMAGE_SAMPLE_L_V2_V4 %5, %3, %2, 8, 0, 0, 0, 0, 1, -1, 0, implicit $exec :: (dereferenceable load (s64), addrspace 4)
372    %7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
373...
374---
375
376# GFX9-LABEL: name: image_sample_l_not_merged_9
377# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
378# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
379
380name: image_sample_l_not_merged_9
381body:             |
382  bb.0.entry:
383    %0:sgpr_64 = COPY $sgpr0_sgpr1
384    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
385    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
386    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
387    %4:vgpr_32 = COPY %2.sub3
388    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
389    %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
390    %7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
391...
392---
393
394# GFX9-LABEL: name: image_sample_l_not_merged_10
395# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
396# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, -1, 1, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
397
398name: image_sample_l_not_merged_10
399body:             |
400  bb.0.entry:
401    %0:sgpr_64 = COPY $sgpr0_sgpr1
402    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
403    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
404    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
405    %4:vgpr_32 = COPY %2.sub3
406    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
407    %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
408    %7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, -1, 1, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
409...
410---
411
412# GFX9-LABEL: name: image_sample_merged_v1v3
413# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
414# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
415# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
416
417name: image_sample_merged_v1v3
418body:             |
419  bb.0.entry:
420    %0:sgpr_64 = COPY $sgpr0_sgpr1
421    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
422    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
423    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
424    %4:vgpr_32 = COPY %2.sub3
425    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
426    %6:vgpr_32 = IMAGE_SAMPLE_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
427    %7:vreg_96 = IMAGE_SAMPLE_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
428...
429---
430
431# GFX9-LABEL: name: image_sample_b_merged_v1v3
432# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_B_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
433# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
434# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
435
436name: image_sample_b_merged_v1v3
437body:             |
438  bb.0.entry:
439    %0:sgpr_64 = COPY $sgpr0_sgpr1
440    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
441    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
442    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
443    %4:vgpr_32 = COPY %2.sub3
444    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
445    %6:vgpr_32 = IMAGE_SAMPLE_B_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
446    %7:vreg_96 = IMAGE_SAMPLE_B_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
447...
448---
449
450# GFX9-LABEL: name: image_sample_b_cl_merged_v1v3
451# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_B_CL_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
452# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
453# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
454
455name: image_sample_b_cl_merged_v1v3
456body:             |
457  bb.0.entry:
458    %0:sgpr_64 = COPY $sgpr0_sgpr1
459    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
460    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
461    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
462    %4:vgpr_32 = COPY %2.sub3
463    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
464    %6:vgpr_32 = IMAGE_SAMPLE_B_CL_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
465    %7:vreg_96 = IMAGE_SAMPLE_B_CL_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
466...
467---
468
469# GFX9-LABEL: name: image_sample_b_cl_o_merged_v1v3
470# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_B_CL_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
471# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
472# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
473
474name: image_sample_b_cl_o_merged_v1v3
475body:             |
476  bb.0.entry:
477    %0:sgpr_64 = COPY $sgpr0_sgpr1
478    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
479    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
480    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
481    %4:vgpr_32 = COPY %2.sub3
482    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
483    %6:vgpr_32 = IMAGE_SAMPLE_B_CL_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
484    %7:vreg_96 = IMAGE_SAMPLE_B_CL_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
485...
486---
487
488# GFX9-LABEL: name: image_sample_b_o_merged_v1v3
489# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_B_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
490# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
491# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
492
493name: image_sample_b_o_merged_v1v3
494body:             |
495  bb.0.entry:
496    %0:sgpr_64 = COPY $sgpr0_sgpr1
497    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
498    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
499    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
500    %4:vgpr_32 = COPY %2.sub3
501    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
502    %6:vgpr_32 = IMAGE_SAMPLE_B_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
503    %7:vreg_96 = IMAGE_SAMPLE_B_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
504...
505---
506
507# GFX9-LABEL: name: image_sample_c_merged_v1v3
508# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
509# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
510# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
511
512name: image_sample_c_merged_v1v3
513body:             |
514  bb.0.entry:
515    %0:sgpr_64 = COPY $sgpr0_sgpr1
516    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
517    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
518    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
519    %4:vgpr_32 = COPY %2.sub3
520    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
521    %6:vgpr_32 = IMAGE_SAMPLE_C_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
522    %7:vreg_96 = IMAGE_SAMPLE_C_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
523...
524---
525
526# GFX9-LABEL: name: image_sample_cd_merged_v1v3
527# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_CD_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
528# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
529# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
530
531name: image_sample_cd_merged_v1v3
532body:             |
533  bb.0.entry:
534    %0:sgpr_64 = COPY $sgpr0_sgpr1
535    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
536    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
537    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
538    %4:vgpr_32 = COPY %2.sub3
539    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
540    %6:vgpr_32 = IMAGE_SAMPLE_CD_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
541    %7:vreg_96 = IMAGE_SAMPLE_CD_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
542...
543---
544
545# GFX9-LABEL: name: image_sample_cd_cl_merged_v1v3
546# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_CD_CL_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
547# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
548# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
549
550name: image_sample_cd_cl_merged_v1v3
551body:             |
552  bb.0.entry:
553    %0:sgpr_64 = COPY $sgpr0_sgpr1
554    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
555    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
556    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
557    %4:vgpr_32 = COPY %2.sub3
558    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
559    %6:vgpr_32 = IMAGE_SAMPLE_CD_CL_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
560    %7:vreg_96 = IMAGE_SAMPLE_CD_CL_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
561...
562---
563
564# GFX9-LABEL: name: image_sample_cd_cl_o_merged_v1v3
565# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_CD_CL_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
566# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
567# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
568
569name: image_sample_cd_cl_o_merged_v1v3
570body:             |
571  bb.0.entry:
572    %0:sgpr_64 = COPY $sgpr0_sgpr1
573    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
574    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
575    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
576    %4:vgpr_32 = COPY %2.sub3
577    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
578    %6:vgpr_32 = IMAGE_SAMPLE_CD_CL_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
579    %7:vreg_96 = IMAGE_SAMPLE_CD_CL_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
580...
581---
582
583# GFX9-LABEL: name: image_sample_cd_o_merged_v1v3
584# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_CD_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
585# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
586# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
587
588name: image_sample_cd_o_merged_v1v3
589body:             |
590  bb.0.entry:
591    %0:sgpr_64 = COPY $sgpr0_sgpr1
592    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
593    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
594    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
595    %4:vgpr_32 = COPY %2.sub3
596    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
597    %6:vgpr_32 = IMAGE_SAMPLE_CD_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
598    %7:vreg_96 = IMAGE_SAMPLE_CD_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
599...
600---
601
602# GFX9-LABEL: name: image_sample_cl_merged_v1v3
603# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_CL_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
604# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
605# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
606
607name: image_sample_cl_merged_v1v3
608body:             |
609  bb.0.entry:
610    %0:sgpr_64 = COPY $sgpr0_sgpr1
611    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
612    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
613    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
614    %4:vgpr_32 = COPY %2.sub3
615    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
616    %6:vgpr_32 = IMAGE_SAMPLE_CL_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
617    %7:vreg_96 = IMAGE_SAMPLE_CL_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
618...
619---
620
621# GFX9-LABEL: name: image_sample_cl_o_merged_v1v3
622# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_CL_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
623# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
624# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
625
626name: image_sample_cl_o_merged_v1v3
627body:             |
628  bb.0.entry:
629    %0:sgpr_64 = COPY $sgpr0_sgpr1
630    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
631    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
632    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
633    %4:vgpr_32 = COPY %2.sub3
634    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
635    %6:vgpr_32 = IMAGE_SAMPLE_CL_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
636    %7:vreg_96 = IMAGE_SAMPLE_CL_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
637...
638---
639
640# GFX9-LABEL: name: image_sample_c_b_merged_v1v3
641# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_B_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
642# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
643# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
644
645name: image_sample_c_b_merged_v1v3
646body:             |
647  bb.0.entry:
648    %0:sgpr_64 = COPY $sgpr0_sgpr1
649    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
650    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
651    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
652    %4:vgpr_32 = COPY %2.sub3
653    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
654    %6:vgpr_32 = IMAGE_SAMPLE_C_B_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
655    %7:vreg_96 = IMAGE_SAMPLE_C_B_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
656...
657---
658
659# GFX9-LABEL: name: image_sample_c_b_cl_merged_v1v3
660# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_B_CL_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
661# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
662# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
663
664name: image_sample_c_b_cl_merged_v1v3
665body:             |
666  bb.0.entry:
667    %0:sgpr_64 = COPY $sgpr0_sgpr1
668    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
669    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
670    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
671    %4:vgpr_32 = COPY %2.sub3
672    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
673    %6:vgpr_32 = IMAGE_SAMPLE_C_B_CL_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
674    %7:vreg_96 = IMAGE_SAMPLE_C_B_CL_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
675...
676---
677
678# GFX9-LABEL: name: image_sample_c_b_cl_o_merged_v1v3
679# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_B_CL_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
680# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
681# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
682
683name: image_sample_c_b_cl_o_merged_v1v3
684body:             |
685  bb.0.entry:
686    %0:sgpr_64 = COPY $sgpr0_sgpr1
687    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
688    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
689    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
690    %4:vgpr_32 = COPY %2.sub3
691    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
692    %6:vgpr_32 = IMAGE_SAMPLE_C_B_CL_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
693    %7:vreg_96 = IMAGE_SAMPLE_C_B_CL_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
694...
695---
696
697# GFX9-LABEL: name: image_sample_c_b_o_merged_v1v3
698# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_B_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
699# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
700# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
701
702name: image_sample_c_b_o_merged_v1v3
703body:             |
704  bb.0.entry:
705    %0:sgpr_64 = COPY $sgpr0_sgpr1
706    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
707    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
708    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
709    %4:vgpr_32 = COPY %2.sub3
710    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
711    %6:vgpr_32 = IMAGE_SAMPLE_C_B_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
712    %7:vreg_96 = IMAGE_SAMPLE_C_B_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
713...
714---
715
716# GFX9-LABEL: name: image_sample_c_cd_merged_v1v3
717# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_CD_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
718# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
719# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
720
721name: image_sample_c_cd_merged_v1v3
722body:             |
723  bb.0.entry:
724    %0:sgpr_64 = COPY $sgpr0_sgpr1
725    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
726    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
727    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
728    %4:vgpr_32 = COPY %2.sub3
729    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
730    %6:vgpr_32 = IMAGE_SAMPLE_C_CD_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
731    %7:vreg_96 = IMAGE_SAMPLE_C_CD_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
732...
733---
734
735# GFX9-LABEL: name: image_sample_c_cd_cl_merged_v1v3
736# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_CD_CL_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
737# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
738# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
739
740name: image_sample_c_cd_cl_merged_v1v3
741body:             |
742  bb.0.entry:
743    %0:sgpr_64 = COPY $sgpr0_sgpr1
744    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
745    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
746    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
747    %4:vgpr_32 = COPY %2.sub3
748    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
749    %6:vgpr_32 = IMAGE_SAMPLE_C_CD_CL_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
750    %7:vreg_96 = IMAGE_SAMPLE_C_CD_CL_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
751...
752---
753
754# GFX9-LABEL: name: image_sample_c_cd_cl_o_merged_v1v3
755# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_CD_CL_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
756# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
757# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
758
759name: image_sample_c_cd_cl_o_merged_v1v3
760body:             |
761  bb.0.entry:
762    %0:sgpr_64 = COPY $sgpr0_sgpr1
763    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
764    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
765    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
766    %4:vgpr_32 = COPY %2.sub3
767    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
768    %6:vgpr_32 = IMAGE_SAMPLE_C_CD_CL_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
769    %7:vreg_96 = IMAGE_SAMPLE_C_CD_CL_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
770...
771---
772
773# GFX9-LABEL: name: image_sample_c_cd_o_merged_v1v3
774# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_CD_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
775# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
776# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
777
778name: image_sample_c_cd_o_merged_v1v3
779body:             |
780  bb.0.entry:
781    %0:sgpr_64 = COPY $sgpr0_sgpr1
782    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
783    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
784    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
785    %4:vgpr_32 = COPY %2.sub3
786    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
787    %6:vgpr_32 = IMAGE_SAMPLE_C_CD_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
788    %7:vreg_96 = IMAGE_SAMPLE_C_CD_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
789...
790---
791
792# GFX9-LABEL: name: image_sample_c_cl_merged_v1v3
793# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_CL_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
794# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
795# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
796
797name: image_sample_c_cl_merged_v1v3
798body:             |
799  bb.0.entry:
800    %0:sgpr_64 = COPY $sgpr0_sgpr1
801    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
802    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
803    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
804    %4:vgpr_32 = COPY %2.sub3
805    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
806    %6:vgpr_32 = IMAGE_SAMPLE_C_CL_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
807    %7:vreg_96 = IMAGE_SAMPLE_C_CL_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
808...
809---
810
811# GFX9-LABEL: name: image_sample_c_cl_o_merged_v1v3
812# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_CL_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
813# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
814# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
815
816name: image_sample_c_cl_o_merged_v1v3
817body:             |
818  bb.0.entry:
819    %0:sgpr_64 = COPY $sgpr0_sgpr1
820    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
821    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
822    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
823    %4:vgpr_32 = COPY %2.sub3
824    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
825    %6:vgpr_32 = IMAGE_SAMPLE_C_CL_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
826    %7:vreg_96 = IMAGE_SAMPLE_C_CL_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
827...
828---
829
830# GFX9-LABEL: name: image_sample_c_d_merged_v1v3
831# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_D_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
832# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
833# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
834
835name: image_sample_c_d_merged_v1v3
836body:             |
837  bb.0.entry:
838    %0:sgpr_64 = COPY $sgpr0_sgpr1
839    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
840    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
841    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
842    %4:vgpr_32 = COPY %2.sub3
843    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
844    %6:vgpr_32 = IMAGE_SAMPLE_C_D_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
845    %7:vreg_96 = IMAGE_SAMPLE_C_D_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
846...
847---
848
849# GFX9-LABEL: name: image_sample_c_d_cl_merged_v1v3
850# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_D_CL_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
851# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
852# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
853
854name: image_sample_c_d_cl_merged_v1v3
855body:             |
856  bb.0.entry:
857    %0:sgpr_64 = COPY $sgpr0_sgpr1
858    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
859    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
860    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
861    %4:vgpr_32 = COPY %2.sub3
862    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
863    %6:vgpr_32 = IMAGE_SAMPLE_C_D_CL_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
864    %7:vreg_96 = IMAGE_SAMPLE_C_D_CL_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
865...
866---
867
868# GFX9-LABEL: name: image_sample_c_d_cl_o_merged_v1v3
869# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_D_CL_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
870# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
871# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
872
873name: image_sample_c_d_cl_o_merged_v1v3
874body:             |
875  bb.0.entry:
876    %0:sgpr_64 = COPY $sgpr0_sgpr1
877    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
878    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
879    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
880    %4:vgpr_32 = COPY %2.sub3
881    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
882    %6:vgpr_32 = IMAGE_SAMPLE_C_D_CL_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
883    %7:vreg_96 = IMAGE_SAMPLE_C_D_CL_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
884...
885---
886
887# GFX9-LABEL: name: image_sample_c_d_o_merged_v1v3
888# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_D_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
889# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
890# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
891
892name: image_sample_c_d_o_merged_v1v3
893body:             |
894  bb.0.entry:
895    %0:sgpr_64 = COPY $sgpr0_sgpr1
896    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
897    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
898    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
899    %4:vgpr_32 = COPY %2.sub3
900    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
901    %6:vgpr_32 = IMAGE_SAMPLE_C_D_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
902    %7:vreg_96 = IMAGE_SAMPLE_C_D_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
903...
904---
905
906# GFX9-LABEL: name: image_sample_c_l_merged_v1v3
907# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_L_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
908# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
909# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
910
911name: image_sample_c_l_merged_v1v3
912body:             |
913  bb.0.entry:
914    %0:sgpr_64 = COPY $sgpr0_sgpr1
915    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
916    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
917    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
918    %4:vgpr_32 = COPY %2.sub3
919    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
920    %6:vgpr_32 = IMAGE_SAMPLE_C_L_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
921    %7:vreg_96 = IMAGE_SAMPLE_C_L_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
922...
923---
924
925# GFX9-LABEL: name: image_sample_c_lz_merged_v1v3
926# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_LZ_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
927# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
928# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
929
930name: image_sample_c_lz_merged_v1v3
931body:             |
932  bb.0.entry:
933    %0:sgpr_64 = COPY $sgpr0_sgpr1
934    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
935    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
936    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
937    %4:vgpr_32 = COPY %2.sub3
938    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
939    %6:vgpr_32 = IMAGE_SAMPLE_C_LZ_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
940    %7:vreg_96 = IMAGE_SAMPLE_C_LZ_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
941...
942---
943
944# GFX9-LABEL: name: image_sample_c_lz_o_merged_v1v3
945# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_LZ_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
946# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
947# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
948
949name: image_sample_c_lz_o_merged_v1v3
950body:             |
951  bb.0.entry:
952    %0:sgpr_64 = COPY $sgpr0_sgpr1
953    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
954    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
955    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
956    %4:vgpr_32 = COPY %2.sub3
957    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
958    %6:vgpr_32 = IMAGE_SAMPLE_C_LZ_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
959    %7:vreg_96 = IMAGE_SAMPLE_C_LZ_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
960...
961---
962
963# GFX9-LABEL: name: image_sample_c_l_o_merged_v1v3
964# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_L_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
965# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
966# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
967
968name: image_sample_c_l_o_merged_v1v3
969body:             |
970  bb.0.entry:
971    %0:sgpr_64 = COPY $sgpr0_sgpr1
972    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
973    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
974    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
975    %4:vgpr_32 = COPY %2.sub3
976    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
977    %6:vgpr_32 = IMAGE_SAMPLE_C_L_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
978    %7:vreg_96 = IMAGE_SAMPLE_C_L_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
979...
980---
981
982# GFX9-LABEL: name: image_sample_c_o_merged_v1v3
983# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
984# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
985# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
986
987name: image_sample_c_o_merged_v1v3
988body:             |
989  bb.0.entry:
990    %0:sgpr_64 = COPY $sgpr0_sgpr1
991    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
992    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
993    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
994    %4:vgpr_32 = COPY %2.sub3
995    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
996    %6:vgpr_32 = IMAGE_SAMPLE_C_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
997    %7:vreg_96 = IMAGE_SAMPLE_C_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
998...
999---
1000
1001# GFX9-LABEL: name: image_sample_d_merged_v1v3
1002# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_D_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
1003# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
1004# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
1005
1006name: image_sample_d_merged_v1v3
1007body:             |
1008  bb.0.entry:
1009    %0:sgpr_64 = COPY $sgpr0_sgpr1
1010    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
1011    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
1012    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
1013    %4:vgpr_32 = COPY %2.sub3
1014    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
1015    %6:vgpr_32 = IMAGE_SAMPLE_D_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
1016    %7:vreg_96 = IMAGE_SAMPLE_D_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
1017...
1018---
1019
1020# GFX9-LABEL: name: image_sample_d_cl_merged_v1v3
1021# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_D_CL_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
1022# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
1023# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
1024
1025name: image_sample_d_cl_merged_v1v3
1026body:             |
1027  bb.0.entry:
1028    %0:sgpr_64 = COPY $sgpr0_sgpr1
1029    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
1030    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
1031    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
1032    %4:vgpr_32 = COPY %2.sub3
1033    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
1034    %6:vgpr_32 = IMAGE_SAMPLE_D_CL_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
1035    %7:vreg_96 = IMAGE_SAMPLE_D_CL_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
1036...
1037---
1038
1039# GFX9-LABEL: name: image_sample_d_cl_o_merged_v1v3
1040# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_D_CL_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
1041# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
1042# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
1043
1044name: image_sample_d_cl_o_merged_v1v3
1045body:             |
1046  bb.0.entry:
1047    %0:sgpr_64 = COPY $sgpr0_sgpr1
1048    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
1049    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
1050    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
1051    %4:vgpr_32 = COPY %2.sub3
1052    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
1053    %6:vgpr_32 = IMAGE_SAMPLE_D_CL_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
1054    %7:vreg_96 = IMAGE_SAMPLE_D_CL_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
1055...
1056---
1057
1058# GFX9-LABEL: name: image_sample_d_o_merged_v1v3
1059# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_D_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
1060# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
1061# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
1062
1063name: image_sample_d_o_merged_v1v3
1064body:             |
1065  bb.0.entry:
1066    %0:sgpr_64 = COPY $sgpr0_sgpr1
1067    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
1068    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
1069    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
1070    %4:vgpr_32 = COPY %2.sub3
1071    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
1072    %6:vgpr_32 = IMAGE_SAMPLE_D_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
1073    %7:vreg_96 = IMAGE_SAMPLE_D_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
1074...
1075---
1076
1077# GFX9-LABEL: name: image_sample_lz_merged_v1v3
1078# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_LZ_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
1079# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
1080# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
1081
1082name: image_sample_lz_merged_v1v3
1083body:             |
1084  bb.0.entry:
1085    %0:sgpr_64 = COPY $sgpr0_sgpr1
1086    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
1087    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
1088    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
1089    %4:vgpr_32 = COPY %2.sub3
1090    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
1091    %6:vgpr_32 = IMAGE_SAMPLE_LZ_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
1092    %7:vreg_96 = IMAGE_SAMPLE_LZ_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
1093...
1094---
1095
1096# GFX9-LABEL: name: image_sample_lz_o_merged_v1v3
1097# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_LZ_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
1098# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
1099# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
1100
1101name: image_sample_lz_o_merged_v1v3
1102body:             |
1103  bb.0.entry:
1104    %0:sgpr_64 = COPY $sgpr0_sgpr1
1105    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
1106    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
1107    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
1108    %4:vgpr_32 = COPY %2.sub3
1109    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
1110    %6:vgpr_32 = IMAGE_SAMPLE_LZ_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
1111    %7:vreg_96 = IMAGE_SAMPLE_LZ_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
1112...
1113---
1114
1115# GFX9-LABEL: name: image_sample_l_o_merged_v1v3
1116# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
1117# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
1118# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
1119
1120name: image_sample_l_o_merged_v1v3
1121body:             |
1122  bb.0.entry:
1123    %0:sgpr_64 = COPY $sgpr0_sgpr1
1124    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
1125    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
1126    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
1127    %4:vgpr_32 = COPY %2.sub3
1128    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
1129    %6:vgpr_32 = IMAGE_SAMPLE_L_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
1130    %7:vreg_96 = IMAGE_SAMPLE_L_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
1131...
1132---
1133
1134# GFX9-LABEL: name: image_sample_o_merged_v1v3
1135# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
1136# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
1137# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
1138
1139name: image_sample_o_merged_v1v3
1140body:             |
1141  bb.0.entry:
1142    %0:sgpr_64 = COPY $sgpr0_sgpr1
1143    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
1144    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
1145    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
1146    %4:vgpr_32 = COPY %2.sub3
1147    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
1148    %6:vgpr_32 = IMAGE_SAMPLE_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
1149    %7:vreg_96 = IMAGE_SAMPLE_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
1150...
1151---
1152