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