[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / AMDGPU / merge-image-sample.mir
blob41e121dd2683e5dae80403c2fa64a6c0521a57bd
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, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, 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, 0
13     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
14     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
15     %4:vgpr_32 = COPY %2.sub3
16     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
17     %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
18     %7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
19 ...
20 ---
21 # GFX9-LABEL: name: image_sample_l_merged_v1v3_reversed
22 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
23 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub3
24 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub0_sub1_sub2
26 name: image_sample_l_merged_v1v3_reversed
27 body:             |
28   bb.0.entry:
29     %0:sgpr_64 = COPY $sgpr0_sgpr1
30     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
31     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
32     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
33     %4:vgpr_32 = COPY %2.sub3
34     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
35     %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 8, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
36     %7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 7, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
37 ...
38 ---
40 # GFX9-LABEL: name: image_sample_l_merged_v2v2
41 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, addrspace 4)
42 # GFX9: %{{[0-9]+}}:vreg_64 = COPY %8.sub0_sub1
43 # GFX9: %{{[0-9]+}}:vreg_64 = COPY killed %8.sub2_sub3
45 name: image_sample_l_merged_v2v2
46 body:             |
47   bb.0.entry:
48     %0:sgpr_64 = COPY $sgpr0_sgpr1
49     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
50     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
51     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
52     %4:vgpr_32 = COPY %2.sub3
53     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
54     %6:vreg_64 = IMAGE_SAMPLE_L_V2_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 3, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 8, align 16, addrspace 4)
55     %7:vreg_64 = IMAGE_SAMPLE_L_V2_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 12, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 8, align 16, addrspace 4) 
56 ...
57 ---
59 # GFX9-LABEL: name: image_sample_l_merged_v2v2_reversed
60 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, addrspace 4)
61 # GFX9: %{{[0-9]+}}:vreg_64 = COPY %8.sub2_sub3
62 # GFX9: %{{[0-9]+}}:vreg_64 = COPY killed %8.sub0_sub1
64 name: image_sample_l_merged_v2v2_reversed
65 body:             |
66   bb.0.entry:
67     %0:sgpr_64 = COPY $sgpr0_sgpr1
68     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
69     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
70     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
71     %4:vgpr_32 = COPY %2.sub3
72     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
73     %6:vreg_64 = IMAGE_SAMPLE_L_V2_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 12, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 8, align 16, addrspace 4)
74     %7:vreg_64 = IMAGE_SAMPLE_L_V2_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 3, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 8, align 16, addrspace 4) 
75 ...
76 ---
78 # GFX9-LABEL: name: image_sample_l_merged_v3v1
79 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, addrspace 4)
80 # GFX9: %{{[0-9]+}}:vreg_96 = COPY %8.sub0_sub1_sub2
81 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %8.sub3
83 name: image_sample_l_merged_v3v1
84 body:             |
85   bb.0.entry:
86     %0:sgpr_64 = COPY $sgpr0_sgpr1
87     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
88     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
89     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
90     %4:vgpr_32 = COPY %2.sub3
91     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
92     %6:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 7, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
93     %7:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 8, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 
94 ...
95 ---
97 # GFX9-LABEL: name: image_sample_l_merged_v3v1_reversed
98 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, addrspace 4)
99 # GFX9: %{{[0-9]+}}:vreg_96 = COPY %8.sub1_sub2_sub3
100 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %8.sub0
102 name: image_sample_l_merged_v3v1_reversed
103 body:             |
104   bb.0.entry:
105     %0:sgpr_64 = COPY $sgpr0_sgpr1
106     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
107     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
108     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
109     %4:vgpr_32 = COPY %2.sub3
110     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
111     %6:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
112     %7:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 
116 # GFX9-LABEL: name: image_sample_l_divided_merged
117 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
119 name: image_sample_l_divided_merged
120 body:             |
121   bb.0.entry:
122     %0:sgpr_64 = COPY $sgpr0_sgpr1
123     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
124     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
125     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
126     %4:vgpr_32 = COPY %2.sub3
127     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
128     %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 8, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
129     %7:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
130     %8:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
131     %9:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %7:vreg_128, %3:sreg_256, %2:sgpr_128, 7, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
132     %10:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
133     %11:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 7, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
137 # GFX9-LABEL: name: image_sample_l_divided_not_merged
138 # GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
139 # GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
141 name: image_sample_l_divided_not_merged
142 body:             |
143   bb.0.entry:
144     %0:sgpr_64 = COPY $sgpr0_sgpr1
145     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
146     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
147     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
148     %4:vreg_128 = COPY %2
149     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
150     %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 8, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
151     IMAGE_STORE_V4_V4 %4:vreg_128, %5:vreg_128, %3:sreg_256, 15, -1, 0, 0, 0, 0, 0, 0, 0, implicit $exec
152     %7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 7, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
156 # GFX9-LABEL: name: image_sample_l_dmask_overlapped_not_merged
157 # GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 4, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
158 # GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
160 name: image_sample_l_dmask_overlapped_not_merged
161 body:             |
162   bb.0.entry:
163     %0:sgpr_64 = COPY $sgpr0_sgpr1
164     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
165     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
166     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
167     %4:vgpr_32 = COPY %2.sub3
168     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
169     %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 4, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
170     %7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 7, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
174 # GFX9-LABEL: name: image_sample_l_dmask_not_disjoint_not_merged
175 # GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 4, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
176 # GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 11, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
178 name: image_sample_l_dmask_not_disjoint_not_merged
179 body:             |
180   bb.0.entry:
181     %0:sgpr_64 = COPY $sgpr0_sgpr1
182     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
183     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
184     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
185     %4:vgpr_32 = COPY %2.sub3
186     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
187     %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 4, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
188     %7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 11, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
192 # GFX9-LABEL: name: image_sample_l_not_merged_0
193 # GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
194 # GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %6, %3, %2, 7, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
196 name: image_sample_l_not_merged_0
197 body:             |
198   bb.0.entry:
199     %0:sgpr_64 = COPY $sgpr0_sgpr1
200     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
201     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
202     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
203     %4:vgpr_32 = COPY %2.sub3
204     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
205     %6:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
206     %7:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
207     %8:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %6, %3, %2, 7, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
211 # GFX9-LABEL: name: image_sample_l_not_merged_1
212 # GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %6, %3, %2, 8, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
213 # GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %6, %4, %2, 7, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
215 name: image_sample_l_not_merged_1
216 body:             |
217   bb.0.entry:
218     %0:sgpr_64 = COPY $sgpr0_sgpr1
219     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
220     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
221     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
222     %4:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
223     %5:vgpr_32 = COPY %2.sub3
224     %6:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
225     %7:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %6, %3, %2, 8, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
226     %8:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %6, %4, %2, 7, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
230 # GFX9-LABEL: name: image_sample_l_not_merged_2
231 # GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %6, %4, %2, 8, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
232 # GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %6, %4, %3, 7, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
234 name: image_sample_l_not_merged_2
235 body:             |
236   bb.0.entry:
237     %0:sgpr_64 = COPY $sgpr0_sgpr1
238     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
239     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
240     %3:sgpr_128 = COPY $sgpr92_sgpr93_sgpr94_sgpr95
241     %4:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
242     %5:vgpr_32 = COPY %2.sub3
243     %6:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
244     %7:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %6, %4, %2, 8, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
245     %8:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %6, %4, %3, 7, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
249 # GFX9-LABEL: name: image_sample_l_not_merged_3
250 # GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
251 # GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
253 name: image_sample_l_not_merged_3
254 body:             |
255   bb.0.entry:
256     %0:sgpr_64 = COPY $sgpr0_sgpr1
257     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
258     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
259     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
260     %4:vgpr_32 = COPY %2.sub3
261     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
262     %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
263     %7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
267 # GFX9-LABEL: name: image_sample_l_not_merged_4
268 # GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
269 # GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 1, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
271 name: image_sample_l_not_merged_4
272 body:             |
273   bb.0.entry:
274     %0:sgpr_64 = COPY $sgpr0_sgpr1
275     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
276     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
277     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
278     %4:vgpr_32 = COPY %2.sub3
279     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
280     %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
281     %7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 1, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
285 # GFX9-LABEL: name: image_sample_l_not_merged_5
286 # GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
287 # GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 1, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
289 name: image_sample_l_not_merged_5
290 body:             |
291   bb.0.entry:
292     %0:sgpr_64 = COPY $sgpr0_sgpr1
293     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
294     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
295     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
296     %4:vgpr_32 = COPY %2.sub3
297     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
298     %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
299     %7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 1, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
303 # GFX9-LABEL: name: image_sample_l_not_merged_6
304 # GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
305 # GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 1, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
307 name: image_sample_l_not_merged_6
308 body:             |
309   bb.0.entry:
310     %0:sgpr_64 = COPY $sgpr0_sgpr1
311     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
312     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
313     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
314     %4:vgpr_32 = COPY %2.sub3
315     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
316     %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
317     %7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 1, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
321 # GFX9-LABEL: name: image_sample_l_not_merged_7
322 # GFX9: %{{[0-9]+}}:vreg_64 = IMAGE_SAMPLE_L_V2_V4 %5, %3, %2, 8, 0, 0, 0, 0, 1, 0, -1, 0, implicit $exec :: (dereferenceable load 8, addrspace 4)
323 # GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
325 name: image_sample_l_not_merged_7
326 body:             |
327   bb.0.entry:
328     %0:sgpr_64 = COPY $sgpr0_sgpr1
329     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
330     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
331     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
332     %4:vgpr_32 = COPY %2.sub3
333     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
334     %6:vreg_64 = IMAGE_SAMPLE_L_V2_V4 %5, %3, %2, 8, 0, 0, 0, 0, 1, 0, -1, 0, implicit $exec :: (dereferenceable load 8, addrspace 4)
335     %7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
339 # GFX9-LABEL: name: image_sample_l_not_merged_8
340 # GFX9: %{{[0-9]+}}:vreg_64 = IMAGE_SAMPLE_L_V2_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, 1, -1, 0, implicit $exec :: (dereferenceable load 8, addrspace 4)
341 # GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
343 name: image_sample_l_not_merged_8
344 body:             |
345   bb.0.entry:
346     %0:sgpr_64 = COPY $sgpr0_sgpr1
347     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
348     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
349     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
350     %4:vgpr_32 = COPY %2.sub3
351     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
352     %6:vreg_64 = IMAGE_SAMPLE_L_V2_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, 1, -1, 0, implicit $exec :: (dereferenceable load 8, addrspace 4)
353     %7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
357 # GFX9-LABEL: name: image_sample_l_not_merged_9
358 # GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
359 # GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
361 name: image_sample_l_not_merged_9
362 body:             |
363   bb.0.entry:
364     %0:sgpr_64 = COPY $sgpr0_sgpr1
365     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
366     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
367     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
368     %4:vgpr_32 = COPY %2.sub3
369     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
370     %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
371     %7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
375 # GFX9-LABEL: name: image_sample_l_not_merged_10
376 # GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
377 # GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, 0, -1, 1, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
379 name: image_sample_l_not_merged_10
380 body:             |
381   bb.0.entry:
382     %0:sgpr_64 = COPY $sgpr0_sgpr1
383     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
384     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
385     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
386     %4:vgpr_32 = COPY %2.sub3
387     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
388     %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
389     %7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, 0, -1, 1, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
396 # GFX9-LABEL: name: image_sample_merged_v1v3
397 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
398 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
399 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
401 name: image_sample_merged_v1v3
402 body:             |
403   bb.0.entry:
404     %0:sgpr_64 = COPY $sgpr0_sgpr1
405     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
406     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
407     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
408     %4:vgpr_32 = COPY %2.sub3
409     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
410     %6:vgpr_32 = IMAGE_SAMPLE_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
411     %7:vreg_96 = IMAGE_SAMPLE_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
416 # GFX9-LABEL: name: image_sample_b_merged_v1v3
417 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_B_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
418 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
419 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
421 name: image_sample_b_merged_v1v3
422 body:             |
423   bb.0.entry:
424     %0:sgpr_64 = COPY $sgpr0_sgpr1
425     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
426     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
427     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
428     %4:vgpr_32 = COPY %2.sub3
429     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
430     %6:vgpr_32 = IMAGE_SAMPLE_B_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
431     %7:vreg_96 = IMAGE_SAMPLE_B_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
436 # GFX9-LABEL: name: image_sample_b_cl_merged_v1v3
437 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_B_CL_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
438 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
439 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
441 name: image_sample_b_cl_merged_v1v3
442 body:             |
443   bb.0.entry:
444     %0:sgpr_64 = COPY $sgpr0_sgpr1
445     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
446     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
447     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
448     %4:vgpr_32 = COPY %2.sub3
449     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
450     %6:vgpr_32 = IMAGE_SAMPLE_B_CL_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
451     %7:vreg_96 = IMAGE_SAMPLE_B_CL_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
456 # GFX9-LABEL: name: image_sample_b_cl_o_merged_v1v3
457 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_B_CL_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
458 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
459 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
461 name: image_sample_b_cl_o_merged_v1v3
462 body:             |
463   bb.0.entry:
464     %0:sgpr_64 = COPY $sgpr0_sgpr1
465     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
466     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
467     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
468     %4:vgpr_32 = COPY %2.sub3
469     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
470     %6:vgpr_32 = IMAGE_SAMPLE_B_CL_O_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
471     %7:vreg_96 = IMAGE_SAMPLE_B_CL_O_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
476 # GFX9-LABEL: name: image_sample_b_o_merged_v1v3
477 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_B_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
478 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
479 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
481 name: image_sample_b_o_merged_v1v3
482 body:             |
483   bb.0.entry:
484     %0:sgpr_64 = COPY $sgpr0_sgpr1
485     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
486     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
487     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
488     %4:vgpr_32 = COPY %2.sub3
489     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
490     %6:vgpr_32 = IMAGE_SAMPLE_B_O_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
491     %7:vreg_96 = IMAGE_SAMPLE_B_O_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
496 # GFX9-LABEL: name: image_sample_c_merged_v1v3
497 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
498 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
499 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
501 name: image_sample_c_merged_v1v3
502 body:             |
503   bb.0.entry:
504     %0:sgpr_64 = COPY $sgpr0_sgpr1
505     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
506     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
507     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
508     %4:vgpr_32 = COPY %2.sub3
509     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
510     %6:vgpr_32 = IMAGE_SAMPLE_C_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
511     %7:vreg_96 = IMAGE_SAMPLE_C_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
516 # GFX9-LABEL: name: image_sample_cd_merged_v1v3
517 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_CD_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
518 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
519 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
521 name: image_sample_cd_merged_v1v3
522 body:             |
523   bb.0.entry:
524     %0:sgpr_64 = COPY $sgpr0_sgpr1
525     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
526     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
527     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
528     %4:vgpr_32 = COPY %2.sub3
529     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
530     %6:vgpr_32 = IMAGE_SAMPLE_CD_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
531     %7:vreg_96 = IMAGE_SAMPLE_CD_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
536 # GFX9-LABEL: name: image_sample_cd_cl_merged_v1v3
537 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_CD_CL_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
538 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
539 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
541 name: image_sample_cd_cl_merged_v1v3
542 body:             |
543   bb.0.entry:
544     %0:sgpr_64 = COPY $sgpr0_sgpr1
545     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
546     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
547     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
548     %4:vgpr_32 = COPY %2.sub3
549     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
550     %6:vgpr_32 = IMAGE_SAMPLE_CD_CL_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
551     %7:vreg_96 = IMAGE_SAMPLE_CD_CL_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
556 # GFX9-LABEL: name: image_sample_cd_cl_o_merged_v1v3
557 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_CD_CL_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
558 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
559 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
561 name: image_sample_cd_cl_o_merged_v1v3
562 body:             |
563   bb.0.entry:
564     %0:sgpr_64 = COPY $sgpr0_sgpr1
565     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
566     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
567     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
568     %4:vgpr_32 = COPY %2.sub3
569     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
570     %6:vgpr_32 = IMAGE_SAMPLE_CD_CL_O_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
571     %7:vreg_96 = IMAGE_SAMPLE_CD_CL_O_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
576 # GFX9-LABEL: name: image_sample_cd_o_merged_v1v3
577 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_CD_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
578 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
579 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
581 name: image_sample_cd_o_merged_v1v3
582 body:             |
583   bb.0.entry:
584     %0:sgpr_64 = COPY $sgpr0_sgpr1
585     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
586     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
587     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
588     %4:vgpr_32 = COPY %2.sub3
589     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
590     %6:vgpr_32 = IMAGE_SAMPLE_CD_O_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
591     %7:vreg_96 = IMAGE_SAMPLE_CD_O_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
596 # GFX9-LABEL: name: image_sample_cl_merged_v1v3
597 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_CL_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
598 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
599 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
601 name: image_sample_cl_merged_v1v3
602 body:             |
603   bb.0.entry:
604     %0:sgpr_64 = COPY $sgpr0_sgpr1
605     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
606     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
607     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
608     %4:vgpr_32 = COPY %2.sub3
609     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
610     %6:vgpr_32 = IMAGE_SAMPLE_CL_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
611     %7:vreg_96 = IMAGE_SAMPLE_CL_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
616 # GFX9-LABEL: name: image_sample_cl_o_merged_v1v3
617 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_CL_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
618 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
619 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
621 name: image_sample_cl_o_merged_v1v3
622 body:             |
623   bb.0.entry:
624     %0:sgpr_64 = COPY $sgpr0_sgpr1
625     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
626     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
627     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
628     %4:vgpr_32 = COPY %2.sub3
629     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
630     %6:vgpr_32 = IMAGE_SAMPLE_CL_O_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
631     %7:vreg_96 = IMAGE_SAMPLE_CL_O_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
636 # GFX9-LABEL: name: image_sample_c_b_merged_v1v3
637 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_B_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
638 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
639 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
641 name: image_sample_c_b_merged_v1v3
642 body:             |
643   bb.0.entry:
644     %0:sgpr_64 = COPY $sgpr0_sgpr1
645     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
646     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
647     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
648     %4:vgpr_32 = COPY %2.sub3
649     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
650     %6:vgpr_32 = IMAGE_SAMPLE_C_B_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
651     %7:vreg_96 = IMAGE_SAMPLE_C_B_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
656 # GFX9-LABEL: name: image_sample_c_b_cl_merged_v1v3
657 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_B_CL_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
658 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
659 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
661 name: image_sample_c_b_cl_merged_v1v3
662 body:             |
663   bb.0.entry:
664     %0:sgpr_64 = COPY $sgpr0_sgpr1
665     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
666     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
667     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
668     %4:vgpr_32 = COPY %2.sub3
669     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
670     %6:vgpr_32 = IMAGE_SAMPLE_C_B_CL_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
671     %7:vreg_96 = IMAGE_SAMPLE_C_B_CL_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
676 # GFX9-LABEL: name: image_sample_c_b_cl_o_merged_v1v3
677 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_B_CL_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
678 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
679 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
681 name: image_sample_c_b_cl_o_merged_v1v3
682 body:             |
683   bb.0.entry:
684     %0:sgpr_64 = COPY $sgpr0_sgpr1
685     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
686     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
687     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
688     %4:vgpr_32 = COPY %2.sub3
689     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
690     %6:vgpr_32 = IMAGE_SAMPLE_C_B_CL_O_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
691     %7:vreg_96 = IMAGE_SAMPLE_C_B_CL_O_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
696 # GFX9-LABEL: name: image_sample_c_b_o_merged_v1v3
697 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_B_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
698 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
699 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
701 name: image_sample_c_b_o_merged_v1v3
702 body:             |
703   bb.0.entry:
704     %0:sgpr_64 = COPY $sgpr0_sgpr1
705     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
706     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
707     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
708     %4:vgpr_32 = COPY %2.sub3
709     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
710     %6:vgpr_32 = IMAGE_SAMPLE_C_B_O_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
711     %7:vreg_96 = IMAGE_SAMPLE_C_B_O_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
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, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, 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
721 name: image_sample_c_cd_merged_v1v3
722 body:             |
723   bb.0.entry:
724     %0:sgpr_64 = COPY $sgpr0_sgpr1
725     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
726     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
727     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
728     %4:vgpr_32 = COPY %2.sub3
729     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
730     %6:vgpr_32 = IMAGE_SAMPLE_C_CD_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
731     %7:vreg_96 = IMAGE_SAMPLE_C_CD_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
736 # GFX9-LABEL: name: image_sample_c_cd_cl_merged_v1v3
737 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_CD_CL_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, 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_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, 0
746     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
747     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
748     %4:vgpr_32 = COPY %2.sub3
749     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
750     %6:vgpr_32 = IMAGE_SAMPLE_C_CD_CL_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
751     %7:vreg_96 = IMAGE_SAMPLE_C_CD_CL_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
756 # GFX9-LABEL: name: image_sample_c_cd_cl_o_merged_v1v3
757 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_CD_CL_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
758 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
759 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
761 name: image_sample_c_cd_cl_o_merged_v1v3
762 body:             |
763   bb.0.entry:
764     %0:sgpr_64 = COPY $sgpr0_sgpr1
765     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
766     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
767     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
768     %4:vgpr_32 = COPY %2.sub3
769     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
770     %6:vgpr_32 = IMAGE_SAMPLE_C_CD_CL_O_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
771     %7:vreg_96 = IMAGE_SAMPLE_C_CD_CL_O_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
776 # GFX9-LABEL: name: image_sample_c_cd_o_merged_v1v3
777 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_CD_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
778 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
779 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
781 name: image_sample_c_cd_o_merged_v1v3
782 body:             |
783   bb.0.entry:
784     %0:sgpr_64 = COPY $sgpr0_sgpr1
785     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
786     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
787     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
788     %4:vgpr_32 = COPY %2.sub3
789     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
790     %6:vgpr_32 = IMAGE_SAMPLE_C_CD_O_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
791     %7:vreg_96 = IMAGE_SAMPLE_C_CD_O_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
796 # GFX9-LABEL: name: image_sample_c_cl_merged_v1v3
797 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_CL_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
798 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
799 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
801 name: image_sample_c_cl_merged_v1v3
802 body:             |
803   bb.0.entry:
804     %0:sgpr_64 = COPY $sgpr0_sgpr1
805     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
806     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
807     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
808     %4:vgpr_32 = COPY %2.sub3
809     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
810     %6:vgpr_32 = IMAGE_SAMPLE_C_CL_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
811     %7:vreg_96 = IMAGE_SAMPLE_C_CL_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
816 # GFX9-LABEL: name: image_sample_c_cl_o_merged_v1v3
817 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_CL_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
818 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
819 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
821 name: image_sample_c_cl_o_merged_v1v3
822 body:             |
823   bb.0.entry:
824     %0:sgpr_64 = COPY $sgpr0_sgpr1
825     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
826     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
827     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
828     %4:vgpr_32 = COPY %2.sub3
829     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
830     %6:vgpr_32 = IMAGE_SAMPLE_C_CL_O_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
831     %7:vreg_96 = IMAGE_SAMPLE_C_CL_O_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
836 # GFX9-LABEL: name: image_sample_c_d_merged_v1v3
837 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_D_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
838 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
839 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
841 name: image_sample_c_d_merged_v1v3
842 body:             |
843   bb.0.entry:
844     %0:sgpr_64 = COPY $sgpr0_sgpr1
845     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
846     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
847     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
848     %4:vgpr_32 = COPY %2.sub3
849     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
850     %6:vgpr_32 = IMAGE_SAMPLE_C_D_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
851     %7:vreg_96 = IMAGE_SAMPLE_C_D_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
856 # GFX9-LABEL: name: image_sample_c_d_cl_merged_v1v3
857 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_D_CL_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
858 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
859 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
861 name: image_sample_c_d_cl_merged_v1v3
862 body:             |
863   bb.0.entry:
864     %0:sgpr_64 = COPY $sgpr0_sgpr1
865     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
866     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
867     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
868     %4:vgpr_32 = COPY %2.sub3
869     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
870     %6:vgpr_32 = IMAGE_SAMPLE_C_D_CL_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
871     %7:vreg_96 = IMAGE_SAMPLE_C_D_CL_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
876 # GFX9-LABEL: name: image_sample_c_d_cl_o_merged_v1v3
877 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_D_CL_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
878 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
879 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
881 name: image_sample_c_d_cl_o_merged_v1v3
882 body:             |
883   bb.0.entry:
884     %0:sgpr_64 = COPY $sgpr0_sgpr1
885     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
886     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
887     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
888     %4:vgpr_32 = COPY %2.sub3
889     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
890     %6:vgpr_32 = IMAGE_SAMPLE_C_D_CL_O_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
891     %7:vreg_96 = IMAGE_SAMPLE_C_D_CL_O_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
896 # GFX9-LABEL: name: image_sample_c_d_o_merged_v1v3
897 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_D_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
898 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
899 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
901 name: image_sample_c_d_o_merged_v1v3
902 body:             |
903   bb.0.entry:
904     %0:sgpr_64 = COPY $sgpr0_sgpr1
905     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
906     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
907     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
908     %4:vgpr_32 = COPY %2.sub3
909     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
910     %6:vgpr_32 = IMAGE_SAMPLE_C_D_O_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
911     %7:vreg_96 = IMAGE_SAMPLE_C_D_O_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
916 # GFX9-LABEL: name: image_sample_c_l_merged_v1v3
917 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_L_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
918 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
919 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
921 name: image_sample_c_l_merged_v1v3
922 body:             |
923   bb.0.entry:
924     %0:sgpr_64 = COPY $sgpr0_sgpr1
925     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
926     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
927     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
928     %4:vgpr_32 = COPY %2.sub3
929     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
930     %6:vgpr_32 = IMAGE_SAMPLE_C_L_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
931     %7:vreg_96 = IMAGE_SAMPLE_C_L_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
936 # GFX9-LABEL: name: image_sample_c_lz_merged_v1v3
937 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_LZ_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
938 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
939 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
941 name: image_sample_c_lz_merged_v1v3
942 body:             |
943   bb.0.entry:
944     %0:sgpr_64 = COPY $sgpr0_sgpr1
945     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
946     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
947     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
948     %4:vgpr_32 = COPY %2.sub3
949     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
950     %6:vgpr_32 = IMAGE_SAMPLE_C_LZ_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
951     %7:vreg_96 = IMAGE_SAMPLE_C_LZ_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
956 # GFX9-LABEL: name: image_sample_c_lz_o_merged_v1v3
957 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_LZ_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
958 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
959 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
961 name: image_sample_c_lz_o_merged_v1v3
962 body:             |
963   bb.0.entry:
964     %0:sgpr_64 = COPY $sgpr0_sgpr1
965     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
966     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
967     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
968     %4:vgpr_32 = COPY %2.sub3
969     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
970     %6:vgpr_32 = IMAGE_SAMPLE_C_LZ_O_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
971     %7:vreg_96 = IMAGE_SAMPLE_C_LZ_O_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
976 # GFX9-LABEL: name: image_sample_c_l_o_merged_v1v3
977 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_L_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
978 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
979 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
981 name: image_sample_c_l_o_merged_v1v3
982 body:             |
983   bb.0.entry:
984     %0:sgpr_64 = COPY $sgpr0_sgpr1
985     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
986     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
987     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
988     %4:vgpr_32 = COPY %2.sub3
989     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
990     %6:vgpr_32 = IMAGE_SAMPLE_C_L_O_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
991     %7:vreg_96 = IMAGE_SAMPLE_C_L_O_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
996 # GFX9-LABEL: name: image_sample_c_o_merged_v1v3
997 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
998 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
999 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
1001 name: image_sample_c_o_merged_v1v3
1002 body:             |
1003   bb.0.entry:
1004     %0:sgpr_64 = COPY $sgpr0_sgpr1
1005     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
1006     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
1007     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
1008     %4:vgpr_32 = COPY %2.sub3
1009     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
1010     %6:vgpr_32 = IMAGE_SAMPLE_C_O_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
1011     %7:vreg_96 = IMAGE_SAMPLE_C_O_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
1016 # GFX9-LABEL: name: image_sample_d_merged_v1v3
1017 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_D_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
1018 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
1019 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
1021 name: image_sample_d_merged_v1v3
1022 body:             |
1023   bb.0.entry:
1024     %0:sgpr_64 = COPY $sgpr0_sgpr1
1025     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
1026     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
1027     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
1028     %4:vgpr_32 = COPY %2.sub3
1029     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
1030     %6:vgpr_32 = IMAGE_SAMPLE_D_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
1031     %7:vreg_96 = IMAGE_SAMPLE_D_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
1036 # GFX9-LABEL: name: image_sample_d_cl_merged_v1v3
1037 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_D_CL_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
1038 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
1039 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
1041 name: image_sample_d_cl_merged_v1v3
1042 body:             |
1043   bb.0.entry:
1044     %0:sgpr_64 = COPY $sgpr0_sgpr1
1045     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
1046     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
1047     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
1048     %4:vgpr_32 = COPY %2.sub3
1049     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
1050     %6:vgpr_32 = IMAGE_SAMPLE_D_CL_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
1051     %7:vreg_96 = IMAGE_SAMPLE_D_CL_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
1056 # GFX9-LABEL: name: image_sample_d_cl_o_merged_v1v3
1057 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_D_CL_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
1058 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
1059 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
1061 name: image_sample_d_cl_o_merged_v1v3
1062 body:             |
1063   bb.0.entry:
1064     %0:sgpr_64 = COPY $sgpr0_sgpr1
1065     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
1066     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
1067     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
1068     %4:vgpr_32 = COPY %2.sub3
1069     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
1070     %6:vgpr_32 = IMAGE_SAMPLE_D_CL_O_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
1071     %7:vreg_96 = IMAGE_SAMPLE_D_CL_O_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
1076 # GFX9-LABEL: name: image_sample_d_o_merged_v1v3
1077 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_D_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
1078 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
1079 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
1081 name: image_sample_d_o_merged_v1v3
1082 body:             |
1083   bb.0.entry:
1084     %0:sgpr_64 = COPY $sgpr0_sgpr1
1085     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
1086     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
1087     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
1088     %4:vgpr_32 = COPY %2.sub3
1089     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
1090     %6:vgpr_32 = IMAGE_SAMPLE_D_O_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
1091     %7:vreg_96 = IMAGE_SAMPLE_D_O_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
1096 # GFX9-LABEL: name: image_sample_lz_merged_v1v3
1097 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_LZ_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, 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
1101 name: image_sample_lz_merged_v1v3
1102 body:             |
1103   bb.0.entry:
1104     %0:sgpr_64 = COPY $sgpr0_sgpr1
1105     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
1106     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
1107     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
1108     %4:vgpr_32 = COPY %2.sub3
1109     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
1110     %6:vgpr_32 = IMAGE_SAMPLE_LZ_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
1111     %7:vreg_96 = IMAGE_SAMPLE_LZ_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
1116 # GFX9-LABEL: name: image_sample_lz_o_merged_v1v3
1117 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_LZ_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, 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_lz_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, 0
1126     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
1127     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
1128     %4:vgpr_32 = COPY %2.sub3
1129     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
1130     %6:vgpr_32 = IMAGE_SAMPLE_LZ_O_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
1131     %7:vreg_96 = IMAGE_SAMPLE_LZ_O_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
1136 # GFX9-LABEL: name: image_sample_l_o_merged_v1v3
1137 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
1138 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
1139 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
1141 name: image_sample_l_o_merged_v1v3
1142 body:             |
1143   bb.0.entry:
1144     %0:sgpr_64 = COPY $sgpr0_sgpr1
1145     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
1146     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
1147     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
1148     %4:vgpr_32 = COPY %2.sub3
1149     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
1150     %6:vgpr_32 = IMAGE_SAMPLE_L_O_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
1151     %7:vreg_96 = IMAGE_SAMPLE_L_O_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 
1156 # GFX9-LABEL: name: image_sample_o_merged_v1v3
1157 # GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load 16, align 4, addrspace 4)
1158 # GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
1159 # GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
1161 name: image_sample_o_merged_v1v3
1162 body:             |
1163   bb.0.entry:
1164     %0:sgpr_64 = COPY $sgpr0_sgpr1
1165     %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0, 0
1166     %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
1167     %3:sreg_256 = S_LOAD_DWORDX8_IMM %1, 208, 0, 0
1168     %4:vgpr_32 = COPY %2.sub3
1169     %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
1170     %6:vgpr_32 = IMAGE_SAMPLE_O_V1_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
1171     %7:vreg_96 = IMAGE_SAMPLE_O_V3_V4 %5:vreg_128, %3:sreg_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)