[docs] Add LICENSE.txt to the root of the mono-repo
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / merge-image-sample.mir
blob0b51a39d989b0d5fb09c2ed155cb16e9da24d5ad
1 # RUN: llc -march=amdgcn -mcpu=gfx900 -verify-machineinstrs -run-pass si-load-store-opt -o - %s | FileCheck -check-prefix=GFX9 %s
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
8 name: image_sample_l_merged_v1v3
9 body:             |
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, 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 ---
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
27 name: image_sample_l_merged_v1v3_reversed
28 body:             |
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, 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 ---
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
46 name: image_sample_l_merged_v2v2
47 body:             |
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, 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 ---
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
65 name: image_sample_l_merged_v2v2_reversed
66 body:             |
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, 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 ---
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
84 name: image_sample_l_merged_v3v1
85 body:             |
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, 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 ---
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
103 name: image_sample_l_merged_v3v1_reversed
104 body:             |
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, 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)
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)
120 name: image_sample_l_divided_merged
121 body:             |
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, 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, 0, implicit $exec :: (dereferenceable invariant load (s128))
131     %8:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 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, 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)
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)
142 name: image_sample_l_divided_not_merged
143 body:             |
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, 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)
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)
161 name: image_sample_l_dmask_overlapped_not_merged
162 body:             |
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, 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)
175 # GFX9-LABEL: name: image_sample_l_dmask_not_disjoint_not_merged
176 # 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)
177 # 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)
179 name: image_sample_l_dmask_not_disjoint_not_merged
180 body:             |
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, 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, 4, 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, 11, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
193 # GFX9-LABEL: name: image_sample_l_not_merged_0
194 # 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)
195 # 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)
197 name: image_sample_l_not_merged_0
198 body:             |
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, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
206     %6:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 1, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
207     %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)
208     %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)
212 # GFX9-LABEL: name: image_sample_l_not_merged_1
213 # 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)
214 # 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)
216 name: image_sample_l_not_merged_1
217 body:             |
218   bb.0.entry:
219     %0:sgpr_64 = COPY $sgpr0_sgpr1
220     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
221     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
222     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
223     %4:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
224     %5:vgpr_32 = COPY %2.sub3
225     %6:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
226     %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)
227     %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)
231 # GFX9-LABEL: name: image_sample_l_not_merged_2
232 # 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)
233 # 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)
235 name: image_sample_l_not_merged_2
236 body:             |
237   bb.0.entry:
238     %0:sgpr_64 = COPY $sgpr0_sgpr1
239     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
240     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
241     %3:sgpr_128 = COPY $sgpr92_sgpr93_sgpr94_sgpr95
242     %4:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
243     %5:vgpr_32 = COPY %2.sub3
244     %6:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
245     %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)
246     %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)
250 # GFX9-LABEL: name: image_sample_l_not_merged_3
251 # 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)
252 # 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)
254 name: image_sample_l_not_merged_3
255 body:             |
256   bb.0.entry:
257     %0:sgpr_64 = COPY $sgpr0_sgpr1
258     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
259     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
260     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
261     %4:vgpr_32 = COPY %2.sub3
262     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
263     %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)
264     %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)
268 # GFX9-LABEL: name: image_sample_l_not_merged_4
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, 0, 0, 1, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
272 name: image_sample_l_not_merged_4
273 body:             |
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, 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, 0, 0, 1, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
286 # GFX9-LABEL: name: image_sample_l_not_merged_5
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, 1, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
290 name: image_sample_l_not_merged_5
291 body:             |
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, 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, 1, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
304 # GFX9-LABEL: name: image_sample_l_not_merged_6
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, 0, 1, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
308 name: image_sample_l_not_merged_6
309 body:             |
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, 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, 0, 1, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
322 # GFX9-LABEL: name: image_sample_l_not_merged_7
323 # 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)
324 # 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)
326 name: image_sample_l_not_merged_7
327 body:             |
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, 0, implicit $exec :: (dereferenceable invariant load (s128))
335     %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)
336     %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)
340 # GFX9-LABEL: name: image_sample_l_not_merged_8
341 # 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)
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)
344 name: image_sample_l_not_merged_8
345 body:             |
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, 0, implicit $exec :: (dereferenceable invariant load (s128))
353     %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)
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)
358 # GFX9-LABEL: name: image_sample_l_not_merged_9
359 # 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)
360 # 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)
362 name: image_sample_l_not_merged_9
363 body:             |
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, 0, implicit $exec :: (dereferenceable invariant load (s128))
371     %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)
372     %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)
376 # GFX9-LABEL: name: image_sample_l_not_merged_10
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, -1, 1, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
380 name: image_sample_l_not_merged_10
381 body:             |
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, 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, -1, 1, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
394 # GFX9-LABEL: name: image_sample_merged_v1v3
395 # 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)
396 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
397 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
399 name: image_sample_merged_v1v3
400 body:             |
401   bb.0.entry:
402     %0:sgpr_64 = COPY $sgpr0_sgpr1
403     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
404     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
405     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
406     %4:vgpr_32 = COPY %2.sub3
407     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
408     %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)
409     %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)
413 # GFX9-LABEL: name: image_sample_b_merged_v1v3
414 # 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)
415 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
416 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
418 name: image_sample_b_merged_v1v3
419 body:             |
420   bb.0.entry:
421     %0:sgpr_64 = COPY $sgpr0_sgpr1
422     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
423     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
424     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
425     %4:vgpr_32 = COPY %2.sub3
426     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
427     %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)
428     %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)
432 # GFX9-LABEL: name: image_sample_b_cl_merged_v1v3
433 # 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)
434 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
435 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
437 name: image_sample_b_cl_merged_v1v3
438 body:             |
439   bb.0.entry:
440     %0:sgpr_64 = COPY $sgpr0_sgpr1
441     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
442     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
443     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
444     %4:vgpr_32 = COPY %2.sub3
445     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
446     %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)
447     %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)
451 # GFX9-LABEL: name: image_sample_b_cl_o_merged_v1v3
452 # 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)
453 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
454 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
456 name: image_sample_b_cl_o_merged_v1v3
457 body:             |
458   bb.0.entry:
459     %0:sgpr_64 = COPY $sgpr0_sgpr1
460     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
461     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
462     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
463     %4:vgpr_32 = COPY %2.sub3
464     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
465     %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)
466     %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)
470 # GFX9-LABEL: name: image_sample_b_o_merged_v1v3
471 # 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)
472 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
473 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
475 name: image_sample_b_o_merged_v1v3
476 body:             |
477   bb.0.entry:
478     %0:sgpr_64 = COPY $sgpr0_sgpr1
479     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
480     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
481     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
482     %4:vgpr_32 = COPY %2.sub3
483     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
484     %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)
485     %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)
489 # GFX9-LABEL: name: image_sample_c_merged_v1v3
490 # 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)
491 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
492 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
494 name: image_sample_c_merged_v1v3
495 body:             |
496   bb.0.entry:
497     %0:sgpr_64 = COPY $sgpr0_sgpr1
498     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
499     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
500     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
501     %4:vgpr_32 = COPY %2.sub3
502     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
503     %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)
504     %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)
508 # GFX9-LABEL: name: image_sample_cd_merged_v1v3
509 # 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)
510 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
511 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
513 name: image_sample_cd_merged_v1v3
514 body:             |
515   bb.0.entry:
516     %0:sgpr_64 = COPY $sgpr0_sgpr1
517     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
518     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
519     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
520     %4:vgpr_32 = COPY %2.sub3
521     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
522     %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)
523     %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)
527 # GFX9-LABEL: name: image_sample_cd_cl_merged_v1v3
528 # 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)
529 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
530 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
532 name: image_sample_cd_cl_merged_v1v3
533 body:             |
534   bb.0.entry:
535     %0:sgpr_64 = COPY $sgpr0_sgpr1
536     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
537     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
538     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
539     %4:vgpr_32 = COPY %2.sub3
540     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
541     %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)
542     %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)
546 # GFX9-LABEL: name: image_sample_cd_cl_o_merged_v1v3
547 # 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)
548 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
549 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
551 name: image_sample_cd_cl_o_merged_v1v3
552 body:             |
553   bb.0.entry:
554     %0:sgpr_64 = COPY $sgpr0_sgpr1
555     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
556     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
557     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
558     %4:vgpr_32 = COPY %2.sub3
559     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
560     %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)
561     %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)
565 # GFX9-LABEL: name: image_sample_cd_o_merged_v1v3
566 # 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)
567 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
568 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
570 name: image_sample_cd_o_merged_v1v3
571 body:             |
572   bb.0.entry:
573     %0:sgpr_64 = COPY $sgpr0_sgpr1
574     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
575     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
576     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
577     %4:vgpr_32 = COPY %2.sub3
578     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
579     %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)
580     %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)
584 # GFX9-LABEL: name: image_sample_cl_merged_v1v3
585 # 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)
586 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
587 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
589 name: image_sample_cl_merged_v1v3
590 body:             |
591   bb.0.entry:
592     %0:sgpr_64 = COPY $sgpr0_sgpr1
593     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
594     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
595     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
596     %4:vgpr_32 = COPY %2.sub3
597     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
598     %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)
599     %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)
603 # GFX9-LABEL: name: image_sample_cl_o_merged_v1v3
604 # 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)
605 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
606 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
608 name: image_sample_cl_o_merged_v1v3
609 body:             |
610   bb.0.entry:
611     %0:sgpr_64 = COPY $sgpr0_sgpr1
612     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
613     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
614     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
615     %4:vgpr_32 = COPY %2.sub3
616     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
617     %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)
618     %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)
622 # GFX9-LABEL: name: image_sample_c_b_merged_v1v3
623 # 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)
624 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
625 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
627 name: image_sample_c_b_merged_v1v3
628 body:             |
629   bb.0.entry:
630     %0:sgpr_64 = COPY $sgpr0_sgpr1
631     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
632     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
633     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
634     %4:vgpr_32 = COPY %2.sub3
635     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
636     %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)
637     %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)
641 # GFX9-LABEL: name: image_sample_c_b_cl_merged_v1v3
642 # 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)
643 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
644 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
646 name: image_sample_c_b_cl_merged_v1v3
647 body:             |
648   bb.0.entry:
649     %0:sgpr_64 = COPY $sgpr0_sgpr1
650     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
651     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
652     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
653     %4:vgpr_32 = COPY %2.sub3
654     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
655     %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)
656     %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)
660 # GFX9-LABEL: name: image_sample_c_b_cl_o_merged_v1v3
661 # 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)
662 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
663 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
665 name: image_sample_c_b_cl_o_merged_v1v3
666 body:             |
667   bb.0.entry:
668     %0:sgpr_64 = COPY $sgpr0_sgpr1
669     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
670     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
671     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
672     %4:vgpr_32 = COPY %2.sub3
673     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
674     %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)
675     %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)
679 # GFX9-LABEL: name: image_sample_c_b_o_merged_v1v3
680 # 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)
681 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
682 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
684 name: image_sample_c_b_o_merged_v1v3
685 body:             |
686   bb.0.entry:
687     %0:sgpr_64 = COPY $sgpr0_sgpr1
688     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
689     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
690     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
691     %4:vgpr_32 = COPY %2.sub3
692     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
693     %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)
694     %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)
698 # GFX9-LABEL: name: image_sample_c_cd_merged_v1v3
699 # 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)
700 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
701 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
703 name: image_sample_c_cd_merged_v1v3
704 body:             |
705   bb.0.entry:
706     %0:sgpr_64 = COPY $sgpr0_sgpr1
707     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
708     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
709     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
710     %4:vgpr_32 = COPY %2.sub3
711     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
712     %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)
713     %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)
717 # GFX9-LABEL: name: image_sample_c_cd_cl_merged_v1v3
718 # 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)
719 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
720 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
722 name: image_sample_c_cd_cl_merged_v1v3
723 body:             |
724   bb.0.entry:
725     %0:sgpr_64 = COPY $sgpr0_sgpr1
726     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
727     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
728     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
729     %4:vgpr_32 = COPY %2.sub3
730     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
731     %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)
732     %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)
736 # GFX9-LABEL: name: image_sample_c_cd_cl_o_merged_v1v3
737 # 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)
738 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
739 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
741 name: image_sample_c_cd_cl_o_merged_v1v3
742 body:             |
743   bb.0.entry:
744     %0:sgpr_64 = COPY $sgpr0_sgpr1
745     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
746     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
747     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
748     %4:vgpr_32 = COPY %2.sub3
749     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
750     %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)
751     %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)
755 # GFX9-LABEL: name: image_sample_c_cd_o_merged_v1v3
756 # 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)
757 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
758 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
760 name: image_sample_c_cd_o_merged_v1v3
761 body:             |
762   bb.0.entry:
763     %0:sgpr_64 = COPY $sgpr0_sgpr1
764     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
765     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
766     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
767     %4:vgpr_32 = COPY %2.sub3
768     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
769     %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)
770     %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)
774 # GFX9-LABEL: name: image_sample_c_cl_merged_v1v3
775 # 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)
776 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
777 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
779 name: image_sample_c_cl_merged_v1v3
780 body:             |
781   bb.0.entry:
782     %0:sgpr_64 = COPY $sgpr0_sgpr1
783     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
784     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
785     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
786     %4:vgpr_32 = COPY %2.sub3
787     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
788     %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)
789     %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)
793 # GFX9-LABEL: name: image_sample_c_cl_o_merged_v1v3
794 # 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)
795 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
796 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
798 name: image_sample_c_cl_o_merged_v1v3
799 body:             |
800   bb.0.entry:
801     %0:sgpr_64 = COPY $sgpr0_sgpr1
802     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
803     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
804     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
805     %4:vgpr_32 = COPY %2.sub3
806     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
807     %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)
808     %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)
812 # GFX9-LABEL: name: image_sample_c_d_merged_v1v3
813 # 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)
814 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
815 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
817 name: image_sample_c_d_merged_v1v3
818 body:             |
819   bb.0.entry:
820     %0:sgpr_64 = COPY $sgpr0_sgpr1
821     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
822     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
823     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
824     %4:vgpr_32 = COPY %2.sub3
825     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
826     %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)
827     %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)
831 # GFX9-LABEL: name: image_sample_c_d_cl_merged_v1v3
832 # 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)
833 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
834 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
836 name: image_sample_c_d_cl_merged_v1v3
837 body:             |
838   bb.0.entry:
839     %0:sgpr_64 = COPY $sgpr0_sgpr1
840     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
841     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
842     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
843     %4:vgpr_32 = COPY %2.sub3
844     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
845     %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)
846     %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)
850 # GFX9-LABEL: name: image_sample_c_d_cl_o_merged_v1v3
851 # 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)
852 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
853 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
855 name: image_sample_c_d_cl_o_merged_v1v3
856 body:             |
857   bb.0.entry:
858     %0:sgpr_64 = COPY $sgpr0_sgpr1
859     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
860     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
861     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
862     %4:vgpr_32 = COPY %2.sub3
863     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
864     %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)
865     %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)
869 # GFX9-LABEL: name: image_sample_c_d_o_merged_v1v3
870 # 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)
871 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
872 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
874 name: image_sample_c_d_o_merged_v1v3
875 body:             |
876   bb.0.entry:
877     %0:sgpr_64 = COPY $sgpr0_sgpr1
878     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
879     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
880     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
881     %4:vgpr_32 = COPY %2.sub3
882     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
883     %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)
884     %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)
888 # GFX9-LABEL: name: image_sample_c_l_merged_v1v3
889 # 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)
890 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
891 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
893 name: image_sample_c_l_merged_v1v3
894 body:             |
895   bb.0.entry:
896     %0:sgpr_64 = COPY $sgpr0_sgpr1
897     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
898     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
899     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
900     %4:vgpr_32 = COPY %2.sub3
901     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
902     %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)
903     %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)
907 # GFX9-LABEL: name: image_sample_c_lz_merged_v1v3
908 # 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)
909 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
910 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
912 name: image_sample_c_lz_merged_v1v3
913 body:             |
914   bb.0.entry:
915     %0:sgpr_64 = COPY $sgpr0_sgpr1
916     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
917     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
918     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
919     %4:vgpr_32 = COPY %2.sub3
920     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
921     %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)
922     %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)
926 # GFX9-LABEL: name: image_sample_c_lz_o_merged_v1v3
927 # 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)
928 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
929 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
931 name: image_sample_c_lz_o_merged_v1v3
932 body:             |
933   bb.0.entry:
934     %0:sgpr_64 = COPY $sgpr0_sgpr1
935     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
936     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
937     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
938     %4:vgpr_32 = COPY %2.sub3
939     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
940     %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)
941     %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)
945 # GFX9-LABEL: name: image_sample_c_l_o_merged_v1v3
946 # 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)
947 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
948 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
950 name: image_sample_c_l_o_merged_v1v3
951 body:             |
952   bb.0.entry:
953     %0:sgpr_64 = COPY $sgpr0_sgpr1
954     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
955     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
956     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
957     %4:vgpr_32 = COPY %2.sub3
958     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
959     %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)
960     %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)
964 # GFX9-LABEL: name: image_sample_c_o_merged_v1v3
965 # 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)
966 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
967 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
969 name: image_sample_c_o_merged_v1v3
970 body:             |
971   bb.0.entry:
972     %0:sgpr_64 = COPY $sgpr0_sgpr1
973     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
974     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
975     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
976     %4:vgpr_32 = COPY %2.sub3
977     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
978     %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)
979     %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)
983 # GFX9-LABEL: name: image_sample_d_merged_v1v3
984 # 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)
985 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
986 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
988 name: image_sample_d_merged_v1v3
989 body:             |
990   bb.0.entry:
991     %0:sgpr_64 = COPY $sgpr0_sgpr1
992     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
993     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
994     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
995     %4:vgpr_32 = COPY %2.sub3
996     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
997     %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)
998     %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)
1002 # GFX9-LABEL: name: image_sample_d_cl_merged_v1v3
1003 # 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)
1004 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
1005 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
1007 name: image_sample_d_cl_merged_v1v3
1008 body:             |
1009   bb.0.entry:
1010     %0:sgpr_64 = COPY $sgpr0_sgpr1
1011     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
1012     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
1013     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
1014     %4:vgpr_32 = COPY %2.sub3
1015     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
1016     %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)
1017     %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)
1021 # GFX9-LABEL: name: image_sample_d_cl_o_merged_v1v3
1022 # 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)
1023 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
1024 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
1026 name: image_sample_d_cl_o_merged_v1v3
1027 body:             |
1028   bb.0.entry:
1029     %0:sgpr_64 = COPY $sgpr0_sgpr1
1030     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
1031     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
1032     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
1033     %4:vgpr_32 = COPY %2.sub3
1034     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
1035     %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)
1036     %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)
1040 # GFX9-LABEL: name: image_sample_d_o_merged_v1v3
1041 # 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)
1042 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
1043 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
1045 name: image_sample_d_o_merged_v1v3
1046 body:             |
1047   bb.0.entry:
1048     %0:sgpr_64 = COPY $sgpr0_sgpr1
1049     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
1050     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
1051     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
1052     %4:vgpr_32 = COPY %2.sub3
1053     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
1054     %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)
1055     %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)
1059 # GFX9-LABEL: name: image_sample_lz_merged_v1v3
1060 # 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)
1061 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
1062 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
1064 name: image_sample_lz_merged_v1v3
1065 body:             |
1066   bb.0.entry:
1067     %0:sgpr_64 = COPY $sgpr0_sgpr1
1068     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
1069     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
1070     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
1071     %4:vgpr_32 = COPY %2.sub3
1072     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
1073     %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)
1074     %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)
1078 # GFX9-LABEL: name: image_sample_lz_o_merged_v1v3
1079 # 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)
1080 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
1081 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
1083 name: image_sample_lz_o_merged_v1v3
1084 body:             |
1085   bb.0.entry:
1086     %0:sgpr_64 = COPY $sgpr0_sgpr1
1087     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
1088     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
1089     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
1090     %4:vgpr_32 = COPY %2.sub3
1091     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
1092     %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)
1093     %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)
1097 # GFX9-LABEL: name: image_sample_l_o_merged_v1v3
1098 # 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)
1099 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
1100 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
1102 name: image_sample_l_o_merged_v1v3
1103 body:             |
1104   bb.0.entry:
1105     %0:sgpr_64 = COPY $sgpr0_sgpr1
1106     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
1107     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
1108     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
1109     %4:vgpr_32 = COPY %2.sub3
1110     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
1111     %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)
1112     %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)
1116 # GFX9-LABEL: name: image_sample_o_merged_v1v3
1117 # 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)
1118 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
1119 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
1121 name: image_sample_o_merged_v1v3
1122 body:             |
1123   bb.0.entry:
1124     %0:sgpr_64 = COPY $sgpr0_sgpr1
1125     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
1126     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
1127     %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
1128     %4:vgpr_32 = COPY %2.sub3
1129     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
1130     %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)
1131     %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)