[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / function-args.ll
blob01dcc26566663be2bdc8c7958fde667fb9d995fb
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
2 ; RUN: llc -march=amdgcn -mcpu=hawaii -verify-machineinstrs < %s | FileCheck -enable-var-scope -check-prefixes=CIGFX89,CI %s
3 ; RUN: llc -march=amdgcn -mcpu=fiji -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck -enable-var-scope -check-prefixes=CIGFX89,GFX89,VI %s
4 ; RUN: llc -march=amdgcn -mcpu=gfx900 -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck -enable-var-scope -check-prefixes=CIGFX89,GFX89,GFX9 %s
5 ; RUN: llc -march=amdgcn -mcpu=gfx1100 -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck -enable-var-scope -check-prefixes=GFX11 %s
7 define void @void_func_i1(i1 %arg0) #0 {
8 ; CIGFX89-LABEL: void_func_i1:
9 ; CIGFX89:       ; %bb.0:
10 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11 ; CIGFX89-NEXT:    v_and_b32_e32 v0, 1, v0
12 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
13 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
14 ; CIGFX89-NEXT:    buffer_store_byte v0, off, s[4:7], 0
15 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
16 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
18 ; GFX11-LABEL: void_func_i1:
19 ; GFX11:       ; %bb.0:
20 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21 ; GFX11-NEXT:    v_and_b32_e32 v0, 1, v0
22 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
23 ; GFX11-NEXT:    s_mov_b32 s2, -1
24 ; GFX11-NEXT:    buffer_store_b8 v0, off, s[0:3], 0
25 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
26   store i1 %arg0, ptr addrspace(1) undef
27   ret void
30 define void @void_func_i1_zeroext(i1 zeroext %arg0) #0 {
31 ; CIGFX89-LABEL: void_func_i1_zeroext:
32 ; CIGFX89:       ; %bb.0:
33 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34 ; CIGFX89-NEXT:    v_or_b32_e32 v0, 12, v0
35 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
36 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
37 ; CIGFX89-NEXT:    buffer_store_dword v0, off, s[4:7], 0
38 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
39 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
41 ; GFX11-LABEL: void_func_i1_zeroext:
42 ; GFX11:       ; %bb.0:
43 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44 ; GFX11-NEXT:    v_or_b32_e32 v0, 12, v0
45 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
46 ; GFX11-NEXT:    s_mov_b32 s2, -1
47 ; GFX11-NEXT:    buffer_store_b32 v0, off, s[0:3], 0
48 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
49   %ext = zext i1 %arg0 to i32
50   %add = add i32 %ext, 12
51   store i32 %add, ptr addrspace(1) undef
52   ret void
55 define void @void_func_i1_signext(i1 signext %arg0) #0 {
56 ; CI-LABEL: void_func_i1_signext:
57 ; CI:       ; %bb.0:
58 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
59 ; CI-NEXT:    v_add_i32_e32 v0, vcc, 12, v0
60 ; CI-NEXT:    s_mov_b32 s7, 0xf000
61 ; CI-NEXT:    s_mov_b32 s6, -1
62 ; CI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
63 ; CI-NEXT:    s_waitcnt vmcnt(0)
64 ; CI-NEXT:    s_setpc_b64 s[30:31]
66 ; VI-LABEL: void_func_i1_signext:
67 ; VI:       ; %bb.0:
68 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
69 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 12, v0
70 ; VI-NEXT:    s_mov_b32 s7, 0xf000
71 ; VI-NEXT:    s_mov_b32 s6, -1
72 ; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
73 ; VI-NEXT:    s_waitcnt vmcnt(0)
74 ; VI-NEXT:    s_setpc_b64 s[30:31]
76 ; GFX9-LABEL: void_func_i1_signext:
77 ; GFX9:       ; %bb.0:
78 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
79 ; GFX9-NEXT:    v_add_u32_e32 v0, 12, v0
80 ; GFX9-NEXT:    s_mov_b32 s7, 0xf000
81 ; GFX9-NEXT:    s_mov_b32 s6, -1
82 ; GFX9-NEXT:    buffer_store_dword v0, off, s[4:7], 0
83 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
84 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
86 ; GFX11-LABEL: void_func_i1_signext:
87 ; GFX11:       ; %bb.0:
88 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
89 ; GFX11-NEXT:    v_add_nc_u32_e32 v0, 12, v0
90 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
91 ; GFX11-NEXT:    s_mov_b32 s2, -1
92 ; GFX11-NEXT:    buffer_store_b32 v0, off, s[0:3], 0
93 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
94   %ext = sext i1 %arg0 to i32
95   %add = add i32 %ext, 12
96   store i32 %add, ptr addrspace(1) undef
97   ret void
100 define void @i1_arg_i1_use(i1 %arg) #0 {
101 ; CIGFX89-LABEL: i1_arg_i1_use:
102 ; CIGFX89:       ; %bb.0: ; %bb
103 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
104 ; CIGFX89-NEXT:    v_and_b32_e32 v0, 1, v0
105 ; CIGFX89-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v0
106 ; CIGFX89-NEXT:    s_xor_b64 s[6:7], vcc, -1
107 ; CIGFX89-NEXT:    s_and_saveexec_b64 s[4:5], s[6:7]
108 ; CIGFX89-NEXT:    s_cbranch_execz .LBB3_2
109 ; CIGFX89-NEXT:  ; %bb.1: ; %bb1
110 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
111 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
112 ; CIGFX89-NEXT:    v_mov_b32_e32 v0, 0
113 ; CIGFX89-NEXT:    buffer_store_dword v0, off, s[4:7], 0
114 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
115 ; CIGFX89-NEXT:  .LBB3_2: ; %bb2
116 ; CIGFX89-NEXT:    s_or_b64 exec, exec, s[4:5]
117 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
118 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
120 ; GFX11-LABEL: i1_arg_i1_use:
121 ; GFX11:       ; %bb.0: ; %bb
122 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
123 ; GFX11-NEXT:    v_and_b32_e32 v0, 1, v0
124 ; GFX11-NEXT:    s_mov_b32 s2, -1
125 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
126 ; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v0
127 ; GFX11-NEXT:    s_xor_b32 s1, vcc_lo, -1
128 ; GFX11-NEXT:    s_and_saveexec_b32 s0, s1
129 ; GFX11-NEXT:    s_cbranch_execz .LBB3_2
130 ; GFX11-NEXT:  ; %bb.1: ; %bb1
131 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0
132 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
133 ; GFX11-NEXT:    buffer_store_b32 v0, off, s[0:3], 0 dlc
134 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
135 ; GFX11-NEXT:  .LBB3_2: ; %bb2
136 ; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s0
137 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
139   br i1 %arg, label %bb2, label %bb1
141 bb1:
142   store volatile i32 0, ptr addrspace(1) undef
143   br label %bb2
145 bb2:
146   ret void
149 define void @void_func_i8(i8 %arg0) #0 {
150 ; CIGFX89-LABEL: void_func_i8:
151 ; CIGFX89:       ; %bb.0:
152 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
153 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
154 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
155 ; CIGFX89-NEXT:    buffer_store_byte v0, off, s[4:7], 0
156 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
157 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
159 ; GFX11-LABEL: void_func_i8:
160 ; GFX11:       ; %bb.0:
161 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
162 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
163 ; GFX11-NEXT:    s_mov_b32 s2, -1
164 ; GFX11-NEXT:    buffer_store_b8 v0, off, s[0:3], 0
165 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
166   store i8 %arg0, ptr addrspace(1) undef
167   ret void
170 define void @void_func_i8_zeroext(i8 zeroext %arg0) #0 {
171 ; CI-LABEL: void_func_i8_zeroext:
172 ; CI:       ; %bb.0:
173 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
174 ; CI-NEXT:    v_add_i32_e32 v0, vcc, 12, v0
175 ; CI-NEXT:    s_mov_b32 s7, 0xf000
176 ; CI-NEXT:    s_mov_b32 s6, -1
177 ; CI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
178 ; CI-NEXT:    s_waitcnt vmcnt(0)
179 ; CI-NEXT:    s_setpc_b64 s[30:31]
181 ; VI-LABEL: void_func_i8_zeroext:
182 ; VI:       ; %bb.0:
183 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
184 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 12, v0
185 ; VI-NEXT:    s_mov_b32 s7, 0xf000
186 ; VI-NEXT:    s_mov_b32 s6, -1
187 ; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
188 ; VI-NEXT:    s_waitcnt vmcnt(0)
189 ; VI-NEXT:    s_setpc_b64 s[30:31]
191 ; GFX9-LABEL: void_func_i8_zeroext:
192 ; GFX9:       ; %bb.0:
193 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
194 ; GFX9-NEXT:    v_add_u32_e32 v0, 12, v0
195 ; GFX9-NEXT:    s_mov_b32 s7, 0xf000
196 ; GFX9-NEXT:    s_mov_b32 s6, -1
197 ; GFX9-NEXT:    buffer_store_dword v0, off, s[4:7], 0
198 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
199 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
201 ; GFX11-LABEL: void_func_i8_zeroext:
202 ; GFX11:       ; %bb.0:
203 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
204 ; GFX11-NEXT:    v_add_nc_u32_e32 v0, 12, v0
205 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
206 ; GFX11-NEXT:    s_mov_b32 s2, -1
207 ; GFX11-NEXT:    buffer_store_b32 v0, off, s[0:3], 0
208 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
209   %ext = zext i8 %arg0 to i32
210   %add = add i32 %ext, 12
211   store i32 %add, ptr addrspace(1) undef
212   ret void
215 define void @void_func_i8_signext(i8 signext %arg0) #0 {
216 ; CI-LABEL: void_func_i8_signext:
217 ; CI:       ; %bb.0:
218 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
219 ; CI-NEXT:    v_add_i32_e32 v0, vcc, 12, v0
220 ; CI-NEXT:    s_mov_b32 s7, 0xf000
221 ; CI-NEXT:    s_mov_b32 s6, -1
222 ; CI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
223 ; CI-NEXT:    s_waitcnt vmcnt(0)
224 ; CI-NEXT:    s_setpc_b64 s[30:31]
226 ; VI-LABEL: void_func_i8_signext:
227 ; VI:       ; %bb.0:
228 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
229 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 12, v0
230 ; VI-NEXT:    s_mov_b32 s7, 0xf000
231 ; VI-NEXT:    s_mov_b32 s6, -1
232 ; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
233 ; VI-NEXT:    s_waitcnt vmcnt(0)
234 ; VI-NEXT:    s_setpc_b64 s[30:31]
236 ; GFX9-LABEL: void_func_i8_signext:
237 ; GFX9:       ; %bb.0:
238 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
239 ; GFX9-NEXT:    v_add_u32_e32 v0, 12, v0
240 ; GFX9-NEXT:    s_mov_b32 s7, 0xf000
241 ; GFX9-NEXT:    s_mov_b32 s6, -1
242 ; GFX9-NEXT:    buffer_store_dword v0, off, s[4:7], 0
243 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
244 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
246 ; GFX11-LABEL: void_func_i8_signext:
247 ; GFX11:       ; %bb.0:
248 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
249 ; GFX11-NEXT:    v_add_nc_u32_e32 v0, 12, v0
250 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
251 ; GFX11-NEXT:    s_mov_b32 s2, -1
252 ; GFX11-NEXT:    buffer_store_b32 v0, off, s[0:3], 0
253 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
254   %ext = sext i8 %arg0 to i32
255   %add = add i32 %ext, 12
256   store i32 %add, ptr addrspace(1) undef
257   ret void
260 define void @void_func_i16(i16 %arg0) #0 {
261 ; CIGFX89-LABEL: void_func_i16:
262 ; CIGFX89:       ; %bb.0:
263 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
264 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
265 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
266 ; CIGFX89-NEXT:    buffer_store_short v0, off, s[4:7], 0
267 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
268 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
270 ; GFX11-LABEL: void_func_i16:
271 ; GFX11:       ; %bb.0:
272 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
273 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
274 ; GFX11-NEXT:    s_mov_b32 s2, -1
275 ; GFX11-NEXT:    buffer_store_b16 v0, off, s[0:3], 0
276 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
277   store i16 %arg0, ptr addrspace(1) undef
278   ret void
281 define void @void_func_i16_zeroext(i16 zeroext %arg0) #0 {
282 ; CI-LABEL: void_func_i16_zeroext:
283 ; CI:       ; %bb.0:
284 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
285 ; CI-NEXT:    v_add_i32_e32 v0, vcc, 12, v0
286 ; CI-NEXT:    s_mov_b32 s7, 0xf000
287 ; CI-NEXT:    s_mov_b32 s6, -1
288 ; CI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
289 ; CI-NEXT:    s_waitcnt vmcnt(0)
290 ; CI-NEXT:    s_setpc_b64 s[30:31]
292 ; VI-LABEL: void_func_i16_zeroext:
293 ; VI:       ; %bb.0:
294 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
295 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 12, v0
296 ; VI-NEXT:    s_mov_b32 s7, 0xf000
297 ; VI-NEXT:    s_mov_b32 s6, -1
298 ; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
299 ; VI-NEXT:    s_waitcnt vmcnt(0)
300 ; VI-NEXT:    s_setpc_b64 s[30:31]
302 ; GFX9-LABEL: void_func_i16_zeroext:
303 ; GFX9:       ; %bb.0:
304 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
305 ; GFX9-NEXT:    v_add_u32_e32 v0, 12, v0
306 ; GFX9-NEXT:    s_mov_b32 s7, 0xf000
307 ; GFX9-NEXT:    s_mov_b32 s6, -1
308 ; GFX9-NEXT:    buffer_store_dword v0, off, s[4:7], 0
309 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
310 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
312 ; GFX11-LABEL: void_func_i16_zeroext:
313 ; GFX11:       ; %bb.0:
314 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
315 ; GFX11-NEXT:    v_add_nc_u32_e32 v0, 12, v0
316 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
317 ; GFX11-NEXT:    s_mov_b32 s2, -1
318 ; GFX11-NEXT:    buffer_store_b32 v0, off, s[0:3], 0
319 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
320   %ext = zext i16 %arg0 to i32
321   %add = add i32 %ext, 12
322   store i32 %add, ptr addrspace(1) undef
323   ret void
326 define void @void_func_i16_signext(i16 signext %arg0) #0 {
327 ; CI-LABEL: void_func_i16_signext:
328 ; CI:       ; %bb.0:
329 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
330 ; CI-NEXT:    v_add_i32_e32 v0, vcc, 12, v0
331 ; CI-NEXT:    s_mov_b32 s7, 0xf000
332 ; CI-NEXT:    s_mov_b32 s6, -1
333 ; CI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
334 ; CI-NEXT:    s_waitcnt vmcnt(0)
335 ; CI-NEXT:    s_setpc_b64 s[30:31]
337 ; VI-LABEL: void_func_i16_signext:
338 ; VI:       ; %bb.0:
339 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
340 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 12, v0
341 ; VI-NEXT:    s_mov_b32 s7, 0xf000
342 ; VI-NEXT:    s_mov_b32 s6, -1
343 ; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
344 ; VI-NEXT:    s_waitcnt vmcnt(0)
345 ; VI-NEXT:    s_setpc_b64 s[30:31]
347 ; GFX9-LABEL: void_func_i16_signext:
348 ; GFX9:       ; %bb.0:
349 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
350 ; GFX9-NEXT:    v_add_u32_e32 v0, 12, v0
351 ; GFX9-NEXT:    s_mov_b32 s7, 0xf000
352 ; GFX9-NEXT:    s_mov_b32 s6, -1
353 ; GFX9-NEXT:    buffer_store_dword v0, off, s[4:7], 0
354 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
355 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
357 ; GFX11-LABEL: void_func_i16_signext:
358 ; GFX11:       ; %bb.0:
359 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
360 ; GFX11-NEXT:    v_add_nc_u32_e32 v0, 12, v0
361 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
362 ; GFX11-NEXT:    s_mov_b32 s2, -1
363 ; GFX11-NEXT:    buffer_store_b32 v0, off, s[0:3], 0
364 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
365   %ext = sext i16 %arg0 to i32
366   %add = add i32 %ext, 12
367   store i32 %add, ptr addrspace(1) undef
368   ret void
371 define void @void_func_i32(i32 %arg0) #0 {
372 ; CIGFX89-LABEL: void_func_i32:
373 ; CIGFX89:       ; %bb.0:
374 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
375 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
376 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
377 ; CIGFX89-NEXT:    buffer_store_dword v0, off, s[4:7], 0
378 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
379 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
381 ; GFX11-LABEL: void_func_i32:
382 ; GFX11:       ; %bb.0:
383 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
384 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
385 ; GFX11-NEXT:    s_mov_b32 s2, -1
386 ; GFX11-NEXT:    buffer_store_b32 v0, off, s[0:3], 0
387 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
388   store i32 %arg0, ptr addrspace(1) undef
389   ret void
392 define void @void_func_i64(i64 %arg0) #0 {
393 ; CIGFX89-LABEL: void_func_i64:
394 ; CIGFX89:       ; %bb.0:
395 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
396 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
397 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
398 ; CIGFX89-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
399 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
400 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
402 ; GFX11-LABEL: void_func_i64:
403 ; GFX11:       ; %bb.0:
404 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
405 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
406 ; GFX11-NEXT:    s_mov_b32 s2, -1
407 ; GFX11-NEXT:    buffer_store_b64 v[0:1], off, s[0:3], 0
408 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
409   store i64 %arg0, ptr addrspace(1) undef
410   ret void
413 define void @void_func_f16(half %arg0) #0 {
414 ; CI-LABEL: void_func_f16:
415 ; CI:       ; %bb.0:
416 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
417 ; CI-NEXT:    v_cvt_f16_f32_e32 v0, v0
418 ; CI-NEXT:    s_mov_b32 s7, 0xf000
419 ; CI-NEXT:    s_mov_b32 s6, -1
420 ; CI-NEXT:    buffer_store_short v0, off, s[4:7], 0
421 ; CI-NEXT:    s_waitcnt vmcnt(0)
422 ; CI-NEXT:    s_setpc_b64 s[30:31]
424 ; GFX89-LABEL: void_func_f16:
425 ; GFX89:       ; %bb.0:
426 ; GFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
427 ; GFX89-NEXT:    s_mov_b32 s7, 0xf000
428 ; GFX89-NEXT:    s_mov_b32 s6, -1
429 ; GFX89-NEXT:    buffer_store_short v0, off, s[4:7], 0
430 ; GFX89-NEXT:    s_waitcnt vmcnt(0)
431 ; GFX89-NEXT:    s_setpc_b64 s[30:31]
433 ; GFX11-LABEL: void_func_f16:
434 ; GFX11:       ; %bb.0:
435 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
436 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
437 ; GFX11-NEXT:    s_mov_b32 s2, -1
438 ; GFX11-NEXT:    buffer_store_b16 v0, off, s[0:3], 0
439 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
440   store half %arg0, ptr addrspace(1) undef
441   ret void
444 define void @void_func_f32(float %arg0) #0 {
445 ; CIGFX89-LABEL: void_func_f32:
446 ; CIGFX89:       ; %bb.0:
447 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
448 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
449 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
450 ; CIGFX89-NEXT:    buffer_store_dword v0, off, s[4:7], 0
451 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
452 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
454 ; GFX11-LABEL: void_func_f32:
455 ; GFX11:       ; %bb.0:
456 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
457 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
458 ; GFX11-NEXT:    s_mov_b32 s2, -1
459 ; GFX11-NEXT:    buffer_store_b32 v0, off, s[0:3], 0
460 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
461   store float %arg0, ptr addrspace(1) undef
462   ret void
465 define void @void_func_f64(double %arg0) #0 {
466 ; CIGFX89-LABEL: void_func_f64:
467 ; CIGFX89:       ; %bb.0:
468 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
469 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
470 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
471 ; CIGFX89-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
472 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
473 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
475 ; GFX11-LABEL: void_func_f64:
476 ; GFX11:       ; %bb.0:
477 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
478 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
479 ; GFX11-NEXT:    s_mov_b32 s2, -1
480 ; GFX11-NEXT:    buffer_store_b64 v[0:1], off, s[0:3], 0
481 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
482   store double %arg0, ptr addrspace(1) undef
483   ret void
486 define void @void_func_v2i32(<2 x i32> %arg0) #0 {
487 ; CIGFX89-LABEL: void_func_v2i32:
488 ; CIGFX89:       ; %bb.0:
489 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
490 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
491 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
492 ; CIGFX89-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
493 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
494 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
496 ; GFX11-LABEL: void_func_v2i32:
497 ; GFX11:       ; %bb.0:
498 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
499 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
500 ; GFX11-NEXT:    s_mov_b32 s2, -1
501 ; GFX11-NEXT:    buffer_store_b64 v[0:1], off, s[0:3], 0
502 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
503   store <2 x i32> %arg0, ptr addrspace(1) undef
504   ret void
507 define void @void_func_v3i32(<3 x i32> %arg0) #0 {
508 ; CIGFX89-LABEL: void_func_v3i32:
509 ; CIGFX89:       ; %bb.0:
510 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
511 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
512 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
513 ; CIGFX89-NEXT:    buffer_store_dwordx3 v[0:2], off, s[4:7], 0
514 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
515 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
517 ; GFX11-LABEL: void_func_v3i32:
518 ; GFX11:       ; %bb.0:
519 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
520 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
521 ; GFX11-NEXT:    s_mov_b32 s2, -1
522 ; GFX11-NEXT:    buffer_store_b96 v[0:2], off, s[0:3], 0
523 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
524   store <3 x i32> %arg0, ptr addrspace(1) undef
525   ret void
528 define void @void_func_v4i32(<4 x i32> %arg0) #0 {
529 ; CIGFX89-LABEL: void_func_v4i32:
530 ; CIGFX89:       ; %bb.0:
531 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
532 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
533 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
534 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
535 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
536 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
538 ; GFX11-LABEL: void_func_v4i32:
539 ; GFX11:       ; %bb.0:
540 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
541 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
542 ; GFX11-NEXT:    s_mov_b32 s2, -1
543 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0
544 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
545   store <4 x i32> %arg0, ptr addrspace(1) undef
546   ret void
549 define void @void_func_v5i32(<5 x i32> %arg0) #0 {
550 ; CIGFX89-LABEL: void_func_v5i32:
551 ; CIGFX89:       ; %bb.0:
552 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
553 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
554 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
555 ; CIGFX89-NEXT:    buffer_store_dword v4, off, s[4:7], 0
556 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
557 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
558 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
560 ; GFX11-LABEL: void_func_v5i32:
561 ; GFX11:       ; %bb.0:
562 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
563 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
564 ; GFX11-NEXT:    s_mov_b32 s2, -1
565 ; GFX11-NEXT:    s_clause 0x1
566 ; GFX11-NEXT:    buffer_store_b32 v4, off, s[0:3], 0
567 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0
568 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
569   store <5 x i32> %arg0, ptr addrspace(1) undef
570   ret void
573 define void @void_func_v8i32(<8 x i32> %arg0) #0 {
574 ; CIGFX89-LABEL: void_func_v8i32:
575 ; CIGFX89:       ; %bb.0:
576 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
577 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
578 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
579 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
580 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
581 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
582 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
584 ; GFX11-LABEL: void_func_v8i32:
585 ; GFX11:       ; %bb.0:
586 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
587 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
588 ; GFX11-NEXT:    s_mov_b32 s2, -1
589 ; GFX11-NEXT:    s_clause 0x1
590 ; GFX11-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0
591 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0
592 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
593   store <8 x i32> %arg0, ptr addrspace(1) undef
594   ret void
597 define void @void_func_v16i32(<16 x i32> %arg0) #0 {
598 ; CIGFX89-LABEL: void_func_v16i32:
599 ; CIGFX89:       ; %bb.0:
600 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
601 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
602 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
603 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
604 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
605 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
606 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
607 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
608 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
610 ; GFX11-LABEL: void_func_v16i32:
611 ; GFX11:       ; %bb.0:
612 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
613 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
614 ; GFX11-NEXT:    s_mov_b32 s2, -1
615 ; GFX11-NEXT:    s_clause 0x3
616 ; GFX11-NEXT:    buffer_store_b128 v[12:15], off, s[0:3], 0
617 ; GFX11-NEXT:    buffer_store_b128 v[8:11], off, s[0:3], 0
618 ; GFX11-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0
619 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0
620 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
621   store <16 x i32> %arg0, ptr addrspace(1) undef
622   ret void
625 define void @void_func_v32i32(<32 x i32> %arg0) #0 {
626 ; CIGFX89-LABEL: void_func_v32i32:
627 ; CIGFX89:       ; %bb.0:
628 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
629 ; CIGFX89-NEXT:    buffer_load_dword v31, off, s[0:3], s32
630 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
631 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
632 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
633 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
634 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
635 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
636 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
637 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
638 ; CIGFX89-NEXT:    s_waitcnt vmcnt(6)
639 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
640 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
641 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
642 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
644 ; GFX11-LABEL: void_func_v32i32:
645 ; GFX11:       ; %bb.0:
646 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
647 ; GFX11-NEXT:    scratch_load_b32 v31, off, s32
648 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
649 ; GFX11-NEXT:    s_mov_b32 s2, -1
650 ; GFX11-NEXT:    s_clause 0x3
651 ; GFX11-NEXT:    buffer_store_b128 v[20:23], off, s[0:3], 0
652 ; GFX11-NEXT:    buffer_store_b128 v[16:19], off, s[0:3], 0
653 ; GFX11-NEXT:    buffer_store_b128 v[12:15], off, s[0:3], 0
654 ; GFX11-NEXT:    buffer_store_b128 v[8:11], off, s[0:3], 0
655 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
656 ; GFX11-NEXT:    s_clause 0x3
657 ; GFX11-NEXT:    buffer_store_b128 v[28:31], off, s[0:3], 0
658 ; GFX11-NEXT:    buffer_store_b128 v[24:27], off, s[0:3], 0
659 ; GFX11-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0
660 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0
661 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
662   store <32 x i32> %arg0, ptr addrspace(1) undef
663   ret void
666 ; 1 over register limit
667 define void @void_func_v33i32(<33 x i32> %arg0) #0 {
668 ; CI-LABEL: void_func_v33i32:
669 ; CI:       ; %bb.0:
670 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
671 ; CI-NEXT:    s_mov_b32 s7, 0xf000
672 ; CI-NEXT:    s_mov_b32 s6, -1
673 ; CI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
674 ; CI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
675 ; CI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
676 ; CI-NEXT:    buffer_load_dword v31, off, s[0:3], s32
677 ; CI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:4
678 ; CI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
679 ; CI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
680 ; CI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
681 ; CI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
682 ; CI-NEXT:    s_waitcnt vmcnt(5)
683 ; CI-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
684 ; CI-NEXT:    s_waitcnt vmcnt(5)
685 ; CI-NEXT:    buffer_store_dword v16, off, s[4:7], 0
686 ; CI-NEXT:    s_waitcnt vmcnt(0)
687 ; CI-NEXT:    s_setpc_b64 s[30:31]
689 ; VI-LABEL: void_func_v33i32:
690 ; VI:       ; %bb.0:
691 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
692 ; VI-NEXT:    s_mov_b32 s7, 0xf000
693 ; VI-NEXT:    s_mov_b32 s6, -1
694 ; VI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
695 ; VI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
696 ; VI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
697 ; VI-NEXT:    buffer_load_dword v31, off, s[0:3], s32
698 ; VI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:4
699 ; VI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
700 ; VI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
701 ; VI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
702 ; VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
703 ; VI-NEXT:    s_waitcnt vmcnt(5)
704 ; VI-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
705 ; VI-NEXT:    s_waitcnt vmcnt(5)
706 ; VI-NEXT:    buffer_store_dword v16, off, s[4:7], 0
707 ; VI-NEXT:    s_waitcnt vmcnt(0)
708 ; VI-NEXT:    s_setpc_b64 s[30:31]
710 ; GFX9-LABEL: void_func_v33i32:
711 ; GFX9:       ; %bb.0:
712 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
713 ; GFX9-NEXT:    s_mov_b32 s7, 0xf000
714 ; GFX9-NEXT:    s_mov_b32 s6, -1
715 ; GFX9-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
716 ; GFX9-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
717 ; GFX9-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
718 ; GFX9-NEXT:    buffer_load_dword v31, off, s[0:3], s32
719 ; GFX9-NEXT:    s_nop 0
720 ; GFX9-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:4
721 ; GFX9-NEXT:    s_nop 0
722 ; GFX9-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
723 ; GFX9-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
724 ; GFX9-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
725 ; GFX9-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
726 ; GFX9-NEXT:    s_waitcnt vmcnt(5)
727 ; GFX9-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
728 ; GFX9-NEXT:    s_waitcnt vmcnt(5)
729 ; GFX9-NEXT:    buffer_store_dword v16, off, s[4:7], 0
730 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
731 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
733 ; GFX11-LABEL: void_func_v33i32:
734 ; GFX11:       ; %bb.0:
735 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
736 ; GFX11-NEXT:    s_clause 0x1
737 ; GFX11-NEXT:    scratch_load_b32 v31, off, s32
738 ; GFX11-NEXT:    scratch_load_b32 v32, off, s32 offset:4
739 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
740 ; GFX11-NEXT:    s_mov_b32 s2, -1
741 ; GFX11-NEXT:    s_clause 0x5
742 ; GFX11-NEXT:    buffer_store_b128 v[20:23], off, s[0:3], 0
743 ; GFX11-NEXT:    buffer_store_b128 v[16:19], off, s[0:3], 0
744 ; GFX11-NEXT:    buffer_store_b128 v[12:15], off, s[0:3], 0
745 ; GFX11-NEXT:    buffer_store_b128 v[8:11], off, s[0:3], 0
746 ; GFX11-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0
747 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0
748 ; GFX11-NEXT:    s_waitcnt vmcnt(1)
749 ; GFX11-NEXT:    s_clause 0x1
750 ; GFX11-NEXT:    buffer_store_b128 v[28:31], off, s[0:3], 0
751 ; GFX11-NEXT:    buffer_store_b128 v[24:27], off, s[0:3], 0
752 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
753 ; GFX11-NEXT:    buffer_store_b32 v32, off, s[0:3], 0
754 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
755   store <33 x i32> %arg0, ptr addrspace(1) undef
756   ret void
759 define void @void_func_v2i64(<2 x i64> %arg0) #0 {
760 ; CIGFX89-LABEL: void_func_v2i64:
761 ; CIGFX89:       ; %bb.0:
762 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
763 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
764 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
765 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
766 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
767 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
769 ; GFX11-LABEL: void_func_v2i64:
770 ; GFX11:       ; %bb.0:
771 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
772 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
773 ; GFX11-NEXT:    s_mov_b32 s2, -1
774 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0
775 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
776   store <2 x i64> %arg0, ptr addrspace(1) undef
777   ret void
780 define void @void_func_v3i64(<3 x i64> %arg0) #0 {
781 ; CIGFX89-LABEL: void_func_v3i64:
782 ; CIGFX89:       ; %bb.0:
783 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
784 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
785 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
786 ; CIGFX89-NEXT:    buffer_store_dwordx2 v[4:5], off, s[4:7], 0
787 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
788 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
789 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
791 ; GFX11-LABEL: void_func_v3i64:
792 ; GFX11:       ; %bb.0:
793 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
794 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
795 ; GFX11-NEXT:    s_mov_b32 s2, -1
796 ; GFX11-NEXT:    s_clause 0x1
797 ; GFX11-NEXT:    buffer_store_b64 v[4:5], off, s[0:3], 0
798 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0
799 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
800   store <3 x i64> %arg0, ptr addrspace(1) undef
801   ret void
804 define void @void_func_v4i64(<4 x i64> %arg0) #0 {
805 ; CIGFX89-LABEL: void_func_v4i64:
806 ; CIGFX89:       ; %bb.0:
807 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
808 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
809 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
810 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
811 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
812 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
813 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
815 ; GFX11-LABEL: void_func_v4i64:
816 ; GFX11:       ; %bb.0:
817 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
818 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
819 ; GFX11-NEXT:    s_mov_b32 s2, -1
820 ; GFX11-NEXT:    s_clause 0x1
821 ; GFX11-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0
822 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0
823 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
824   store <4 x i64> %arg0, ptr addrspace(1) undef
825   ret void
828 define void @void_func_v5i64(<5 x i64> %arg0) #0 {
829 ; CIGFX89-LABEL: void_func_v5i64:
830 ; CIGFX89:       ; %bb.0:
831 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
832 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
833 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
834 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
835 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
836 ; CIGFX89-NEXT:    buffer_store_dwordx2 v[8:9], off, s[4:7], 0
837 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
838 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
840 ; GFX11-LABEL: void_func_v5i64:
841 ; GFX11:       ; %bb.0:
842 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
843 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
844 ; GFX11-NEXT:    s_mov_b32 s2, -1
845 ; GFX11-NEXT:    s_clause 0x2
846 ; GFX11-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0
847 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0
848 ; GFX11-NEXT:    buffer_store_b64 v[8:9], off, s[0:3], 0
849 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
850   store <5 x i64> %arg0, ptr addrspace(1) undef
851   ret void
854 define void @void_func_v8i64(<8 x i64> %arg0) #0 {
855 ; CIGFX89-LABEL: void_func_v8i64:
856 ; CIGFX89:       ; %bb.0:
857 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
858 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
859 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
860 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
861 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
862 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
863 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
864 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
865 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
867 ; GFX11-LABEL: void_func_v8i64:
868 ; GFX11:       ; %bb.0:
869 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
870 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
871 ; GFX11-NEXT:    s_mov_b32 s2, -1
872 ; GFX11-NEXT:    s_clause 0x3
873 ; GFX11-NEXT:    buffer_store_b128 v[12:15], off, s[0:3], 0
874 ; GFX11-NEXT:    buffer_store_b128 v[8:11], off, s[0:3], 0
875 ; GFX11-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0
876 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0
877 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
878   store <8 x i64> %arg0, ptr addrspace(1) undef
879   ret void
882 define void @void_func_v16i64(<16 x i64> %arg0) #0 {
883 ; CIGFX89-LABEL: void_func_v16i64:
884 ; CIGFX89:       ; %bb.0:
885 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
886 ; CIGFX89-NEXT:    buffer_load_dword v31, off, s[0:3], s32
887 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
888 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
889 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
890 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
891 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
892 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
893 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
894 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
895 ; CIGFX89-NEXT:    s_waitcnt vmcnt(6)
896 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
897 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
898 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
899 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
901 ; GFX11-LABEL: void_func_v16i64:
902 ; GFX11:       ; %bb.0:
903 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
904 ; GFX11-NEXT:    scratch_load_b32 v31, off, s32
905 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
906 ; GFX11-NEXT:    s_mov_b32 s2, -1
907 ; GFX11-NEXT:    s_clause 0x3
908 ; GFX11-NEXT:    buffer_store_b128 v[20:23], off, s[0:3], 0
909 ; GFX11-NEXT:    buffer_store_b128 v[16:19], off, s[0:3], 0
910 ; GFX11-NEXT:    buffer_store_b128 v[12:15], off, s[0:3], 0
911 ; GFX11-NEXT:    buffer_store_b128 v[8:11], off, s[0:3], 0
912 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
913 ; GFX11-NEXT:    s_clause 0x3
914 ; GFX11-NEXT:    buffer_store_b128 v[28:31], off, s[0:3], 0
915 ; GFX11-NEXT:    buffer_store_b128 v[24:27], off, s[0:3], 0
916 ; GFX11-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0
917 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0
918 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
919   store <16 x i64> %arg0, ptr addrspace(1) undef
920   ret void
923 define void @void_func_v2i8(<2 x i8> %arg0) #0 {
924 ; CI-LABEL: void_func_v2i8:
925 ; CI:       ; %bb.0:
926 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
927 ; CI-NEXT:    v_lshlrev_b32_e32 v1, 8, v1
928 ; CI-NEXT:    v_and_b32_e32 v0, 0xff, v0
929 ; CI-NEXT:    s_mov_b32 s4, 0
930 ; CI-NEXT:    v_or_b32_e32 v0, v0, v1
931 ; CI-NEXT:    s_mov_b32 s7, 0xf000
932 ; CI-NEXT:    s_mov_b32 s6, -1
933 ; CI-NEXT:    s_mov_b32 s5, s4
934 ; CI-NEXT:    buffer_store_short v0, off, s[4:7], 0
935 ; CI-NEXT:    s_waitcnt vmcnt(0)
936 ; CI-NEXT:    s_setpc_b64 s[30:31]
938 ; GFX89-LABEL: void_func_v2i8:
939 ; GFX89:       ; %bb.0:
940 ; GFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
941 ; GFX89-NEXT:    v_lshlrev_b16_e32 v1, 8, v1
942 ; GFX89-NEXT:    s_mov_b32 s4, 0
943 ; GFX89-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
944 ; GFX89-NEXT:    s_mov_b32 s7, 0xf000
945 ; GFX89-NEXT:    s_mov_b32 s6, -1
946 ; GFX89-NEXT:    s_mov_b32 s5, s4
947 ; GFX89-NEXT:    buffer_store_short v0, off, s[4:7], 0
948 ; GFX89-NEXT:    s_waitcnt vmcnt(0)
949 ; GFX89-NEXT:    s_setpc_b64 s[30:31]
951 ; GFX11-LABEL: void_func_v2i8:
952 ; GFX11:       ; %bb.0:
953 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
954 ; GFX11-NEXT:    v_lshlrev_b16 v1, 8, v1
955 ; GFX11-NEXT:    v_and_b32_e32 v0, 0xff, v0
956 ; GFX11-NEXT:    s_mov_b32 s0, 0
957 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
958 ; GFX11-NEXT:    s_mov_b32 s2, -1
959 ; GFX11-NEXT:    s_mov_b32 s1, s0
960 ; GFX11-NEXT:    v_or_b32_e32 v0, v0, v1
961 ; GFX11-NEXT:    buffer_store_b16 v0, off, s[0:3], 0
962 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
963   store <2 x i8> %arg0, ptr addrspace(1) null
964   ret void
967 define void @void_func_v2i16(<2 x i16> %arg0) #0 {
968 ; CI-LABEL: void_func_v2i16:
969 ; CI:       ; %bb.0:
970 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
971 ; CI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
972 ; CI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
973 ; CI-NEXT:    v_or_b32_e32 v0, v0, v1
974 ; CI-NEXT:    s_mov_b32 s7, 0xf000
975 ; CI-NEXT:    s_mov_b32 s6, -1
976 ; CI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
977 ; CI-NEXT:    s_waitcnt vmcnt(0)
978 ; CI-NEXT:    s_setpc_b64 s[30:31]
980 ; GFX89-LABEL: void_func_v2i16:
981 ; GFX89:       ; %bb.0:
982 ; GFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
983 ; GFX89-NEXT:    s_mov_b32 s7, 0xf000
984 ; GFX89-NEXT:    s_mov_b32 s6, -1
985 ; GFX89-NEXT:    buffer_store_dword v0, off, s[4:7], 0
986 ; GFX89-NEXT:    s_waitcnt vmcnt(0)
987 ; GFX89-NEXT:    s_setpc_b64 s[30:31]
989 ; GFX11-LABEL: void_func_v2i16:
990 ; GFX11:       ; %bb.0:
991 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
992 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
993 ; GFX11-NEXT:    s_mov_b32 s2, -1
994 ; GFX11-NEXT:    buffer_store_b32 v0, off, s[0:3], 0
995 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
996   store <2 x i16> %arg0, ptr addrspace(1) undef
997   ret void
1000 define void @void_func_v3i8(<3 x i8> %arg0) #0 {
1001 ; CI-LABEL: void_func_v3i8:
1002 ; CI:       ; %bb.0:
1003 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1004 ; CI-NEXT:    v_lshlrev_b32_e32 v1, 8, v1
1005 ; CI-NEXT:    v_and_b32_e32 v0, 0xff, v0
1006 ; CI-NEXT:    s_mov_b32 s5, 0
1007 ; CI-NEXT:    s_mov_b32 s4, 2
1008 ; CI-NEXT:    s_mov_b32 s7, 0xf000
1009 ; CI-NEXT:    s_mov_b32 s6, -1
1010 ; CI-NEXT:    v_or_b32_e32 v0, v0, v1
1011 ; CI-NEXT:    buffer_store_byte v2, off, s[4:7], 0
1012 ; CI-NEXT:    s_mov_b32 s4, s5
1013 ; CI-NEXT:    buffer_store_short v0, off, s[4:7], 0
1014 ; CI-NEXT:    s_waitcnt vmcnt(0)
1015 ; CI-NEXT:    s_setpc_b64 s[30:31]
1017 ; GFX89-LABEL: void_func_v3i8:
1018 ; GFX89:       ; %bb.0:
1019 ; GFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1020 ; GFX89-NEXT:    v_lshlrev_b16_e32 v1, 8, v1
1021 ; GFX89-NEXT:    s_mov_b32 s5, 0
1022 ; GFX89-NEXT:    s_mov_b32 s4, 2
1023 ; GFX89-NEXT:    s_mov_b32 s7, 0xf000
1024 ; GFX89-NEXT:    s_mov_b32 s6, -1
1025 ; GFX89-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1026 ; GFX89-NEXT:    buffer_store_byte v2, off, s[4:7], 0
1027 ; GFX89-NEXT:    s_mov_b32 s4, s5
1028 ; GFX89-NEXT:    buffer_store_short v0, off, s[4:7], 0
1029 ; GFX89-NEXT:    s_waitcnt vmcnt(0)
1030 ; GFX89-NEXT:    s_setpc_b64 s[30:31]
1032 ; GFX11-LABEL: void_func_v3i8:
1033 ; GFX11:       ; %bb.0:
1034 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1035 ; GFX11-NEXT:    v_lshlrev_b16 v1, 8, v1
1036 ; GFX11-NEXT:    v_and_b32_e32 v0, 0xff, v0
1037 ; GFX11-NEXT:    s_mov_b32 s1, 0
1038 ; GFX11-NEXT:    s_mov_b32 s0, 2
1039 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
1040 ; GFX11-NEXT:    s_mov_b32 s2, -1
1041 ; GFX11-NEXT:    v_or_b32_e32 v0, v0, v1
1042 ; GFX11-NEXT:    buffer_store_b8 v2, off, s[0:3], 0
1043 ; GFX11-NEXT:    s_mov_b32 s0, s1
1044 ; GFX11-NEXT:    buffer_store_b16 v0, off, s[0:3], 0
1045 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1046   store <3 x i8> %arg0, ptr addrspace(1) null
1047   ret void
1050 define void @void_func_v4i8(<4 x i8> %arg0) #0 {
1051 ; CI-LABEL: void_func_v4i8:
1052 ; CI:       ; %bb.0:
1053 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1054 ; CI-NEXT:    v_and_b32_e32 v2, 0xff, v2
1055 ; CI-NEXT:    v_lshlrev_b32_e32 v1, 8, v1
1056 ; CI-NEXT:    v_and_b32_e32 v0, 0xff, v0
1057 ; CI-NEXT:    v_lshlrev_b32_e32 v3, 24, v3
1058 ; CI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
1059 ; CI-NEXT:    v_or_b32_e32 v0, v0, v1
1060 ; CI-NEXT:    v_or_b32_e32 v2, v3, v2
1061 ; CI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
1062 ; CI-NEXT:    s_mov_b32 s4, 0
1063 ; CI-NEXT:    v_or_b32_e32 v0, v0, v2
1064 ; CI-NEXT:    s_mov_b32 s7, 0xf000
1065 ; CI-NEXT:    s_mov_b32 s6, -1
1066 ; CI-NEXT:    s_mov_b32 s5, s4
1067 ; CI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
1068 ; CI-NEXT:    s_waitcnt vmcnt(0)
1069 ; CI-NEXT:    s_setpc_b64 s[30:31]
1071 ; GFX89-LABEL: void_func_v4i8:
1072 ; GFX89:       ; %bb.0:
1073 ; GFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1074 ; GFX89-NEXT:    v_lshlrev_b16_e32 v1, 8, v1
1075 ; GFX89-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1076 ; GFX89-NEXT:    v_lshlrev_b16_e32 v1, 8, v3
1077 ; GFX89-NEXT:    v_or_b32_sdwa v1, v2, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1078 ; GFX89-NEXT:    s_mov_b32 s4, 0
1079 ; GFX89-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
1080 ; GFX89-NEXT:    s_mov_b32 s7, 0xf000
1081 ; GFX89-NEXT:    s_mov_b32 s6, -1
1082 ; GFX89-NEXT:    s_mov_b32 s5, s4
1083 ; GFX89-NEXT:    buffer_store_dword v0, off, s[4:7], 0
1084 ; GFX89-NEXT:    s_waitcnt vmcnt(0)
1085 ; GFX89-NEXT:    s_setpc_b64 s[30:31]
1087 ; GFX11-LABEL: void_func_v4i8:
1088 ; GFX11:       ; %bb.0:
1089 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1090 ; GFX11-NEXT:    v_lshlrev_b16 v1, 8, v1
1091 ; GFX11-NEXT:    v_and_b32_e32 v0, 0xff, v0
1092 ; GFX11-NEXT:    v_lshlrev_b16 v3, 8, v3
1093 ; GFX11-NEXT:    v_and_b32_e32 v2, 0xff, v2
1094 ; GFX11-NEXT:    s_mov_b32 s0, 0
1095 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
1096 ; GFX11-NEXT:    v_or_b32_e32 v0, v0, v1
1097 ; GFX11-NEXT:    s_mov_b32 s2, -1
1098 ; GFX11-NEXT:    v_or_b32_e32 v1, v2, v3
1099 ; GFX11-NEXT:    s_mov_b32 s1, s0
1100 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
1101 ; GFX11-NEXT:    v_and_b32_e32 v0, 0xffff, v0
1102 ; GFX11-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
1103 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1104 ; GFX11-NEXT:    v_or_b32_e32 v0, v0, v1
1105 ; GFX11-NEXT:    buffer_store_b32 v0, off, s[0:3], 0
1106 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1107   store <4 x i8> %arg0, ptr addrspace(1) null
1108   ret void
1111 define void @void_func_v5i8(<5 x i8> %arg0) #0 {
1112 ; CI-LABEL: void_func_v5i8:
1113 ; CI:       ; %bb.0:
1114 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1115 ; CI-NEXT:    v_and_b32_e32 v2, 0xff, v2
1116 ; CI-NEXT:    v_lshlrev_b32_e32 v1, 8, v1
1117 ; CI-NEXT:    v_and_b32_e32 v0, 0xff, v0
1118 ; CI-NEXT:    v_lshlrev_b32_e32 v3, 24, v3
1119 ; CI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
1120 ; CI-NEXT:    v_or_b32_e32 v0, v0, v1
1121 ; CI-NEXT:    v_or_b32_e32 v2, v3, v2
1122 ; CI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
1123 ; CI-NEXT:    s_mov_b32 s5, 0
1124 ; CI-NEXT:    s_mov_b32 s4, 4
1125 ; CI-NEXT:    s_mov_b32 s7, 0xf000
1126 ; CI-NEXT:    s_mov_b32 s6, -1
1127 ; CI-NEXT:    v_or_b32_e32 v0, v0, v2
1128 ; CI-NEXT:    buffer_store_byte v4, off, s[4:7], 0
1129 ; CI-NEXT:    s_mov_b32 s4, s5
1130 ; CI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
1131 ; CI-NEXT:    s_waitcnt vmcnt(0)
1132 ; CI-NEXT:    s_setpc_b64 s[30:31]
1134 ; GFX89-LABEL: void_func_v5i8:
1135 ; GFX89:       ; %bb.0:
1136 ; GFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1137 ; GFX89-NEXT:    v_lshlrev_b16_e32 v1, 8, v1
1138 ; GFX89-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1139 ; GFX89-NEXT:    v_lshlrev_b16_e32 v1, 8, v3
1140 ; GFX89-NEXT:    v_or_b32_sdwa v1, v2, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1141 ; GFX89-NEXT:    s_mov_b32 s5, 0
1142 ; GFX89-NEXT:    s_mov_b32 s4, 4
1143 ; GFX89-NEXT:    s_mov_b32 s7, 0xf000
1144 ; GFX89-NEXT:    s_mov_b32 s6, -1
1145 ; GFX89-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
1146 ; GFX89-NEXT:    buffer_store_byte v4, off, s[4:7], 0
1147 ; GFX89-NEXT:    s_mov_b32 s4, s5
1148 ; GFX89-NEXT:    buffer_store_dword v0, off, s[4:7], 0
1149 ; GFX89-NEXT:    s_waitcnt vmcnt(0)
1150 ; GFX89-NEXT:    s_setpc_b64 s[30:31]
1152 ; GFX11-LABEL: void_func_v5i8:
1153 ; GFX11:       ; %bb.0:
1154 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1155 ; GFX11-NEXT:    v_lshlrev_b16 v1, 8, v1
1156 ; GFX11-NEXT:    v_and_b32_e32 v0, 0xff, v0
1157 ; GFX11-NEXT:    v_lshlrev_b16 v3, 8, v3
1158 ; GFX11-NEXT:    v_and_b32_e32 v2, 0xff, v2
1159 ; GFX11-NEXT:    s_mov_b32 s1, 0
1160 ; GFX11-NEXT:    s_mov_b32 s0, 4
1161 ; GFX11-NEXT:    v_or_b32_e32 v0, v0, v1
1162 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
1163 ; GFX11-NEXT:    v_or_b32_e32 v1, v2, v3
1164 ; GFX11-NEXT:    s_mov_b32 s2, -1
1165 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_1)
1166 ; GFX11-NEXT:    v_and_b32_e32 v0, 0xffff, v0
1167 ; GFX11-NEXT:    buffer_store_b8 v4, off, s[0:3], 0
1168 ; GFX11-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
1169 ; GFX11-NEXT:    s_mov_b32 s0, s1
1170 ; GFX11-NEXT:    v_or_b32_e32 v0, v0, v1
1171 ; GFX11-NEXT:    buffer_store_b32 v0, off, s[0:3], 0
1172 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1173   store <5 x i8> %arg0, ptr addrspace(1) null
1174   ret void
1177 define void @void_func_v8i8(<8 x i8> %arg0) #0 {
1178 ; CI-LABEL: void_func_v8i8:
1179 ; CI:       ; %bb.0:
1180 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1181 ; CI-NEXT:    v_and_b32_e32 v6, 0xff, v6
1182 ; CI-NEXT:    v_lshlrev_b32_e32 v5, 8, v5
1183 ; CI-NEXT:    v_and_b32_e32 v4, 0xff, v4
1184 ; CI-NEXT:    v_and_b32_e32 v2, 0xff, v2
1185 ; CI-NEXT:    v_lshlrev_b32_e32 v1, 8, v1
1186 ; CI-NEXT:    v_and_b32_e32 v0, 0xff, v0
1187 ; CI-NEXT:    v_lshlrev_b32_e32 v7, 24, v7
1188 ; CI-NEXT:    v_lshlrev_b32_e32 v6, 16, v6
1189 ; CI-NEXT:    v_or_b32_e32 v4, v4, v5
1190 ; CI-NEXT:    v_lshlrev_b32_e32 v3, 24, v3
1191 ; CI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
1192 ; CI-NEXT:    v_or_b32_e32 v0, v0, v1
1193 ; CI-NEXT:    v_or_b32_e32 v6, v7, v6
1194 ; CI-NEXT:    v_and_b32_e32 v4, 0xffff, v4
1195 ; CI-NEXT:    v_or_b32_e32 v2, v3, v2
1196 ; CI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
1197 ; CI-NEXT:    s_mov_b32 s4, 0
1198 ; CI-NEXT:    v_or_b32_e32 v4, v4, v6
1199 ; CI-NEXT:    v_or_b32_e32 v3, v0, v2
1200 ; CI-NEXT:    s_mov_b32 s7, 0xf000
1201 ; CI-NEXT:    s_mov_b32 s6, -1
1202 ; CI-NEXT:    s_mov_b32 s5, s4
1203 ; CI-NEXT:    buffer_store_dwordx2 v[3:4], off, s[4:7], 0
1204 ; CI-NEXT:    s_waitcnt vmcnt(0)
1205 ; CI-NEXT:    s_setpc_b64 s[30:31]
1207 ; GFX89-LABEL: void_func_v8i8:
1208 ; GFX89:       ; %bb.0:
1209 ; GFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1210 ; GFX89-NEXT:    v_lshlrev_b16_e32 v5, 8, v5
1211 ; GFX89-NEXT:    v_lshlrev_b16_e32 v1, 8, v1
1212 ; GFX89-NEXT:    v_or_b32_sdwa v4, v4, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1213 ; GFX89-NEXT:    v_lshlrev_b16_e32 v5, 8, v7
1214 ; GFX89-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1215 ; GFX89-NEXT:    v_lshlrev_b16_e32 v1, 8, v3
1216 ; GFX89-NEXT:    v_or_b32_sdwa v5, v6, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1217 ; GFX89-NEXT:    v_or_b32_sdwa v1, v2, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1218 ; GFX89-NEXT:    s_mov_b32 s4, 0
1219 ; GFX89-NEXT:    v_or_b32_sdwa v4, v4, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
1220 ; GFX89-NEXT:    v_or_b32_sdwa v3, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
1221 ; GFX89-NEXT:    s_mov_b32 s7, 0xf000
1222 ; GFX89-NEXT:    s_mov_b32 s6, -1
1223 ; GFX89-NEXT:    s_mov_b32 s5, s4
1224 ; GFX89-NEXT:    buffer_store_dwordx2 v[3:4], off, s[4:7], 0
1225 ; GFX89-NEXT:    s_waitcnt vmcnt(0)
1226 ; GFX89-NEXT:    s_setpc_b64 s[30:31]
1228 ; GFX11-LABEL: void_func_v8i8:
1229 ; GFX11:       ; %bb.0:
1230 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1231 ; GFX11-NEXT:    v_lshlrev_b16 v5, 8, v5
1232 ; GFX11-NEXT:    v_and_b32_e32 v4, 0xff, v4
1233 ; GFX11-NEXT:    v_lshlrev_b16 v7, 8, v7
1234 ; GFX11-NEXT:    v_and_b32_e32 v6, 0xff, v6
1235 ; GFX11-NEXT:    v_lshlrev_b16 v1, 8, v1
1236 ; GFX11-NEXT:    v_and_b32_e32 v0, 0xff, v0
1237 ; GFX11-NEXT:    v_lshlrev_b16 v3, 8, v3
1238 ; GFX11-NEXT:    v_and_b32_e32 v2, 0xff, v2
1239 ; GFX11-NEXT:    v_or_b32_e32 v4, v4, v5
1240 ; GFX11-NEXT:    v_or_b32_e32 v5, v6, v7
1241 ; GFX11-NEXT:    v_or_b32_e32 v0, v0, v1
1242 ; GFX11-NEXT:    s_mov_b32 s0, 0
1243 ; GFX11-NEXT:    v_or_b32_e32 v1, v2, v3
1244 ; GFX11-NEXT:    v_and_b32_e32 v2, 0xffff, v4
1245 ; GFX11-NEXT:    v_lshlrev_b32_e32 v3, 16, v5
1246 ; GFX11-NEXT:    v_and_b32_e32 v0, 0xffff, v0
1247 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
1248 ; GFX11-NEXT:    v_lshlrev_b32_e32 v4, 16, v1
1249 ; GFX11-NEXT:    s_mov_b32 s2, -1
1250 ; GFX11-NEXT:    v_or_b32_e32 v1, v2, v3
1251 ; GFX11-NEXT:    s_mov_b32 s1, s0
1252 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
1253 ; GFX11-NEXT:    v_or_b32_e32 v0, v0, v4
1254 ; GFX11-NEXT:    buffer_store_b64 v[0:1], off, s[0:3], 0
1255 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1256   store <8 x i8> %arg0, ptr addrspace(1) null
1257   ret void
1260 define void @void_func_v16i8(<16 x i8> %arg0) #0 {
1261 ; CI-LABEL: void_func_v16i8:
1262 ; CI:       ; %bb.0:
1263 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1264 ; CI-NEXT:    v_and_b32_e32 v14, 0xff, v14
1265 ; CI-NEXT:    v_lshlrev_b32_e32 v13, 8, v13
1266 ; CI-NEXT:    v_and_b32_e32 v12, 0xff, v12
1267 ; CI-NEXT:    v_and_b32_e32 v10, 0xff, v10
1268 ; CI-NEXT:    v_lshlrev_b32_e32 v9, 8, v9
1269 ; CI-NEXT:    v_and_b32_e32 v8, 0xff, v8
1270 ; CI-NEXT:    v_and_b32_e32 v6, 0xff, v6
1271 ; CI-NEXT:    v_lshlrev_b32_e32 v5, 8, v5
1272 ; CI-NEXT:    v_and_b32_e32 v4, 0xff, v4
1273 ; CI-NEXT:    v_and_b32_e32 v2, 0xff, v2
1274 ; CI-NEXT:    v_lshlrev_b32_e32 v1, 8, v1
1275 ; CI-NEXT:    v_and_b32_e32 v0, 0xff, v0
1276 ; CI-NEXT:    v_lshlrev_b32_e32 v15, 24, v15
1277 ; CI-NEXT:    v_lshlrev_b32_e32 v14, 16, v14
1278 ; CI-NEXT:    v_or_b32_e32 v12, v12, v13
1279 ; CI-NEXT:    v_lshlrev_b32_e32 v11, 24, v11
1280 ; CI-NEXT:    v_lshlrev_b32_e32 v10, 16, v10
1281 ; CI-NEXT:    v_or_b32_e32 v8, v8, v9
1282 ; CI-NEXT:    v_lshlrev_b32_e32 v7, 24, v7
1283 ; CI-NEXT:    v_lshlrev_b32_e32 v6, 16, v6
1284 ; CI-NEXT:    v_or_b32_e32 v4, v4, v5
1285 ; CI-NEXT:    v_lshlrev_b32_e32 v3, 24, v3
1286 ; CI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
1287 ; CI-NEXT:    v_or_b32_e32 v0, v0, v1
1288 ; CI-NEXT:    v_or_b32_e32 v14, v15, v14
1289 ; CI-NEXT:    v_and_b32_e32 v12, 0xffff, v12
1290 ; CI-NEXT:    v_or_b32_e32 v10, v11, v10
1291 ; CI-NEXT:    v_and_b32_e32 v8, 0xffff, v8
1292 ; CI-NEXT:    v_or_b32_e32 v6, v7, v6
1293 ; CI-NEXT:    v_and_b32_e32 v4, 0xffff, v4
1294 ; CI-NEXT:    v_or_b32_e32 v2, v3, v2
1295 ; CI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
1296 ; CI-NEXT:    s_mov_b32 s4, 0
1297 ; CI-NEXT:    v_or_b32_e32 v12, v12, v14
1298 ; CI-NEXT:    v_or_b32_e32 v11, v8, v10
1299 ; CI-NEXT:    v_or_b32_e32 v10, v4, v6
1300 ; CI-NEXT:    v_or_b32_e32 v9, v0, v2
1301 ; CI-NEXT:    s_mov_b32 s7, 0xf000
1302 ; CI-NEXT:    s_mov_b32 s6, -1
1303 ; CI-NEXT:    s_mov_b32 s5, s4
1304 ; CI-NEXT:    buffer_store_dwordx4 v[9:12], off, s[4:7], 0
1305 ; CI-NEXT:    s_waitcnt vmcnt(0)
1306 ; CI-NEXT:    s_setpc_b64 s[30:31]
1308 ; GFX89-LABEL: void_func_v16i8:
1309 ; GFX89:       ; %bb.0:
1310 ; GFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1311 ; GFX89-NEXT:    v_lshlrev_b16_e32 v13, 8, v13
1312 ; GFX89-NEXT:    v_lshlrev_b16_e32 v9, 8, v9
1313 ; GFX89-NEXT:    v_lshlrev_b16_e32 v5, 8, v5
1314 ; GFX89-NEXT:    v_lshlrev_b16_e32 v1, 8, v1
1315 ; GFX89-NEXT:    v_or_b32_sdwa v12, v12, v13 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1316 ; GFX89-NEXT:    v_lshlrev_b16_e32 v13, 8, v15
1317 ; GFX89-NEXT:    v_or_b32_sdwa v8, v8, v9 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1318 ; GFX89-NEXT:    v_lshlrev_b16_e32 v9, 8, v11
1319 ; GFX89-NEXT:    v_or_b32_sdwa v4, v4, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1320 ; GFX89-NEXT:    v_lshlrev_b16_e32 v5, 8, v7
1321 ; GFX89-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1322 ; GFX89-NEXT:    v_lshlrev_b16_e32 v1, 8, v3
1323 ; GFX89-NEXT:    v_or_b32_sdwa v13, v14, v13 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1324 ; GFX89-NEXT:    v_or_b32_sdwa v9, v10, v9 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1325 ; GFX89-NEXT:    v_or_b32_sdwa v5, v6, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1326 ; GFX89-NEXT:    v_or_b32_sdwa v1, v2, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1327 ; GFX89-NEXT:    s_mov_b32 s4, 0
1328 ; GFX89-NEXT:    v_or_b32_sdwa v12, v12, v13 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
1329 ; GFX89-NEXT:    v_or_b32_sdwa v11, v8, v9 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
1330 ; GFX89-NEXT:    v_or_b32_sdwa v10, v4, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
1331 ; GFX89-NEXT:    v_or_b32_sdwa v9, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
1332 ; GFX89-NEXT:    s_mov_b32 s7, 0xf000
1333 ; GFX89-NEXT:    s_mov_b32 s6, -1
1334 ; GFX89-NEXT:    s_mov_b32 s5, s4
1335 ; GFX89-NEXT:    buffer_store_dwordx4 v[9:12], off, s[4:7], 0
1336 ; GFX89-NEXT:    s_waitcnt vmcnt(0)
1337 ; GFX89-NEXT:    s_setpc_b64 s[30:31]
1339 ; GFX11-LABEL: void_func_v16i8:
1340 ; GFX11:       ; %bb.0:
1341 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1342 ; GFX11-NEXT:    v_lshlrev_b16 v13, 8, v13
1343 ; GFX11-NEXT:    v_and_b32_e32 v12, 0xff, v12
1344 ; GFX11-NEXT:    v_lshlrev_b16 v15, 8, v15
1345 ; GFX11-NEXT:    v_and_b32_e32 v14, 0xff, v14
1346 ; GFX11-NEXT:    v_lshlrev_b16 v9, 8, v9
1347 ; GFX11-NEXT:    v_and_b32_e32 v8, 0xff, v8
1348 ; GFX11-NEXT:    v_lshlrev_b16 v11, 8, v11
1349 ; GFX11-NEXT:    v_and_b32_e32 v10, 0xff, v10
1350 ; GFX11-NEXT:    v_lshlrev_b16 v5, 8, v5
1351 ; GFX11-NEXT:    v_and_b32_e32 v4, 0xff, v4
1352 ; GFX11-NEXT:    v_lshlrev_b16 v7, 8, v7
1353 ; GFX11-NEXT:    v_and_b32_e32 v6, 0xff, v6
1354 ; GFX11-NEXT:    v_lshlrev_b16 v1, 8, v1
1355 ; GFX11-NEXT:    v_and_b32_e32 v0, 0xff, v0
1356 ; GFX11-NEXT:    v_lshlrev_b16 v3, 8, v3
1357 ; GFX11-NEXT:    v_and_b32_e32 v2, 0xff, v2
1358 ; GFX11-NEXT:    v_or_b32_e32 v12, v12, v13
1359 ; GFX11-NEXT:    v_or_b32_e32 v13, v14, v15
1360 ; GFX11-NEXT:    v_or_b32_e32 v8, v8, v9
1361 ; GFX11-NEXT:    v_or_b32_e32 v10, v10, v11
1362 ; GFX11-NEXT:    v_or_b32_e32 v4, v4, v5
1363 ; GFX11-NEXT:    v_or_b32_e32 v5, v6, v7
1364 ; GFX11-NEXT:    v_or_b32_e32 v0, v0, v1
1365 ; GFX11-NEXT:    v_or_b32_e32 v1, v2, v3
1366 ; GFX11-NEXT:    v_and_b32_e32 v9, 0xffff, v12
1367 ; GFX11-NEXT:    v_lshlrev_b32_e32 v12, 16, v13
1368 ; GFX11-NEXT:    v_and_b32_e32 v8, 0xffff, v8
1369 ; GFX11-NEXT:    v_lshlrev_b32_e32 v2, 16, v10
1370 ; GFX11-NEXT:    v_and_b32_e32 v4, 0xffff, v4
1371 ; GFX11-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
1372 ; GFX11-NEXT:    v_and_b32_e32 v0, 0xffff, v0
1373 ; GFX11-NEXT:    v_lshlrev_b32_e32 v6, 16, v1
1374 ; GFX11-NEXT:    v_or_b32_e32 v3, v9, v12
1375 ; GFX11-NEXT:    v_or_b32_e32 v2, v8, v2
1376 ; GFX11-NEXT:    v_or_b32_e32 v1, v4, v5
1377 ; GFX11-NEXT:    s_mov_b32 s0, 0
1378 ; GFX11-NEXT:    v_or_b32_e32 v0, v0, v6
1379 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
1380 ; GFX11-NEXT:    s_mov_b32 s2, -1
1381 ; GFX11-NEXT:    s_mov_b32 s1, s0
1382 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0
1383 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1384   store <16 x i8> %arg0, ptr addrspace(1) null
1385   ret void
1388 define void @void_func_v32i8(<32 x i8> %arg0) #0 {
1389 ; CI-LABEL: void_func_v32i8:
1390 ; CI:       ; %bb.0:
1391 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1392 ; CI-NEXT:    v_and_b32_e32 v2, 0xff, v2
1393 ; CI-NEXT:    v_lshlrev_b32_e32 v3, 24, v3
1394 ; CI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
1395 ; CI-NEXT:    v_or_b32_e32 v2, v3, v2
1396 ; CI-NEXT:    buffer_load_dword v3, off, s[0:3], s32
1397 ; CI-NEXT:    v_lshlrev_b32_e32 v5, 8, v5
1398 ; CI-NEXT:    v_and_b32_e32 v4, 0xff, v4
1399 ; CI-NEXT:    v_and_b32_e32 v6, 0xff, v6
1400 ; CI-NEXT:    v_or_b32_e32 v4, v4, v5
1401 ; CI-NEXT:    v_lshlrev_b32_e32 v5, 24, v7
1402 ; CI-NEXT:    v_lshlrev_b32_e32 v6, 16, v6
1403 ; CI-NEXT:    v_lshlrev_b32_e32 v13, 8, v13
1404 ; CI-NEXT:    v_and_b32_e32 v12, 0xff, v12
1405 ; CI-NEXT:    v_or_b32_e32 v5, v5, v6
1406 ; CI-NEXT:    v_and_b32_e32 v4, 0xffff, v4
1407 ; CI-NEXT:    v_lshlrev_b32_e32 v1, 8, v1
1408 ; CI-NEXT:    v_and_b32_e32 v0, 0xff, v0
1409 ; CI-NEXT:    v_or_b32_e32 v12, v12, v13
1410 ; CI-NEXT:    v_lshlrev_b32_e32 v9, 8, v9
1411 ; CI-NEXT:    v_and_b32_e32 v8, 0xff, v8
1412 ; CI-NEXT:    v_and_b32_e32 v13, 0xff, v14
1413 ; CI-NEXT:    v_and_b32_e32 v10, 0xff, v10
1414 ; CI-NEXT:    v_or_b32_e32 v7, v4, v5
1415 ; CI-NEXT:    v_or_b32_e32 v0, v0, v1
1416 ; CI-NEXT:    v_lshlrev_b32_e32 v1, 8, v29
1417 ; CI-NEXT:    v_and_b32_e32 v4, 0xff, v28
1418 ; CI-NEXT:    v_and_b32_e32 v6, 0xff, v26
1419 ; CI-NEXT:    v_or_b32_e32 v8, v8, v9
1420 ; CI-NEXT:    v_lshlrev_b32_e32 v9, 24, v15
1421 ; CI-NEXT:    v_lshlrev_b32_e32 v13, 16, v13
1422 ; CI-NEXT:    v_lshlrev_b32_e32 v11, 24, v11
1423 ; CI-NEXT:    v_lshlrev_b32_e32 v10, 16, v10
1424 ; CI-NEXT:    v_or_b32_e32 v1, v4, v1
1425 ; CI-NEXT:    v_and_b32_e32 v4, 0xff, v30
1426 ; CI-NEXT:    v_lshlrev_b32_e32 v5, 24, v27
1427 ; CI-NEXT:    v_lshlrev_b32_e32 v6, 16, v6
1428 ; CI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
1429 ; CI-NEXT:    v_or_b32_e32 v9, v9, v13
1430 ; CI-NEXT:    v_or_b32_e32 v10, v11, v10
1431 ; CI-NEXT:    v_and_b32_e32 v11, 0xffff, v12
1432 ; CI-NEXT:    v_and_b32_e32 v8, 0xffff, v8
1433 ; CI-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
1434 ; CI-NEXT:    v_or_b32_e32 v5, v5, v6
1435 ; CI-NEXT:    v_or_b32_e32 v6, v0, v2
1436 ; CI-NEXT:    v_or_b32_e32 v9, v11, v9
1437 ; CI-NEXT:    v_or_b32_e32 v8, v8, v10
1438 ; CI-NEXT:    v_lshlrev_b32_e32 v10, 8, v25
1439 ; CI-NEXT:    v_and_b32_e32 v11, 0xff, v24
1440 ; CI-NEXT:    v_and_b32_e32 v1, 0xffff, v1
1441 ; CI-NEXT:    s_mov_b32 s5, 0
1442 ; CI-NEXT:    s_mov_b32 s4, 16
1443 ; CI-NEXT:    s_mov_b32 s7, 0xf000
1444 ; CI-NEXT:    s_mov_b32 s6, -1
1445 ; CI-NEXT:    s_waitcnt vmcnt(0)
1446 ; CI-NEXT:    v_lshlrev_b32_e32 v0, 24, v3
1447 ; CI-NEXT:    v_or_b32_e32 v0, v0, v4
1448 ; CI-NEXT:    v_or_b32_e32 v3, v1, v0
1449 ; CI-NEXT:    v_or_b32_e32 v0, v11, v10
1450 ; CI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
1451 ; CI-NEXT:    v_and_b32_e32 v1, 0xff, v22
1452 ; CI-NEXT:    v_or_b32_e32 v2, v0, v5
1453 ; CI-NEXT:    v_lshlrev_b32_e32 v0, 24, v23
1454 ; CI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
1455 ; CI-NEXT:    v_or_b32_e32 v0, v0, v1
1456 ; CI-NEXT:    v_lshlrev_b32_e32 v1, 8, v21
1457 ; CI-NEXT:    v_and_b32_e32 v4, 0xff, v20
1458 ; CI-NEXT:    v_or_b32_e32 v1, v4, v1
1459 ; CI-NEXT:    v_and_b32_e32 v1, 0xffff, v1
1460 ; CI-NEXT:    v_and_b32_e32 v4, 0xff, v18
1461 ; CI-NEXT:    v_or_b32_e32 v1, v1, v0
1462 ; CI-NEXT:    v_lshlrev_b32_e32 v0, 24, v19
1463 ; CI-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
1464 ; CI-NEXT:    v_or_b32_e32 v0, v0, v4
1465 ; CI-NEXT:    v_lshlrev_b32_e32 v4, 8, v17
1466 ; CI-NEXT:    v_and_b32_e32 v5, 0xff, v16
1467 ; CI-NEXT:    v_or_b32_e32 v4, v5, v4
1468 ; CI-NEXT:    v_and_b32_e32 v4, 0xffff, v4
1469 ; CI-NEXT:    v_or_b32_e32 v0, v4, v0
1470 ; CI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
1471 ; CI-NEXT:    s_mov_b32 s4, s5
1472 ; CI-NEXT:    buffer_store_dwordx4 v[6:9], off, s[4:7], 0
1473 ; CI-NEXT:    s_waitcnt vmcnt(0)
1474 ; CI-NEXT:    s_setpc_b64 s[30:31]
1476 ; GFX89-LABEL: void_func_v32i8:
1477 ; GFX89:       ; %bb.0:
1478 ; GFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1479 ; GFX89-NEXT:    v_lshlrev_b16_e32 v13, 8, v13
1480 ; GFX89-NEXT:    v_or_b32_sdwa v12, v12, v13 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1481 ; GFX89-NEXT:    v_lshlrev_b16_e32 v13, 8, v15
1482 ; GFX89-NEXT:    v_or_b32_sdwa v13, v14, v13 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1483 ; GFX89-NEXT:    buffer_load_ubyte v14, off, s[0:3], s32
1484 ; GFX89-NEXT:    v_lshlrev_b16_e32 v5, 8, v5
1485 ; GFX89-NEXT:    v_lshlrev_b16_e32 v1, 8, v1
1486 ; GFX89-NEXT:    v_or_b32_sdwa v4, v4, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1487 ; GFX89-NEXT:    v_lshlrev_b16_e32 v5, 8, v7
1488 ; GFX89-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1489 ; GFX89-NEXT:    v_lshlrev_b16_e32 v1, 8, v3
1490 ; GFX89-NEXT:    v_lshlrev_b16_e32 v9, 8, v9
1491 ; GFX89-NEXT:    v_or_b32_sdwa v5, v6, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1492 ; GFX89-NEXT:    v_or_b32_sdwa v6, v2, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1493 ; GFX89-NEXT:    v_lshlrev_b16_e32 v1, 8, v29
1494 ; GFX89-NEXT:    v_or_b32_sdwa v8, v8, v9 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1495 ; GFX89-NEXT:    v_lshlrev_b16_e32 v9, 8, v11
1496 ; GFX89-NEXT:    v_or_b32_sdwa v7, v28, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1497 ; GFX89-NEXT:    v_lshlrev_b16_e32 v1, 8, v25
1498 ; GFX89-NEXT:    v_or_b32_sdwa v9, v10, v9 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1499 ; GFX89-NEXT:    v_or_b32_sdwa v10, v24, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1500 ; GFX89-NEXT:    v_lshlrev_b16_e32 v1, 8, v27
1501 ; GFX89-NEXT:    v_lshlrev_b16_e32 v2, 8, v23
1502 ; GFX89-NEXT:    v_or_b32_sdwa v11, v26, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1503 ; GFX89-NEXT:    v_lshlrev_b16_e32 v1, 8, v21
1504 ; GFX89-NEXT:    v_lshlrev_b16_e32 v3, 8, v17
1505 ; GFX89-NEXT:    v_lshlrev_b16_e32 v15, 8, v19
1506 ; GFX89-NEXT:    v_or_b32_sdwa v19, v22, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1507 ; GFX89-NEXT:    v_or_b32_sdwa v2, v8, v9 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
1508 ; GFX89-NEXT:    v_or_b32_sdwa v17, v20, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1509 ; GFX89-NEXT:    v_or_b32_sdwa v16, v16, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1510 ; GFX89-NEXT:    v_or_b32_sdwa v15, v18, v15 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1511 ; GFX89-NEXT:    s_mov_b32 s5, 0
1512 ; GFX89-NEXT:    s_mov_b32 s4, 16
1513 ; GFX89-NEXT:    s_mov_b32 s7, 0xf000
1514 ; GFX89-NEXT:    s_mov_b32 s6, -1
1515 ; GFX89-NEXT:    v_or_b32_sdwa v1, v4, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
1516 ; GFX89-NEXT:    v_or_b32_sdwa v0, v0, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
1517 ; GFX89-NEXT:    v_or_b32_sdwa v6, v10, v11 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
1518 ; GFX89-NEXT:    v_or_b32_sdwa v5, v17, v19 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
1519 ; GFX89-NEXT:    v_or_b32_sdwa v4, v16, v15 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
1520 ; GFX89-NEXT:    v_or_b32_sdwa v3, v12, v13 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
1521 ; GFX89-NEXT:    s_waitcnt vmcnt(0)
1522 ; GFX89-NEXT:    v_lshlrev_b16_e32 v8, 8, v14
1523 ; GFX89-NEXT:    v_or_b32_sdwa v8, v30, v8 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
1524 ; GFX89-NEXT:    v_or_b32_sdwa v7, v7, v8 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
1525 ; GFX89-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
1526 ; GFX89-NEXT:    s_mov_b32 s4, s5
1527 ; GFX89-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
1528 ; GFX89-NEXT:    s_waitcnt vmcnt(0)
1529 ; GFX89-NEXT:    s_setpc_b64 s[30:31]
1531 ; GFX11-LABEL: void_func_v32i8:
1532 ; GFX11:       ; %bb.0:
1533 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1534 ; GFX11-NEXT:    scratch_load_u8 v31, off, s32
1535 ; GFX11-NEXT:    v_lshlrev_b16 v1, 8, v1
1536 ; GFX11-NEXT:    v_and_b32_e32 v0, 0xff, v0
1537 ; GFX11-NEXT:    v_lshlrev_b16 v3, 8, v3
1538 ; GFX11-NEXT:    v_and_b32_e32 v2, 0xff, v2
1539 ; GFX11-NEXT:    v_lshlrev_b16 v9, 8, v9
1540 ; GFX11-NEXT:    v_and_b32_e32 v8, 0xff, v8
1541 ; GFX11-NEXT:    v_lshlrev_b16 v11, 8, v11
1542 ; GFX11-NEXT:    v_and_b32_e32 v10, 0xff, v10
1543 ; GFX11-NEXT:    v_lshlrev_b16 v17, 8, v17
1544 ; GFX11-NEXT:    v_and_b32_e32 v16, 0xff, v16
1545 ; GFX11-NEXT:    v_or_b32_e32 v0, v0, v1
1546 ; GFX11-NEXT:    v_or_b32_e32 v1, v2, v3
1547 ; GFX11-NEXT:    v_lshlrev_b16 v13, 8, v13
1548 ; GFX11-NEXT:    v_and_b32_e32 v12, 0xff, v12
1549 ; GFX11-NEXT:    v_lshlrev_b16 v15, 8, v15
1550 ; GFX11-NEXT:    v_and_b32_e32 v14, 0xff, v14
1551 ; GFX11-NEXT:    v_lshlrev_b16 v5, 8, v5
1552 ; GFX11-NEXT:    v_and_b32_e32 v4, 0xff, v4
1553 ; GFX11-NEXT:    v_lshlrev_b16 v7, 8, v7
1554 ; GFX11-NEXT:    v_and_b32_e32 v6, 0xff, v6
1555 ; GFX11-NEXT:    v_lshlrev_b16 v29, 8, v29
1556 ; GFX11-NEXT:    v_and_b32_e32 v28, 0xff, v28
1557 ; GFX11-NEXT:    v_and_b32_e32 v30, 0xff, v30
1558 ; GFX11-NEXT:    v_lshlrev_b16 v25, 8, v25
1559 ; GFX11-NEXT:    v_and_b32_e32 v24, 0xff, v24
1560 ; GFX11-NEXT:    v_lshlrev_b16 v27, 8, v27
1561 ; GFX11-NEXT:    v_and_b32_e32 v26, 0xff, v26
1562 ; GFX11-NEXT:    v_lshlrev_b16 v21, 8, v21
1563 ; GFX11-NEXT:    v_and_b32_e32 v20, 0xff, v20
1564 ; GFX11-NEXT:    v_lshlrev_b16 v23, 8, v23
1565 ; GFX11-NEXT:    v_and_b32_e32 v22, 0xff, v22
1566 ; GFX11-NEXT:    v_lshlrev_b16 v19, 8, v19
1567 ; GFX11-NEXT:    v_and_b32_e32 v18, 0xff, v18
1568 ; GFX11-NEXT:    v_or_b32_e32 v8, v8, v9
1569 ; GFX11-NEXT:    v_or_b32_e32 v9, v10, v11
1570 ; GFX11-NEXT:    v_or_b32_e32 v11, v16, v17
1571 ; GFX11-NEXT:    v_lshlrev_b32_e32 v17, 16, v1
1572 ; GFX11-NEXT:    v_or_b32_e32 v12, v12, v13
1573 ; GFX11-NEXT:    v_or_b32_e32 v13, v14, v15
1574 ; GFX11-NEXT:    v_or_b32_e32 v4, v4, v5
1575 ; GFX11-NEXT:    v_or_b32_e32 v5, v6, v7
1576 ; GFX11-NEXT:    v_or_b32_e32 v2, v28, v29
1577 ; GFX11-NEXT:    v_or_b32_e32 v3, v24, v25
1578 ; GFX11-NEXT:    v_or_b32_e32 v6, v26, v27
1579 ; GFX11-NEXT:    v_or_b32_e32 v7, v20, v21
1580 ; GFX11-NEXT:    v_or_b32_e32 v10, v22, v23
1581 ; GFX11-NEXT:    v_or_b32_e32 v14, v18, v19
1582 ; GFX11-NEXT:    v_and_b32_e32 v15, 0xffff, v4
1583 ; GFX11-NEXT:    v_lshlrev_b32_e32 v16, 16, v5
1584 ; GFX11-NEXT:    v_and_b32_e32 v18, 0xffff, v2
1585 ; GFX11-NEXT:    v_and_b32_e32 v4, 0xffff, v3
1586 ; GFX11-NEXT:    v_lshlrev_b32_e32 v5, 16, v6
1587 ; GFX11-NEXT:    v_and_b32_e32 v7, 0xffff, v7
1588 ; GFX11-NEXT:    v_lshlrev_b32_e32 v10, 16, v10
1589 ; GFX11-NEXT:    v_and_b32_e32 v11, 0xffff, v11
1590 ; GFX11-NEXT:    v_lshlrev_b32_e32 v14, 16, v14
1591 ; GFX11-NEXT:    v_and_b32_e32 v12, 0xffff, v12
1592 ; GFX11-NEXT:    v_lshlrev_b32_e32 v13, 16, v13
1593 ; GFX11-NEXT:    v_and_b32_e32 v8, 0xffff, v8
1594 ; GFX11-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
1595 ; GFX11-NEXT:    v_and_b32_e32 v0, 0xffff, v0
1596 ; GFX11-NEXT:    v_or_b32_e32 v6, v4, v5
1597 ; GFX11-NEXT:    v_or_b32_e32 v5, v7, v10
1598 ; GFX11-NEXT:    v_or_b32_e32 v4, v11, v14
1599 ; GFX11-NEXT:    v_or_b32_e32 v3, v12, v13
1600 ; GFX11-NEXT:    v_or_b32_e32 v2, v8, v9
1601 ; GFX11-NEXT:    v_or_b32_e32 v0, v0, v17
1602 ; GFX11-NEXT:    s_mov_b32 s1, 0
1603 ; GFX11-NEXT:    s_mov_b32 s0, 16
1604 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
1605 ; GFX11-NEXT:    s_mov_b32 s2, -1
1606 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
1607 ; GFX11-NEXT:    v_lshlrev_b16 v1, 8, v31
1608 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
1609 ; GFX11-NEXT:    v_or_b32_e32 v1, v30, v1
1610 ; GFX11-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
1611 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1612 ; GFX11-NEXT:    v_or_b32_e32 v7, v18, v1
1613 ; GFX11-NEXT:    v_or_b32_e32 v1, v15, v16
1614 ; GFX11-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0
1615 ; GFX11-NEXT:    s_mov_b32 s0, s1
1616 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0
1617 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1618   store <32 x i8> %arg0, ptr addrspace(1) null
1619   ret void
1622 define void @void_func_v3i16(<3 x i16> %arg0) #0 {
1623 ; CI-LABEL: void_func_v3i16:
1624 ; CI:       ; %bb.0:
1625 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1626 ; CI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
1627 ; CI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
1628 ; CI-NEXT:    s_mov_b32 s7, 0xf000
1629 ; CI-NEXT:    s_mov_b32 s6, -1
1630 ; CI-NEXT:    v_or_b32_e32 v0, v0, v1
1631 ; CI-NEXT:    buffer_store_short v2, off, s[4:7], 0
1632 ; CI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
1633 ; CI-NEXT:    s_waitcnt vmcnt(0)
1634 ; CI-NEXT:    s_setpc_b64 s[30:31]
1636 ; GFX89-LABEL: void_func_v3i16:
1637 ; GFX89:       ; %bb.0:
1638 ; GFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1639 ; GFX89-NEXT:    s_mov_b32 s7, 0xf000
1640 ; GFX89-NEXT:    s_mov_b32 s6, -1
1641 ; GFX89-NEXT:    buffer_store_short v1, off, s[4:7], 0
1642 ; GFX89-NEXT:    buffer_store_dword v0, off, s[4:7], 0
1643 ; GFX89-NEXT:    s_waitcnt vmcnt(0)
1644 ; GFX89-NEXT:    s_setpc_b64 s[30:31]
1646 ; GFX11-LABEL: void_func_v3i16:
1647 ; GFX11:       ; %bb.0:
1648 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1649 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
1650 ; GFX11-NEXT:    s_mov_b32 s2, -1
1651 ; GFX11-NEXT:    s_clause 0x1
1652 ; GFX11-NEXT:    buffer_store_b16 v1, off, s[0:3], 0
1653 ; GFX11-NEXT:    buffer_store_b32 v0, off, s[0:3], 0
1654 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1655   store <3 x i16> %arg0, ptr addrspace(1) undef
1656   ret void
1659 define void @void_func_v4i16(<4 x i16> %arg0) #0 {
1660 ; CI-LABEL: void_func_v4i16:
1661 ; CI:       ; %bb.0:
1662 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1663 ; CI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
1664 ; CI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
1665 ; CI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
1666 ; CI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
1667 ; CI-NEXT:    v_or_b32_e32 v2, v2, v3
1668 ; CI-NEXT:    v_or_b32_e32 v1, v0, v1
1669 ; CI-NEXT:    s_mov_b32 s7, 0xf000
1670 ; CI-NEXT:    s_mov_b32 s6, -1
1671 ; CI-NEXT:    buffer_store_dwordx2 v[1:2], off, s[4:7], 0
1672 ; CI-NEXT:    s_waitcnt vmcnt(0)
1673 ; CI-NEXT:    s_setpc_b64 s[30:31]
1675 ; GFX89-LABEL: void_func_v4i16:
1676 ; GFX89:       ; %bb.0:
1677 ; GFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1678 ; GFX89-NEXT:    s_mov_b32 s7, 0xf000
1679 ; GFX89-NEXT:    s_mov_b32 s6, -1
1680 ; GFX89-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
1681 ; GFX89-NEXT:    s_waitcnt vmcnt(0)
1682 ; GFX89-NEXT:    s_setpc_b64 s[30:31]
1684 ; GFX11-LABEL: void_func_v4i16:
1685 ; GFX11:       ; %bb.0:
1686 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1687 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
1688 ; GFX11-NEXT:    s_mov_b32 s2, -1
1689 ; GFX11-NEXT:    buffer_store_b64 v[0:1], off, s[0:3], 0
1690 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1691   store <4 x i16> %arg0, ptr addrspace(1) undef
1692   ret void
1695 define void @void_func_v5i16(<5 x i16> %arg0) #0 {
1696 ; CI-LABEL: void_func_v5i16:
1697 ; CI:       ; %bb.0:
1698 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1699 ; CI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
1700 ; CI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
1701 ; CI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
1702 ; CI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
1703 ; CI-NEXT:    s_mov_b32 s7, 0xf000
1704 ; CI-NEXT:    s_mov_b32 s6, -1
1705 ; CI-NEXT:    v_or_b32_e32 v2, v2, v3
1706 ; CI-NEXT:    v_or_b32_e32 v1, v0, v1
1707 ; CI-NEXT:    buffer_store_short v4, off, s[4:7], 0
1708 ; CI-NEXT:    buffer_store_dwordx2 v[1:2], off, s[4:7], 0
1709 ; CI-NEXT:    s_waitcnt vmcnt(0)
1710 ; CI-NEXT:    s_setpc_b64 s[30:31]
1712 ; GFX89-LABEL: void_func_v5i16:
1713 ; GFX89:       ; %bb.0:
1714 ; GFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1715 ; GFX89-NEXT:    s_mov_b32 s7, 0xf000
1716 ; GFX89-NEXT:    s_mov_b32 s6, -1
1717 ; GFX89-NEXT:    buffer_store_short v2, off, s[4:7], 0
1718 ; GFX89-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
1719 ; GFX89-NEXT:    s_waitcnt vmcnt(0)
1720 ; GFX89-NEXT:    s_setpc_b64 s[30:31]
1722 ; GFX11-LABEL: void_func_v5i16:
1723 ; GFX11:       ; %bb.0:
1724 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1725 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
1726 ; GFX11-NEXT:    s_mov_b32 s2, -1
1727 ; GFX11-NEXT:    s_clause 0x1
1728 ; GFX11-NEXT:    buffer_store_b16 v2, off, s[0:3], 0
1729 ; GFX11-NEXT:    buffer_store_b64 v[0:1], off, s[0:3], 0
1730 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1731   store <5 x i16> %arg0, ptr addrspace(1) undef
1732   ret void
1735 define void @void_func_v8i16(<8 x i16> %arg0) #0 {
1736 ; CI-LABEL: void_func_v8i16:
1737 ; CI:       ; %bb.0:
1738 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1739 ; CI-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
1740 ; CI-NEXT:    v_and_b32_e32 v6, 0xffff, v6
1741 ; CI-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
1742 ; CI-NEXT:    v_and_b32_e32 v4, 0xffff, v4
1743 ; CI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
1744 ; CI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
1745 ; CI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
1746 ; CI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
1747 ; CI-NEXT:    v_or_b32_e32 v6, v6, v7
1748 ; CI-NEXT:    v_or_b32_e32 v5, v4, v5
1749 ; CI-NEXT:    v_or_b32_e32 v4, v2, v3
1750 ; CI-NEXT:    v_or_b32_e32 v3, v0, v1
1751 ; CI-NEXT:    s_mov_b32 s7, 0xf000
1752 ; CI-NEXT:    s_mov_b32 s6, -1
1753 ; CI-NEXT:    buffer_store_dwordx4 v[3:6], off, s[4:7], 0
1754 ; CI-NEXT:    s_waitcnt vmcnt(0)
1755 ; CI-NEXT:    s_setpc_b64 s[30:31]
1757 ; GFX89-LABEL: void_func_v8i16:
1758 ; GFX89:       ; %bb.0:
1759 ; GFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1760 ; GFX89-NEXT:    s_mov_b32 s7, 0xf000
1761 ; GFX89-NEXT:    s_mov_b32 s6, -1
1762 ; GFX89-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
1763 ; GFX89-NEXT:    s_waitcnt vmcnt(0)
1764 ; GFX89-NEXT:    s_setpc_b64 s[30:31]
1766 ; GFX11-LABEL: void_func_v8i16:
1767 ; GFX11:       ; %bb.0:
1768 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1769 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
1770 ; GFX11-NEXT:    s_mov_b32 s2, -1
1771 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0
1772 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1773   store <8 x i16> %arg0, ptr addrspace(1) undef
1774   ret void
1777 define void @void_func_v16i16(<16 x i16> %arg0) #0 {
1778 ; CI-LABEL: void_func_v16i16:
1779 ; CI:       ; %bb.0:
1780 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1781 ; CI-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
1782 ; CI-NEXT:    v_and_b32_e32 v4, 0xffff, v4
1783 ; CI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
1784 ; CI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
1785 ; CI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
1786 ; CI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
1787 ; CI-NEXT:    v_or_b32_e32 v5, v4, v5
1788 ; CI-NEXT:    v_or_b32_e32 v4, v2, v3
1789 ; CI-NEXT:    v_or_b32_e32 v3, v0, v1
1790 ; CI-NEXT:    v_lshlrev_b32_e32 v0, 16, v15
1791 ; CI-NEXT:    v_and_b32_e32 v1, 0xffff, v14
1792 ; CI-NEXT:    v_or_b32_e32 v14, v1, v0
1793 ; CI-NEXT:    v_lshlrev_b32_e32 v0, 16, v13
1794 ; CI-NEXT:    v_and_b32_e32 v1, 0xffff, v12
1795 ; CI-NEXT:    v_or_b32_e32 v13, v1, v0
1796 ; CI-NEXT:    v_lshlrev_b32_e32 v0, 16, v11
1797 ; CI-NEXT:    v_and_b32_e32 v1, 0xffff, v10
1798 ; CI-NEXT:    v_or_b32_e32 v12, v1, v0
1799 ; CI-NEXT:    v_lshlrev_b32_e32 v0, 16, v9
1800 ; CI-NEXT:    v_and_b32_e32 v1, 0xffff, v8
1801 ; CI-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
1802 ; CI-NEXT:    v_and_b32_e32 v6, 0xffff, v6
1803 ; CI-NEXT:    v_or_b32_e32 v11, v1, v0
1804 ; CI-NEXT:    s_mov_b32 s7, 0xf000
1805 ; CI-NEXT:    s_mov_b32 s6, -1
1806 ; CI-NEXT:    v_or_b32_e32 v6, v6, v7
1807 ; CI-NEXT:    buffer_store_dwordx4 v[11:14], off, s[4:7], 0
1808 ; CI-NEXT:    buffer_store_dwordx4 v[3:6], off, s[4:7], 0
1809 ; CI-NEXT:    s_waitcnt vmcnt(0)
1810 ; CI-NEXT:    s_setpc_b64 s[30:31]
1812 ; GFX89-LABEL: void_func_v16i16:
1813 ; GFX89:       ; %bb.0:
1814 ; GFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1815 ; GFX89-NEXT:    s_mov_b32 s7, 0xf000
1816 ; GFX89-NEXT:    s_mov_b32 s6, -1
1817 ; GFX89-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
1818 ; GFX89-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
1819 ; GFX89-NEXT:    s_waitcnt vmcnt(0)
1820 ; GFX89-NEXT:    s_setpc_b64 s[30:31]
1822 ; GFX11-LABEL: void_func_v16i16:
1823 ; GFX11:       ; %bb.0:
1824 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1825 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
1826 ; GFX11-NEXT:    s_mov_b32 s2, -1
1827 ; GFX11-NEXT:    s_clause 0x1
1828 ; GFX11-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0
1829 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0
1830 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1831   store <16 x i16> %arg0, ptr addrspace(1) undef
1832   ret void
1835 define void @void_func_v2i24(<2 x i24> %arg0) #0 {
1836 ; CI-LABEL: void_func_v2i24:
1837 ; CI:       ; %bb.0:
1838 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1839 ; CI-NEXT:    v_add_i32_e32 v0, vcc, v0, v1
1840 ; CI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
1841 ; CI-NEXT:    s_mov_b32 s7, 0xf000
1842 ; CI-NEXT:    s_mov_b32 s6, -1
1843 ; CI-NEXT:    buffer_store_byte v1, off, s[4:7], 0
1844 ; CI-NEXT:    buffer_store_short v0, off, s[4:7], 0
1845 ; CI-NEXT:    s_waitcnt vmcnt(0)
1846 ; CI-NEXT:    s_setpc_b64 s[30:31]
1848 ; VI-LABEL: void_func_v2i24:
1849 ; VI:       ; %bb.0:
1850 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1851 ; VI-NEXT:    v_add_u32_e32 v0, vcc, v0, v1
1852 ; VI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
1853 ; VI-NEXT:    s_mov_b32 s7, 0xf000
1854 ; VI-NEXT:    s_mov_b32 s6, -1
1855 ; VI-NEXT:    buffer_store_byte v1, off, s[4:7], 0
1856 ; VI-NEXT:    buffer_store_short v0, off, s[4:7], 0
1857 ; VI-NEXT:    s_waitcnt vmcnt(0)
1858 ; VI-NEXT:    s_setpc_b64 s[30:31]
1860 ; GFX9-LABEL: void_func_v2i24:
1861 ; GFX9:       ; %bb.0:
1862 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1863 ; GFX9-NEXT:    v_add_u32_e32 v0, v0, v1
1864 ; GFX9-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
1865 ; GFX9-NEXT:    s_mov_b32 s7, 0xf000
1866 ; GFX9-NEXT:    s_mov_b32 s6, -1
1867 ; GFX9-NEXT:    buffer_store_byte v1, off, s[4:7], 0
1868 ; GFX9-NEXT:    buffer_store_short v0, off, s[4:7], 0
1869 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1870 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1872 ; GFX11-LABEL: void_func_v2i24:
1873 ; GFX11:       ; %bb.0:
1874 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1875 ; GFX11-NEXT:    v_add_nc_u32_e32 v0, v0, v1
1876 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
1877 ; GFX11-NEXT:    s_mov_b32 s2, -1
1878 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1879 ; GFX11-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
1880 ; GFX11-NEXT:    s_clause 0x1
1881 ; GFX11-NEXT:    buffer_store_b8 v1, off, s[0:3], 0
1882 ; GFX11-NEXT:    buffer_store_b16 v0, off, s[0:3], 0
1883 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1884   %elt0 = extractelement <2 x i24> %arg0, i32 0
1885   %elt1 = extractelement <2 x i24> %arg0, i32 1
1886   %add = add i24 %elt0, %elt1
1887   store i24 %add, ptr addrspace(1) undef
1888   ret void
1891 define void @void_func_v2f32(<2 x float> %arg0) #0 {
1892 ; CIGFX89-LABEL: void_func_v2f32:
1893 ; CIGFX89:       ; %bb.0:
1894 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1895 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
1896 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
1897 ; CIGFX89-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
1898 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
1899 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
1901 ; GFX11-LABEL: void_func_v2f32:
1902 ; GFX11:       ; %bb.0:
1903 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1904 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
1905 ; GFX11-NEXT:    s_mov_b32 s2, -1
1906 ; GFX11-NEXT:    buffer_store_b64 v[0:1], off, s[0:3], 0
1907 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1908   store <2 x float> %arg0, ptr addrspace(1) undef
1909   ret void
1912 define void @void_func_v3f32(<3 x float> %arg0) #0 {
1913 ; CIGFX89-LABEL: void_func_v3f32:
1914 ; CIGFX89:       ; %bb.0:
1915 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1916 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
1917 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
1918 ; CIGFX89-NEXT:    buffer_store_dwordx3 v[0:2], off, s[4:7], 0
1919 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
1920 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
1922 ; GFX11-LABEL: void_func_v3f32:
1923 ; GFX11:       ; %bb.0:
1924 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1925 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
1926 ; GFX11-NEXT:    s_mov_b32 s2, -1
1927 ; GFX11-NEXT:    buffer_store_b96 v[0:2], off, s[0:3], 0
1928 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1929   store <3 x float> %arg0, ptr addrspace(1) undef
1930   ret void
1933 define void @void_func_v4f32(<4 x float> %arg0) #0 {
1934 ; CIGFX89-LABEL: void_func_v4f32:
1935 ; CIGFX89:       ; %bb.0:
1936 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1937 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
1938 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
1939 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
1940 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
1941 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
1943 ; GFX11-LABEL: void_func_v4f32:
1944 ; GFX11:       ; %bb.0:
1945 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1946 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
1947 ; GFX11-NEXT:    s_mov_b32 s2, -1
1948 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0
1949 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1950   store <4 x float> %arg0, ptr addrspace(1) undef
1951   ret void
1954 define void @void_func_v8f32(<8 x float> %arg0) #0 {
1955 ; CIGFX89-LABEL: void_func_v8f32:
1956 ; CIGFX89:       ; %bb.0:
1957 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1958 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
1959 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
1960 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
1961 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
1962 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
1963 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
1965 ; GFX11-LABEL: void_func_v8f32:
1966 ; GFX11:       ; %bb.0:
1967 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1968 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
1969 ; GFX11-NEXT:    s_mov_b32 s2, -1
1970 ; GFX11-NEXT:    s_clause 0x1
1971 ; GFX11-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0
1972 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0
1973 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1974   store <8 x float> %arg0, ptr addrspace(1) undef
1975   ret void
1978 define void @void_func_v16f32(<16 x float> %arg0) #0 {
1979 ; CIGFX89-LABEL: void_func_v16f32:
1980 ; CIGFX89:       ; %bb.0:
1981 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1982 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
1983 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
1984 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
1985 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
1986 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
1987 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
1988 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
1989 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
1991 ; GFX11-LABEL: void_func_v16f32:
1992 ; GFX11:       ; %bb.0:
1993 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1994 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
1995 ; GFX11-NEXT:    s_mov_b32 s2, -1
1996 ; GFX11-NEXT:    s_clause 0x3
1997 ; GFX11-NEXT:    buffer_store_b128 v[12:15], off, s[0:3], 0
1998 ; GFX11-NEXT:    buffer_store_b128 v[8:11], off, s[0:3], 0
1999 ; GFX11-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0
2000 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0
2001 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
2002   store <16 x float> %arg0, ptr addrspace(1) undef
2003   ret void
2006 define void @void_func_v2f64(<2 x double> %arg0) #0 {
2007 ; CIGFX89-LABEL: void_func_v2f64:
2008 ; CIGFX89:       ; %bb.0:
2009 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2010 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
2011 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
2012 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
2013 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
2014 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
2016 ; GFX11-LABEL: void_func_v2f64:
2017 ; GFX11:       ; %bb.0:
2018 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2019 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
2020 ; GFX11-NEXT:    s_mov_b32 s2, -1
2021 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0
2022 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
2023   store <2 x double> %arg0, ptr addrspace(1) undef
2024   ret void
2027 define void @void_func_v3f64(<3 x double> %arg0) #0 {
2028 ; CIGFX89-LABEL: void_func_v3f64:
2029 ; CIGFX89:       ; %bb.0:
2030 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2031 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
2032 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
2033 ; CIGFX89-NEXT:    buffer_store_dwordx2 v[4:5], off, s[4:7], 0
2034 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
2035 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
2036 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
2038 ; GFX11-LABEL: void_func_v3f64:
2039 ; GFX11:       ; %bb.0:
2040 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2041 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
2042 ; GFX11-NEXT:    s_mov_b32 s2, -1
2043 ; GFX11-NEXT:    s_clause 0x1
2044 ; GFX11-NEXT:    buffer_store_b64 v[4:5], off, s[0:3], 0
2045 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0
2046 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
2047   store <3 x double> %arg0, ptr addrspace(1) undef
2048   ret void
2051 define void @void_func_v4f64(<4 x double> %arg0) #0 {
2052 ; CIGFX89-LABEL: void_func_v4f64:
2053 ; CIGFX89:       ; %bb.0:
2054 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2055 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
2056 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
2057 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
2058 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
2059 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
2060 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
2062 ; GFX11-LABEL: void_func_v4f64:
2063 ; GFX11:       ; %bb.0:
2064 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2065 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
2066 ; GFX11-NEXT:    s_mov_b32 s2, -1
2067 ; GFX11-NEXT:    s_clause 0x1
2068 ; GFX11-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0
2069 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0
2070 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
2071   store <4 x double> %arg0, ptr addrspace(1) undef
2072   ret void
2075 define void @void_func_v8f64(<8 x double> %arg0) #0 {
2076 ; CIGFX89-LABEL: void_func_v8f64:
2077 ; CIGFX89:       ; %bb.0:
2078 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2079 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
2080 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
2081 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
2082 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
2083 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
2084 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
2085 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
2086 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
2088 ; GFX11-LABEL: void_func_v8f64:
2089 ; GFX11:       ; %bb.0:
2090 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2091 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
2092 ; GFX11-NEXT:    s_mov_b32 s2, -1
2093 ; GFX11-NEXT:    s_clause 0x3
2094 ; GFX11-NEXT:    buffer_store_b128 v[12:15], off, s[0:3], 0
2095 ; GFX11-NEXT:    buffer_store_b128 v[8:11], off, s[0:3], 0
2096 ; GFX11-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0
2097 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0
2098 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
2099   store <8 x double> %arg0, ptr addrspace(1) undef
2100   ret void
2103 define void @void_func_v16f64(<16 x double> %arg0) #0 {
2104 ; CIGFX89-LABEL: void_func_v16f64:
2105 ; CIGFX89:       ; %bb.0:
2106 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2107 ; CIGFX89-NEXT:    buffer_load_dword v31, off, s[0:3], s32
2108 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
2109 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
2110 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
2111 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
2112 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
2113 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
2114 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
2115 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
2116 ; CIGFX89-NEXT:    s_waitcnt vmcnt(6)
2117 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
2118 ; CIGFX89-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
2119 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
2120 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
2122 ; GFX11-LABEL: void_func_v16f64:
2123 ; GFX11:       ; %bb.0:
2124 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2125 ; GFX11-NEXT:    scratch_load_b32 v31, off, s32
2126 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
2127 ; GFX11-NEXT:    s_mov_b32 s2, -1
2128 ; GFX11-NEXT:    s_clause 0x3
2129 ; GFX11-NEXT:    buffer_store_b128 v[20:23], off, s[0:3], 0
2130 ; GFX11-NEXT:    buffer_store_b128 v[16:19], off, s[0:3], 0
2131 ; GFX11-NEXT:    buffer_store_b128 v[12:15], off, s[0:3], 0
2132 ; GFX11-NEXT:    buffer_store_b128 v[8:11], off, s[0:3], 0
2133 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
2134 ; GFX11-NEXT:    s_clause 0x3
2135 ; GFX11-NEXT:    buffer_store_b128 v[28:31], off, s[0:3], 0
2136 ; GFX11-NEXT:    buffer_store_b128 v[24:27], off, s[0:3], 0
2137 ; GFX11-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0
2138 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0
2139 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
2140   store <16 x double> %arg0, ptr addrspace(1) undef
2141   ret void
2144 define void @void_func_v2f16(<2 x half> %arg0) #0 {
2145 ; CI-LABEL: void_func_v2f16:
2146 ; CI:       ; %bb.0:
2147 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2148 ; CI-NEXT:    v_cvt_f16_f32_e32 v1, v1
2149 ; CI-NEXT:    v_cvt_f16_f32_e32 v0, v0
2150 ; CI-NEXT:    s_mov_b32 s7, 0xf000
2151 ; CI-NEXT:    s_mov_b32 s6, -1
2152 ; CI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
2153 ; CI-NEXT:    v_or_b32_e32 v0, v0, v1
2154 ; CI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
2155 ; CI-NEXT:    s_waitcnt vmcnt(0)
2156 ; CI-NEXT:    s_setpc_b64 s[30:31]
2158 ; GFX89-LABEL: void_func_v2f16:
2159 ; GFX89:       ; %bb.0:
2160 ; GFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2161 ; GFX89-NEXT:    s_mov_b32 s7, 0xf000
2162 ; GFX89-NEXT:    s_mov_b32 s6, -1
2163 ; GFX89-NEXT:    buffer_store_dword v0, off, s[4:7], 0
2164 ; GFX89-NEXT:    s_waitcnt vmcnt(0)
2165 ; GFX89-NEXT:    s_setpc_b64 s[30:31]
2167 ; GFX11-LABEL: void_func_v2f16:
2168 ; GFX11:       ; %bb.0:
2169 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2170 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
2171 ; GFX11-NEXT:    s_mov_b32 s2, -1
2172 ; GFX11-NEXT:    buffer_store_b32 v0, off, s[0:3], 0
2173 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
2174   store <2 x half> %arg0, ptr addrspace(1) undef
2175   ret void
2178 ; FIXME: Different abi if f16 legal
2179 define void @void_func_v3f16(<3 x half> %arg0) #0 {
2180 ; CI-LABEL: void_func_v3f16:
2181 ; CI:       ; %bb.0:
2182 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2183 ; CI-NEXT:    v_cvt_f16_f32_e32 v1, v1
2184 ; CI-NEXT:    v_cvt_f16_f32_e32 v0, v0
2185 ; CI-NEXT:    v_cvt_f16_f32_e32 v2, v2
2186 ; CI-NEXT:    s_mov_b32 s7, 0xf000
2187 ; CI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
2188 ; CI-NEXT:    s_mov_b32 s6, -1
2189 ; CI-NEXT:    v_or_b32_e32 v0, v0, v1
2190 ; CI-NEXT:    buffer_store_short v2, off, s[4:7], 0
2191 ; CI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
2192 ; CI-NEXT:    s_waitcnt vmcnt(0)
2193 ; CI-NEXT:    s_setpc_b64 s[30:31]
2195 ; GFX89-LABEL: void_func_v3f16:
2196 ; GFX89:       ; %bb.0:
2197 ; GFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2198 ; GFX89-NEXT:    s_mov_b32 s7, 0xf000
2199 ; GFX89-NEXT:    s_mov_b32 s6, -1
2200 ; GFX89-NEXT:    buffer_store_short v1, off, s[4:7], 0
2201 ; GFX89-NEXT:    buffer_store_dword v0, off, s[4:7], 0
2202 ; GFX89-NEXT:    s_waitcnt vmcnt(0)
2203 ; GFX89-NEXT:    s_setpc_b64 s[30:31]
2205 ; GFX11-LABEL: void_func_v3f16:
2206 ; GFX11:       ; %bb.0:
2207 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2208 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
2209 ; GFX11-NEXT:    s_mov_b32 s2, -1
2210 ; GFX11-NEXT:    s_clause 0x1
2211 ; GFX11-NEXT:    buffer_store_b16 v1, off, s[0:3], 0
2212 ; GFX11-NEXT:    buffer_store_b32 v0, off, s[0:3], 0
2213 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
2214   store <3 x half> %arg0, ptr addrspace(1) undef
2215   ret void
2218 define void @void_func_v4f16(<4 x half> %arg0) #0 {
2219 ; CI-LABEL: void_func_v4f16:
2220 ; CI:       ; %bb.0:
2221 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2222 ; CI-NEXT:    v_cvt_f16_f32_e32 v3, v3
2223 ; CI-NEXT:    v_cvt_f16_f32_e32 v2, v2
2224 ; CI-NEXT:    v_cvt_f16_f32_e32 v4, v1
2225 ; CI-NEXT:    v_cvt_f16_f32_e32 v0, v0
2226 ; CI-NEXT:    v_lshlrev_b32_e32 v1, 16, v3
2227 ; CI-NEXT:    v_or_b32_e32 v1, v2, v1
2228 ; CI-NEXT:    v_lshlrev_b32_e32 v2, 16, v4
2229 ; CI-NEXT:    v_or_b32_e32 v0, v0, v2
2230 ; CI-NEXT:    s_mov_b32 s7, 0xf000
2231 ; CI-NEXT:    s_mov_b32 s6, -1
2232 ; CI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
2233 ; CI-NEXT:    s_waitcnt vmcnt(0)
2234 ; CI-NEXT:    s_setpc_b64 s[30:31]
2236 ; GFX89-LABEL: void_func_v4f16:
2237 ; GFX89:       ; %bb.0:
2238 ; GFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2239 ; GFX89-NEXT:    s_mov_b32 s7, 0xf000
2240 ; GFX89-NEXT:    s_mov_b32 s6, -1
2241 ; GFX89-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
2242 ; GFX89-NEXT:    s_waitcnt vmcnt(0)
2243 ; GFX89-NEXT:    s_setpc_b64 s[30:31]
2245 ; GFX11-LABEL: void_func_v4f16:
2246 ; GFX11:       ; %bb.0:
2247 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2248 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
2249 ; GFX11-NEXT:    s_mov_b32 s2, -1
2250 ; GFX11-NEXT:    buffer_store_b64 v[0:1], off, s[0:3], 0
2251 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
2252   store <4 x half> %arg0, ptr addrspace(1) undef
2253   ret void
2256 define void @void_func_v8f16(<8 x half> %arg0) #0 {
2257 ; CI-LABEL: void_func_v8f16:
2258 ; CI:       ; %bb.0:
2259 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2260 ; CI-NEXT:    v_cvt_f16_f32_e32 v7, v7
2261 ; CI-NEXT:    v_cvt_f16_f32_e32 v6, v6
2262 ; CI-NEXT:    v_cvt_f16_f32_e32 v8, v5
2263 ; CI-NEXT:    v_cvt_f16_f32_e32 v3, v3
2264 ; CI-NEXT:    v_cvt_f16_f32_e32 v1, v1
2265 ; CI-NEXT:    v_cvt_f16_f32_e32 v4, v4
2266 ; CI-NEXT:    v_cvt_f16_f32_e32 v2, v2
2267 ; CI-NEXT:    v_cvt_f16_f32_e32 v0, v0
2268 ; CI-NEXT:    v_lshlrev_b32_e32 v5, 16, v7
2269 ; CI-NEXT:    v_or_b32_e32 v5, v6, v5
2270 ; CI-NEXT:    v_lshlrev_b32_e32 v6, 16, v8
2271 ; CI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
2272 ; CI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
2273 ; CI-NEXT:    v_or_b32_e32 v4, v4, v6
2274 ; CI-NEXT:    v_or_b32_e32 v3, v2, v3
2275 ; CI-NEXT:    v_or_b32_e32 v2, v0, v1
2276 ; CI-NEXT:    s_mov_b32 s7, 0xf000
2277 ; CI-NEXT:    s_mov_b32 s6, -1
2278 ; CI-NEXT:    buffer_store_dwordx4 v[2:5], off, s[4:7], 0
2279 ; CI-NEXT:    s_waitcnt vmcnt(0)
2280 ; CI-NEXT:    s_setpc_b64 s[30:31]
2282 ; GFX89-LABEL: void_func_v8f16:
2283 ; GFX89:       ; %bb.0:
2284 ; GFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2285 ; GFX89-NEXT:    s_mov_b32 s7, 0xf000
2286 ; GFX89-NEXT:    s_mov_b32 s6, -1
2287 ; GFX89-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
2288 ; GFX89-NEXT:    s_waitcnt vmcnt(0)
2289 ; GFX89-NEXT:    s_setpc_b64 s[30:31]
2291 ; GFX11-LABEL: void_func_v8f16:
2292 ; GFX11:       ; %bb.0:
2293 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2294 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
2295 ; GFX11-NEXT:    s_mov_b32 s2, -1
2296 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0
2297 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
2298   store <8 x half> %arg0, ptr addrspace(1) undef
2299   ret void
2302 define void @void_func_v16f16(<16 x half> %arg0) #0 {
2303 ; CI-LABEL: void_func_v16f16:
2304 ; CI:       ; %bb.0:
2305 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2306 ; CI-NEXT:    v_cvt_f16_f32_e32 v7, v7
2307 ; CI-NEXT:    v_cvt_f16_f32_e32 v3, v3
2308 ; CI-NEXT:    v_cvt_f16_f32_e32 v1, v1
2309 ; CI-NEXT:    v_cvt_f16_f32_e32 v6, v6
2310 ; CI-NEXT:    v_cvt_f16_f32_e32 v16, v5
2311 ; CI-NEXT:    v_cvt_f16_f32_e32 v2, v2
2312 ; CI-NEXT:    v_cvt_f16_f32_e32 v0, v0
2313 ; CI-NEXT:    v_cvt_f16_f32_e32 v4, v4
2314 ; CI-NEXT:    v_lshlrev_b32_e32 v5, 16, v7
2315 ; CI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
2316 ; CI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
2317 ; CI-NEXT:    v_or_b32_e32 v5, v6, v5
2318 ; CI-NEXT:    v_lshlrev_b32_e32 v6, 16, v16
2319 ; CI-NEXT:    v_or_b32_e32 v3, v2, v3
2320 ; CI-NEXT:    v_or_b32_e32 v2, v0, v1
2321 ; CI-NEXT:    v_cvt_f16_f32_e32 v0, v15
2322 ; CI-NEXT:    v_or_b32_e32 v4, v4, v6
2323 ; CI-NEXT:    v_cvt_f16_f32_e32 v1, v14
2324 ; CI-NEXT:    v_cvt_f16_f32_e32 v6, v13
2325 ; CI-NEXT:    v_cvt_f16_f32_e32 v7, v12
2326 ; CI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
2327 ; CI-NEXT:    v_or_b32_e32 v13, v1, v0
2328 ; CI-NEXT:    v_lshlrev_b32_e32 v0, 16, v6
2329 ; CI-NEXT:    v_or_b32_e32 v12, v7, v0
2330 ; CI-NEXT:    v_cvt_f16_f32_e32 v0, v11
2331 ; CI-NEXT:    v_cvt_f16_f32_e32 v1, v10
2332 ; CI-NEXT:    v_cvt_f16_f32_e32 v6, v9
2333 ; CI-NEXT:    v_cvt_f16_f32_e32 v7, v8
2334 ; CI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
2335 ; CI-NEXT:    v_or_b32_e32 v11, v1, v0
2336 ; CI-NEXT:    v_lshlrev_b32_e32 v0, 16, v6
2337 ; CI-NEXT:    v_or_b32_e32 v10, v7, v0
2338 ; CI-NEXT:    s_mov_b32 s7, 0xf000
2339 ; CI-NEXT:    s_mov_b32 s6, -1
2340 ; CI-NEXT:    buffer_store_dwordx4 v[10:13], off, s[4:7], 0
2341 ; CI-NEXT:    buffer_store_dwordx4 v[2:5], off, s[4:7], 0
2342 ; CI-NEXT:    s_waitcnt vmcnt(0)
2343 ; CI-NEXT:    s_setpc_b64 s[30:31]
2345 ; GFX89-LABEL: void_func_v16f16:
2346 ; GFX89:       ; %bb.0:
2347 ; GFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2348 ; GFX89-NEXT:    s_mov_b32 s7, 0xf000
2349 ; GFX89-NEXT:    s_mov_b32 s6, -1
2350 ; GFX89-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
2351 ; GFX89-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
2352 ; GFX89-NEXT:    s_waitcnt vmcnt(0)
2353 ; GFX89-NEXT:    s_setpc_b64 s[30:31]
2355 ; GFX11-LABEL: void_func_v16f16:
2356 ; GFX11:       ; %bb.0:
2357 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2358 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
2359 ; GFX11-NEXT:    s_mov_b32 s2, -1
2360 ; GFX11-NEXT:    s_clause 0x1
2361 ; GFX11-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0
2362 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0
2363 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
2364   store <16 x half> %arg0, ptr addrspace(1) undef
2365   ret void
2368 ; Make sure there is no alignment requirement for passed vgprs.
2369 define void @void_func_i32_i64_i32(i32 %arg0, i64 %arg1, i32 %arg2) #0 {
2370 ; CIGFX89-LABEL: void_func_i32_i64_i32:
2371 ; CIGFX89:       ; %bb.0:
2372 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2373 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
2374 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
2375 ; CIGFX89-NEXT:    buffer_store_dword v0, off, s[4:7], 0
2376 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
2377 ; CIGFX89-NEXT:    buffer_store_dwordx2 v[1:2], off, s[4:7], 0
2378 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
2379 ; CIGFX89-NEXT:    buffer_store_dword v3, off, s[4:7], 0
2380 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
2381 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
2383 ; GFX11-LABEL: void_func_i32_i64_i32:
2384 ; GFX11:       ; %bb.0:
2385 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2386 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
2387 ; GFX11-NEXT:    s_mov_b32 s2, -1
2388 ; GFX11-NEXT:    buffer_store_b32 v0, off, s[0:3], 0 dlc
2389 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2390 ; GFX11-NEXT:    buffer_store_b64 v[1:2], off, s[0:3], 0 dlc
2391 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2392 ; GFX11-NEXT:    buffer_store_b32 v3, off, s[0:3], 0 dlc
2393 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2394 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
2395   store volatile i32 %arg0, ptr addrspace(1) undef
2396   store volatile i64 %arg1, ptr addrspace(1) undef
2397   store volatile i32 %arg2, ptr addrspace(1) undef
2398   ret void
2401 define void @void_func_struct_i32({ i32 } %arg0) #0 {
2402 ; CIGFX89-LABEL: void_func_struct_i32:
2403 ; CIGFX89:       ; %bb.0:
2404 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2405 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
2406 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
2407 ; CIGFX89-NEXT:    buffer_store_dword v0, off, s[4:7], 0
2408 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
2409 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
2411 ; GFX11-LABEL: void_func_struct_i32:
2412 ; GFX11:       ; %bb.0:
2413 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2414 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
2415 ; GFX11-NEXT:    s_mov_b32 s2, -1
2416 ; GFX11-NEXT:    buffer_store_b32 v0, off, s[0:3], 0
2417 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
2418   store { i32 } %arg0, ptr addrspace(1) undef
2419   ret void
2422 define void @void_func_struct_i8_i32({ i8, i32 } %arg0) #0 {
2423 ; CIGFX89-LABEL: void_func_struct_i8_i32:
2424 ; CIGFX89:       ; %bb.0:
2425 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2426 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
2427 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
2428 ; CIGFX89-NEXT:    buffer_store_dword v1, off, s[4:7], 0
2429 ; CIGFX89-NEXT:    buffer_store_byte v0, off, s[4:7], 0
2430 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
2431 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
2433 ; GFX11-LABEL: void_func_struct_i8_i32:
2434 ; GFX11:       ; %bb.0:
2435 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2436 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
2437 ; GFX11-NEXT:    s_mov_b32 s2, -1
2438 ; GFX11-NEXT:    s_clause 0x1
2439 ; GFX11-NEXT:    buffer_store_b32 v1, off, s[0:3], 0
2440 ; GFX11-NEXT:    buffer_store_b8 v0, off, s[0:3], 0
2441 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
2442   store { i8, i32 } %arg0, ptr addrspace(1) undef
2443   ret void
2446 define void @void_func_byval_struct_i8_i32(ptr addrspace(5) byval({ i8, i32 }) %arg0) #0 {
2447 ; CIGFX89-LABEL: void_func_byval_struct_i8_i32:
2448 ; CIGFX89:       ; %bb.0:
2449 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2450 ; CIGFX89-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:4
2451 ; CIGFX89-NEXT:    buffer_load_ubyte v1, off, s[0:3], s32
2452 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
2453 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
2454 ; CIGFX89-NEXT:    s_waitcnt vmcnt(1)
2455 ; CIGFX89-NEXT:    buffer_store_dword v0, off, s[4:7], 0
2456 ; CIGFX89-NEXT:    s_waitcnt vmcnt(1)
2457 ; CIGFX89-NEXT:    buffer_store_byte v1, off, s[4:7], 0
2458 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
2459 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
2461 ; GFX11-LABEL: void_func_byval_struct_i8_i32:
2462 ; GFX11:       ; %bb.0:
2463 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2464 ; GFX11-NEXT:    s_clause 0x1
2465 ; GFX11-NEXT:    scratch_load_b32 v0, off, s32 offset:4
2466 ; GFX11-NEXT:    scratch_load_u8 v1, off, s32
2467 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
2468 ; GFX11-NEXT:    s_mov_b32 s2, -1
2469 ; GFX11-NEXT:    s_waitcnt vmcnt(1)
2470 ; GFX11-NEXT:    buffer_store_b32 v0, off, s[0:3], 0
2471 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
2472 ; GFX11-NEXT:    buffer_store_b8 v1, off, s[0:3], 0
2473 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
2474   %arg0.load = load { i8, i32 }, ptr addrspace(5) %arg0
2475   store { i8, i32 } %arg0.load, ptr addrspace(1) undef
2476   ret void
2479 define void @void_func_byval_struct_i8_i32_x2(ptr addrspace(5) byval({ i8, i32 }) %arg0, ptr addrspace(5) byval({ i8, i32 }) %arg1, i32 %arg2) #0 {
2480 ; CI-LABEL: void_func_byval_struct_i8_i32_x2:
2481 ; CI:       ; %bb.0:
2482 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2483 ; CI-NEXT:    buffer_load_ubyte v1, off, s[0:3], s32 glc
2484 ; CI-NEXT:    s_waitcnt vmcnt(0)
2485 ; CI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:4 glc
2486 ; CI-NEXT:    s_waitcnt vmcnt(0)
2487 ; CI-NEXT:    buffer_load_ubyte v3, off, s[0:3], s32 offset:8 glc
2488 ; CI-NEXT:    s_waitcnt vmcnt(0)
2489 ; CI-NEXT:    buffer_load_dword v4, off, s[0:3], s32 offset:12 glc
2490 ; CI-NEXT:    s_waitcnt vmcnt(0)
2491 ; CI-NEXT:    s_mov_b32 s7, 0xf000
2492 ; CI-NEXT:    s_mov_b32 s6, -1
2493 ; CI-NEXT:    s_mov_b32 m0, -1
2494 ; CI-NEXT:    buffer_store_dword v2, off, s[4:7], 0
2495 ; CI-NEXT:    s_waitcnt vmcnt(0)
2496 ; CI-NEXT:    buffer_store_byte v1, off, s[4:7], 0
2497 ; CI-NEXT:    s_waitcnt vmcnt(0)
2498 ; CI-NEXT:    buffer_store_dword v4, off, s[4:7], 0
2499 ; CI-NEXT:    s_waitcnt vmcnt(0)
2500 ; CI-NEXT:    buffer_store_byte v3, off, s[4:7], 0
2501 ; CI-NEXT:    s_waitcnt vmcnt(0)
2502 ; CI-NEXT:    ds_write_b32 v0, v0
2503 ; CI-NEXT:    s_waitcnt lgkmcnt(0)
2504 ; CI-NEXT:    s_setpc_b64 s[30:31]
2506 ; VI-LABEL: void_func_byval_struct_i8_i32_x2:
2507 ; VI:       ; %bb.0:
2508 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2509 ; VI-NEXT:    buffer_load_ubyte v1, off, s[0:3], s32 glc
2510 ; VI-NEXT:    s_waitcnt vmcnt(0)
2511 ; VI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:4 glc
2512 ; VI-NEXT:    s_waitcnt vmcnt(0)
2513 ; VI-NEXT:    buffer_load_ubyte v3, off, s[0:3], s32 offset:8 glc
2514 ; VI-NEXT:    s_waitcnt vmcnt(0)
2515 ; VI-NEXT:    buffer_load_dword v4, off, s[0:3], s32 offset:12 glc
2516 ; VI-NEXT:    s_waitcnt vmcnt(0)
2517 ; VI-NEXT:    s_mov_b32 s7, 0xf000
2518 ; VI-NEXT:    s_mov_b32 s6, -1
2519 ; VI-NEXT:    s_mov_b32 m0, -1
2520 ; VI-NEXT:    buffer_store_dword v2, off, s[4:7], 0
2521 ; VI-NEXT:    s_waitcnt vmcnt(0)
2522 ; VI-NEXT:    buffer_store_byte v1, off, s[4:7], 0
2523 ; VI-NEXT:    s_waitcnt vmcnt(0)
2524 ; VI-NEXT:    buffer_store_dword v4, off, s[4:7], 0
2525 ; VI-NEXT:    s_waitcnt vmcnt(0)
2526 ; VI-NEXT:    buffer_store_byte v3, off, s[4:7], 0
2527 ; VI-NEXT:    s_waitcnt vmcnt(0)
2528 ; VI-NEXT:    ds_write_b32 v0, v0
2529 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
2530 ; VI-NEXT:    s_setpc_b64 s[30:31]
2532 ; GFX9-LABEL: void_func_byval_struct_i8_i32_x2:
2533 ; GFX9:       ; %bb.0:
2534 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2535 ; GFX9-NEXT:    buffer_load_ubyte v1, off, s[0:3], s32 glc
2536 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2537 ; GFX9-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:4 glc
2538 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2539 ; GFX9-NEXT:    buffer_load_ubyte v3, off, s[0:3], s32 offset:8 glc
2540 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2541 ; GFX9-NEXT:    buffer_load_dword v4, off, s[0:3], s32 offset:12 glc
2542 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2543 ; GFX9-NEXT:    s_mov_b32 s7, 0xf000
2544 ; GFX9-NEXT:    s_mov_b32 s6, -1
2545 ; GFX9-NEXT:    buffer_store_dword v2, off, s[4:7], 0
2546 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2547 ; GFX9-NEXT:    buffer_store_byte v1, off, s[4:7], 0
2548 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2549 ; GFX9-NEXT:    buffer_store_dword v4, off, s[4:7], 0
2550 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2551 ; GFX9-NEXT:    buffer_store_byte v3, off, s[4:7], 0
2552 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2553 ; GFX9-NEXT:    ds_write_b32 v0, v0
2554 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
2555 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
2557 ; GFX11-LABEL: void_func_byval_struct_i8_i32_x2:
2558 ; GFX11:       ; %bb.0:
2559 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2560 ; GFX11-NEXT:    scratch_load_u8 v1, off, s32 glc dlc
2561 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
2562 ; GFX11-NEXT:    scratch_load_b32 v2, off, s32 offset:4 glc dlc
2563 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
2564 ; GFX11-NEXT:    scratch_load_u8 v3, off, s32 offset:8 glc dlc
2565 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
2566 ; GFX11-NEXT:    scratch_load_b32 v4, off, s32 offset:12 glc dlc
2567 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
2568 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
2569 ; GFX11-NEXT:    s_mov_b32 s2, -1
2570 ; GFX11-NEXT:    buffer_store_b32 v2, off, s[0:3], 0 dlc
2571 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2572 ; GFX11-NEXT:    buffer_store_b8 v1, off, s[0:3], 0 dlc
2573 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2574 ; GFX11-NEXT:    buffer_store_b32 v4, off, s[0:3], 0 dlc
2575 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2576 ; GFX11-NEXT:    buffer_store_b8 v3, off, s[0:3], 0 dlc
2577 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2578 ; GFX11-NEXT:    ds_store_b32 v0, v0
2579 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
2580 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
2581   %arg0.load = load volatile { i8, i32 }, ptr addrspace(5) %arg0
2582   %arg1.load = load volatile { i8, i32 }, ptr addrspace(5) %arg1
2583   store volatile { i8, i32 } %arg0.load, ptr addrspace(1) undef
2584   store volatile { i8, i32 } %arg1.load, ptr addrspace(1) undef
2585   store volatile i32 %arg2, ptr addrspace(3) undef
2586   ret void
2589 define void @void_func_byval_i32_byval_i64(ptr addrspace(5) byval(i32) %arg0, ptr addrspace(5) byval(i64) %arg1) #0 {
2590 ; CIGFX89-LABEL: void_func_byval_i32_byval_i64:
2591 ; CIGFX89:       ; %bb.0:
2592 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2593 ; CIGFX89-NEXT:    buffer_load_dword v2, off, s[0:3], s32
2594 ; CIGFX89-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:8
2595 ; CIGFX89-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:12
2596 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
2597 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
2598 ; CIGFX89-NEXT:    s_waitcnt vmcnt(2)
2599 ; CIGFX89-NEXT:    buffer_store_dword v2, off, s[4:7], 0
2600 ; CIGFX89-NEXT:    s_waitcnt vmcnt(1)
2601 ; CIGFX89-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
2602 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
2603 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
2605 ; GFX11-LABEL: void_func_byval_i32_byval_i64:
2606 ; GFX11:       ; %bb.0:
2607 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2608 ; GFX11-NEXT:    s_clause 0x1
2609 ; GFX11-NEXT:    scratch_load_b32 v2, off, s32
2610 ; GFX11-NEXT:    scratch_load_b64 v[0:1], off, s32 offset:8
2611 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
2612 ; GFX11-NEXT:    s_mov_b32 s2, -1
2613 ; GFX11-NEXT:    s_waitcnt vmcnt(1)
2614 ; GFX11-NEXT:    buffer_store_b32 v2, off, s[0:3], 0
2615 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
2616 ; GFX11-NEXT:    buffer_store_b64 v[0:1], off, s[0:3], 0
2617 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
2618   %arg0.load = load i32, ptr addrspace(5) %arg0
2619   %arg1.load = load i64, ptr addrspace(5) %arg1
2620   store i32 %arg0.load, ptr addrspace(1) undef
2621   store i64 %arg1.load, ptr addrspace(1) undef
2622   ret void
2625 define void @void_func_v32i32_i32_i64(<32 x i32> %arg0, i32 %arg1, i64 %arg2) #0 {
2626 ; CI-LABEL: void_func_v32i32_i32_i64:
2627 ; CI:       ; %bb.0:
2628 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2629 ; CI-NEXT:    buffer_load_dword v31, off, s[0:3], s32
2630 ; CI-NEXT:    s_mov_b32 s7, 0xf000
2631 ; CI-NEXT:    s_mov_b32 s6, -1
2632 ; CI-NEXT:    s_waitcnt vmcnt(0)
2633 ; CI-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
2634 ; CI-NEXT:    s_waitcnt vmcnt(0)
2635 ; CI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
2636 ; CI-NEXT:    s_waitcnt vmcnt(0)
2637 ; CI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
2638 ; CI-NEXT:    s_waitcnt vmcnt(0)
2639 ; CI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
2640 ; CI-NEXT:    s_waitcnt vmcnt(0)
2641 ; CI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:12
2642 ; CI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:8
2643 ; CI-NEXT:    buffer_load_dword v20, off, s[0:3], s32 offset:4
2644 ; CI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
2645 ; CI-NEXT:    s_waitcnt vmcnt(0)
2646 ; CI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
2647 ; CI-NEXT:    s_waitcnt vmcnt(0)
2648 ; CI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
2649 ; CI-NEXT:    s_waitcnt vmcnt(0)
2650 ; CI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
2651 ; CI-NEXT:    s_waitcnt vmcnt(0)
2652 ; CI-NEXT:    buffer_store_dword v20, off, s[4:7], 0
2653 ; CI-NEXT:    s_waitcnt vmcnt(0)
2654 ; CI-NEXT:    buffer_store_dwordx2 v[16:17], off, s[4:7], 0
2655 ; CI-NEXT:    s_waitcnt vmcnt(0)
2656 ; CI-NEXT:    s_setpc_b64 s[30:31]
2658 ; VI-LABEL: void_func_v32i32_i32_i64:
2659 ; VI:       ; %bb.0:
2660 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2661 ; VI-NEXT:    buffer_load_dword v31, off, s[0:3], s32
2662 ; VI-NEXT:    s_mov_b32 s7, 0xf000
2663 ; VI-NEXT:    s_mov_b32 s6, -1
2664 ; VI-NEXT:    s_waitcnt vmcnt(0)
2665 ; VI-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
2666 ; VI-NEXT:    s_waitcnt vmcnt(0)
2667 ; VI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
2668 ; VI-NEXT:    s_waitcnt vmcnt(0)
2669 ; VI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
2670 ; VI-NEXT:    s_waitcnt vmcnt(0)
2671 ; VI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
2672 ; VI-NEXT:    s_waitcnt vmcnt(0)
2673 ; VI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:12
2674 ; VI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:8
2675 ; VI-NEXT:    buffer_load_dword v20, off, s[0:3], s32 offset:4
2676 ; VI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
2677 ; VI-NEXT:    s_waitcnt vmcnt(0)
2678 ; VI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
2679 ; VI-NEXT:    s_waitcnt vmcnt(0)
2680 ; VI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
2681 ; VI-NEXT:    s_waitcnt vmcnt(0)
2682 ; VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
2683 ; VI-NEXT:    s_waitcnt vmcnt(0)
2684 ; VI-NEXT:    buffer_store_dword v20, off, s[4:7], 0
2685 ; VI-NEXT:    s_waitcnt vmcnt(0)
2686 ; VI-NEXT:    buffer_store_dwordx2 v[16:17], off, s[4:7], 0
2687 ; VI-NEXT:    s_waitcnt vmcnt(0)
2688 ; VI-NEXT:    s_setpc_b64 s[30:31]
2690 ; GFX9-LABEL: void_func_v32i32_i32_i64:
2691 ; GFX9:       ; %bb.0:
2692 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2693 ; GFX9-NEXT:    buffer_load_dword v31, off, s[0:3], s32
2694 ; GFX9-NEXT:    s_mov_b32 s7, 0xf000
2695 ; GFX9-NEXT:    s_mov_b32 s6, -1
2696 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2697 ; GFX9-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
2698 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2699 ; GFX9-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
2700 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2701 ; GFX9-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
2702 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2703 ; GFX9-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
2704 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2705 ; GFX9-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:12
2706 ; GFX9-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:8
2707 ; GFX9-NEXT:    buffer_load_dword v20, off, s[0:3], s32 offset:4
2708 ; GFX9-NEXT:    s_nop 0
2709 ; GFX9-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
2710 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2711 ; GFX9-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
2712 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2713 ; GFX9-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
2714 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2715 ; GFX9-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
2716 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2717 ; GFX9-NEXT:    buffer_store_dword v20, off, s[4:7], 0
2718 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2719 ; GFX9-NEXT:    buffer_store_dwordx2 v[16:17], off, s[4:7], 0
2720 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2721 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
2723 ; GFX11-LABEL: void_func_v32i32_i32_i64:
2724 ; GFX11:       ; %bb.0:
2725 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2726 ; GFX11-NEXT:    s_clause 0x3
2727 ; GFX11-NEXT:    scratch_load_b32 v31, off, s32
2728 ; GFX11-NEXT:    scratch_load_b32 v33, off, s32 offset:12
2729 ; GFX11-NEXT:    scratch_load_b32 v34, off, s32 offset:4
2730 ; GFX11-NEXT:    scratch_load_b32 v32, off, s32 offset:8
2731 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
2732 ; GFX11-NEXT:    s_mov_b32 s2, -1
2733 ; GFX11-NEXT:    s_waitcnt vmcnt(3)
2734 ; GFX11-NEXT:    buffer_store_b128 v[28:31], off, s[0:3], 0 dlc
2735 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2736 ; GFX11-NEXT:    buffer_store_b128 v[24:27], off, s[0:3], 0 dlc
2737 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2738 ; GFX11-NEXT:    buffer_store_b128 v[20:23], off, s[0:3], 0 dlc
2739 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2740 ; GFX11-NEXT:    buffer_store_b128 v[16:19], off, s[0:3], 0 dlc
2741 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2742 ; GFX11-NEXT:    buffer_store_b128 v[12:15], off, s[0:3], 0 dlc
2743 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2744 ; GFX11-NEXT:    buffer_store_b128 v[8:11], off, s[0:3], 0 dlc
2745 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2746 ; GFX11-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0 dlc
2747 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2748 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0 dlc
2749 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2750 ; GFX11-NEXT:    s_waitcnt vmcnt(1)
2751 ; GFX11-NEXT:    buffer_store_b32 v34, off, s[0:3], 0 dlc
2752 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2753 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
2754 ; GFX11-NEXT:    buffer_store_b64 v[32:33], off, s[0:3], 0 dlc
2755 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2756 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
2757   store volatile <32 x i32> %arg0, ptr addrspace(1) undef
2758   store volatile i32 %arg1, ptr addrspace(1) undef
2759   store volatile i64 %arg2, ptr addrspace(1) undef
2760   ret void
2763 ; FIXME: Different ext load types on CI vs. VI
2764 define void @void_func_v32i32_i1_i8_i16(<32 x i32> %arg0, i1 %arg1, i8 %arg2, i16 %arg3, half %arg4) #0 {
2765 ; CI-LABEL: void_func_v32i32_i1_i8_i16:
2766 ; CI:       ; %bb.0:
2767 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2768 ; CI-NEXT:    buffer_load_dword v31, off, s[0:3], s32
2769 ; CI-NEXT:    s_mov_b32 s7, 0xf000
2770 ; CI-NEXT:    s_mov_b32 s6, -1
2771 ; CI-NEXT:    s_waitcnt vmcnt(0)
2772 ; CI-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
2773 ; CI-NEXT:    s_waitcnt vmcnt(0)
2774 ; CI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
2775 ; CI-NEXT:    s_waitcnt vmcnt(0)
2776 ; CI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
2777 ; CI-NEXT:    s_waitcnt vmcnt(0)
2778 ; CI-NEXT:    buffer_load_dword v20, off, s[0:3], s32 offset:16
2779 ; CI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
2780 ; CI-NEXT:    s_waitcnt vmcnt(0)
2781 ; CI-NEXT:    buffer_load_ubyte v16, off, s[0:3], s32 offset:4
2782 ; CI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:8
2783 ; CI-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:12
2784 ; CI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
2785 ; CI-NEXT:    s_waitcnt vmcnt(0)
2786 ; CI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
2787 ; CI-NEXT:    s_waitcnt vmcnt(0)
2788 ; CI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
2789 ; CI-NEXT:    s_waitcnt vmcnt(0)
2790 ; CI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
2791 ; CI-NEXT:    s_waitcnt vmcnt(0)
2792 ; CI-NEXT:    v_cvt_f16_f32_e32 v19, v20
2793 ; CI-NEXT:    v_and_b32_e32 v0, 1, v16
2794 ; CI-NEXT:    buffer_store_byte v0, off, s[4:7], 0
2795 ; CI-NEXT:    s_waitcnt vmcnt(0)
2796 ; CI-NEXT:    buffer_store_byte v17, off, s[4:7], 0
2797 ; CI-NEXT:    s_waitcnt vmcnt(0)
2798 ; CI-NEXT:    buffer_store_short v18, off, s[4:7], 0
2799 ; CI-NEXT:    s_waitcnt vmcnt(0)
2800 ; CI-NEXT:    buffer_store_short v19, off, s[4:7], 0
2801 ; CI-NEXT:    s_waitcnt vmcnt(0)
2802 ; CI-NEXT:    s_setpc_b64 s[30:31]
2804 ; VI-LABEL: void_func_v32i32_i1_i8_i16:
2805 ; VI:       ; %bb.0:
2806 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2807 ; VI-NEXT:    buffer_load_dword v31, off, s[0:3], s32
2808 ; VI-NEXT:    s_mov_b32 s7, 0xf000
2809 ; VI-NEXT:    s_mov_b32 s6, -1
2810 ; VI-NEXT:    s_waitcnt vmcnt(0)
2811 ; VI-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
2812 ; VI-NEXT:    s_waitcnt vmcnt(0)
2813 ; VI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
2814 ; VI-NEXT:    s_waitcnt vmcnt(0)
2815 ; VI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
2816 ; VI-NEXT:    s_waitcnt vmcnt(0)
2817 ; VI-NEXT:    buffer_load_ubyte v20, off, s[0:3], s32 offset:4
2818 ; VI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
2819 ; VI-NEXT:    s_waitcnt vmcnt(0)
2820 ; VI-NEXT:    buffer_load_ushort v16, off, s[0:3], s32 offset:8
2821 ; VI-NEXT:    buffer_load_ushort v17, off, s[0:3], s32 offset:12
2822 ; VI-NEXT:    buffer_load_ushort v18, off, s[0:3], s32 offset:16
2823 ; VI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
2824 ; VI-NEXT:    s_waitcnt vmcnt(0)
2825 ; VI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
2826 ; VI-NEXT:    s_waitcnt vmcnt(0)
2827 ; VI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
2828 ; VI-NEXT:    s_waitcnt vmcnt(0)
2829 ; VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
2830 ; VI-NEXT:    s_waitcnt vmcnt(0)
2831 ; VI-NEXT:    v_and_b32_e32 v0, 1, v20
2832 ; VI-NEXT:    buffer_store_byte v0, off, s[4:7], 0
2833 ; VI-NEXT:    s_waitcnt vmcnt(0)
2834 ; VI-NEXT:    buffer_store_byte v16, off, s[4:7], 0
2835 ; VI-NEXT:    s_waitcnt vmcnt(0)
2836 ; VI-NEXT:    buffer_store_short v17, off, s[4:7], 0
2837 ; VI-NEXT:    s_waitcnt vmcnt(0)
2838 ; VI-NEXT:    buffer_store_short v18, off, s[4:7], 0
2839 ; VI-NEXT:    s_waitcnt vmcnt(0)
2840 ; VI-NEXT:    s_setpc_b64 s[30:31]
2842 ; GFX9-LABEL: void_func_v32i32_i1_i8_i16:
2843 ; GFX9:       ; %bb.0:
2844 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2845 ; GFX9-NEXT:    buffer_load_dword v31, off, s[0:3], s32
2846 ; GFX9-NEXT:    s_mov_b32 s7, 0xf000
2847 ; GFX9-NEXT:    s_mov_b32 s6, -1
2848 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2849 ; GFX9-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
2850 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2851 ; GFX9-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
2852 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2853 ; GFX9-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
2854 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2855 ; GFX9-NEXT:    buffer_load_ubyte v20, off, s[0:3], s32 offset:4
2856 ; GFX9-NEXT:    s_nop 0
2857 ; GFX9-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
2858 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2859 ; GFX9-NEXT:    buffer_load_ushort v16, off, s[0:3], s32 offset:8
2860 ; GFX9-NEXT:    buffer_load_ushort v17, off, s[0:3], s32 offset:12
2861 ; GFX9-NEXT:    buffer_load_ushort v18, off, s[0:3], s32 offset:16
2862 ; GFX9-NEXT:    s_nop 0
2863 ; GFX9-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
2864 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2865 ; GFX9-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
2866 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2867 ; GFX9-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
2868 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2869 ; GFX9-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
2870 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2871 ; GFX9-NEXT:    v_and_b32_e32 v0, 1, v20
2872 ; GFX9-NEXT:    buffer_store_byte v0, off, s[4:7], 0
2873 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2874 ; GFX9-NEXT:    buffer_store_byte v16, off, s[4:7], 0
2875 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2876 ; GFX9-NEXT:    buffer_store_short v17, off, s[4:7], 0
2877 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2878 ; GFX9-NEXT:    buffer_store_short v18, off, s[4:7], 0
2879 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2880 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
2882 ; GFX11-LABEL: void_func_v32i32_i1_i8_i16:
2883 ; GFX11:       ; %bb.0:
2884 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2885 ; GFX11-NEXT:    s_clause 0x4
2886 ; GFX11-NEXT:    scratch_load_b32 v31, off, s32
2887 ; GFX11-NEXT:    scratch_load_u8 v32, off, s32 offset:4
2888 ; GFX11-NEXT:    scratch_load_u16 v33, off, s32 offset:8
2889 ; GFX11-NEXT:    scratch_load_u16 v34, off, s32 offset:12
2890 ; GFX11-NEXT:    scratch_load_u16 v35, off, s32 offset:16
2891 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
2892 ; GFX11-NEXT:    s_mov_b32 s2, -1
2893 ; GFX11-NEXT:    s_waitcnt vmcnt(4)
2894 ; GFX11-NEXT:    buffer_store_b128 v[28:31], off, s[0:3], 0 dlc
2895 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2896 ; GFX11-NEXT:    buffer_store_b128 v[24:27], off, s[0:3], 0 dlc
2897 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2898 ; GFX11-NEXT:    buffer_store_b128 v[20:23], off, s[0:3], 0 dlc
2899 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2900 ; GFX11-NEXT:    buffer_store_b128 v[16:19], off, s[0:3], 0 dlc
2901 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2902 ; GFX11-NEXT:    s_waitcnt vmcnt(3)
2903 ; GFX11-NEXT:    v_and_b32_e32 v16, 1, v32
2904 ; GFX11-NEXT:    buffer_store_b128 v[12:15], off, s[0:3], 0 dlc
2905 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2906 ; GFX11-NEXT:    buffer_store_b128 v[8:11], off, s[0:3], 0 dlc
2907 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2908 ; GFX11-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0 dlc
2909 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2910 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0 dlc
2911 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2912 ; GFX11-NEXT:    buffer_store_b8 v16, off, s[0:3], 0 dlc
2913 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2914 ; GFX11-NEXT:    s_waitcnt vmcnt(2)
2915 ; GFX11-NEXT:    buffer_store_b8 v33, off, s[0:3], 0 dlc
2916 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2917 ; GFX11-NEXT:    s_waitcnt vmcnt(1)
2918 ; GFX11-NEXT:    buffer_store_b16 v34, off, s[0:3], 0 dlc
2919 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2920 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
2921 ; GFX11-NEXT:    buffer_store_b16 v35, off, s[0:3], 0 dlc
2922 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2923 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
2924   store volatile <32 x i32> %arg0, ptr addrspace(1) undef
2925   store volatile i1 %arg1, ptr addrspace(1) undef
2926   store volatile i8 %arg2, ptr addrspace(1) undef
2927   store volatile i16 %arg3, ptr addrspace(1) undef
2928   store volatile half %arg4, ptr addrspace(1) undef
2929   ret void
2932 define void @void_func_v32i32_v2i32_v2f32(<32 x i32> %arg0, <2 x i32> %arg1, <2 x float> %arg2) #0 {
2933 ; CI-LABEL: void_func_v32i32_v2i32_v2f32:
2934 ; CI:       ; %bb.0:
2935 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2936 ; CI-NEXT:    buffer_load_dword v31, off, s[0:3], s32
2937 ; CI-NEXT:    s_mov_b32 s7, 0xf000
2938 ; CI-NEXT:    s_mov_b32 s6, -1
2939 ; CI-NEXT:    s_waitcnt vmcnt(0)
2940 ; CI-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
2941 ; CI-NEXT:    s_waitcnt vmcnt(0)
2942 ; CI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
2943 ; CI-NEXT:    s_waitcnt vmcnt(0)
2944 ; CI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
2945 ; CI-NEXT:    s_waitcnt vmcnt(0)
2946 ; CI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
2947 ; CI-NEXT:    s_waitcnt vmcnt(0)
2948 ; CI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:8
2949 ; CI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:4
2950 ; CI-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:16
2951 ; CI-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:12
2952 ; CI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
2953 ; CI-NEXT:    s_waitcnt vmcnt(0)
2954 ; CI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
2955 ; CI-NEXT:    s_waitcnt vmcnt(0)
2956 ; CI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
2957 ; CI-NEXT:    s_waitcnt vmcnt(0)
2958 ; CI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
2959 ; CI-NEXT:    s_waitcnt vmcnt(0)
2960 ; CI-NEXT:    buffer_store_dwordx2 v[16:17], off, s[4:7], 0
2961 ; CI-NEXT:    s_waitcnt vmcnt(0)
2962 ; CI-NEXT:    buffer_store_dwordx2 v[18:19], off, s[4:7], 0
2963 ; CI-NEXT:    s_waitcnt vmcnt(0)
2964 ; CI-NEXT:    s_setpc_b64 s[30:31]
2966 ; VI-LABEL: void_func_v32i32_v2i32_v2f32:
2967 ; VI:       ; %bb.0:
2968 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2969 ; VI-NEXT:    buffer_load_dword v31, off, s[0:3], s32
2970 ; VI-NEXT:    s_mov_b32 s7, 0xf000
2971 ; VI-NEXT:    s_mov_b32 s6, -1
2972 ; VI-NEXT:    s_waitcnt vmcnt(0)
2973 ; VI-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
2974 ; VI-NEXT:    s_waitcnt vmcnt(0)
2975 ; VI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
2976 ; VI-NEXT:    s_waitcnt vmcnt(0)
2977 ; VI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
2978 ; VI-NEXT:    s_waitcnt vmcnt(0)
2979 ; VI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
2980 ; VI-NEXT:    s_waitcnt vmcnt(0)
2981 ; VI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:8
2982 ; VI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:4
2983 ; VI-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:16
2984 ; VI-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:12
2985 ; VI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
2986 ; VI-NEXT:    s_waitcnt vmcnt(0)
2987 ; VI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
2988 ; VI-NEXT:    s_waitcnt vmcnt(0)
2989 ; VI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
2990 ; VI-NEXT:    s_waitcnt vmcnt(0)
2991 ; VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
2992 ; VI-NEXT:    s_waitcnt vmcnt(0)
2993 ; VI-NEXT:    buffer_store_dwordx2 v[16:17], off, s[4:7], 0
2994 ; VI-NEXT:    s_waitcnt vmcnt(0)
2995 ; VI-NEXT:    buffer_store_dwordx2 v[18:19], off, s[4:7], 0
2996 ; VI-NEXT:    s_waitcnt vmcnt(0)
2997 ; VI-NEXT:    s_setpc_b64 s[30:31]
2999 ; GFX9-LABEL: void_func_v32i32_v2i32_v2f32:
3000 ; GFX9:       ; %bb.0:
3001 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3002 ; GFX9-NEXT:    buffer_load_dword v31, off, s[0:3], s32
3003 ; GFX9-NEXT:    s_mov_b32 s7, 0xf000
3004 ; GFX9-NEXT:    s_mov_b32 s6, -1
3005 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3006 ; GFX9-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
3007 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3008 ; GFX9-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
3009 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3010 ; GFX9-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
3011 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3012 ; GFX9-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3013 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3014 ; GFX9-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:8
3015 ; GFX9-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:4
3016 ; GFX9-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:16
3017 ; GFX9-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:12
3018 ; GFX9-NEXT:    s_nop 0
3019 ; GFX9-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3020 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3021 ; GFX9-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
3022 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3023 ; GFX9-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
3024 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3025 ; GFX9-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
3026 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3027 ; GFX9-NEXT:    buffer_store_dwordx2 v[16:17], off, s[4:7], 0
3028 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3029 ; GFX9-NEXT:    buffer_store_dwordx2 v[18:19], off, s[4:7], 0
3030 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3031 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
3033 ; GFX11-LABEL: void_func_v32i32_v2i32_v2f32:
3034 ; GFX11:       ; %bb.0:
3035 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3036 ; GFX11-NEXT:    s_clause 0x4
3037 ; GFX11-NEXT:    scratch_load_b32 v31, off, s32
3038 ; GFX11-NEXT:    scratch_load_b32 v33, off, s32 offset:8
3039 ; GFX11-NEXT:    scratch_load_b32 v32, off, s32 offset:4
3040 ; GFX11-NEXT:    scratch_load_b32 v35, off, s32 offset:16
3041 ; GFX11-NEXT:    scratch_load_b32 v34, off, s32 offset:12
3042 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
3043 ; GFX11-NEXT:    s_mov_b32 s2, -1
3044 ; GFX11-NEXT:    s_waitcnt vmcnt(4)
3045 ; GFX11-NEXT:    buffer_store_b128 v[28:31], off, s[0:3], 0 dlc
3046 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3047 ; GFX11-NEXT:    buffer_store_b128 v[24:27], off, s[0:3], 0 dlc
3048 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3049 ; GFX11-NEXT:    buffer_store_b128 v[20:23], off, s[0:3], 0 dlc
3050 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3051 ; GFX11-NEXT:    buffer_store_b128 v[16:19], off, s[0:3], 0 dlc
3052 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3053 ; GFX11-NEXT:    buffer_store_b128 v[12:15], off, s[0:3], 0 dlc
3054 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3055 ; GFX11-NEXT:    buffer_store_b128 v[8:11], off, s[0:3], 0 dlc
3056 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3057 ; GFX11-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0 dlc
3058 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3059 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0 dlc
3060 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3061 ; GFX11-NEXT:    s_waitcnt vmcnt(2)
3062 ; GFX11-NEXT:    buffer_store_b64 v[32:33], off, s[0:3], 0 dlc
3063 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3064 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
3065 ; GFX11-NEXT:    buffer_store_b64 v[34:35], off, s[0:3], 0 dlc
3066 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3067 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
3068   store volatile <32 x i32> %arg0, ptr addrspace(1) undef
3069   store volatile <2 x i32> %arg1, ptr addrspace(1) undef
3070   store volatile <2 x float> %arg2, ptr addrspace(1) undef
3071   ret void
3074 define void @void_func_v32i32_v2i16_v2f16(<32 x i32> %arg0, <2 x i16> %arg1, <2 x half> %arg2) #0 {
3075 ; CI-LABEL: void_func_v32i32_v2i16_v2f16:
3076 ; CI:       ; %bb.0:
3077 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3078 ; CI-NEXT:    buffer_load_dword v31, off, s[0:3], s32
3079 ; CI-NEXT:    s_mov_b32 s7, 0xf000
3080 ; CI-NEXT:    s_mov_b32 s6, -1
3081 ; CI-NEXT:    s_waitcnt vmcnt(0)
3082 ; CI-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
3083 ; CI-NEXT:    s_waitcnt vmcnt(0)
3084 ; CI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
3085 ; CI-NEXT:    s_waitcnt vmcnt(0)
3086 ; CI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
3087 ; CI-NEXT:    s_waitcnt vmcnt(0)
3088 ; CI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3089 ; CI-NEXT:    s_waitcnt vmcnt(0)
3090 ; CI-NEXT:    buffer_load_dword v20, off, s[0:3], s32 offset:12
3091 ; CI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:16
3092 ; CI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:8
3093 ; CI-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:4
3094 ; CI-NEXT:    s_waitcnt vmcnt(2)
3095 ; CI-NEXT:    v_cvt_f16_f32_e32 v16, v16
3096 ; CI-NEXT:    v_cvt_f16_f32_e32 v19, v20
3097 ; CI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3098 ; CI-NEXT:    s_waitcnt vmcnt(0)
3099 ; CI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
3100 ; CI-NEXT:    s_waitcnt vmcnt(0)
3101 ; CI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
3102 ; CI-NEXT:    s_waitcnt vmcnt(0)
3103 ; CI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
3104 ; CI-NEXT:    s_waitcnt vmcnt(0)
3105 ; CI-NEXT:    buffer_store_short v17, off, s[4:7], 0
3106 ; CI-NEXT:    s_waitcnt vmcnt(0)
3107 ; CI-NEXT:    buffer_store_short v18, off, s[4:7], 0
3108 ; CI-NEXT:    s_waitcnt vmcnt(0)
3109 ; CI-NEXT:    buffer_store_short v16, off, s[4:7], 0
3110 ; CI-NEXT:    s_waitcnt vmcnt(0)
3111 ; CI-NEXT:    buffer_store_short v19, off, s[4:7], 0
3112 ; CI-NEXT:    s_waitcnt vmcnt(0)
3113 ; CI-NEXT:    s_setpc_b64 s[30:31]
3115 ; VI-LABEL: void_func_v32i32_v2i16_v2f16:
3116 ; VI:       ; %bb.0:
3117 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3118 ; VI-NEXT:    buffer_load_dword v31, off, s[0:3], s32
3119 ; VI-NEXT:    s_mov_b32 s7, 0xf000
3120 ; VI-NEXT:    s_mov_b32 s6, -1
3121 ; VI-NEXT:    s_waitcnt vmcnt(0)
3122 ; VI-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
3123 ; VI-NEXT:    s_waitcnt vmcnt(0)
3124 ; VI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
3125 ; VI-NEXT:    s_waitcnt vmcnt(0)
3126 ; VI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
3127 ; VI-NEXT:    s_waitcnt vmcnt(0)
3128 ; VI-NEXT:    buffer_load_dword v20, off, s[0:3], s32 offset:4
3129 ; VI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3130 ; VI-NEXT:    s_waitcnt vmcnt(0)
3131 ; VI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:8
3132 ; VI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3133 ; VI-NEXT:    s_waitcnt vmcnt(0)
3134 ; VI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
3135 ; VI-NEXT:    s_waitcnt vmcnt(0)
3136 ; VI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
3137 ; VI-NEXT:    s_waitcnt vmcnt(0)
3138 ; VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
3139 ; VI-NEXT:    s_waitcnt vmcnt(0)
3140 ; VI-NEXT:    buffer_store_dword v20, off, s[4:7], 0
3141 ; VI-NEXT:    s_waitcnt vmcnt(0)
3142 ; VI-NEXT:    buffer_store_dword v16, off, s[4:7], 0
3143 ; VI-NEXT:    s_waitcnt vmcnt(0)
3144 ; VI-NEXT:    s_setpc_b64 s[30:31]
3146 ; GFX9-LABEL: void_func_v32i32_v2i16_v2f16:
3147 ; GFX9:       ; %bb.0:
3148 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3149 ; GFX9-NEXT:    buffer_load_dword v31, off, s[0:3], s32
3150 ; GFX9-NEXT:    s_mov_b32 s7, 0xf000
3151 ; GFX9-NEXT:    s_mov_b32 s6, -1
3152 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3153 ; GFX9-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
3154 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3155 ; GFX9-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
3156 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3157 ; GFX9-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
3158 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3159 ; GFX9-NEXT:    buffer_load_dword v20, off, s[0:3], s32 offset:4
3160 ; GFX9-NEXT:    s_nop 0
3161 ; GFX9-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3162 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3163 ; GFX9-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:8
3164 ; GFX9-NEXT:    s_nop 0
3165 ; GFX9-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3166 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3167 ; GFX9-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
3168 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3169 ; GFX9-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
3170 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3171 ; GFX9-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
3172 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3173 ; GFX9-NEXT:    buffer_store_dword v20, off, s[4:7], 0
3174 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3175 ; GFX9-NEXT:    buffer_store_dword v16, off, s[4:7], 0
3176 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3177 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
3179 ; GFX11-LABEL: void_func_v32i32_v2i16_v2f16:
3180 ; GFX11:       ; %bb.0:
3181 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3182 ; GFX11-NEXT:    s_clause 0x2
3183 ; GFX11-NEXT:    scratch_load_b32 v31, off, s32
3184 ; GFX11-NEXT:    scratch_load_b32 v32, off, s32 offset:4
3185 ; GFX11-NEXT:    scratch_load_b32 v33, off, s32 offset:8
3186 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
3187 ; GFX11-NEXT:    s_mov_b32 s2, -1
3188 ; GFX11-NEXT:    s_waitcnt vmcnt(2)
3189 ; GFX11-NEXT:    buffer_store_b128 v[28:31], off, s[0:3], 0 dlc
3190 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3191 ; GFX11-NEXT:    buffer_store_b128 v[24:27], off, s[0:3], 0 dlc
3192 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3193 ; GFX11-NEXT:    buffer_store_b128 v[20:23], off, s[0:3], 0 dlc
3194 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3195 ; GFX11-NEXT:    buffer_store_b128 v[16:19], off, s[0:3], 0 dlc
3196 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3197 ; GFX11-NEXT:    buffer_store_b128 v[12:15], off, s[0:3], 0 dlc
3198 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3199 ; GFX11-NEXT:    buffer_store_b128 v[8:11], off, s[0:3], 0 dlc
3200 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3201 ; GFX11-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0 dlc
3202 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3203 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0 dlc
3204 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3205 ; GFX11-NEXT:    s_waitcnt vmcnt(1)
3206 ; GFX11-NEXT:    buffer_store_b32 v32, off, s[0:3], 0 dlc
3207 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3208 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
3209 ; GFX11-NEXT:    buffer_store_b32 v33, off, s[0:3], 0 dlc
3210 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3211 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
3212   store volatile <32 x i32> %arg0, ptr addrspace(1) undef
3213   store volatile <2 x i16> %arg1, ptr addrspace(1) undef
3214   store volatile <2 x half> %arg2, ptr addrspace(1) undef
3215   ret void
3218 define void @void_func_v32i32_v2i64_v2f64(<32 x i32> %arg0, <2 x i64> %arg1, <2 x double> %arg2) #0 {
3219 ; CI-LABEL: void_func_v32i32_v2i64_v2f64:
3220 ; CI:       ; %bb.0:
3221 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3222 ; CI-NEXT:    buffer_load_dword v31, off, s[0:3], s32
3223 ; CI-NEXT:    s_mov_b32 s7, 0xf000
3224 ; CI-NEXT:    s_mov_b32 s6, -1
3225 ; CI-NEXT:    s_waitcnt vmcnt(0)
3226 ; CI-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
3227 ; CI-NEXT:    s_waitcnt vmcnt(0)
3228 ; CI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
3229 ; CI-NEXT:    s_waitcnt vmcnt(0)
3230 ; CI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
3231 ; CI-NEXT:    s_waitcnt vmcnt(0)
3232 ; CI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3233 ; CI-NEXT:    s_waitcnt vmcnt(0)
3234 ; CI-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:16
3235 ; CI-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:12
3236 ; CI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:8
3237 ; CI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:4
3238 ; CI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3239 ; CI-NEXT:    s_waitcnt vmcnt(0)
3240 ; CI-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:32
3241 ; CI-NEXT:    buffer_load_dword v14, off, s[0:3], s32 offset:28
3242 ; CI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:24
3243 ; CI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:20
3244 ; CI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
3245 ; CI-NEXT:    s_waitcnt vmcnt(0)
3246 ; CI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
3247 ; CI-NEXT:    s_waitcnt vmcnt(0)
3248 ; CI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
3249 ; CI-NEXT:    s_waitcnt vmcnt(0)
3250 ; CI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3251 ; CI-NEXT:    s_waitcnt vmcnt(0)
3252 ; CI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3253 ; CI-NEXT:    s_waitcnt vmcnt(0)
3254 ; CI-NEXT:    s_setpc_b64 s[30:31]
3256 ; VI-LABEL: void_func_v32i32_v2i64_v2f64:
3257 ; VI:       ; %bb.0:
3258 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3259 ; VI-NEXT:    buffer_load_dword v31, off, s[0:3], s32
3260 ; VI-NEXT:    s_mov_b32 s7, 0xf000
3261 ; VI-NEXT:    s_mov_b32 s6, -1
3262 ; VI-NEXT:    s_waitcnt vmcnt(0)
3263 ; VI-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
3264 ; VI-NEXT:    s_waitcnt vmcnt(0)
3265 ; VI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
3266 ; VI-NEXT:    s_waitcnt vmcnt(0)
3267 ; VI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
3268 ; VI-NEXT:    s_waitcnt vmcnt(0)
3269 ; VI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3270 ; VI-NEXT:    s_waitcnt vmcnt(0)
3271 ; VI-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:16
3272 ; VI-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:12
3273 ; VI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:8
3274 ; VI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:4
3275 ; VI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3276 ; VI-NEXT:    s_waitcnt vmcnt(0)
3277 ; VI-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:32
3278 ; VI-NEXT:    buffer_load_dword v14, off, s[0:3], s32 offset:28
3279 ; VI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:24
3280 ; VI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:20
3281 ; VI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
3282 ; VI-NEXT:    s_waitcnt vmcnt(0)
3283 ; VI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
3284 ; VI-NEXT:    s_waitcnt vmcnt(0)
3285 ; VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
3286 ; VI-NEXT:    s_waitcnt vmcnt(0)
3287 ; VI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3288 ; VI-NEXT:    s_waitcnt vmcnt(0)
3289 ; VI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3290 ; VI-NEXT:    s_waitcnt vmcnt(0)
3291 ; VI-NEXT:    s_setpc_b64 s[30:31]
3293 ; GFX9-LABEL: void_func_v32i32_v2i64_v2f64:
3294 ; GFX9:       ; %bb.0:
3295 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3296 ; GFX9-NEXT:    buffer_load_dword v31, off, s[0:3], s32
3297 ; GFX9-NEXT:    s_mov_b32 s7, 0xf000
3298 ; GFX9-NEXT:    s_mov_b32 s6, -1
3299 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3300 ; GFX9-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
3301 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3302 ; GFX9-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
3303 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3304 ; GFX9-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
3305 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3306 ; GFX9-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3307 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3308 ; GFX9-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:16
3309 ; GFX9-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:12
3310 ; GFX9-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:8
3311 ; GFX9-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:4
3312 ; GFX9-NEXT:    s_nop 0
3313 ; GFX9-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3314 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3315 ; GFX9-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:32
3316 ; GFX9-NEXT:    buffer_load_dword v14, off, s[0:3], s32 offset:28
3317 ; GFX9-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:24
3318 ; GFX9-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:20
3319 ; GFX9-NEXT:    s_nop 0
3320 ; GFX9-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
3321 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3322 ; GFX9-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
3323 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3324 ; GFX9-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
3325 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3326 ; GFX9-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3327 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3328 ; GFX9-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3329 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3330 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
3332 ; GFX11-LABEL: void_func_v32i32_v2i64_v2f64:
3333 ; GFX11:       ; %bb.0:
3334 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3335 ; GFX11-NEXT:    s_clause 0x8
3336 ; GFX11-NEXT:    scratch_load_b32 v31, off, s32
3337 ; GFX11-NEXT:    scratch_load_b32 v35, off, s32 offset:32
3338 ; GFX11-NEXT:    scratch_load_b32 v34, off, s32 offset:28
3339 ; GFX11-NEXT:    scratch_load_b32 v33, off, s32 offset:24
3340 ; GFX11-NEXT:    scratch_load_b32 v39, off, s32 offset:16
3341 ; GFX11-NEXT:    scratch_load_b32 v38, off, s32 offset:12
3342 ; GFX11-NEXT:    scratch_load_b32 v37, off, s32 offset:8
3343 ; GFX11-NEXT:    scratch_load_b32 v36, off, s32 offset:4
3344 ; GFX11-NEXT:    scratch_load_b32 v32, off, s32 offset:20
3345 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
3346 ; GFX11-NEXT:    s_mov_b32 s2, -1
3347 ; GFX11-NEXT:    s_waitcnt vmcnt(8)
3348 ; GFX11-NEXT:    buffer_store_b128 v[28:31], off, s[0:3], 0 dlc
3349 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3350 ; GFX11-NEXT:    buffer_store_b128 v[24:27], off, s[0:3], 0 dlc
3351 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3352 ; GFX11-NEXT:    buffer_store_b128 v[20:23], off, s[0:3], 0 dlc
3353 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3354 ; GFX11-NEXT:    buffer_store_b128 v[16:19], off, s[0:3], 0 dlc
3355 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3356 ; GFX11-NEXT:    buffer_store_b128 v[12:15], off, s[0:3], 0 dlc
3357 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3358 ; GFX11-NEXT:    buffer_store_b128 v[8:11], off, s[0:3], 0 dlc
3359 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3360 ; GFX11-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0 dlc
3361 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3362 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0 dlc
3363 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3364 ; GFX11-NEXT:    s_waitcnt vmcnt(1)
3365 ; GFX11-NEXT:    buffer_store_b128 v[36:39], off, s[0:3], 0 dlc
3366 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3367 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
3368 ; GFX11-NEXT:    buffer_store_b128 v[32:35], off, s[0:3], 0 dlc
3369 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3370 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
3371   store volatile <32 x i32> %arg0, ptr addrspace(1) undef
3372   store volatile <2 x i64> %arg1, ptr addrspace(1) undef
3373   store volatile <2 x double> %arg2, ptr addrspace(1) undef
3374   ret void
3377 define void @void_func_v32i32_v4i32_v4f32(<32 x i32> %arg0, <4 x i32> %arg1, <4 x float> %arg2) #0 {
3378 ; CI-LABEL: void_func_v32i32_v4i32_v4f32:
3379 ; CI:       ; %bb.0:
3380 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3381 ; CI-NEXT:    buffer_load_dword v31, off, s[0:3], s32
3382 ; CI-NEXT:    s_mov_b32 s7, 0xf000
3383 ; CI-NEXT:    s_mov_b32 s6, -1
3384 ; CI-NEXT:    s_waitcnt vmcnt(0)
3385 ; CI-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
3386 ; CI-NEXT:    s_waitcnt vmcnt(0)
3387 ; CI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
3388 ; CI-NEXT:    s_waitcnt vmcnt(0)
3389 ; CI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
3390 ; CI-NEXT:    s_waitcnt vmcnt(0)
3391 ; CI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3392 ; CI-NEXT:    s_waitcnt vmcnt(0)
3393 ; CI-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:16
3394 ; CI-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:12
3395 ; CI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:8
3396 ; CI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:4
3397 ; CI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3398 ; CI-NEXT:    s_waitcnt vmcnt(0)
3399 ; CI-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:32
3400 ; CI-NEXT:    buffer_load_dword v14, off, s[0:3], s32 offset:28
3401 ; CI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:24
3402 ; CI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:20
3403 ; CI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
3404 ; CI-NEXT:    s_waitcnt vmcnt(0)
3405 ; CI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
3406 ; CI-NEXT:    s_waitcnt vmcnt(0)
3407 ; CI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
3408 ; CI-NEXT:    s_waitcnt vmcnt(0)
3409 ; CI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3410 ; CI-NEXT:    s_waitcnt vmcnt(0)
3411 ; CI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3412 ; CI-NEXT:    s_waitcnt vmcnt(0)
3413 ; CI-NEXT:    s_setpc_b64 s[30:31]
3415 ; VI-LABEL: void_func_v32i32_v4i32_v4f32:
3416 ; VI:       ; %bb.0:
3417 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3418 ; VI-NEXT:    buffer_load_dword v31, off, s[0:3], s32
3419 ; VI-NEXT:    s_mov_b32 s7, 0xf000
3420 ; VI-NEXT:    s_mov_b32 s6, -1
3421 ; VI-NEXT:    s_waitcnt vmcnt(0)
3422 ; VI-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
3423 ; VI-NEXT:    s_waitcnt vmcnt(0)
3424 ; VI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
3425 ; VI-NEXT:    s_waitcnt vmcnt(0)
3426 ; VI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
3427 ; VI-NEXT:    s_waitcnt vmcnt(0)
3428 ; VI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3429 ; VI-NEXT:    s_waitcnt vmcnt(0)
3430 ; VI-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:16
3431 ; VI-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:12
3432 ; VI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:8
3433 ; VI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:4
3434 ; VI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3435 ; VI-NEXT:    s_waitcnt vmcnt(0)
3436 ; VI-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:32
3437 ; VI-NEXT:    buffer_load_dword v14, off, s[0:3], s32 offset:28
3438 ; VI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:24
3439 ; VI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:20
3440 ; VI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
3441 ; VI-NEXT:    s_waitcnt vmcnt(0)
3442 ; VI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
3443 ; VI-NEXT:    s_waitcnt vmcnt(0)
3444 ; VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
3445 ; VI-NEXT:    s_waitcnt vmcnt(0)
3446 ; VI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3447 ; VI-NEXT:    s_waitcnt vmcnt(0)
3448 ; VI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3449 ; VI-NEXT:    s_waitcnt vmcnt(0)
3450 ; VI-NEXT:    s_setpc_b64 s[30:31]
3452 ; GFX9-LABEL: void_func_v32i32_v4i32_v4f32:
3453 ; GFX9:       ; %bb.0:
3454 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3455 ; GFX9-NEXT:    buffer_load_dword v31, off, s[0:3], s32
3456 ; GFX9-NEXT:    s_mov_b32 s7, 0xf000
3457 ; GFX9-NEXT:    s_mov_b32 s6, -1
3458 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3459 ; GFX9-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
3460 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3461 ; GFX9-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
3462 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3463 ; GFX9-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
3464 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3465 ; GFX9-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3466 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3467 ; GFX9-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:16
3468 ; GFX9-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:12
3469 ; GFX9-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:8
3470 ; GFX9-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:4
3471 ; GFX9-NEXT:    s_nop 0
3472 ; GFX9-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3473 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3474 ; GFX9-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:32
3475 ; GFX9-NEXT:    buffer_load_dword v14, off, s[0:3], s32 offset:28
3476 ; GFX9-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:24
3477 ; GFX9-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:20
3478 ; GFX9-NEXT:    s_nop 0
3479 ; GFX9-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
3480 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3481 ; GFX9-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
3482 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3483 ; GFX9-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
3484 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3485 ; GFX9-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3486 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3487 ; GFX9-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3488 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3489 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
3491 ; GFX11-LABEL: void_func_v32i32_v4i32_v4f32:
3492 ; GFX11:       ; %bb.0:
3493 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3494 ; GFX11-NEXT:    s_clause 0x8
3495 ; GFX11-NEXT:    scratch_load_b32 v31, off, s32
3496 ; GFX11-NEXT:    scratch_load_b32 v35, off, s32 offset:16
3497 ; GFX11-NEXT:    scratch_load_b32 v34, off, s32 offset:12
3498 ; GFX11-NEXT:    scratch_load_b32 v33, off, s32 offset:8
3499 ; GFX11-NEXT:    scratch_load_b32 v32, off, s32 offset:4
3500 ; GFX11-NEXT:    scratch_load_b32 v39, off, s32 offset:32
3501 ; GFX11-NEXT:    scratch_load_b32 v38, off, s32 offset:28
3502 ; GFX11-NEXT:    scratch_load_b32 v37, off, s32 offset:24
3503 ; GFX11-NEXT:    scratch_load_b32 v36, off, s32 offset:20
3504 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
3505 ; GFX11-NEXT:    s_mov_b32 s2, -1
3506 ; GFX11-NEXT:    s_waitcnt vmcnt(8)
3507 ; GFX11-NEXT:    buffer_store_b128 v[28:31], off, s[0:3], 0 dlc
3508 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3509 ; GFX11-NEXT:    buffer_store_b128 v[24:27], off, s[0:3], 0 dlc
3510 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3511 ; GFX11-NEXT:    buffer_store_b128 v[20:23], off, s[0:3], 0 dlc
3512 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3513 ; GFX11-NEXT:    buffer_store_b128 v[16:19], off, s[0:3], 0 dlc
3514 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3515 ; GFX11-NEXT:    buffer_store_b128 v[12:15], off, s[0:3], 0 dlc
3516 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3517 ; GFX11-NEXT:    buffer_store_b128 v[8:11], off, s[0:3], 0 dlc
3518 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3519 ; GFX11-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0 dlc
3520 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3521 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0 dlc
3522 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3523 ; GFX11-NEXT:    s_waitcnt vmcnt(4)
3524 ; GFX11-NEXT:    buffer_store_b128 v[32:35], off, s[0:3], 0 dlc
3525 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3526 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
3527 ; GFX11-NEXT:    buffer_store_b128 v[36:39], off, s[0:3], 0 dlc
3528 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3529 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
3530   store volatile <32 x i32> %arg0, ptr addrspace(1) undef
3531   store volatile <4 x i32> %arg1, ptr addrspace(1) undef
3532   store volatile <4 x float> %arg2, ptr addrspace(1) undef
3533   ret void
3536 define void @void_func_v32i32_v8i32_v8f32(<32 x i32> %arg0, <8 x i32> %arg1, <8 x float> %arg2) #0 {
3537 ; CI-LABEL: void_func_v32i32_v8i32_v8f32:
3538 ; CI:       ; %bb.0:
3539 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3540 ; CI-NEXT:    buffer_load_dword v31, off, s[0:3], s32
3541 ; CI-NEXT:    s_mov_b32 s7, 0xf000
3542 ; CI-NEXT:    s_mov_b32 s6, -1
3543 ; CI-NEXT:    s_waitcnt vmcnt(0)
3544 ; CI-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
3545 ; CI-NEXT:    s_waitcnt vmcnt(0)
3546 ; CI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
3547 ; CI-NEXT:    s_waitcnt vmcnt(0)
3548 ; CI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
3549 ; CI-NEXT:    s_waitcnt vmcnt(0)
3550 ; CI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3551 ; CI-NEXT:    s_waitcnt vmcnt(0)
3552 ; CI-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:64
3553 ; CI-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:60
3554 ; CI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:56
3555 ; CI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:52
3556 ; CI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3557 ; CI-NEXT:    s_waitcnt vmcnt(0)
3558 ; CI-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:16
3559 ; CI-NEXT:    buffer_load_dword v14, off, s[0:3], s32 offset:12
3560 ; CI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:8
3561 ; CI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:4
3562 ; CI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
3563 ; CI-NEXT:    s_waitcnt vmcnt(0)
3564 ; CI-NEXT:    buffer_load_dword v11, off, s[0:3], s32 offset:32
3565 ; CI-NEXT:    buffer_load_dword v10, off, s[0:3], s32 offset:28
3566 ; CI-NEXT:    buffer_load_dword v9, off, s[0:3], s32 offset:24
3567 ; CI-NEXT:    buffer_load_dword v8, off, s[0:3], s32 offset:20
3568 ; CI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
3569 ; CI-NEXT:    s_waitcnt vmcnt(0)
3570 ; CI-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:48
3571 ; CI-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:44
3572 ; CI-NEXT:    buffer_load_dword v5, off, s[0:3], s32 offset:40
3573 ; CI-NEXT:    buffer_load_dword v4, off, s[0:3], s32 offset:36
3574 ; CI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
3575 ; CI-NEXT:    s_waitcnt vmcnt(0)
3576 ; CI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
3577 ; CI-NEXT:    s_waitcnt vmcnt(0)
3578 ; CI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3579 ; CI-NEXT:    s_waitcnt vmcnt(0)
3580 ; CI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3581 ; CI-NEXT:    s_waitcnt vmcnt(0)
3582 ; CI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
3583 ; CI-NEXT:    s_waitcnt vmcnt(0)
3584 ; CI-NEXT:    s_setpc_b64 s[30:31]
3586 ; VI-LABEL: void_func_v32i32_v8i32_v8f32:
3587 ; VI:       ; %bb.0:
3588 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3589 ; VI-NEXT:    buffer_load_dword v31, off, s[0:3], s32
3590 ; VI-NEXT:    s_mov_b32 s7, 0xf000
3591 ; VI-NEXT:    s_mov_b32 s6, -1
3592 ; VI-NEXT:    s_waitcnt vmcnt(0)
3593 ; VI-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
3594 ; VI-NEXT:    s_waitcnt vmcnt(0)
3595 ; VI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
3596 ; VI-NEXT:    s_waitcnt vmcnt(0)
3597 ; VI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
3598 ; VI-NEXT:    s_waitcnt vmcnt(0)
3599 ; VI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3600 ; VI-NEXT:    s_waitcnt vmcnt(0)
3601 ; VI-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:64
3602 ; VI-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:60
3603 ; VI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:56
3604 ; VI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:52
3605 ; VI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3606 ; VI-NEXT:    s_waitcnt vmcnt(0)
3607 ; VI-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:16
3608 ; VI-NEXT:    buffer_load_dword v14, off, s[0:3], s32 offset:12
3609 ; VI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:8
3610 ; VI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:4
3611 ; VI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
3612 ; VI-NEXT:    s_waitcnt vmcnt(0)
3613 ; VI-NEXT:    buffer_load_dword v11, off, s[0:3], s32 offset:32
3614 ; VI-NEXT:    buffer_load_dword v10, off, s[0:3], s32 offset:28
3615 ; VI-NEXT:    buffer_load_dword v9, off, s[0:3], s32 offset:24
3616 ; VI-NEXT:    buffer_load_dword v8, off, s[0:3], s32 offset:20
3617 ; VI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
3618 ; VI-NEXT:    s_waitcnt vmcnt(0)
3619 ; VI-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:48
3620 ; VI-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:44
3621 ; VI-NEXT:    buffer_load_dword v5, off, s[0:3], s32 offset:40
3622 ; VI-NEXT:    buffer_load_dword v4, off, s[0:3], s32 offset:36
3623 ; VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
3624 ; VI-NEXT:    s_waitcnt vmcnt(0)
3625 ; VI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
3626 ; VI-NEXT:    s_waitcnt vmcnt(0)
3627 ; VI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3628 ; VI-NEXT:    s_waitcnt vmcnt(0)
3629 ; VI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3630 ; VI-NEXT:    s_waitcnt vmcnt(0)
3631 ; VI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
3632 ; VI-NEXT:    s_waitcnt vmcnt(0)
3633 ; VI-NEXT:    s_setpc_b64 s[30:31]
3635 ; GFX9-LABEL: void_func_v32i32_v8i32_v8f32:
3636 ; GFX9:       ; %bb.0:
3637 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3638 ; GFX9-NEXT:    buffer_load_dword v31, off, s[0:3], s32
3639 ; GFX9-NEXT:    s_mov_b32 s7, 0xf000
3640 ; GFX9-NEXT:    s_mov_b32 s6, -1
3641 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3642 ; GFX9-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
3643 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3644 ; GFX9-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
3645 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3646 ; GFX9-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
3647 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3648 ; GFX9-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3649 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3650 ; GFX9-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:64
3651 ; GFX9-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:60
3652 ; GFX9-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:56
3653 ; GFX9-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:52
3654 ; GFX9-NEXT:    s_nop 0
3655 ; GFX9-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3656 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3657 ; GFX9-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:16
3658 ; GFX9-NEXT:    buffer_load_dword v14, off, s[0:3], s32 offset:12
3659 ; GFX9-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:8
3660 ; GFX9-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:4
3661 ; GFX9-NEXT:    s_nop 0
3662 ; GFX9-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
3663 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3664 ; GFX9-NEXT:    buffer_load_dword v11, off, s[0:3], s32 offset:32
3665 ; GFX9-NEXT:    buffer_load_dword v10, off, s[0:3], s32 offset:28
3666 ; GFX9-NEXT:    buffer_load_dword v9, off, s[0:3], s32 offset:24
3667 ; GFX9-NEXT:    buffer_load_dword v8, off, s[0:3], s32 offset:20
3668 ; GFX9-NEXT:    s_nop 0
3669 ; GFX9-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
3670 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3671 ; GFX9-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:48
3672 ; GFX9-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:44
3673 ; GFX9-NEXT:    buffer_load_dword v5, off, s[0:3], s32 offset:40
3674 ; GFX9-NEXT:    buffer_load_dword v4, off, s[0:3], s32 offset:36
3675 ; GFX9-NEXT:    s_nop 0
3676 ; GFX9-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
3677 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3678 ; GFX9-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
3679 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3680 ; GFX9-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3681 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3682 ; GFX9-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3683 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3684 ; GFX9-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
3685 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3686 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
3688 ; GFX11-LABEL: void_func_v32i32_v8i32_v8f32:
3689 ; GFX11:       ; %bb.0:
3690 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3691 ; GFX11-NEXT:    s_clause 0x10
3692 ; GFX11-NEXT:    scratch_load_b32 v35, off, s32 offset:48
3693 ; GFX11-NEXT:    scratch_load_b32 v34, off, s32 offset:44
3694 ; GFX11-NEXT:    scratch_load_b32 v33, off, s32 offset:40
3695 ; GFX11-NEXT:    scratch_load_b32 v39, off, s32 offset:64
3696 ; GFX11-NEXT:    scratch_load_b32 v38, off, s32 offset:60
3697 ; GFX11-NEXT:    scratch_load_b32 v31, off, s32
3698 ; GFX11-NEXT:    scratch_load_b32 v37, off, s32 offset:56
3699 ; GFX11-NEXT:    scratch_load_b32 v51, off, s32 offset:16
3700 ; GFX11-NEXT:    scratch_load_b32 v50, off, s32 offset:12
3701 ; GFX11-NEXT:    scratch_load_b32 v49, off, s32 offset:8
3702 ; GFX11-NEXT:    scratch_load_b32 v55, off, s32 offset:32
3703 ; GFX11-NEXT:    scratch_load_b32 v54, off, s32 offset:28
3704 ; GFX11-NEXT:    scratch_load_b32 v53, off, s32 offset:24
3705 ; GFX11-NEXT:    scratch_load_b32 v52, off, s32 offset:20
3706 ; GFX11-NEXT:    scratch_load_b32 v48, off, s32 offset:4
3707 ; GFX11-NEXT:    scratch_load_b32 v36, off, s32 offset:52
3708 ; GFX11-NEXT:    scratch_load_b32 v32, off, s32 offset:36
3709 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
3710 ; GFX11-NEXT:    s_mov_b32 s2, -1
3711 ; GFX11-NEXT:    s_waitcnt vmcnt(11)
3712 ; GFX11-NEXT:    buffer_store_b128 v[28:31], off, s[0:3], 0 dlc
3713 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3714 ; GFX11-NEXT:    buffer_store_b128 v[24:27], off, s[0:3], 0 dlc
3715 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3716 ; GFX11-NEXT:    buffer_store_b128 v[20:23], off, s[0:3], 0 dlc
3717 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3718 ; GFX11-NEXT:    buffer_store_b128 v[16:19], off, s[0:3], 0 dlc
3719 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3720 ; GFX11-NEXT:    buffer_store_b128 v[12:15], off, s[0:3], 0 dlc
3721 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3722 ; GFX11-NEXT:    buffer_store_b128 v[8:11], off, s[0:3], 0 dlc
3723 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3724 ; GFX11-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0 dlc
3725 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3726 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0 dlc
3727 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3728 ; GFX11-NEXT:    s_waitcnt vmcnt(3)
3729 ; GFX11-NEXT:    buffer_store_b128 v[52:55], off, s[0:3], 0 dlc
3730 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3731 ; GFX11-NEXT:    s_waitcnt vmcnt(2)
3732 ; GFX11-NEXT:    buffer_store_b128 v[48:51], off, s[0:3], 0 dlc
3733 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3734 ; GFX11-NEXT:    s_waitcnt vmcnt(1)
3735 ; GFX11-NEXT:    buffer_store_b128 v[36:39], off, s[0:3], 0 dlc
3736 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3737 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
3738 ; GFX11-NEXT:    buffer_store_b128 v[32:35], off, s[0:3], 0 dlc
3739 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
3740 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
3741   store volatile <32 x i32> %arg0, ptr addrspace(1) undef
3742   store volatile <8 x i32> %arg1, ptr addrspace(1) undef
3743   store volatile <8 x float> %arg2, ptr addrspace(1) undef
3744   ret void
3747 define void @void_func_v32i32_v16i32_v16f32(<32 x i32> %arg0, <16 x i32> %arg1, <16 x float> %arg2) #0 {
3748 ; CI-LABEL: void_func_v32i32_v16i32_v16f32:
3749 ; CI:       ; %bb.0:
3750 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3751 ; CI-NEXT:    buffer_load_dword v31, off, s[0:3], s32
3752 ; CI-NEXT:    s_mov_b32 s7, 0xf000
3753 ; CI-NEXT:    s_mov_b32 s6, -1
3754 ; CI-NEXT:    s_waitcnt vmcnt(0)
3755 ; CI-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
3756 ; CI-NEXT:    s_waitcnt vmcnt(0)
3757 ; CI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
3758 ; CI-NEXT:    s_waitcnt vmcnt(0)
3759 ; CI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
3760 ; CI-NEXT:    s_waitcnt vmcnt(0)
3761 ; CI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3762 ; CI-NEXT:    s_waitcnt vmcnt(0)
3763 ; CI-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:64
3764 ; CI-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:60
3765 ; CI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:56
3766 ; CI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:52
3767 ; CI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3768 ; CI-NEXT:    s_waitcnt vmcnt(0)
3769 ; CI-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:48
3770 ; CI-NEXT:    buffer_load_dword v14, off, s[0:3], s32 offset:44
3771 ; CI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:40
3772 ; CI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:36
3773 ; CI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
3774 ; CI-NEXT:    s_waitcnt vmcnt(0)
3775 ; CI-NEXT:    buffer_load_dword v11, off, s[0:3], s32 offset:32
3776 ; CI-NEXT:    buffer_load_dword v10, off, s[0:3], s32 offset:28
3777 ; CI-NEXT:    buffer_load_dword v9, off, s[0:3], s32 offset:24
3778 ; CI-NEXT:    buffer_load_dword v8, off, s[0:3], s32 offset:20
3779 ; CI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
3780 ; CI-NEXT:    s_waitcnt vmcnt(0)
3781 ; CI-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:96
3782 ; CI-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:92
3783 ; CI-NEXT:    buffer_load_dword v5, off, s[0:3], s32 offset:88
3784 ; CI-NEXT:    buffer_load_dword v4, off, s[0:3], s32 offset:84
3785 ; CI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
3786 ; CI-NEXT:    s_waitcnt vmcnt(0)
3787 ; CI-NEXT:    buffer_load_dword v3, off, s[0:3], s32 offset:112
3788 ; CI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:108
3789 ; CI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:104
3790 ; CI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:100
3791 ; CI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3792 ; CI-NEXT:    s_waitcnt vmcnt(0)
3793 ; CI-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:128
3794 ; CI-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:124
3795 ; CI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:120
3796 ; CI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:116
3797 ; CI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3798 ; CI-NEXT:    s_waitcnt vmcnt(0)
3799 ; CI-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:16
3800 ; CI-NEXT:    buffer_load_dword v14, off, s[0:3], s32 offset:12
3801 ; CI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:8
3802 ; CI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:4
3803 ; CI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
3804 ; CI-NEXT:    s_waitcnt vmcnt(0)
3805 ; CI-NEXT:    buffer_load_dword v11, off, s[0:3], s32 offset:80
3806 ; CI-NEXT:    buffer_load_dword v10, off, s[0:3], s32 offset:76
3807 ; CI-NEXT:    buffer_load_dword v9, off, s[0:3], s32 offset:72
3808 ; CI-NEXT:    buffer_load_dword v8, off, s[0:3], s32 offset:68
3809 ; CI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3810 ; CI-NEXT:    s_waitcnt vmcnt(0)
3811 ; CI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3812 ; CI-NEXT:    s_waitcnt vmcnt(0)
3813 ; CI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
3814 ; CI-NEXT:    s_waitcnt vmcnt(0)
3815 ; CI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
3816 ; CI-NEXT:    s_waitcnt vmcnt(0)
3817 ; CI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
3818 ; CI-NEXT:    s_waitcnt vmcnt(0)
3819 ; CI-NEXT:    s_setpc_b64 s[30:31]
3821 ; VI-LABEL: void_func_v32i32_v16i32_v16f32:
3822 ; VI:       ; %bb.0:
3823 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3824 ; VI-NEXT:    buffer_load_dword v31, off, s[0:3], s32
3825 ; VI-NEXT:    s_mov_b32 s7, 0xf000
3826 ; VI-NEXT:    s_mov_b32 s6, -1
3827 ; VI-NEXT:    s_waitcnt vmcnt(0)
3828 ; VI-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
3829 ; VI-NEXT:    s_waitcnt vmcnt(0)
3830 ; VI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
3831 ; VI-NEXT:    s_waitcnt vmcnt(0)
3832 ; VI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
3833 ; VI-NEXT:    s_waitcnt vmcnt(0)
3834 ; VI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3835 ; VI-NEXT:    s_waitcnt vmcnt(0)
3836 ; VI-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:64
3837 ; VI-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:60
3838 ; VI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:56
3839 ; VI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:52
3840 ; VI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3841 ; VI-NEXT:    s_waitcnt vmcnt(0)
3842 ; VI-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:48
3843 ; VI-NEXT:    buffer_load_dword v14, off, s[0:3], s32 offset:44
3844 ; VI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:40
3845 ; VI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:36
3846 ; VI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
3847 ; VI-NEXT:    s_waitcnt vmcnt(0)
3848 ; VI-NEXT:    buffer_load_dword v11, off, s[0:3], s32 offset:32
3849 ; VI-NEXT:    buffer_load_dword v10, off, s[0:3], s32 offset:28
3850 ; VI-NEXT:    buffer_load_dword v9, off, s[0:3], s32 offset:24
3851 ; VI-NEXT:    buffer_load_dword v8, off, s[0:3], s32 offset:20
3852 ; VI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
3853 ; VI-NEXT:    s_waitcnt vmcnt(0)
3854 ; VI-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:96
3855 ; VI-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:92
3856 ; VI-NEXT:    buffer_load_dword v5, off, s[0:3], s32 offset:88
3857 ; VI-NEXT:    buffer_load_dword v4, off, s[0:3], s32 offset:84
3858 ; VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
3859 ; VI-NEXT:    s_waitcnt vmcnt(0)
3860 ; VI-NEXT:    buffer_load_dword v3, off, s[0:3], s32 offset:112
3861 ; VI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:108
3862 ; VI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:104
3863 ; VI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:100
3864 ; VI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3865 ; VI-NEXT:    s_waitcnt vmcnt(0)
3866 ; VI-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:128
3867 ; VI-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:124
3868 ; VI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:120
3869 ; VI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:116
3870 ; VI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3871 ; VI-NEXT:    s_waitcnt vmcnt(0)
3872 ; VI-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:16
3873 ; VI-NEXT:    buffer_load_dword v14, off, s[0:3], s32 offset:12
3874 ; VI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:8
3875 ; VI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:4
3876 ; VI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
3877 ; VI-NEXT:    s_waitcnt vmcnt(0)
3878 ; VI-NEXT:    buffer_load_dword v11, off, s[0:3], s32 offset:80
3879 ; VI-NEXT:    buffer_load_dword v10, off, s[0:3], s32 offset:76
3880 ; VI-NEXT:    buffer_load_dword v9, off, s[0:3], s32 offset:72
3881 ; VI-NEXT:    buffer_load_dword v8, off, s[0:3], s32 offset:68
3882 ; VI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3883 ; VI-NEXT:    s_waitcnt vmcnt(0)
3884 ; VI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3885 ; VI-NEXT:    s_waitcnt vmcnt(0)
3886 ; VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
3887 ; VI-NEXT:    s_waitcnt vmcnt(0)
3888 ; VI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
3889 ; VI-NEXT:    s_waitcnt vmcnt(0)
3890 ; VI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
3891 ; VI-NEXT:    s_waitcnt vmcnt(0)
3892 ; VI-NEXT:    s_setpc_b64 s[30:31]
3894 ; GFX9-LABEL: void_func_v32i32_v16i32_v16f32:
3895 ; GFX9:       ; %bb.0:
3896 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3897 ; GFX9-NEXT:    buffer_load_dword v31, off, s[0:3], s32
3898 ; GFX9-NEXT:    s_mov_b32 s7, 0xf000
3899 ; GFX9-NEXT:    s_mov_b32 s6, -1
3900 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3901 ; GFX9-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
3902 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3903 ; GFX9-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
3904 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3905 ; GFX9-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
3906 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3907 ; GFX9-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3908 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3909 ; GFX9-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:64
3910 ; GFX9-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:60
3911 ; GFX9-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:56
3912 ; GFX9-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:52
3913 ; GFX9-NEXT:    s_nop 0
3914 ; GFX9-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3915 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3916 ; GFX9-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:48
3917 ; GFX9-NEXT:    buffer_load_dword v14, off, s[0:3], s32 offset:44
3918 ; GFX9-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:40
3919 ; GFX9-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:36
3920 ; GFX9-NEXT:    s_nop 0
3921 ; GFX9-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
3922 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3923 ; GFX9-NEXT:    buffer_load_dword v11, off, s[0:3], s32 offset:32
3924 ; GFX9-NEXT:    buffer_load_dword v10, off, s[0:3], s32 offset:28
3925 ; GFX9-NEXT:    buffer_load_dword v9, off, s[0:3], s32 offset:24
3926 ; GFX9-NEXT:    buffer_load_dword v8, off, s[0:3], s32 offset:20
3927 ; GFX9-NEXT:    s_nop 0
3928 ; GFX9-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
3929 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3930 ; GFX9-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:96
3931 ; GFX9-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:92
3932 ; GFX9-NEXT:    buffer_load_dword v5, off, s[0:3], s32 offset:88
3933 ; GFX9-NEXT:    buffer_load_dword v4, off, s[0:3], s32 offset:84
3934 ; GFX9-NEXT:    s_nop 0
3935 ; GFX9-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
3936 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3937 ; GFX9-NEXT:    buffer_load_dword v3, off, s[0:3], s32 offset:112
3938 ; GFX9-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:108
3939 ; GFX9-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:104
3940 ; GFX9-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:100
3941 ; GFX9-NEXT:    s_nop 0
3942 ; GFX9-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3943 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3944 ; GFX9-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:128
3945 ; GFX9-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:124
3946 ; GFX9-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:120
3947 ; GFX9-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:116
3948 ; GFX9-NEXT:    s_nop 0
3949 ; GFX9-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3950 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3951 ; GFX9-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:16
3952 ; GFX9-NEXT:    buffer_load_dword v14, off, s[0:3], s32 offset:12
3953 ; GFX9-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:8
3954 ; GFX9-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:4
3955 ; GFX9-NEXT:    s_nop 0
3956 ; GFX9-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
3957 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3958 ; GFX9-NEXT:    buffer_load_dword v11, off, s[0:3], s32 offset:80
3959 ; GFX9-NEXT:    buffer_load_dword v10, off, s[0:3], s32 offset:76
3960 ; GFX9-NEXT:    buffer_load_dword v9, off, s[0:3], s32 offset:72
3961 ; GFX9-NEXT:    buffer_load_dword v8, off, s[0:3], s32 offset:68
3962 ; GFX9-NEXT:    s_nop 0
3963 ; GFX9-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
3964 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3965 ; GFX9-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
3966 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3967 ; GFX9-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
3968 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3969 ; GFX9-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
3970 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3971 ; GFX9-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
3972 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
3973 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
3975 ; GFX11-LABEL: void_func_v32i32_v16i32_v16f32:
3976 ; GFX11:       ; %bb.0:
3977 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3978 ; GFX11-NEXT:    s_clause 0x20
3979 ; GFX11-NEXT:    scratch_load_b32 v35, off, s32 offset:80
3980 ; GFX11-NEXT:    scratch_load_b32 v34, off, s32 offset:76
3981 ; GFX11-NEXT:    scratch_load_b32 v33, off, s32 offset:72
3982 ; GFX11-NEXT:    scratch_load_b32 v39, off, s32 offset:96
3983 ; GFX11-NEXT:    scratch_load_b32 v38, off, s32 offset:92
3984 ; GFX11-NEXT:    scratch_load_b32 v37, off, s32 offset:88
3985 ; GFX11-NEXT:    scratch_load_b32 v51, off, s32 offset:112
3986 ; GFX11-NEXT:    scratch_load_b32 v50, off, s32 offset:108
3987 ; GFX11-NEXT:    scratch_load_b32 v49, off, s32 offset:104
3988 ; GFX11-NEXT:    scratch_load_b32 v55, off, s32 offset:128
3989 ; GFX11-NEXT:    scratch_load_b32 v54, off, s32 offset:124
3990 ; GFX11-NEXT:    scratch_load_b32 v53, off, s32 offset:120
3991 ; GFX11-NEXT:    scratch_load_b32 v67, off, s32 offset:16
3992 ; GFX11-NEXT:    scratch_load_b32 v66, off, s32 offset:12
3993 ; GFX11-NEXT:    scratch_load_b32 v65, off, s32 offset:8
3994 ; GFX11-NEXT:    scratch_load_b32 v71, off, s32 offset:32
3995 ; GFX11-NEXT:    scratch_load_b32 v70, off, s32 offset:28
3996 ; GFX11-NEXT:    scratch_load_b32 v31, off, s32
3997 ; GFX11-NEXT:    scratch_load_b32 v69, off, s32 offset:24
3998 ; GFX11-NEXT:    scratch_load_b32 v83, off, s32 offset:48
3999 ; GFX11-NEXT:    scratch_load_b32 v82, off, s32 offset:44
4000 ; GFX11-NEXT:    scratch_load_b32 v81, off, s32 offset:40
4001 ; GFX11-NEXT:    scratch_load_b32 v87, off, s32 offset:64
4002 ; GFX11-NEXT:    scratch_load_b32 v86, off, s32 offset:60
4003 ; GFX11-NEXT:    scratch_load_b32 v85, off, s32 offset:56
4004 ; GFX11-NEXT:    scratch_load_b32 v84, off, s32 offset:52
4005 ; GFX11-NEXT:    scratch_load_b32 v80, off, s32 offset:36
4006 ; GFX11-NEXT:    scratch_load_b32 v68, off, s32 offset:20
4007 ; GFX11-NEXT:    scratch_load_b32 v64, off, s32 offset:4
4008 ; GFX11-NEXT:    scratch_load_b32 v52, off, s32 offset:116
4009 ; GFX11-NEXT:    scratch_load_b32 v48, off, s32 offset:100
4010 ; GFX11-NEXT:    scratch_load_b32 v36, off, s32 offset:84
4011 ; GFX11-NEXT:    scratch_load_b32 v32, off, s32 offset:68
4012 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
4013 ; GFX11-NEXT:    s_mov_b32 s2, -1
4014 ; GFX11-NEXT:    s_waitcnt vmcnt(15)
4015 ; GFX11-NEXT:    buffer_store_b128 v[28:31], off, s[0:3], 0 dlc
4016 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4017 ; GFX11-NEXT:    buffer_store_b128 v[24:27], off, s[0:3], 0 dlc
4018 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4019 ; GFX11-NEXT:    buffer_store_b128 v[20:23], off, s[0:3], 0 dlc
4020 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4021 ; GFX11-NEXT:    buffer_store_b128 v[16:19], off, s[0:3], 0 dlc
4022 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4023 ; GFX11-NEXT:    buffer_store_b128 v[12:15], off, s[0:3], 0 dlc
4024 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4025 ; GFX11-NEXT:    buffer_store_b128 v[8:11], off, s[0:3], 0 dlc
4026 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4027 ; GFX11-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0 dlc
4028 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4029 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0 dlc
4030 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4031 ; GFX11-NEXT:    s_waitcnt vmcnt(7)
4032 ; GFX11-NEXT:    buffer_store_b128 v[84:87], off, s[0:3], 0 dlc
4033 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4034 ; GFX11-NEXT:    s_waitcnt vmcnt(6)
4035 ; GFX11-NEXT:    buffer_store_b128 v[80:83], off, s[0:3], 0 dlc
4036 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4037 ; GFX11-NEXT:    s_waitcnt vmcnt(5)
4038 ; GFX11-NEXT:    buffer_store_b128 v[68:71], off, s[0:3], 0 dlc
4039 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4040 ; GFX11-NEXT:    s_waitcnt vmcnt(4)
4041 ; GFX11-NEXT:    buffer_store_b128 v[64:67], off, s[0:3], 0 dlc
4042 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4043 ; GFX11-NEXT:    s_waitcnt vmcnt(3)
4044 ; GFX11-NEXT:    buffer_store_b128 v[52:55], off, s[0:3], 0 dlc
4045 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4046 ; GFX11-NEXT:    s_waitcnt vmcnt(2)
4047 ; GFX11-NEXT:    buffer_store_b128 v[48:51], off, s[0:3], 0 dlc
4048 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4049 ; GFX11-NEXT:    s_waitcnt vmcnt(1)
4050 ; GFX11-NEXT:    buffer_store_b128 v[36:39], off, s[0:3], 0 dlc
4051 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4052 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
4053 ; GFX11-NEXT:    buffer_store_b128 v[32:35], off, s[0:3], 0 dlc
4054 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4055 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
4056   store volatile <32 x i32> %arg0, ptr addrspace(1) undef
4057   store volatile <16 x i32> %arg1, ptr addrspace(1) undef
4058   store volatile <16 x float> %arg2, ptr addrspace(1) undef
4059   ret void
4062 ; Make sure v3 isn't a wasted register because of v3 types being promoted to v4
4063 define void @void_func_v3f32_wasted_reg(<3 x float> %arg0, i32 %arg1) #0 {
4064 ; CI-LABEL: void_func_v3f32_wasted_reg:
4065 ; CI:       ; %bb.0:
4066 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4067 ; CI-NEXT:    s_mov_b32 m0, -1
4068 ; CI-NEXT:    ds_write_b32 v0, v0
4069 ; CI-NEXT:    ds_write_b32 v0, v1
4070 ; CI-NEXT:    ds_write_b32 v0, v2
4071 ; CI-NEXT:    ds_write_b32 v0, v3
4072 ; CI-NEXT:    s_waitcnt lgkmcnt(0)
4073 ; CI-NEXT:    s_setpc_b64 s[30:31]
4075 ; VI-LABEL: void_func_v3f32_wasted_reg:
4076 ; VI:       ; %bb.0:
4077 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4078 ; VI-NEXT:    s_mov_b32 m0, -1
4079 ; VI-NEXT:    ds_write_b32 v0, v0
4080 ; VI-NEXT:    ds_write_b32 v0, v1
4081 ; VI-NEXT:    ds_write_b32 v0, v2
4082 ; VI-NEXT:    ds_write_b32 v0, v3
4083 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
4084 ; VI-NEXT:    s_setpc_b64 s[30:31]
4086 ; GFX9-LABEL: void_func_v3f32_wasted_reg:
4087 ; GFX9:       ; %bb.0:
4088 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4089 ; GFX9-NEXT:    ds_write_b32 v0, v0
4090 ; GFX9-NEXT:    ds_write_b32 v0, v1
4091 ; GFX9-NEXT:    ds_write_b32 v0, v2
4092 ; GFX9-NEXT:    ds_write_b32 v0, v3
4093 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
4094 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
4096 ; GFX11-LABEL: void_func_v3f32_wasted_reg:
4097 ; GFX11:       ; %bb.0:
4098 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4099 ; GFX11-NEXT:    ds_store_b32 v0, v0
4100 ; GFX11-NEXT:    ds_store_b32 v0, v1
4101 ; GFX11-NEXT:    ds_store_b32 v0, v2
4102 ; GFX11-NEXT:    ds_store_b32 v0, v3
4103 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
4104 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
4105   %arg0.0 = extractelement <3 x float> %arg0, i32 0
4106   %arg0.1 = extractelement <3 x float> %arg0, i32 1
4107   %arg0.2 = extractelement <3 x float> %arg0, i32 2
4108   store volatile float %arg0.0, ptr addrspace(3) undef
4109   store volatile float %arg0.1, ptr addrspace(3) undef
4110   store volatile float %arg0.2, ptr addrspace(3) undef
4111   store volatile i32 %arg1, ptr addrspace(3) undef
4112   ret void
4115 define void @void_func_v3i32_wasted_reg(<3 x i32> %arg0, i32 %arg1) #0 {
4116 ; CI-LABEL: void_func_v3i32_wasted_reg:
4117 ; CI:       ; %bb.0:
4118 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4119 ; CI-NEXT:    s_mov_b32 m0, -1
4120 ; CI-NEXT:    ds_write_b32 v0, v0
4121 ; CI-NEXT:    ds_write_b32 v0, v1
4122 ; CI-NEXT:    ds_write_b32 v0, v2
4123 ; CI-NEXT:    ds_write_b32 v0, v3
4124 ; CI-NEXT:    s_waitcnt lgkmcnt(0)
4125 ; CI-NEXT:    s_setpc_b64 s[30:31]
4127 ; VI-LABEL: void_func_v3i32_wasted_reg:
4128 ; VI:       ; %bb.0:
4129 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4130 ; VI-NEXT:    s_mov_b32 m0, -1
4131 ; VI-NEXT:    ds_write_b32 v0, v0
4132 ; VI-NEXT:    ds_write_b32 v0, v1
4133 ; VI-NEXT:    ds_write_b32 v0, v2
4134 ; VI-NEXT:    ds_write_b32 v0, v3
4135 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
4136 ; VI-NEXT:    s_setpc_b64 s[30:31]
4138 ; GFX9-LABEL: void_func_v3i32_wasted_reg:
4139 ; GFX9:       ; %bb.0:
4140 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4141 ; GFX9-NEXT:    ds_write_b32 v0, v0
4142 ; GFX9-NEXT:    ds_write_b32 v0, v1
4143 ; GFX9-NEXT:    ds_write_b32 v0, v2
4144 ; GFX9-NEXT:    ds_write_b32 v0, v3
4145 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
4146 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
4148 ; GFX11-LABEL: void_func_v3i32_wasted_reg:
4149 ; GFX11:       ; %bb.0:
4150 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4151 ; GFX11-NEXT:    ds_store_b32 v0, v0
4152 ; GFX11-NEXT:    ds_store_b32 v0, v1
4153 ; GFX11-NEXT:    ds_store_b32 v0, v2
4154 ; GFX11-NEXT:    ds_store_b32 v0, v3
4155 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
4156 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
4157   %arg0.0 = extractelement <3 x i32> %arg0, i32 0
4158   %arg0.1 = extractelement <3 x i32> %arg0, i32 1
4159   %arg0.2 = extractelement <3 x i32> %arg0, i32 2
4160   store volatile i32 %arg0.0, ptr addrspace(3) undef
4161   store volatile i32 %arg0.1, ptr addrspace(3) undef
4162   store volatile i32 %arg0.2, ptr addrspace(3) undef
4163   store volatile i32 %arg1, ptr addrspace(3) undef
4164   ret void
4167 ; Check there is no crash.
4168 define void @void_func_volatile_v16i8(<16 x i8> %arg0) #0 {
4169 ; CIGFX89-LABEL: void_func_volatile_v16i8:
4170 ; CIGFX89:       ; %bb.0:
4171 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4172 ; CIGFX89-NEXT:    s_mov_b32 s7, 0xf000
4173 ; CIGFX89-NEXT:    s_mov_b32 s6, -1
4174 ; CIGFX89-NEXT:    buffer_store_byte v15, off, s[4:7], 0
4175 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
4176 ; CIGFX89-NEXT:    buffer_store_byte v14, off, s[4:7], 0
4177 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
4178 ; CIGFX89-NEXT:    buffer_store_byte v13, off, s[4:7], 0
4179 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
4180 ; CIGFX89-NEXT:    buffer_store_byte v12, off, s[4:7], 0
4181 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
4182 ; CIGFX89-NEXT:    buffer_store_byte v11, off, s[4:7], 0
4183 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
4184 ; CIGFX89-NEXT:    buffer_store_byte v10, off, s[4:7], 0
4185 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
4186 ; CIGFX89-NEXT:    buffer_store_byte v9, off, s[4:7], 0
4187 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
4188 ; CIGFX89-NEXT:    buffer_store_byte v8, off, s[4:7], 0
4189 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
4190 ; CIGFX89-NEXT:    buffer_store_byte v7, off, s[4:7], 0
4191 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
4192 ; CIGFX89-NEXT:    buffer_store_byte v6, off, s[4:7], 0
4193 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
4194 ; CIGFX89-NEXT:    buffer_store_byte v5, off, s[4:7], 0
4195 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
4196 ; CIGFX89-NEXT:    buffer_store_byte v4, off, s[4:7], 0
4197 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
4198 ; CIGFX89-NEXT:    buffer_store_byte v3, off, s[4:7], 0
4199 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
4200 ; CIGFX89-NEXT:    buffer_store_byte v2, off, s[4:7], 0
4201 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
4202 ; CIGFX89-NEXT:    buffer_store_byte v1, off, s[4:7], 0
4203 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
4204 ; CIGFX89-NEXT:    buffer_store_byte v0, off, s[4:7], 0
4205 ; CIGFX89-NEXT:    s_waitcnt vmcnt(0)
4206 ; CIGFX89-NEXT:    s_setpc_b64 s[30:31]
4208 ; GFX11-LABEL: void_func_volatile_v16i8:
4209 ; GFX11:       ; %bb.0:
4210 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4211 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
4212 ; GFX11-NEXT:    s_mov_b32 s2, -1
4213 ; GFX11-NEXT:    buffer_store_b8 v15, off, s[0:3], 0 dlc
4214 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4215 ; GFX11-NEXT:    buffer_store_b8 v14, off, s[0:3], 0 dlc
4216 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4217 ; GFX11-NEXT:    buffer_store_b8 v13, off, s[0:3], 0 dlc
4218 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4219 ; GFX11-NEXT:    buffer_store_b8 v12, off, s[0:3], 0 dlc
4220 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4221 ; GFX11-NEXT:    buffer_store_b8 v11, off, s[0:3], 0 dlc
4222 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4223 ; GFX11-NEXT:    buffer_store_b8 v10, off, s[0:3], 0 dlc
4224 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4225 ; GFX11-NEXT:    buffer_store_b8 v9, off, s[0:3], 0 dlc
4226 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4227 ; GFX11-NEXT:    buffer_store_b8 v8, off, s[0:3], 0 dlc
4228 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4229 ; GFX11-NEXT:    buffer_store_b8 v7, off, s[0:3], 0 dlc
4230 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4231 ; GFX11-NEXT:    buffer_store_b8 v6, off, s[0:3], 0 dlc
4232 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4233 ; GFX11-NEXT:    buffer_store_b8 v5, off, s[0:3], 0 dlc
4234 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4235 ; GFX11-NEXT:    buffer_store_b8 v4, off, s[0:3], 0 dlc
4236 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4237 ; GFX11-NEXT:    buffer_store_b8 v3, off, s[0:3], 0 dlc
4238 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4239 ; GFX11-NEXT:    buffer_store_b8 v2, off, s[0:3], 0 dlc
4240 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4241 ; GFX11-NEXT:    buffer_store_b8 v1, off, s[0:3], 0 dlc
4242 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4243 ; GFX11-NEXT:    buffer_store_b8 v0, off, s[0:3], 0 dlc
4244 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4245 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
4246   store volatile <16 x i8> %arg0, ptr addrspace(1) undef
4247   ret void
4250 ; Check there is no crash.
4251 define void @void_func_v32i32_v16i8(<32 x i32> %arg0, <16 x i8> %arg1) #0 {
4252 ; CI-LABEL: void_func_v32i32_v16i8:
4253 ; CI:       ; %bb.0:
4254 ; CI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4255 ; CI-NEXT:    buffer_load_dword v31, off, s[0:3], s32
4256 ; CI-NEXT:    s_mov_b32 s7, 0xf000
4257 ; CI-NEXT:    s_mov_b32 s6, -1
4258 ; CI-NEXT:    s_waitcnt vmcnt(0)
4259 ; CI-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
4260 ; CI-NEXT:    s_waitcnt vmcnt(0)
4261 ; CI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
4262 ; CI-NEXT:    s_waitcnt vmcnt(0)
4263 ; CI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
4264 ; CI-NEXT:    s_waitcnt vmcnt(0)
4265 ; CI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
4266 ; CI-NEXT:    s_waitcnt vmcnt(0)
4267 ; CI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:64
4268 ; CI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:48
4269 ; CI-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:52
4270 ; CI-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:56
4271 ; CI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
4272 ; CI-NEXT:    s_waitcnt vmcnt(0)
4273 ; CI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:36
4274 ; CI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:40
4275 ; CI-NEXT:    buffer_load_dword v14, off, s[0:3], s32 offset:44
4276 ; CI-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:28
4277 ; CI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
4278 ; CI-NEXT:    s_waitcnt vmcnt(0)
4279 ; CI-NEXT:    buffer_load_dword v8, off, s[0:3], s32 offset:32
4280 ; CI-NEXT:    buffer_load_dword v9, off, s[0:3], s32 offset:20
4281 ; CI-NEXT:    buffer_load_dword v10, off, s[0:3], s32 offset:24
4282 ; CI-NEXT:    buffer_load_dword v11, off, s[0:3], s32 offset:16
4283 ; CI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
4284 ; CI-NEXT:    s_waitcnt vmcnt(0)
4285 ; CI-NEXT:    buffer_load_dword v4, off, s[0:3], s32 offset:12
4286 ; CI-NEXT:    buffer_load_dword v5, off, s[0:3], s32 offset:8
4287 ; CI-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:4
4288 ; CI-NEXT:    buffer_load_dword v20, off, s[0:3], s32 offset:60
4289 ; CI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
4290 ; CI-NEXT:    s_waitcnt vmcnt(0)
4291 ; CI-NEXT:    buffer_store_byte v16, off, s[4:7], 0
4292 ; CI-NEXT:    s_waitcnt vmcnt(0)
4293 ; CI-NEXT:    buffer_store_byte v20, off, s[4:7], 0
4294 ; CI-NEXT:    s_waitcnt vmcnt(0)
4295 ; CI-NEXT:    buffer_store_byte v19, off, s[4:7], 0
4296 ; CI-NEXT:    s_waitcnt vmcnt(0)
4297 ; CI-NEXT:    buffer_store_byte v18, off, s[4:7], 0
4298 ; CI-NEXT:    s_waitcnt vmcnt(0)
4299 ; CI-NEXT:    buffer_store_byte v17, off, s[4:7], 0
4300 ; CI-NEXT:    s_waitcnt vmcnt(0)
4301 ; CI-NEXT:    buffer_store_byte v14, off, s[4:7], 0
4302 ; CI-NEXT:    s_waitcnt vmcnt(0)
4303 ; CI-NEXT:    buffer_store_byte v13, off, s[4:7], 0
4304 ; CI-NEXT:    s_waitcnt vmcnt(0)
4305 ; CI-NEXT:    buffer_store_byte v12, off, s[4:7], 0
4306 ; CI-NEXT:    s_waitcnt vmcnt(0)
4307 ; CI-NEXT:    buffer_store_byte v8, off, s[4:7], 0
4308 ; CI-NEXT:    s_waitcnt vmcnt(0)
4309 ; CI-NEXT:    buffer_store_byte v15, off, s[4:7], 0
4310 ; CI-NEXT:    s_waitcnt vmcnt(0)
4311 ; CI-NEXT:    buffer_store_byte v10, off, s[4:7], 0
4312 ; CI-NEXT:    s_waitcnt vmcnt(0)
4313 ; CI-NEXT:    buffer_store_byte v9, off, s[4:7], 0
4314 ; CI-NEXT:    s_waitcnt vmcnt(0)
4315 ; CI-NEXT:    buffer_store_byte v11, off, s[4:7], 0
4316 ; CI-NEXT:    s_waitcnt vmcnt(0)
4317 ; CI-NEXT:    buffer_store_byte v4, off, s[4:7], 0
4318 ; CI-NEXT:    s_waitcnt vmcnt(0)
4319 ; CI-NEXT:    buffer_store_byte v5, off, s[4:7], 0
4320 ; CI-NEXT:    s_waitcnt vmcnt(0)
4321 ; CI-NEXT:    buffer_store_byte v6, off, s[4:7], 0
4322 ; CI-NEXT:    s_waitcnt vmcnt(0)
4323 ; CI-NEXT:    s_setpc_b64 s[30:31]
4325 ; VI-LABEL: void_func_v32i32_v16i8:
4326 ; VI:       ; %bb.0:
4327 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4328 ; VI-NEXT:    buffer_load_dword v31, off, s[0:3], s32
4329 ; VI-NEXT:    s_mov_b32 s7, 0xf000
4330 ; VI-NEXT:    s_mov_b32 s6, -1
4331 ; VI-NEXT:    s_waitcnt vmcnt(0)
4332 ; VI-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
4333 ; VI-NEXT:    s_waitcnt vmcnt(0)
4334 ; VI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
4335 ; VI-NEXT:    s_waitcnt vmcnt(0)
4336 ; VI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
4337 ; VI-NEXT:    s_waitcnt vmcnt(0)
4338 ; VI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
4339 ; VI-NEXT:    s_waitcnt vmcnt(0)
4340 ; VI-NEXT:    buffer_load_ubyte v16, off, s[0:3], s32 offset:64
4341 ; VI-NEXT:    buffer_load_ubyte v17, off, s[0:3], s32 offset:48
4342 ; VI-NEXT:    buffer_load_ubyte v18, off, s[0:3], s32 offset:52
4343 ; VI-NEXT:    buffer_load_ubyte v19, off, s[0:3], s32 offset:56
4344 ; VI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
4345 ; VI-NEXT:    s_waitcnt vmcnt(0)
4346 ; VI-NEXT:    buffer_load_ubyte v12, off, s[0:3], s32 offset:36
4347 ; VI-NEXT:    buffer_load_ubyte v13, off, s[0:3], s32 offset:40
4348 ; VI-NEXT:    buffer_load_ubyte v14, off, s[0:3], s32 offset:44
4349 ; VI-NEXT:    buffer_load_ubyte v15, off, s[0:3], s32 offset:28
4350 ; VI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
4351 ; VI-NEXT:    s_waitcnt vmcnt(0)
4352 ; VI-NEXT:    buffer_load_ubyte v8, off, s[0:3], s32 offset:32
4353 ; VI-NEXT:    buffer_load_ubyte v9, off, s[0:3], s32 offset:20
4354 ; VI-NEXT:    buffer_load_ubyte v10, off, s[0:3], s32 offset:24
4355 ; VI-NEXT:    buffer_load_ubyte v11, off, s[0:3], s32 offset:16
4356 ; VI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
4357 ; VI-NEXT:    s_waitcnt vmcnt(0)
4358 ; VI-NEXT:    buffer_load_ubyte v4, off, s[0:3], s32 offset:12
4359 ; VI-NEXT:    buffer_load_ubyte v5, off, s[0:3], s32 offset:8
4360 ; VI-NEXT:    buffer_load_ubyte v6, off, s[0:3], s32 offset:4
4361 ; VI-NEXT:    buffer_load_ubyte v20, off, s[0:3], s32 offset:60
4362 ; VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
4363 ; VI-NEXT:    s_waitcnt vmcnt(0)
4364 ; VI-NEXT:    buffer_store_byte v16, off, s[4:7], 0
4365 ; VI-NEXT:    s_waitcnt vmcnt(0)
4366 ; VI-NEXT:    buffer_store_byte v20, off, s[4:7], 0
4367 ; VI-NEXT:    s_waitcnt vmcnt(0)
4368 ; VI-NEXT:    buffer_store_byte v19, off, s[4:7], 0
4369 ; VI-NEXT:    s_waitcnt vmcnt(0)
4370 ; VI-NEXT:    buffer_store_byte v18, off, s[4:7], 0
4371 ; VI-NEXT:    s_waitcnt vmcnt(0)
4372 ; VI-NEXT:    buffer_store_byte v17, off, s[4:7], 0
4373 ; VI-NEXT:    s_waitcnt vmcnt(0)
4374 ; VI-NEXT:    buffer_store_byte v14, off, s[4:7], 0
4375 ; VI-NEXT:    s_waitcnt vmcnt(0)
4376 ; VI-NEXT:    buffer_store_byte v13, off, s[4:7], 0
4377 ; VI-NEXT:    s_waitcnt vmcnt(0)
4378 ; VI-NEXT:    buffer_store_byte v12, off, s[4:7], 0
4379 ; VI-NEXT:    s_waitcnt vmcnt(0)
4380 ; VI-NEXT:    buffer_store_byte v8, off, s[4:7], 0
4381 ; VI-NEXT:    s_waitcnt vmcnt(0)
4382 ; VI-NEXT:    buffer_store_byte v15, off, s[4:7], 0
4383 ; VI-NEXT:    s_waitcnt vmcnt(0)
4384 ; VI-NEXT:    buffer_store_byte v10, off, s[4:7], 0
4385 ; VI-NEXT:    s_waitcnt vmcnt(0)
4386 ; VI-NEXT:    buffer_store_byte v9, off, s[4:7], 0
4387 ; VI-NEXT:    s_waitcnt vmcnt(0)
4388 ; VI-NEXT:    buffer_store_byte v11, off, s[4:7], 0
4389 ; VI-NEXT:    s_waitcnt vmcnt(0)
4390 ; VI-NEXT:    buffer_store_byte v4, off, s[4:7], 0
4391 ; VI-NEXT:    s_waitcnt vmcnt(0)
4392 ; VI-NEXT:    buffer_store_byte v5, off, s[4:7], 0
4393 ; VI-NEXT:    s_waitcnt vmcnt(0)
4394 ; VI-NEXT:    buffer_store_byte v6, off, s[4:7], 0
4395 ; VI-NEXT:    s_waitcnt vmcnt(0)
4396 ; VI-NEXT:    s_setpc_b64 s[30:31]
4398 ; GFX9-LABEL: void_func_v32i32_v16i8:
4399 ; GFX9:       ; %bb.0:
4400 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4401 ; GFX9-NEXT:    buffer_load_dword v31, off, s[0:3], s32
4402 ; GFX9-NEXT:    s_mov_b32 s7, 0xf000
4403 ; GFX9-NEXT:    s_mov_b32 s6, -1
4404 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
4405 ; GFX9-NEXT:    buffer_store_dwordx4 v[28:31], off, s[4:7], 0
4406 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
4407 ; GFX9-NEXT:    buffer_store_dwordx4 v[24:27], off, s[4:7], 0
4408 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
4409 ; GFX9-NEXT:    buffer_store_dwordx4 v[20:23], off, s[4:7], 0
4410 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
4411 ; GFX9-NEXT:    buffer_store_dwordx4 v[16:19], off, s[4:7], 0
4412 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
4413 ; GFX9-NEXT:    buffer_load_ubyte v16, off, s[0:3], s32 offset:64
4414 ; GFX9-NEXT:    buffer_load_ubyte v17, off, s[0:3], s32 offset:48
4415 ; GFX9-NEXT:    buffer_load_ubyte v18, off, s[0:3], s32 offset:52
4416 ; GFX9-NEXT:    buffer_load_ubyte v19, off, s[0:3], s32 offset:56
4417 ; GFX9-NEXT:    buffer_load_ubyte v20, off, s[0:3], s32 offset:60
4418 ; GFX9-NEXT:    s_nop 0
4419 ; GFX9-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0
4420 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
4421 ; GFX9-NEXT:    buffer_load_ubyte v12, off, s[0:3], s32 offset:36
4422 ; GFX9-NEXT:    buffer_load_ubyte v13, off, s[0:3], s32 offset:40
4423 ; GFX9-NEXT:    buffer_load_ubyte v14, off, s[0:3], s32 offset:44
4424 ; GFX9-NEXT:    buffer_load_ubyte v15, off, s[0:3], s32 offset:28
4425 ; GFX9-NEXT:    s_nop 0
4426 ; GFX9-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
4427 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
4428 ; GFX9-NEXT:    buffer_load_ubyte v8, off, s[0:3], s32 offset:32
4429 ; GFX9-NEXT:    buffer_load_ubyte v9, off, s[0:3], s32 offset:20
4430 ; GFX9-NEXT:    buffer_load_ubyte v10, off, s[0:3], s32 offset:24
4431 ; GFX9-NEXT:    buffer_load_ubyte v11, off, s[0:3], s32 offset:16
4432 ; GFX9-NEXT:    s_nop 0
4433 ; GFX9-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
4434 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
4435 ; GFX9-NEXT:    buffer_load_ubyte v4, off, s[0:3], s32 offset:12
4436 ; GFX9-NEXT:    buffer_load_ubyte v5, off, s[0:3], s32 offset:8
4437 ; GFX9-NEXT:    buffer_load_ubyte v6, off, s[0:3], s32 offset:4
4438 ; GFX9-NEXT:    s_nop 0
4439 ; GFX9-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
4440 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
4441 ; GFX9-NEXT:    buffer_store_byte v16, off, s[4:7], 0
4442 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
4443 ; GFX9-NEXT:    buffer_store_byte v20, off, s[4:7], 0
4444 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
4445 ; GFX9-NEXT:    buffer_store_byte v19, off, s[4:7], 0
4446 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
4447 ; GFX9-NEXT:    buffer_store_byte v18, off, s[4:7], 0
4448 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
4449 ; GFX9-NEXT:    buffer_store_byte v17, off, s[4:7], 0
4450 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
4451 ; GFX9-NEXT:    buffer_store_byte v14, off, s[4:7], 0
4452 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
4453 ; GFX9-NEXT:    buffer_store_byte v13, off, s[4:7], 0
4454 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
4455 ; GFX9-NEXT:    buffer_store_byte v12, off, s[4:7], 0
4456 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
4457 ; GFX9-NEXT:    buffer_store_byte v8, off, s[4:7], 0
4458 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
4459 ; GFX9-NEXT:    buffer_store_byte v15, off, s[4:7], 0
4460 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
4461 ; GFX9-NEXT:    buffer_store_byte v10, off, s[4:7], 0
4462 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
4463 ; GFX9-NEXT:    buffer_store_byte v9, off, s[4:7], 0
4464 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
4465 ; GFX9-NEXT:    buffer_store_byte v11, off, s[4:7], 0
4466 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
4467 ; GFX9-NEXT:    buffer_store_byte v4, off, s[4:7], 0
4468 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
4469 ; GFX9-NEXT:    buffer_store_byte v5, off, s[4:7], 0
4470 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
4471 ; GFX9-NEXT:    buffer_store_byte v6, off, s[4:7], 0
4472 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
4473 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
4475 ; GFX11-LABEL: void_func_v32i32_v16i8:
4476 ; GFX11:       ; %bb.0:
4477 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4478 ; GFX11-NEXT:    s_clause 0x10
4479 ; GFX11-NEXT:    scratch_load_b32 v31, off, s32
4480 ; GFX11-NEXT:    scratch_load_u8 v32, off, s32 offset:64
4481 ; GFX11-NEXT:    scratch_load_u8 v33, off, s32 offset:60
4482 ; GFX11-NEXT:    scratch_load_u8 v34, off, s32 offset:56
4483 ; GFX11-NEXT:    scratch_load_u8 v35, off, s32 offset:52
4484 ; GFX11-NEXT:    scratch_load_u8 v36, off, s32 offset:48
4485 ; GFX11-NEXT:    scratch_load_u8 v37, off, s32 offset:44
4486 ; GFX11-NEXT:    scratch_load_u8 v38, off, s32 offset:40
4487 ; GFX11-NEXT:    scratch_load_u8 v39, off, s32 offset:36
4488 ; GFX11-NEXT:    scratch_load_u8 v48, off, s32 offset:32
4489 ; GFX11-NEXT:    scratch_load_u8 v49, off, s32 offset:28
4490 ; GFX11-NEXT:    scratch_load_u8 v50, off, s32 offset:24
4491 ; GFX11-NEXT:    scratch_load_u8 v51, off, s32 offset:20
4492 ; GFX11-NEXT:    scratch_load_u8 v52, off, s32 offset:16
4493 ; GFX11-NEXT:    scratch_load_u8 v53, off, s32 offset:12
4494 ; GFX11-NEXT:    scratch_load_u8 v54, off, s32 offset:8
4495 ; GFX11-NEXT:    scratch_load_u8 v55, off, s32 offset:4
4496 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
4497 ; GFX11-NEXT:    s_mov_b32 s2, -1
4498 ; GFX11-NEXT:    s_waitcnt vmcnt(16)
4499 ; GFX11-NEXT:    buffer_store_b128 v[28:31], off, s[0:3], 0 dlc
4500 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4501 ; GFX11-NEXT:    buffer_store_b128 v[24:27], off, s[0:3], 0 dlc
4502 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4503 ; GFX11-NEXT:    buffer_store_b128 v[20:23], off, s[0:3], 0 dlc
4504 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4505 ; GFX11-NEXT:    buffer_store_b128 v[16:19], off, s[0:3], 0 dlc
4506 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4507 ; GFX11-NEXT:    buffer_store_b128 v[12:15], off, s[0:3], 0 dlc
4508 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4509 ; GFX11-NEXT:    buffer_store_b128 v[8:11], off, s[0:3], 0 dlc
4510 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4511 ; GFX11-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0 dlc
4512 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4513 ; GFX11-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 0 dlc
4514 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4515 ; GFX11-NEXT:    s_waitcnt vmcnt(15)
4516 ; GFX11-NEXT:    buffer_store_b8 v32, off, s[0:3], 0 dlc
4517 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4518 ; GFX11-NEXT:    s_waitcnt vmcnt(14)
4519 ; GFX11-NEXT:    buffer_store_b8 v33, off, s[0:3], 0 dlc
4520 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4521 ; GFX11-NEXT:    s_waitcnt vmcnt(13)
4522 ; GFX11-NEXT:    buffer_store_b8 v34, off, s[0:3], 0 dlc
4523 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4524 ; GFX11-NEXT:    s_waitcnt vmcnt(12)
4525 ; GFX11-NEXT:    buffer_store_b8 v35, off, s[0:3], 0 dlc
4526 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4527 ; GFX11-NEXT:    s_waitcnt vmcnt(11)
4528 ; GFX11-NEXT:    buffer_store_b8 v36, off, s[0:3], 0 dlc
4529 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4530 ; GFX11-NEXT:    s_waitcnt vmcnt(10)
4531 ; GFX11-NEXT:    buffer_store_b8 v37, off, s[0:3], 0 dlc
4532 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4533 ; GFX11-NEXT:    s_waitcnt vmcnt(9)
4534 ; GFX11-NEXT:    buffer_store_b8 v38, off, s[0:3], 0 dlc
4535 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4536 ; GFX11-NEXT:    s_waitcnt vmcnt(8)
4537 ; GFX11-NEXT:    buffer_store_b8 v39, off, s[0:3], 0 dlc
4538 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4539 ; GFX11-NEXT:    s_waitcnt vmcnt(7)
4540 ; GFX11-NEXT:    buffer_store_b8 v48, off, s[0:3], 0 dlc
4541 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4542 ; GFX11-NEXT:    s_waitcnt vmcnt(6)
4543 ; GFX11-NEXT:    buffer_store_b8 v49, off, s[0:3], 0 dlc
4544 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4545 ; GFX11-NEXT:    s_waitcnt vmcnt(5)
4546 ; GFX11-NEXT:    buffer_store_b8 v50, off, s[0:3], 0 dlc
4547 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4548 ; GFX11-NEXT:    s_waitcnt vmcnt(4)
4549 ; GFX11-NEXT:    buffer_store_b8 v51, off, s[0:3], 0 dlc
4550 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4551 ; GFX11-NEXT:    s_waitcnt vmcnt(3)
4552 ; GFX11-NEXT:    buffer_store_b8 v52, off, s[0:3], 0 dlc
4553 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4554 ; GFX11-NEXT:    s_waitcnt vmcnt(2)
4555 ; GFX11-NEXT:    buffer_store_b8 v53, off, s[0:3], 0 dlc
4556 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4557 ; GFX11-NEXT:    s_waitcnt vmcnt(1)
4558 ; GFX11-NEXT:    buffer_store_b8 v54, off, s[0:3], 0 dlc
4559 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4560 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
4561 ; GFX11-NEXT:    buffer_store_b8 v55, off, s[0:3], 0 dlc
4562 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
4563 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
4564   store volatile <32 x i32> %arg0, ptr addrspace(1) undef
4565   store volatile <16 x i8> %arg1, ptr addrspace(1) undef
4566   ret void
4569 attributes #0 = { nounwind }