xref: /llvm-project/llvm/test/CodeGen/AMDGPU/merge-image-sample-gfx12.mir (revision 9e9907f1cfa424366fba58d9520f9305b537cec9)
1# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -verify-machineinstrs -run-pass si-load-store-opt -o - %s | FileCheck -check-prefix=GFX12 %s
2
3---
4# GFX12-LABEL: name: image_sample_l_merged_v1v3
5# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V3_gfx12 %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
6# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
7# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
8
9name: image_sample_l_merged_v1v3
10body:             |
11  bb.0.entry:
12    %0:sgpr_64 = COPY $sgpr0_sgpr1
13    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
14    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
15    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
16    %4:vgpr_32 = COPY %2.sub3
17    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
18    %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
19    %7:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
20...
21---
22# GFX12-LABEL: name: image_sample_l_merged_v1v3_reversed
23# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V3_gfx12 %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)
24# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub3
25# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub0_sub1_sub2
26
27name: image_sample_l_merged_v1v3_reversed
28body:             |
29  bb.0.entry:
30    %0:sgpr_64 = COPY $sgpr0_sgpr1
31    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
32    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
33    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
34    %4:vgpr_32 = COPY %2.sub3
35    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
36    %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
37    %7:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
38...
39---
40
41# GFX12-LABEL: name: image_sample_l_merged_v2v2
42# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V3_gfx12 %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)
43# GFX12: %{{[0-9]+}}:vreg_64 = COPY %8.sub0_sub1
44# GFX12: %{{[0-9]+}}:vreg_64 = COPY killed %8.sub2_sub3
45
46name: image_sample_l_merged_v2v2
47body:             |
48  bb.0.entry:
49    %0:sgpr_64 = COPY $sgpr0_sgpr1
50    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
51    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
52    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
53    %4:vgpr_32 = COPY %2.sub3
54    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
55    %6:vreg_64 = IMAGE_SAMPLE_L_V2_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 3, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 8, align 16, addrspace 4)
56    %7:vreg_64 = IMAGE_SAMPLE_L_V2_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 12, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 8, align 16, addrspace 4)
57...
58---
59
60# GFX12-LABEL: name: image_sample_l_merged_v2v2_reversed
61# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V3_gfx12 %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)
62# GFX12: %{{[0-9]+}}:vreg_64 = COPY %8.sub2_sub3
63# GFX12: %{{[0-9]+}}:vreg_64 = COPY killed %8.sub0_sub1
64
65name: image_sample_l_merged_v2v2_reversed
66body:             |
67  bb.0.entry:
68    %0:sgpr_64 = COPY $sgpr0_sgpr1
69    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
70    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
71    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
72    %4:vgpr_32 = COPY %2.sub3
73    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
74    %6:vreg_64 = IMAGE_SAMPLE_L_V2_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 12, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 8, align 16, addrspace 4)
75    %7:vreg_64 = IMAGE_SAMPLE_L_V2_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 3, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 8, align 16, addrspace 4)
76...
77---
78
79# GFX12-LABEL: name: image_sample_l_merged_v3v1
80# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V3_gfx12 %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)
81# GFX12: %{{[0-9]+}}:vreg_96 = COPY %8.sub0_sub1_sub2
82# GFX12: %{{[0-9]+}}:vgpr_32 = COPY killed %8.sub3
83
84name: image_sample_l_merged_v3v1
85body:             |
86  bb.0.entry:
87    %0:sgpr_64 = COPY $sgpr0_sgpr1
88    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
89    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
90    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
91    %4:vgpr_32 = COPY %2.sub3
92    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
93    %6:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
94    %7:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
95...
96---
97
98# GFX12-LABEL: name: image_sample_l_merged_v3v1_reversed
99# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V3_gfx12 %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
100# GFX12: %{{[0-9]+}}:vreg_96 = COPY %8.sub1_sub2_sub3
101# GFX12: %{{[0-9]+}}:vgpr_32 = COPY killed %8.sub0
102
103name: image_sample_l_merged_v3v1_reversed
104body:             |
105  bb.0.entry:
106    %0:sgpr_64 = COPY $sgpr0_sgpr1
107    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
108    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
109    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
110    %4:vgpr_32 = COPY %2.sub3
111    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
112    %6:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
113    %7:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
114...
115---
116
117# GFX12-LABEL: name: image_sample_l_divided_merged
118# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V3_gfx12 %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)
119
120name: image_sample_l_divided_merged
121body:             |
122  bb.0.entry:
123    %0:sgpr_64 = COPY $sgpr0_sgpr1
124    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
125    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
126    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
127    %4:vgpr_32 = COPY %2.sub3
128    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
129    %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
130    %7:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
131    %8:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
132    %9:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %7:vgpr_32, %7:vgpr_32, %7:vgpr_32, %3:sgpr_256, %2:sgpr_128, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
133    %10:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
134    %11:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
135...
136---
137
138# GFX12-LABEL: name: image_sample_l_divided_not_merged
139# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
140# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
141
142name: image_sample_l_divided_not_merged
143body:             |
144  bb.0.entry:
145    %0:sgpr_64 = COPY $sgpr0_sgpr1
146    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
147    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
148    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
149    %4:vreg_128 = COPY %2
150    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
151    %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
152    IMAGE_STORE_V4_V2_gfx12 %4:vreg_128, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, 15, 1, 0, 0, 0, 0, 0, implicit $exec :: (store 16)
153    %7:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
154...
155---
156
157# GFX12-LABEL: name: image_sample_l_dmask_overlapped_not_merged
158# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 4, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
159# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
160
161name: image_sample_l_dmask_overlapped_not_merged
162body:             |
163  bb.0.entry:
164    %0:sgpr_64 = COPY $sgpr0_sgpr1
165    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
166    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
167    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
168    %4:vgpr_32 = COPY %2.sub3
169    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
170    %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 4, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
171    %7:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
172...
173---
174
175# GFX12-LABEL: name: image_sample_l_dmask_not_disjoint_not_merged
176# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 4, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
177# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 11, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
178
179name: image_sample_l_dmask_not_disjoint_not_merged
180body:             |
181  bb.0.entry:
182    %0:sgpr_64 = COPY $sgpr0_sgpr1
183    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
184    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
185    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
186    %4:vgpr_32 = COPY %2.sub3
187    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
188    %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 4, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
189    %7:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 11, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
190...
191---
192
193# GFX12-LABEL: name: image_sample_l_not_merged_0
194# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
195# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %6, %6, %6, %3, %2, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
196
197name: image_sample_l_not_merged_0
198body:             |
199  bb.0.entry:
200    %0:sgpr_64 = COPY $sgpr0_sgpr1
201    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
202    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
203    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
204    %4:vgpr_32 = COPY %2.sub3
205    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
206    %6:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2, 1, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
207    %7:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
208    %8:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %6, %6, %6, %3, %2, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
209...
210---
211
212# GFX12-LABEL: name: image_sample_l_not_merged_1
213# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %6, %6, %6, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
214# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %6, %6, %6, %4, %2, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
215
216name: image_sample_l_not_merged_1
217body:             |
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:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
226    %7:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %6, %6, %6, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
227    %8:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %6, %6, %6, %4, %2, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
228...
229---
230
231# GFX12-LABEL: name: image_sample_l_not_merged_2
232# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %6, %6, %6, %4, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
233# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %6, %6, %6, %4, %3, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
234
235name: image_sample_l_not_merged_2
236body:             |
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:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
245    %7:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %6, %6, %6, %4, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
246    %8:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %6, %6, %6, %4, %3, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
247...
248---
249
250# GFX12-LABEL: name: image_sample_l_not_merged_3
251# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
252# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
253
254name: image_sample_l_not_merged_3
255body:             |
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:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
263    %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
264    %7:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
265...
266---
267
268# GFX12-LABEL: name: image_sample_l_not_merged_4
269# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
270# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 0, 1, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
271
272name: image_sample_l_not_merged_4
273body:             |
274  bb.0.entry:
275    %0:sgpr_64 = COPY $sgpr0_sgpr1
276    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
277    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
278    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
279    %4:vgpr_32 = COPY %2.sub3
280    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
281    %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
282    %7:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 0, 1, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
283...
284---
285
286# GFX12-LABEL: name: image_sample_l_not_merged_5
287# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
288# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
289
290name: image_sample_l_not_merged_5
291body:             |
292  bb.0.entry:
293    %0:sgpr_64 = COPY $sgpr0_sgpr1
294    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
295    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
296    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
297    %4:vgpr_32 = COPY %2.sub3
298    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
299    %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
300    %7:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
301...
302---
303
304# GFX12-LABEL: name: image_sample_l_not_merged_6
305# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
306# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 0, 1, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
307
308name: image_sample_l_not_merged_6
309body:             |
310  bb.0.entry:
311    %0:sgpr_64 = COPY $sgpr0_sgpr1
312    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
313    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
314    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
315    %4:vgpr_32 = COPY %2.sub3
316    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
317    %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
318    %7:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 0, 1, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
319...
320---
321
322# GFX12-LABEL: name: image_sample_l_not_merged_7
323# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V2_gfx12 %5, %5, %3, %2, 8, 1, -1, 0, 0, 1, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
324# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
325
326name: image_sample_l_not_merged_7
327body:             |
328  bb.0.entry:
329    %0:sgpr_64 = COPY $sgpr0_sgpr1
330    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
331    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
332    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
333    %4:vgpr_32 = COPY %2.sub3
334    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
335    %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V2_gfx12 %5, %5, %3, %2, 8, 1, -1, 0, 0, 1, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
336    %7:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
337...
338---
339
340# GFX12-LABEL: name: image_sample_l_not_merged_8
341# GFX12: %{{[0-9]+}}:vreg_64 = IMAGE_SAMPLE_L_V2_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 1, 0, 0, implicit $exec :: (dereferenceable load (s64), addrspace 4)
342# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
343
344name: image_sample_l_not_merged_8
345body:             |
346  bb.0.entry:
347    %0:sgpr_64 = COPY $sgpr0_sgpr1
348    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
349    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
350    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
351    %4:vgpr_32 = COPY %2.sub3
352    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
353    %6:vreg_64 = IMAGE_SAMPLE_L_V2_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 1, 0, 0, implicit $exec :: (dereferenceable load 8, addrspace 4)
354    %7:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
355...
356---
357
358# GFX12-LABEL: name: image_sample_l_not_merged_9
359# GFX12: %{{[0-9]+}}:vreg_64 = IMAGE_SAMPLE_L_V2_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 1, 0, implicit $exec :: (dereferenceable load (s64), addrspace 4)
360# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
361
362name: image_sample_l_not_merged_9
363body:             |
364  bb.0.entry:
365    %0:sgpr_64 = COPY $sgpr0_sgpr1
366    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
367    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
368    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
369    %4:vgpr_32 = COPY %2.sub3
370    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
371    %6:vreg_64 = IMAGE_SAMPLE_L_V2_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 1, 0, implicit $exec :: (dereferenceable load 8, addrspace 4)
372    %7:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
373...
374---
375
376# GFX12-LABEL: name: image_sample_l_not_merged_10
377# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
378# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 0, 0, 0, 0, 0, 1, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
379
380name: image_sample_l_not_merged_10
381body:             |
382  bb.0.entry:
383    %0:sgpr_64 = COPY $sgpr0_sgpr1
384    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
385    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
386    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
387    %4:vgpr_32 = COPY %2.sub3
388    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
389    %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
390    %7:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 0, 0, 0, 0, 0, 1, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
391...
392---
393
394# GFX12-LABEL: name: image_sample_merged_v1v3
395# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_V4_V2_gfx12 %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
396# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
397# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
398
399name: image_sample_merged_v1v3
400body:             |
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:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
408    %6:vgpr_32 = IMAGE_SAMPLE_V1_V2_gfx12 %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
409    %7:vreg_96 = IMAGE_SAMPLE_V3_V2_gfx12 %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
410...
411---
412
413# GFX12-LABEL: name: image_sample_b_merged_v1v3
414# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_B_V4_V3_gfx12 %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
415# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
416# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
417
418name: image_sample_b_merged_v1v3
419body:             |
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:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
427    %6:vgpr_32 = IMAGE_SAMPLE_B_V1_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
428    %7:vreg_96 = IMAGE_SAMPLE_B_V3_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
429...
430---
431
432# GFX12-LABEL: name: image_sample_b_cl_merged_v1v3
433# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_B_CL_V4_V4_gfx12 %5, %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
434# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
435# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
436
437name: image_sample_b_cl_merged_v1v3
438body:             |
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:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
446    %6:vgpr_32 = IMAGE_SAMPLE_B_CL_V1_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
447    %7:vreg_96 = IMAGE_SAMPLE_B_CL_V3_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
448...
449---
450
451# GFX12-LABEL: name: image_sample_b_cl_o_merged_v1v3
452# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_B_CL_O_V4_V5_gfx12 %5, %5, %5, %6, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
453# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %9.sub0
454# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %9.sub1_sub2_sub3
455
456name: image_sample_b_cl_o_merged_v1v3
457body:             |
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:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
465    %6:vreg_64 = REG_SEQUENCE %5:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1
466    %7:vgpr_32 = IMAGE_SAMPLE_B_CL_O_V1_V5_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_64, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
467    %8:vreg_96 = IMAGE_SAMPLE_B_CL_O_V3_V5_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_64, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
468...
469---
470
471# GFX12-LABEL: name: image_sample_b_o_merged_v1v3
472# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_B_O_V4_V4_gfx12 %5, %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
473# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
474# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
475
476name: image_sample_b_o_merged_v1v3
477body:             |
478  bb.0.entry:
479    %0:sgpr_64 = COPY $sgpr0_sgpr1
480    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
481    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
482    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
483    %4:vgpr_32 = COPY %2.sub3
484    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
485    %6:vgpr_32 = IMAGE_SAMPLE_B_O_V1_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
486    %7:vreg_96 = IMAGE_SAMPLE_B_O_V3_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
487...
488---
489
490# GFX12-LABEL: name: image_sample_c_merged_v1v3
491# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_V4_V3_gfx12 %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
492# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
493# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
494
495name: image_sample_c_merged_v1v3
496body:             |
497  bb.0.entry:
498    %0:sgpr_64 = COPY $sgpr0_sgpr1
499    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
500    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
501    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
502    %4:vgpr_32 = COPY %2.sub3
503    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
504    %6:vgpr_32 = IMAGE_SAMPLE_C_V1_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
505    %7:vreg_96 = IMAGE_SAMPLE_C_V3_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
506...
507---
508
509# GFX12-LABEL: name: image_sample_cl_merged_v1v3
510# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_CL_V4_V3_gfx12 %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
511# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
512# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
513
514name: image_sample_cl_merged_v1v3
515body:             |
516  bb.0.entry:
517    %0:sgpr_64 = COPY $sgpr0_sgpr1
518    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
519    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
520    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
521    %4:vgpr_32 = COPY %2.sub3
522    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
523    %6:vgpr_32 = IMAGE_SAMPLE_CL_V1_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
524    %7:vreg_96 = IMAGE_SAMPLE_CL_V3_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
525...
526---
527
528# GFX12-LABEL: name: image_sample_cl_o_merged_v1v3
529# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_CL_O_V4_V4_gfx12 %5, %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
530# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
531# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
532
533name: image_sample_cl_o_merged_v1v3
534body:             |
535  bb.0.entry:
536    %0:sgpr_64 = COPY $sgpr0_sgpr1
537    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
538    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
539    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
540    %4:vgpr_32 = COPY %2.sub3
541    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
542    %6:vgpr_32 = IMAGE_SAMPLE_CL_O_V1_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
543    %7:vreg_96 = IMAGE_SAMPLE_CL_O_V3_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
544...
545---
546
547# GFX12-LABEL: name: image_sample_c_b_merged_v1v3
548# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_B_V4_V4_gfx12 %5, %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
549# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
550# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
551
552name: image_sample_c_b_merged_v1v3
553body:             |
554  bb.0.entry:
555    %0:sgpr_64 = COPY $sgpr0_sgpr1
556    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
557    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
558    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
559    %4:vgpr_32 = COPY %2.sub3
560    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
561    %6:vgpr_32 = IMAGE_SAMPLE_C_B_V1_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
562    %7:vreg_96 = IMAGE_SAMPLE_C_B_V3_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
563...
564---
565
566# GFX12-LABEL: name: image_sample_c_b_cl_merged_v1v3
567# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_B_CL_V4_V5_gfx12 %5, %5, %5, %6, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
568# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %9.sub0
569# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %9.sub1_sub2_sub3
570
571name: image_sample_c_b_cl_merged_v1v3
572body:             |
573  bb.0.entry:
574    %0:sgpr_64 = COPY $sgpr0_sgpr1
575    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
576    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
577    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
578    %4:vgpr_32 = COPY %2.sub3
579    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
580    %6:vreg_64 = REG_SEQUENCE %5:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1
581    %7:vgpr_32 = IMAGE_SAMPLE_C_B_CL_V1_V5_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_64, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
582    %8:vreg_96 = IMAGE_SAMPLE_C_B_CL_V3_V5_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_64, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
583...
584---
585
586# GFX12-LABEL: name: image_sample_c_b_cl_o_merged_v1v3
587# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_B_CL_O_V4_V6_gfx12 %5, %5, %5, %6, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
588# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %9.sub0
589# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %9.sub1_sub2_sub3
590
591name: image_sample_c_b_cl_o_merged_v1v3
592body:             |
593  bb.0.entry:
594    %0:sgpr_64 = COPY $sgpr0_sgpr1
595    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
596    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
597    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
598    %4:vgpr_32 = COPY %2.sub3
599    %5:vgpr_32 = IMPLICIT_DEF
600    %6:vreg_96 = IMPLICIT_DEF
601    %7:vgpr_32 = IMAGE_SAMPLE_C_B_CL_O_V1_V6_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_96, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
602    %8:vreg_96 = IMAGE_SAMPLE_C_B_CL_O_V3_V6_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_96, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
603...
604---
605
606# GFX12-LABEL: name: image_sample_c_b_o_merged_v1v3
607# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_B_O_V4_V5_gfx12 %5, %5, %5, %6, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
608# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %9.sub0
609# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %9.sub1_sub2_sub3
610
611name: image_sample_c_b_o_merged_v1v3
612body:             |
613  bb.0.entry:
614    %0:sgpr_64 = COPY $sgpr0_sgpr1
615    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
616    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
617    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
618    %4:vgpr_32 = COPY %2.sub3
619    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
620    %6:vreg_64 = REG_SEQUENCE %5:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1
621    %7:vgpr_32 = IMAGE_SAMPLE_C_B_O_V1_V5_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_64, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
622    %8:vreg_96 = IMAGE_SAMPLE_C_B_O_V3_V5_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_64, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
623...
624---
625
626# GFX12-LABEL: name: image_sample_c_cl_merged_v1v3
627# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_CL_V4_V4_gfx12 %5, %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
628# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
629# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
630
631name: image_sample_c_cl_merged_v1v3
632body:             |
633  bb.0.entry:
634    %0:sgpr_64 = COPY $sgpr0_sgpr1
635    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
636    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
637    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
638    %4:vgpr_32 = COPY %2.sub3
639    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
640    %6:vgpr_32 = IMAGE_SAMPLE_C_CL_V1_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
641    %7:vreg_96 = IMAGE_SAMPLE_C_CL_V3_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
642...
643---
644
645# GFX12-LABEL: name: image_sample_c_cl_o_merged_v1v3
646# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_CL_O_V4_V5_gfx12 %5, %5, %5, %6, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
647# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %9.sub0
648# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %9.sub1_sub2_sub3
649
650name: image_sample_c_cl_o_merged_v1v3
651body:             |
652  bb.0.entry:
653    %0:sgpr_64 = COPY $sgpr0_sgpr1
654    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
655    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
656    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
657    %4:vgpr_32 = COPY %2.sub3
658    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
659    %6:vreg_64 = REG_SEQUENCE %5:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1
660    %7:vgpr_32 = IMAGE_SAMPLE_C_CL_O_V1_V5_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_64, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
661    %8:vreg_96 = IMAGE_SAMPLE_C_CL_O_V3_V5_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_64, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
662...
663---
664
665# GFX12-LABEL: name: image_sample_c_d_merged_v1v3
666# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_D_V4_V7_gfx12 %5, %5, %5, %6, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
667# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %9.sub0
668# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %9.sub1_sub2_sub3
669
670name: image_sample_c_d_merged_v1v3
671body:             |
672  bb.0.entry:
673    %0:sgpr_64 = COPY $sgpr0_sgpr1
674    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
675    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
676    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
677    %4:vgpr_32 = COPY %2.sub3
678    %5:vgpr_32 = IMPLICIT_DEF
679    %6:vreg_128 = IMPLICIT_DEF
680    %7:vgpr_32 = IMAGE_SAMPLE_C_D_V1_V7_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
681    %8:vreg_96 = IMAGE_SAMPLE_C_D_V3_V7_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
682...
683---
684
685# GFX12-LABEL: name: image_sample_c_d_cl_merged_v1v3
686# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_D_CL_V4_V8_gfx12 %5, %5, %5, %6, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
687# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %9.sub0
688# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %9.sub1_sub2_sub3
689
690name: image_sample_c_d_cl_merged_v1v3
691body:             |
692  bb.0.entry:
693    %0:sgpr_64 = COPY $sgpr0_sgpr1
694    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
695    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
696    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
697    %4:vgpr_32 = COPY %2.sub3
698    %5:vgpr_32 = IMPLICIT_DEF
699    %6:vreg_160 = IMPLICIT_DEF
700    %7:vgpr_32 = IMAGE_SAMPLE_C_D_CL_V1_V8_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_160, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
701    %8:vreg_96 = IMAGE_SAMPLE_C_D_CL_V3_V8_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_160, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
702...
703---
704
705# GFX12-LABEL: name: image_sample_c_d_cl_o_merged_v1v3
706# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_D_CL_O_V4_V9_gfx12 %5, %5, %5, %6, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
707# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %9.sub0
708# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %9.sub1_sub2_sub3
709
710name: image_sample_c_d_cl_o_merged_v1v3
711body:             |
712  bb.0.entry:
713    %0:sgpr_64 = COPY $sgpr0_sgpr1
714    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
715    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
716    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
717    %4:vgpr_32 = COPY %2.sub3
718    %5:vgpr_32 = IMPLICIT_DEF
719    %6:vreg_192 = IMPLICIT_DEF
720    %7:vgpr_32 = IMAGE_SAMPLE_C_D_CL_O_V1_V9_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_192, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
721    %8:vreg_96 = IMAGE_SAMPLE_C_D_CL_O_V3_V9_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_192, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
722...
723---
724
725# GFX12-LABEL: name: image_sample_c_d_o_merged_v1v3
726# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_D_O_V4_V8_gfx12 %5, %5, %5, %6, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
727# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %9.sub0
728# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %9.sub1_sub2_sub3
729
730name: image_sample_c_d_o_merged_v1v3
731body:             |
732  bb.0.entry:
733    %0:sgpr_64 = COPY $sgpr0_sgpr1
734    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
735    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
736    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
737    %4:vgpr_32 = COPY %2.sub3
738    %5:vgpr_32 = IMPLICIT_DEF
739    %6:vreg_160 = IMPLICIT_DEF
740    %7:vgpr_32 = IMAGE_SAMPLE_C_D_O_V1_V8_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_160, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
741    %8:vreg_96 = IMAGE_SAMPLE_C_D_O_V3_V8_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_160, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
742...
743---
744
745# GFX12-LABEL: name: image_sample_c_l_merged_v1v3
746# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_L_V4_V4_gfx12 %5, %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
747# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
748# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
749
750name: image_sample_c_l_merged_v1v3
751body:             |
752  bb.0.entry:
753    %0:sgpr_64 = COPY $sgpr0_sgpr1
754    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
755    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
756    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
757    %4:vgpr_32 = COPY %2.sub3
758    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
759    %6:vgpr_32 = IMAGE_SAMPLE_C_L_V1_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
760    %7:vreg_96 = IMAGE_SAMPLE_C_L_V3_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
761...
762---
763
764# GFX12-LABEL: name: image_sample_c_lz_merged_v1v3
765# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_LZ_V4_V3_gfx12 %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
766# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
767# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
768
769name: image_sample_c_lz_merged_v1v3
770body:             |
771  bb.0.entry:
772    %0:sgpr_64 = COPY $sgpr0_sgpr1
773    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
774    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
775    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
776    %4:vgpr_32 = COPY %2.sub3
777    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
778    %6:vgpr_32 = IMAGE_SAMPLE_C_LZ_V1_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
779    %7:vreg_96 = IMAGE_SAMPLE_C_LZ_V3_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
780...
781---
782
783# GFX12-LABEL: name: image_sample_c_lz_o_merged_v1v3
784# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_LZ_O_V4_V4_gfx12 %5, %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
785# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
786# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
787
788name: image_sample_c_lz_o_merged_v1v3
789body:             |
790  bb.0.entry:
791    %0:sgpr_64 = COPY $sgpr0_sgpr1
792    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
793    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
794    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
795    %4:vgpr_32 = COPY %2.sub3
796    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
797    %6:vgpr_32 = IMAGE_SAMPLE_C_LZ_O_V1_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
798    %7:vreg_96 = IMAGE_SAMPLE_C_LZ_O_V3_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
799...
800---
801
802# GFX12-LABEL: name: image_sample_c_l_o_merged_v1v3
803# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_L_O_V4_V5_gfx12 %5, %5, %5, %6, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
804# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %9.sub0
805# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %9.sub1_sub2_sub3
806
807name: image_sample_c_l_o_merged_v1v3
808body:             |
809  bb.0.entry:
810    %0:sgpr_64 = COPY $sgpr0_sgpr1
811    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
812    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
813    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
814    %4:vgpr_32 = COPY %2.sub3
815    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
816    %6:vreg_64 = REG_SEQUENCE %5:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1
817    %7:vgpr_32 = IMAGE_SAMPLE_C_L_O_V1_V5_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_64, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
818    %8:vreg_96 = IMAGE_SAMPLE_C_L_O_V3_V5_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_64, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
819...
820---
821
822# GFX12-LABEL: name: image_sample_c_o_merged_v1v3
823# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_O_V4_V4_gfx12 %5, %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
824# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
825# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
826
827name: image_sample_c_o_merged_v1v3
828body:             |
829  bb.0.entry:
830    %0:sgpr_64 = COPY $sgpr0_sgpr1
831    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
832    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
833    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
834    %4:vgpr_32 = COPY %2.sub3
835    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
836    %6:vgpr_32 = IMAGE_SAMPLE_C_O_V1_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
837    %7:vreg_96 = IMAGE_SAMPLE_C_O_V3_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
838...
839---
840
841# GFX12-LABEL: name: image_sample_d_merged_v1v3
842# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_D_V4_V6_gfx12 %5, %5, %5, %6, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
843# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %9.sub0
844# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %9.sub1_sub2_sub3
845
846name: image_sample_d_merged_v1v3
847body:             |
848  bb.0.entry:
849    %0:sgpr_64 = COPY $sgpr0_sgpr1
850    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
851    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
852    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
853    %4:vgpr_32 = COPY %2.sub3
854    %5:vgpr_32 = IMPLICIT_DEF
855    %6:vreg_96 = IMPLICIT_DEF
856    %7:vgpr_32 = IMAGE_SAMPLE_D_V1_V6_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_96, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
857    %8:vreg_96 = IMAGE_SAMPLE_D_V3_V6_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_96, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
858...
859---
860
861# GFX12-LABEL: name: image_sample_d_cl_merged_v1v3
862# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_D_CL_V4_V7_gfx12 %5, %5, %5, %6, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
863# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %9.sub0
864# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %9.sub1_sub2_sub3
865
866name: image_sample_d_cl_merged_v1v3
867body:             |
868  bb.0.entry:
869    %0:sgpr_64 = COPY $sgpr0_sgpr1
870    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
871    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
872    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
873    %4:vgpr_32 = COPY %2.sub3
874    %5:vgpr_32 = IMPLICIT_DEF
875    %6:vreg_128 = IMPLICIT_DEF
876    %7:vgpr_32 = IMAGE_SAMPLE_D_CL_V1_V7_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
877    %8:vreg_96 = IMAGE_SAMPLE_D_CL_V3_V7_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
878...
879---
880
881# GFX12-LABEL: name: image_sample_d_cl_o_merged_v1v3
882# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_D_CL_O_V4_V8_gfx12 %5, %5, %5, %6, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
883# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %9.sub0
884# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %9.sub1_sub2_sub3
885
886name: image_sample_d_cl_o_merged_v1v3
887body:             |
888  bb.0.entry:
889    %0:sgpr_64 = COPY $sgpr0_sgpr1
890    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
891    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
892    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
893    %4:vgpr_32 = COPY %2.sub3
894    %5:vgpr_32 = IMPLICIT_DEF
895    %6:vreg_160 = IMPLICIT_DEF
896    %7:vgpr_32 = IMAGE_SAMPLE_D_CL_O_V1_V8_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_160, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
897    %8:vreg_96 = IMAGE_SAMPLE_D_CL_O_V3_V8_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_160, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
898...
899---
900
901# GFX12-LABEL: name: image_sample_d_o_merged_v1v3
902# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_D_O_V4_V7_gfx12 %5, %5, %5, %6, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
903# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %9.sub0
904# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %9.sub1_sub2_sub3
905
906name: image_sample_d_o_merged_v1v3
907body:             |
908  bb.0.entry:
909    %0:sgpr_64 = COPY $sgpr0_sgpr1
910    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
911    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
912    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
913    %4:vgpr_32 = COPY %2.sub3
914    %5:vgpr_32 = IMPLICIT_DEF
915    %6:vreg_128 = IMPLICIT_DEF
916    %7:vgpr_32 = IMAGE_SAMPLE_D_O_V1_V7_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
917    %8:vreg_96 = IMAGE_SAMPLE_D_O_V3_V7_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
918...
919---
920
921# GFX12-LABEL: name: image_sample_lz_merged_v1v3
922# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_LZ_V4_V2_gfx12 %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
923# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
924# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
925
926name: image_sample_lz_merged_v1v3
927body:             |
928  bb.0.entry:
929    %0:sgpr_64 = COPY $sgpr0_sgpr1
930    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
931    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
932    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
933    %4:vgpr_32 = COPY %2.sub3
934    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
935    %6:vgpr_32 = IMAGE_SAMPLE_LZ_V1_V2_gfx12 %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
936    %7:vreg_96 = IMAGE_SAMPLE_LZ_V3_V2_gfx12 %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
937...
938---
939
940# GFX12-LABEL: name: image_sample_lz_o_merged_v1v3
941# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_LZ_O_V4_V3_gfx12 %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
942# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
943# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
944
945name: image_sample_lz_o_merged_v1v3
946body:             |
947  bb.0.entry:
948    %0:sgpr_64 = COPY $sgpr0_sgpr1
949    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
950    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
951    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
952    %4:vgpr_32 = COPY %2.sub3
953    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
954    %6:vgpr_32 = IMAGE_SAMPLE_LZ_O_V1_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
955    %7:vreg_96 = IMAGE_SAMPLE_LZ_O_V3_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
956...
957---
958
959# GFX12-LABEL: name: image_sample_l_o_merged_v1v3
960# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_O_V4_V4_gfx12 %5, %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
961# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
962# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
963
964name: image_sample_l_o_merged_v1v3
965body:             |
966  bb.0.entry:
967    %0:sgpr_64 = COPY $sgpr0_sgpr1
968    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
969    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
970    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
971    %4:vgpr_32 = COPY %2.sub3
972    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
973    %6:vgpr_32 = IMAGE_SAMPLE_L_O_V1_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
974    %7:vreg_96 = IMAGE_SAMPLE_L_O_V3_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
975...
976---
977
978# GFX12-LABEL: name: image_sample_o_merged_v1v3
979# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_O_V4_V3_gfx12 %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
980# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
981# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
982
983name: image_sample_o_merged_v1v3
984body:             |
985  bb.0.entry:
986    %0:sgpr_64 = COPY $sgpr0_sgpr1
987    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
988    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
989    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
990    %4:vgpr_32 = COPY %2.sub3
991    %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)
992    %6:vgpr_32 = IMAGE_SAMPLE_O_V1_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)
993    %7:vreg_96 = IMAGE_SAMPLE_O_V3_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)
994...
995---
996