1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 3
2 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -enable-var-scope -check-prefix=GFX9 %s
3 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 < %s | FileCheck -enable-var-scope -check-prefix=GFX11 %s
5 define void @void_func_i1_inreg(i1 inreg %arg0) #0 {
6 ; GFX9-LABEL: void_func_i1_inreg:
8 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9 ; GFX9-NEXT: s_and_b32 s4, s6, 1
10 ; GFX9-NEXT: v_mov_b32_e32 v0, s4
11 ; GFX9-NEXT: global_store_byte v[0:1], v0, off
12 ; GFX9-NEXT: s_waitcnt vmcnt(0)
13 ; GFX9-NEXT: s_setpc_b64 s[30:31]
15 ; GFX11-LABEL: void_func_i1_inreg:
17 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18 ; GFX11-NEXT: s_and_b32 s0, s0, 1
19 ; GFX11-NEXT: s_delay_alu instid0(SALU_CYCLE_1)
20 ; GFX11-NEXT: v_mov_b32_e32 v0, s0
21 ; GFX11-NEXT: global_store_b8 v[0:1], v0, off
22 ; GFX11-NEXT: s_setpc_b64 s[30:31]
23 store i1 %arg0, ptr addrspace(1) undef
27 define void @void_func_i8_inreg(i8 inreg %arg0) #0 {
28 ; GFX9-LABEL: void_func_i8_inreg:
30 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
32 ; GFX9-NEXT: global_store_byte v[0:1], v0, off
33 ; GFX9-NEXT: s_waitcnt vmcnt(0)
34 ; GFX9-NEXT: s_setpc_b64 s[30:31]
36 ; GFX11-LABEL: void_func_i8_inreg:
38 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39 ; GFX11-NEXT: v_mov_b32_e32 v0, s0
40 ; GFX11-NEXT: global_store_b8 v[0:1], v0, off
41 ; GFX11-NEXT: s_setpc_b64 s[30:31]
42 store i8 %arg0, ptr addrspace(1) undef
46 define void @void_func_i16_inreg(i16 inreg %arg0) #0 {
47 ; GFX9-LABEL: void_func_i16_inreg:
49 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
51 ; GFX9-NEXT: global_store_short v[0:1], v0, off
52 ; GFX9-NEXT: s_waitcnt vmcnt(0)
53 ; GFX9-NEXT: s_setpc_b64 s[30:31]
55 ; GFX11-LABEL: void_func_i16_inreg:
57 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
58 ; GFX11-NEXT: v_mov_b32_e32 v0, s0
59 ; GFX11-NEXT: global_store_b16 v[0:1], v0, off
60 ; GFX11-NEXT: s_setpc_b64 s[30:31]
61 store i16 %arg0, ptr addrspace(1) undef
65 define void @void_func_i32_inreg(i32 inreg %arg0) #0 {
66 ; GFX9-LABEL: void_func_i32_inreg:
68 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
69 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
70 ; GFX9-NEXT: global_store_dword v[0:1], v0, off
71 ; GFX9-NEXT: s_waitcnt vmcnt(0)
72 ; GFX9-NEXT: s_setpc_b64 s[30:31]
74 ; GFX11-LABEL: void_func_i32_inreg:
76 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
77 ; GFX11-NEXT: v_mov_b32_e32 v0, s0
78 ; GFX11-NEXT: global_store_b32 v[0:1], v0, off
79 ; GFX11-NEXT: s_setpc_b64 s[30:31]
80 store i32 %arg0, ptr addrspace(1) undef
84 define void @void_func_i64_inreg(i64 inreg %arg0) #0 {
85 ; GFX9-LABEL: void_func_i64_inreg:
87 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
88 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
89 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
90 ; GFX9-NEXT: global_store_dwordx2 v[0:1], v[0:1], off
91 ; GFX9-NEXT: s_waitcnt vmcnt(0)
92 ; GFX9-NEXT: s_setpc_b64 s[30:31]
94 ; GFX11-LABEL: void_func_i64_inreg:
96 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
97 ; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
98 ; GFX11-NEXT: global_store_b64 v[0:1], v[0:1], off
99 ; GFX11-NEXT: s_setpc_b64 s[30:31]
100 store i64 %arg0, ptr addrspace(1) undef
104 define void @void_func_f16_inreg(half inreg %arg0) #0 {
105 ; GFX9-LABEL: void_func_f16_inreg:
107 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
108 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
109 ; GFX9-NEXT: global_store_short v[0:1], v0, off
110 ; GFX9-NEXT: s_waitcnt vmcnt(0)
111 ; GFX9-NEXT: s_setpc_b64 s[30:31]
113 ; GFX11-LABEL: void_func_f16_inreg:
115 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
116 ; GFX11-NEXT: v_mov_b32_e32 v0, s0
117 ; GFX11-NEXT: global_store_b16 v[0:1], v0, off
118 ; GFX11-NEXT: s_setpc_b64 s[30:31]
119 store half %arg0, ptr addrspace(1) undef
123 define void @void_func_f32_inreg(float inreg %arg0) #0 {
124 ; GFX9-LABEL: void_func_f32_inreg:
126 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
127 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
128 ; GFX9-NEXT: global_store_dword v[0:1], v0, off
129 ; GFX9-NEXT: s_waitcnt vmcnt(0)
130 ; GFX9-NEXT: s_setpc_b64 s[30:31]
132 ; GFX11-LABEL: void_func_f32_inreg:
134 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
135 ; GFX11-NEXT: v_mov_b32_e32 v0, s0
136 ; GFX11-NEXT: global_store_b32 v[0:1], v0, off
137 ; GFX11-NEXT: s_setpc_b64 s[30:31]
138 store float %arg0, ptr addrspace(1) undef
142 define void @void_func_f64_inreg(double inreg %arg0) #0 {
143 ; GFX9-LABEL: void_func_f64_inreg:
145 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
146 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
147 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
148 ; GFX9-NEXT: global_store_dwordx2 v[0:1], v[0:1], off
149 ; GFX9-NEXT: s_waitcnt vmcnt(0)
150 ; GFX9-NEXT: s_setpc_b64 s[30:31]
152 ; GFX11-LABEL: void_func_f64_inreg:
154 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
155 ; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
156 ; GFX11-NEXT: global_store_b64 v[0:1], v[0:1], off
157 ; GFX11-NEXT: s_setpc_b64 s[30:31]
158 store double %arg0, ptr addrspace(1) undef
162 define void @void_func_v2i16_inreg(<2 x i16> inreg %arg0) #0 {
163 ; GFX9-LABEL: void_func_v2i16_inreg:
165 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
166 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
167 ; GFX9-NEXT: global_store_dword v[0:1], v0, off
168 ; GFX9-NEXT: s_waitcnt vmcnt(0)
169 ; GFX9-NEXT: s_setpc_b64 s[30:31]
171 ; GFX11-LABEL: void_func_v2i16_inreg:
173 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
174 ; GFX11-NEXT: v_mov_b32_e32 v0, s0
175 ; GFX11-NEXT: global_store_b32 v[0:1], v0, off
176 ; GFX11-NEXT: s_setpc_b64 s[30:31]
177 store <2 x i16> %arg0, ptr addrspace(1) undef
181 define void @void_func_v3i16_inreg(<3 x i16> inreg %arg0) #0 {
182 ; GFX9-LABEL: void_func_v3i16_inreg:
184 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
185 ; GFX9-NEXT: v_mov_b32_e32 v0, s7
186 ; GFX9-NEXT: global_store_short v[0:1], v0, off
187 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
188 ; GFX9-NEXT: global_store_dword v[0:1], v0, off
189 ; GFX9-NEXT: s_waitcnt vmcnt(0)
190 ; GFX9-NEXT: s_setpc_b64 s[30:31]
192 ; GFX11-LABEL: void_func_v3i16_inreg:
194 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
195 ; GFX11-NEXT: v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
196 ; GFX11-NEXT: s_clause 0x1
197 ; GFX11-NEXT: global_store_b16 v[0:1], v0, off
198 ; GFX11-NEXT: global_store_b32 v[0:1], v1, off
199 ; GFX11-NEXT: s_setpc_b64 s[30:31]
200 store <3 x i16> %arg0, ptr addrspace(1) undef
204 define void @void_func_v4i16_inreg(<4 x i16> inreg %arg0) #0 {
205 ; GFX89-LABEL: void_func_v4i16_inreg:
207 ; GFX89-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
208 ; GFX89-NEXT: v_mov_b32_e32 v0, s4
209 ; GFX89-NEXT: v_mov_b32_e32 v1, s5
210 ; GFX89-NEXT: global_store_dwordx2 v[0:1], v[0:1], off
211 ; GFX89-NEXT: s_waitcnt vmcnt(0)
212 ; GFX89-NEXT: s_setpc_b64 s[30:31]
214 ; GFX9-LABEL: void_func_v4i16_inreg:
216 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
217 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
218 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
219 ; GFX9-NEXT: global_store_dwordx2 v[0:1], v[0:1], off
220 ; GFX9-NEXT: s_waitcnt vmcnt(0)
221 ; GFX9-NEXT: s_setpc_b64 s[30:31]
223 ; GFX11-LABEL: void_func_v4i16_inreg:
225 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
226 ; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
227 ; GFX11-NEXT: global_store_b64 v[0:1], v[0:1], off
228 ; GFX11-NEXT: s_setpc_b64 s[30:31]
229 store <4 x i16> %arg0, ptr addrspace(1) undef
233 define void @void_func_v5i16_inreg(<5 x i16> inreg %arg0) #0 {
234 ; GFX9-LABEL: void_func_v5i16_inreg:
236 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
237 ; GFX9-NEXT: v_mov_b32_e32 v0, s16
238 ; GFX9-NEXT: global_store_short v[0:1], v0, off
239 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
240 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
241 ; GFX9-NEXT: global_store_dwordx2 v[0:1], v[0:1], off
242 ; GFX9-NEXT: s_waitcnt vmcnt(0)
243 ; GFX9-NEXT: s_setpc_b64 s[30:31]
245 ; GFX11-LABEL: void_func_v5i16_inreg:
247 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
248 ; GFX11-NEXT: v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v1, s1
249 ; GFX11-NEXT: v_mov_b32_e32 v0, s0
250 ; GFX11-NEXT: s_clause 0x1
251 ; GFX11-NEXT: global_store_b16 v[0:1], v2, off
252 ; GFX11-NEXT: global_store_b64 v[0:1], v[0:1], off
253 ; GFX11-NEXT: s_setpc_b64 s[30:31]
254 store <5 x i16> %arg0, ptr addrspace(1) undef
258 define void @void_func_v8i16_inreg(<8 x i16> inreg %arg0) #0 {
259 ; GFX9-LABEL: void_func_v8i16_inreg:
261 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
262 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
263 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
264 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
265 ; GFX9-NEXT: v_mov_b32_e32 v3, s17
266 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
267 ; GFX9-NEXT: s_waitcnt vmcnt(0)
268 ; GFX9-NEXT: s_setpc_b64 s[30:31]
270 ; GFX11-LABEL: void_func_v8i16_inreg:
272 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
273 ; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
274 ; GFX11-NEXT: v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
275 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off
276 ; GFX11-NEXT: s_setpc_b64 s[30:31]
277 store <8 x i16> %arg0, ptr addrspace(1) undef
281 define void @void_func_v2i32_inreg(<2 x i32> inreg %arg0) #0 {
282 ; GFX9-LABEL: void_func_v2i32_inreg:
284 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
285 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
286 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
287 ; GFX9-NEXT: global_store_dwordx2 v[0:1], v[0:1], off
288 ; GFX9-NEXT: s_waitcnt vmcnt(0)
289 ; GFX9-NEXT: s_setpc_b64 s[30:31]
291 ; GFX11-LABEL: void_func_v2i32_inreg:
293 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
294 ; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
295 ; GFX11-NEXT: global_store_b64 v[0:1], v[0:1], off
296 ; GFX11-NEXT: s_setpc_b64 s[30:31]
297 store <2 x i32> %arg0, ptr addrspace(1) undef
301 define void @void_func_v3i32_inreg(<3 x i32> inreg %arg0) #0 {
302 ; GFX9-LABEL: void_func_v3i32_inreg:
304 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
305 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
306 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
307 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
308 ; GFX9-NEXT: global_store_dwordx3 v[0:1], v[0:2], off
309 ; GFX9-NEXT: s_waitcnt vmcnt(0)
310 ; GFX9-NEXT: s_setpc_b64 s[30:31]
312 ; GFX11-LABEL: void_func_v3i32_inreg:
314 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
315 ; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
316 ; GFX11-NEXT: v_mov_b32_e32 v2, s2
317 ; GFX11-NEXT: global_store_b96 v[0:1], v[0:2], off
318 ; GFX11-NEXT: s_setpc_b64 s[30:31]
319 store <3 x i32> %arg0, ptr addrspace(1) undef
323 define void @void_func_v4i32_inreg(<4 x i32> inreg %arg0) #0 {
324 ; GFX9-LABEL: void_func_v4i32_inreg:
326 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
327 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
328 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
329 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
330 ; GFX9-NEXT: v_mov_b32_e32 v3, s17
331 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
332 ; GFX9-NEXT: s_waitcnt vmcnt(0)
333 ; GFX9-NEXT: s_setpc_b64 s[30:31]
335 ; GFX11-LABEL: void_func_v4i32_inreg:
337 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
338 ; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
339 ; GFX11-NEXT: v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
340 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off
341 ; GFX11-NEXT: s_setpc_b64 s[30:31]
342 store <4 x i32> %arg0, ptr addrspace(1) undef
346 define void @void_func_v5i32_inreg(<5 x i32> inreg %arg0) #0 {
347 ; GFX9-LABEL: void_func_v5i32_inreg:
349 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
350 ; GFX9-NEXT: v_mov_b32_e32 v0, s18
351 ; GFX9-NEXT: global_store_dword v[0:1], v0, off
352 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
353 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
354 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
355 ; GFX9-NEXT: v_mov_b32_e32 v3, s17
356 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
357 ; GFX9-NEXT: s_waitcnt vmcnt(0)
358 ; GFX9-NEXT: s_setpc_b64 s[30:31]
360 ; GFX11-LABEL: void_func_v5i32_inreg:
362 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
363 ; GFX11-NEXT: v_dual_mov_b32 v4, s6 :: v_dual_mov_b32 v1, s1
364 ; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v3, s3
365 ; GFX11-NEXT: v_mov_b32_e32 v2, s2
366 ; GFX11-NEXT: s_clause 0x1
367 ; GFX11-NEXT: global_store_b32 v[0:1], v4, off
368 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off
369 ; GFX11-NEXT: s_setpc_b64 s[30:31]
370 store <5 x i32> %arg0, ptr addrspace(1) undef
374 define void @void_func_v8i32_inreg(<8 x i32> inreg %arg0) #0 {
375 ; GFX9-LABEL: void_func_v8i32_inreg:
377 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
378 ; GFX9-NEXT: v_mov_b32_e32 v0, s18
379 ; GFX9-NEXT: v_mov_b32_e32 v1, s19
380 ; GFX9-NEXT: v_mov_b32_e32 v2, s20
381 ; GFX9-NEXT: v_mov_b32_e32 v3, s21
382 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
384 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
385 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
386 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
387 ; GFX9-NEXT: v_mov_b32_e32 v3, s17
388 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
389 ; GFX9-NEXT: s_waitcnt vmcnt(0)
390 ; GFX9-NEXT: s_setpc_b64 s[30:31]
392 ; GFX11-LABEL: void_func_v8i32_inreg:
394 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
395 ; GFX11-NEXT: v_dual_mov_b32 v0, s6 :: v_dual_mov_b32 v1, s7
396 ; GFX11-NEXT: v_dual_mov_b32 v2, s16 :: v_dual_mov_b32 v3, s17
397 ; GFX11-NEXT: v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v5, s1
398 ; GFX11-NEXT: v_dual_mov_b32 v6, s2 :: v_dual_mov_b32 v7, s3
399 ; GFX11-NEXT: s_clause 0x1
400 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off
401 ; GFX11-NEXT: global_store_b128 v[0:1], v[4:7], off
402 ; GFX11-NEXT: s_setpc_b64 s[30:31]
403 store <8 x i32> %arg0, ptr addrspace(1) undef
407 define void @void_func_v16i32_inreg(<16 x i32> inreg %arg0) #0 {
408 ; CIGFX89-LABEL: void_func_v16i32_inreg:
410 ; CIGFX89-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
411 ; CIGFX89-NEXT: v_mov_b32_e32 v0, s16
412 ; CIGFX89-NEXT: v_mov_b32_e32 v1, s17
413 ; CIGFX89-NEXT: v_mov_b32_e32 v2, s18
414 ; CIGFX89-NEXT: v_mov_b32_e32 v3, s19
415 ; CIGFX89-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
416 ; CIGFX89-NEXT: s_nop 0
417 ; CIGFX89-NEXT: v_mov_b32_e32 v0, s12
418 ; CIGFX89-NEXT: v_mov_b32_e32 v1, s13
419 ; CIGFX89-NEXT: v_mov_b32_e32 v2, s14
420 ; CIGFX89-NEXT: v_mov_b32_e32 v3, s15
421 ; CIGFX89-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
422 ; CIGFX89-NEXT: s_nop 0
423 ; CIGFX89-NEXT: v_mov_b32_e32 v0, s8
424 ; CIGFX89-NEXT: v_mov_b32_e32 v1, s9
425 ; CIGFX89-NEXT: v_mov_b32_e32 v2, s10
426 ; CIGFX89-NEXT: v_mov_b32_e32 v3, s11
427 ; CIGFX89-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
428 ; CIGFX89-NEXT: s_nop 0
429 ; CIGFX89-NEXT: v_mov_b32_e32 v0, s4
430 ; CIGFX89-NEXT: v_mov_b32_e32 v1, s5
431 ; CIGFX89-NEXT: v_mov_b32_e32 v2, s6
432 ; CIGFX89-NEXT: v_mov_b32_e32 v3, s7
433 ; CIGFX89-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
434 ; CIGFX89-NEXT: s_waitcnt vmcnt(0)
435 ; CIGFX89-NEXT: s_setpc_b64 s[30:31]
437 ; GFX9-LABEL: void_func_v16i32_inreg:
439 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
440 ; GFX9-NEXT: v_mov_b32_e32 v0, s26
441 ; GFX9-NEXT: v_mov_b32_e32 v1, s27
442 ; GFX9-NEXT: v_mov_b32_e32 v2, s28
443 ; GFX9-NEXT: v_mov_b32_e32 v3, s29
444 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
446 ; GFX9-NEXT: v_mov_b32_e32 v0, s22
447 ; GFX9-NEXT: v_mov_b32_e32 v1, s23
448 ; GFX9-NEXT: v_mov_b32_e32 v2, s24
449 ; GFX9-NEXT: v_mov_b32_e32 v3, s25
450 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
452 ; GFX9-NEXT: v_mov_b32_e32 v0, s18
453 ; GFX9-NEXT: v_mov_b32_e32 v1, s19
454 ; GFX9-NEXT: v_mov_b32_e32 v2, s20
455 ; GFX9-NEXT: v_mov_b32_e32 v3, s21
456 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
458 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
459 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
460 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
461 ; GFX9-NEXT: v_mov_b32_e32 v3, s17
462 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
463 ; GFX9-NEXT: s_waitcnt vmcnt(0)
464 ; GFX9-NEXT: s_setpc_b64 s[30:31]
466 ; GFX11-LABEL: void_func_v16i32_inreg:
468 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
469 ; GFX11-NEXT: v_dual_mov_b32 v0, s22 :: v_dual_mov_b32 v1, s23
470 ; GFX11-NEXT: v_dual_mov_b32 v2, s24 :: v_dual_mov_b32 v3, s25
471 ; GFX11-NEXT: v_dual_mov_b32 v4, s18 :: v_dual_mov_b32 v5, s19
472 ; GFX11-NEXT: v_dual_mov_b32 v6, s20 :: v_dual_mov_b32 v7, s21
473 ; GFX11-NEXT: v_dual_mov_b32 v8, s6 :: v_dual_mov_b32 v9, s7
474 ; GFX11-NEXT: v_dual_mov_b32 v10, s16 :: v_dual_mov_b32 v11, s17
475 ; GFX11-NEXT: v_dual_mov_b32 v12, s0 :: v_dual_mov_b32 v13, s1
476 ; GFX11-NEXT: v_dual_mov_b32 v14, s2 :: v_dual_mov_b32 v15, s3
477 ; GFX11-NEXT: s_clause 0x3
478 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off
479 ; GFX11-NEXT: global_store_b128 v[0:1], v[4:7], off
480 ; GFX11-NEXT: global_store_b128 v[0:1], v[8:11], off
481 ; GFX11-NEXT: global_store_b128 v[0:1], v[12:15], off
482 ; GFX11-NEXT: s_setpc_b64 s[30:31]
483 store <16 x i32> %arg0, ptr addrspace(1) undef
487 define void @void_func_v32i32_inreg(<32 x i32> inreg %arg0) #0 {
488 ; GFX9-LABEL: void_func_v32i32_inreg:
490 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
491 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[12:15], off
492 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[8:11], off
493 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[4:7], off
494 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
496 ; GFX9-NEXT: v_mov_b32_e32 v0, s26
497 ; GFX9-NEXT: v_mov_b32_e32 v1, s27
498 ; GFX9-NEXT: v_mov_b32_e32 v2, s28
499 ; GFX9-NEXT: v_mov_b32_e32 v3, s29
500 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
502 ; GFX9-NEXT: v_mov_b32_e32 v0, s22
503 ; GFX9-NEXT: v_mov_b32_e32 v1, s23
504 ; GFX9-NEXT: v_mov_b32_e32 v2, s24
505 ; GFX9-NEXT: v_mov_b32_e32 v3, s25
506 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
508 ; GFX9-NEXT: v_mov_b32_e32 v0, s18
509 ; GFX9-NEXT: v_mov_b32_e32 v1, s19
510 ; GFX9-NEXT: v_mov_b32_e32 v2, s20
511 ; GFX9-NEXT: v_mov_b32_e32 v3, s21
512 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
514 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
515 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
516 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
517 ; GFX9-NEXT: v_mov_b32_e32 v3, s17
518 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
519 ; GFX9-NEXT: s_waitcnt vmcnt(0)
520 ; GFX9-NEXT: s_setpc_b64 s[30:31]
522 ; GFX11-LABEL: void_func_v32i32_inreg:
524 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
525 ; GFX11-NEXT: s_clause 0x2
526 ; GFX11-NEXT: global_store_b128 v[0:1], v[8:11], off
527 ; GFX11-NEXT: global_store_b128 v[0:1], v[4:7], off
528 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off
529 ; GFX11-NEXT: v_dual_mov_b32 v0, s26 :: v_dual_mov_b32 v1, s27
530 ; GFX11-NEXT: v_dual_mov_b32 v2, s28 :: v_dual_mov_b32 v3, s29
531 ; GFX11-NEXT: v_dual_mov_b32 v4, s22 :: v_dual_mov_b32 v5, s23
532 ; GFX11-NEXT: v_dual_mov_b32 v6, s24 :: v_dual_mov_b32 v7, s25
533 ; GFX11-NEXT: v_dual_mov_b32 v8, s18 :: v_dual_mov_b32 v9, s19
534 ; GFX11-NEXT: v_dual_mov_b32 v10, s20 :: v_dual_mov_b32 v11, s21
535 ; GFX11-NEXT: v_dual_mov_b32 v12, s6 :: v_dual_mov_b32 v13, s7
536 ; GFX11-NEXT: v_dual_mov_b32 v14, s16 :: v_dual_mov_b32 v15, s17
537 ; GFX11-NEXT: v_dual_mov_b32 v16, s0 :: v_dual_mov_b32 v17, s1
538 ; GFX11-NEXT: v_dual_mov_b32 v18, s2 :: v_dual_mov_b32 v19, s3
539 ; GFX11-NEXT: s_clause 0x4
540 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off
541 ; GFX11-NEXT: global_store_b128 v[0:1], v[4:7], off
542 ; GFX11-NEXT: global_store_b128 v[0:1], v[8:11], off
543 ; GFX11-NEXT: global_store_b128 v[0:1], v[12:15], off
544 ; GFX11-NEXT: global_store_b128 v[0:1], v[16:19], off
545 ; GFX11-NEXT: s_setpc_b64 s[30:31]
546 store <32 x i32> %arg0, ptr addrspace(1) undef
550 define void @void_func_v2i64_inreg(<2 x i64> inreg %arg0) #0 {
551 ; GFX9-LABEL: void_func_v2i64_inreg:
553 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
554 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
555 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
556 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
557 ; GFX9-NEXT: v_mov_b32_e32 v3, s17
558 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
559 ; GFX9-NEXT: s_waitcnt vmcnt(0)
560 ; GFX9-NEXT: s_setpc_b64 s[30:31]
562 ; GFX11-LABEL: void_func_v2i64_inreg:
564 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
565 ; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
566 ; GFX11-NEXT: v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
567 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off
568 ; GFX11-NEXT: s_setpc_b64 s[30:31]
569 store <2 x i64> %arg0, ptr addrspace(1) undef
573 define void @void_func_v3i64_inreg(<3 x i64> inreg %arg0) #0 {
574 ; GFX9-LABEL: void_func_v3i64_inreg:
576 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
577 ; GFX9-NEXT: v_mov_b32_e32 v0, s18
578 ; GFX9-NEXT: v_mov_b32_e32 v1, s19
579 ; GFX9-NEXT: global_store_dwordx2 v[0:1], v[0:1], off
580 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
581 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
582 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
583 ; GFX9-NEXT: v_mov_b32_e32 v3, s17
584 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
585 ; GFX9-NEXT: s_waitcnt vmcnt(0)
586 ; GFX9-NEXT: s_setpc_b64 s[30:31]
588 ; GFX11-LABEL: void_func_v3i64_inreg:
590 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
591 ; GFX11-NEXT: v_dual_mov_b32 v4, s6 :: v_dual_mov_b32 v5, s7
592 ; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
593 ; GFX11-NEXT: v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
594 ; GFX11-NEXT: s_clause 0x1
595 ; GFX11-NEXT: global_store_b64 v[0:1], v[4:5], off
596 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off
597 ; GFX11-NEXT: s_setpc_b64 s[30:31]
598 store <3 x i64> %arg0, ptr addrspace(1) undef
602 define void @void_func_v4i64_inreg(<4 x i64> inreg %arg0) #0 {
603 ; GFX9-LABEL: void_func_v4i64_inreg:
605 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
606 ; GFX9-NEXT: v_mov_b32_e32 v0, s18
607 ; GFX9-NEXT: v_mov_b32_e32 v1, s19
608 ; GFX9-NEXT: v_mov_b32_e32 v2, s20
609 ; GFX9-NEXT: v_mov_b32_e32 v3, s21
610 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
612 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
613 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
614 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
615 ; GFX9-NEXT: v_mov_b32_e32 v3, s17
616 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
617 ; GFX9-NEXT: s_waitcnt vmcnt(0)
618 ; GFX9-NEXT: s_setpc_b64 s[30:31]
620 ; GFX11-LABEL: void_func_v4i64_inreg:
622 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
623 ; GFX11-NEXT: v_dual_mov_b32 v0, s6 :: v_dual_mov_b32 v1, s7
624 ; GFX11-NEXT: v_dual_mov_b32 v2, s16 :: v_dual_mov_b32 v3, s17
625 ; GFX11-NEXT: v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v5, s1
626 ; GFX11-NEXT: v_dual_mov_b32 v6, s2 :: v_dual_mov_b32 v7, s3
627 ; GFX11-NEXT: s_clause 0x1
628 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off
629 ; GFX11-NEXT: global_store_b128 v[0:1], v[4:7], off
630 ; GFX11-NEXT: s_setpc_b64 s[30:31]
631 store <4 x i64> %arg0, ptr addrspace(1) undef
635 define void @void_func_v5i64_inreg(<5 x i64> inreg %arg0) #0 {
636 ; GFX9-LABEL: void_func_v5i64_inreg:
638 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
639 ; GFX9-NEXT: v_mov_b32_e32 v0, s18
640 ; GFX9-NEXT: v_mov_b32_e32 v1, s19
641 ; GFX9-NEXT: v_mov_b32_e32 v2, s20
642 ; GFX9-NEXT: v_mov_b32_e32 v3, s21
643 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
645 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
646 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
647 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
648 ; GFX9-NEXT: v_mov_b32_e32 v3, s17
649 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
651 ; GFX9-NEXT: v_mov_b32_e32 v0, s22
652 ; GFX9-NEXT: v_mov_b32_e32 v1, s23
653 ; GFX9-NEXT: global_store_dwordx2 v[0:1], v[0:1], off
654 ; GFX9-NEXT: s_waitcnt vmcnt(0)
655 ; GFX9-NEXT: s_setpc_b64 s[30:31]
657 ; GFX11-LABEL: void_func_v5i64_inreg:
659 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
660 ; GFX11-NEXT: v_dual_mov_b32 v0, s6 :: v_dual_mov_b32 v1, s7
661 ; GFX11-NEXT: v_dual_mov_b32 v2, s16 :: v_dual_mov_b32 v3, s17
662 ; GFX11-NEXT: v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v5, s1
663 ; GFX11-NEXT: v_dual_mov_b32 v6, s2 :: v_dual_mov_b32 v7, s3
664 ; GFX11-NEXT: v_dual_mov_b32 v8, s18 :: v_dual_mov_b32 v9, s19
665 ; GFX11-NEXT: s_clause 0x2
666 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off
667 ; GFX11-NEXT: global_store_b128 v[0:1], v[4:7], off
668 ; GFX11-NEXT: global_store_b64 v[0:1], v[8:9], off
669 ; GFX11-NEXT: s_setpc_b64 s[30:31]
670 store <5 x i64> %arg0, ptr addrspace(1) undef
674 define void @void_func_v8i64_inreg(<8 x i64> inreg %arg0) #0 {
675 ; GFX9-LABEL: void_func_v8i64_inreg:
677 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
678 ; GFX9-NEXT: v_mov_b32_e32 v0, s26
679 ; GFX9-NEXT: v_mov_b32_e32 v1, s27
680 ; GFX9-NEXT: v_mov_b32_e32 v2, s28
681 ; GFX9-NEXT: v_mov_b32_e32 v3, s29
682 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
684 ; GFX9-NEXT: v_mov_b32_e32 v0, s22
685 ; GFX9-NEXT: v_mov_b32_e32 v1, s23
686 ; GFX9-NEXT: v_mov_b32_e32 v2, s24
687 ; GFX9-NEXT: v_mov_b32_e32 v3, s25
688 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
690 ; GFX9-NEXT: v_mov_b32_e32 v0, s18
691 ; GFX9-NEXT: v_mov_b32_e32 v1, s19
692 ; GFX9-NEXT: v_mov_b32_e32 v2, s20
693 ; GFX9-NEXT: v_mov_b32_e32 v3, s21
694 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
696 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
697 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
698 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
699 ; GFX9-NEXT: v_mov_b32_e32 v3, s17
700 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
701 ; GFX9-NEXT: s_waitcnt vmcnt(0)
702 ; GFX9-NEXT: s_setpc_b64 s[30:31]
704 ; GFX11-LABEL: void_func_v8i64_inreg:
706 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
707 ; GFX11-NEXT: v_dual_mov_b32 v0, s22 :: v_dual_mov_b32 v1, s23
708 ; GFX11-NEXT: v_dual_mov_b32 v2, s24 :: v_dual_mov_b32 v3, s25
709 ; GFX11-NEXT: v_dual_mov_b32 v4, s18 :: v_dual_mov_b32 v5, s19
710 ; GFX11-NEXT: v_dual_mov_b32 v6, s20 :: v_dual_mov_b32 v7, s21
711 ; GFX11-NEXT: v_dual_mov_b32 v8, s6 :: v_dual_mov_b32 v9, s7
712 ; GFX11-NEXT: v_dual_mov_b32 v10, s16 :: v_dual_mov_b32 v11, s17
713 ; GFX11-NEXT: v_dual_mov_b32 v12, s0 :: v_dual_mov_b32 v13, s1
714 ; GFX11-NEXT: v_dual_mov_b32 v14, s2 :: v_dual_mov_b32 v15, s3
715 ; GFX11-NEXT: s_clause 0x3
716 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off
717 ; GFX11-NEXT: global_store_b128 v[0:1], v[4:7], off
718 ; GFX11-NEXT: global_store_b128 v[0:1], v[8:11], off
719 ; GFX11-NEXT: global_store_b128 v[0:1], v[12:15], off
720 ; GFX11-NEXT: s_setpc_b64 s[30:31]
721 store <8 x i64> %arg0, ptr addrspace(1) undef
725 define void @void_func_v16i64_inreg(<16 x i64> inreg %arg0) #0 {
726 ; GFX9-LABEL: void_func_v16i64_inreg:
728 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
729 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[12:15], off
730 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[8:11], off
731 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[4:7], off
732 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
734 ; GFX9-NEXT: v_mov_b32_e32 v0, s26
735 ; GFX9-NEXT: v_mov_b32_e32 v1, s27
736 ; GFX9-NEXT: v_mov_b32_e32 v2, s28
737 ; GFX9-NEXT: v_mov_b32_e32 v3, s29
738 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
740 ; GFX9-NEXT: v_mov_b32_e32 v0, s22
741 ; GFX9-NEXT: v_mov_b32_e32 v1, s23
742 ; GFX9-NEXT: v_mov_b32_e32 v2, s24
743 ; GFX9-NEXT: v_mov_b32_e32 v3, s25
744 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
746 ; GFX9-NEXT: v_mov_b32_e32 v0, s18
747 ; GFX9-NEXT: v_mov_b32_e32 v1, s19
748 ; GFX9-NEXT: v_mov_b32_e32 v2, s20
749 ; GFX9-NEXT: v_mov_b32_e32 v3, s21
750 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
752 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
753 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
754 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
755 ; GFX9-NEXT: v_mov_b32_e32 v3, s17
756 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
757 ; GFX9-NEXT: s_waitcnt vmcnt(0)
758 ; GFX9-NEXT: s_setpc_b64 s[30:31]
760 ; GFX11-LABEL: void_func_v16i64_inreg:
762 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
763 ; GFX11-NEXT: s_clause 0x2
764 ; GFX11-NEXT: global_store_b128 v[0:1], v[8:11], off
765 ; GFX11-NEXT: global_store_b128 v[0:1], v[4:7], off
766 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off
767 ; GFX11-NEXT: v_dual_mov_b32 v0, s26 :: v_dual_mov_b32 v1, s27
768 ; GFX11-NEXT: v_dual_mov_b32 v2, s28 :: v_dual_mov_b32 v3, s29
769 ; GFX11-NEXT: v_dual_mov_b32 v4, s22 :: v_dual_mov_b32 v5, s23
770 ; GFX11-NEXT: v_dual_mov_b32 v6, s24 :: v_dual_mov_b32 v7, s25
771 ; GFX11-NEXT: v_dual_mov_b32 v8, s18 :: v_dual_mov_b32 v9, s19
772 ; GFX11-NEXT: v_dual_mov_b32 v10, s20 :: v_dual_mov_b32 v11, s21
773 ; GFX11-NEXT: v_dual_mov_b32 v12, s6 :: v_dual_mov_b32 v13, s7
774 ; GFX11-NEXT: v_dual_mov_b32 v14, s16 :: v_dual_mov_b32 v15, s17
775 ; GFX11-NEXT: v_dual_mov_b32 v16, s0 :: v_dual_mov_b32 v17, s1
776 ; GFX11-NEXT: v_dual_mov_b32 v18, s2 :: v_dual_mov_b32 v19, s3
777 ; GFX11-NEXT: s_clause 0x4
778 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off
779 ; GFX11-NEXT: global_store_b128 v[0:1], v[4:7], off
780 ; GFX11-NEXT: global_store_b128 v[0:1], v[8:11], off
781 ; GFX11-NEXT: global_store_b128 v[0:1], v[12:15], off
782 ; GFX11-NEXT: global_store_b128 v[0:1], v[16:19], off
783 ; GFX11-NEXT: s_setpc_b64 s[30:31]
784 store <16 x i64> %arg0, ptr addrspace(1) undef
788 define void @void_func_v2f16_inreg(<2 x half> inreg %arg0) #0 {
789 ; GFX9-LABEL: void_func_v2f16_inreg:
791 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
792 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
793 ; GFX9-NEXT: global_store_dword v[0:1], v0, off
794 ; GFX9-NEXT: s_waitcnt vmcnt(0)
795 ; GFX9-NEXT: s_setpc_b64 s[30:31]
797 ; GFX11-LABEL: void_func_v2f16_inreg:
799 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
800 ; GFX11-NEXT: v_mov_b32_e32 v0, s0
801 ; GFX11-NEXT: global_store_b32 v[0:1], v0, off
802 ; GFX11-NEXT: s_setpc_b64 s[30:31]
803 store <2 x half> %arg0, ptr addrspace(1) undef
807 define void @void_func_v3f16_inreg(<3 x half> inreg %arg0) #0 {
808 ; GFX9-LABEL: void_func_v3f16_inreg:
810 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
811 ; GFX9-NEXT: v_mov_b32_e32 v0, s7
812 ; GFX9-NEXT: global_store_short v[0:1], v0, off
813 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
814 ; GFX9-NEXT: global_store_dword v[0:1], v0, off
815 ; GFX9-NEXT: s_waitcnt vmcnt(0)
816 ; GFX9-NEXT: s_setpc_b64 s[30:31]
818 ; GFX11-LABEL: void_func_v3f16_inreg:
820 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
821 ; GFX11-NEXT: v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
822 ; GFX11-NEXT: s_clause 0x1
823 ; GFX11-NEXT: global_store_b16 v[0:1], v0, off
824 ; GFX11-NEXT: global_store_b32 v[0:1], v1, off
825 ; GFX11-NEXT: s_setpc_b64 s[30:31]
826 store <3 x half> %arg0, ptr addrspace(1) undef
830 define void @void_func_v4f16_inreg(<4 x half> inreg %arg0) #0 {
831 ; GFX9-LABEL: void_func_v4f16_inreg:
833 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
834 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
835 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
836 ; GFX9-NEXT: global_store_dwordx2 v[0:1], v[0:1], off
837 ; GFX9-NEXT: s_waitcnt vmcnt(0)
838 ; GFX9-NEXT: s_setpc_b64 s[30:31]
840 ; GFX11-LABEL: void_func_v4f16_inreg:
842 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
843 ; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
844 ; GFX11-NEXT: global_store_b64 v[0:1], v[0:1], off
845 ; GFX11-NEXT: s_setpc_b64 s[30:31]
846 store <4 x half> %arg0, ptr addrspace(1) undef
850 define void @void_func_v8f16_inreg(<8 x half> inreg %arg0) #0 {
851 ; GFX9-LABEL: void_func_v8f16_inreg:
853 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
854 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
855 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
856 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
857 ; GFX9-NEXT: v_mov_b32_e32 v3, s17
858 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
859 ; GFX9-NEXT: s_waitcnt vmcnt(0)
860 ; GFX9-NEXT: s_setpc_b64 s[30:31]
862 ; GFX11-LABEL: void_func_v8f16_inreg:
864 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
865 ; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
866 ; GFX11-NEXT: v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
867 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off
868 ; GFX11-NEXT: s_setpc_b64 s[30:31]
869 store <8 x half> %arg0, ptr addrspace(1) undef
873 define void @void_func_v16f16_inreg(<16 x half> inreg %arg0) #0 {
874 ; GFX9-LABEL: void_func_v16f16_inreg:
876 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
877 ; GFX9-NEXT: v_mov_b32_e32 v0, s18
878 ; GFX9-NEXT: v_mov_b32_e32 v1, s19
879 ; GFX9-NEXT: v_mov_b32_e32 v2, s20
880 ; GFX9-NEXT: v_mov_b32_e32 v3, s21
881 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
883 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
884 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
885 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
886 ; GFX9-NEXT: v_mov_b32_e32 v3, s17
887 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
888 ; GFX9-NEXT: s_waitcnt vmcnt(0)
889 ; GFX9-NEXT: s_setpc_b64 s[30:31]
891 ; GFX11-LABEL: void_func_v16f16_inreg:
893 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
894 ; GFX11-NEXT: v_dual_mov_b32 v0, s6 :: v_dual_mov_b32 v1, s7
895 ; GFX11-NEXT: v_dual_mov_b32 v2, s16 :: v_dual_mov_b32 v3, s17
896 ; GFX11-NEXT: v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v5, s1
897 ; GFX11-NEXT: v_dual_mov_b32 v6, s2 :: v_dual_mov_b32 v7, s3
898 ; GFX11-NEXT: s_clause 0x1
899 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off
900 ; GFX11-NEXT: global_store_b128 v[0:1], v[4:7], off
901 ; GFX11-NEXT: s_setpc_b64 s[30:31]
902 store <16 x half> %arg0, ptr addrspace(1) undef
906 define void @void_func_v2f32_inreg(<2 x float> inreg %arg0) #0 {
907 ; GFX9-LABEL: void_func_v2f32_inreg:
909 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
910 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
911 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
912 ; GFX9-NEXT: global_store_dwordx2 v[0:1], v[0:1], off
913 ; GFX9-NEXT: s_waitcnt vmcnt(0)
914 ; GFX9-NEXT: s_setpc_b64 s[30:31]
916 ; GFX11-LABEL: void_func_v2f32_inreg:
918 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
919 ; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
920 ; GFX11-NEXT: global_store_b64 v[0:1], v[0:1], off
921 ; GFX11-NEXT: s_setpc_b64 s[30:31]
922 store <2 x float> %arg0, ptr addrspace(1) undef
926 define void @void_func_v3f32_inreg(<3 x float> inreg %arg0) #0 {
927 ; GFX9-LABEL: void_func_v3f32_inreg:
929 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
930 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
931 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
932 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
933 ; GFX9-NEXT: global_store_dwordx3 v[0:1], v[0:2], off
934 ; GFX9-NEXT: s_waitcnt vmcnt(0)
935 ; GFX9-NEXT: s_setpc_b64 s[30:31]
937 ; GFX11-LABEL: void_func_v3f32_inreg:
939 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
940 ; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
941 ; GFX11-NEXT: v_mov_b32_e32 v2, s2
942 ; GFX11-NEXT: global_store_b96 v[0:1], v[0:2], off
943 ; GFX11-NEXT: s_setpc_b64 s[30:31]
944 store <3 x float> %arg0, ptr addrspace(1) undef
948 define void @void_func_v4f32_inreg(<4 x float> inreg %arg0) #0 {
949 ; GFX9-LABEL: void_func_v4f32_inreg:
951 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
952 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
953 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
954 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
955 ; GFX9-NEXT: v_mov_b32_e32 v3, s17
956 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
957 ; GFX9-NEXT: s_waitcnt vmcnt(0)
958 ; GFX9-NEXT: s_setpc_b64 s[30:31]
960 ; GFX11-LABEL: void_func_v4f32_inreg:
962 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
963 ; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
964 ; GFX11-NEXT: v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
965 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off
966 ; GFX11-NEXT: s_setpc_b64 s[30:31]
967 store <4 x float> %arg0, ptr addrspace(1) undef
971 define void @void_func_v8f32_inreg(<8 x float> inreg %arg0) #0 {
972 ; GFX9-LABEL: void_func_v8f32_inreg:
974 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
975 ; GFX9-NEXT: v_mov_b32_e32 v0, s18
976 ; GFX9-NEXT: v_mov_b32_e32 v1, s19
977 ; GFX9-NEXT: v_mov_b32_e32 v2, s20
978 ; GFX9-NEXT: v_mov_b32_e32 v3, s21
979 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
981 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
982 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
983 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
984 ; GFX9-NEXT: v_mov_b32_e32 v3, s17
985 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
986 ; GFX9-NEXT: s_waitcnt vmcnt(0)
987 ; GFX9-NEXT: s_setpc_b64 s[30:31]
989 ; GFX11-LABEL: void_func_v8f32_inreg:
991 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
992 ; GFX11-NEXT: v_dual_mov_b32 v0, s6 :: v_dual_mov_b32 v1, s7
993 ; GFX11-NEXT: v_dual_mov_b32 v2, s16 :: v_dual_mov_b32 v3, s17
994 ; GFX11-NEXT: v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v5, s1
995 ; GFX11-NEXT: v_dual_mov_b32 v6, s2 :: v_dual_mov_b32 v7, s3
996 ; GFX11-NEXT: s_clause 0x1
997 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off
998 ; GFX11-NEXT: global_store_b128 v[0:1], v[4:7], off
999 ; GFX11-NEXT: s_setpc_b64 s[30:31]
1000 store <8 x float> %arg0, ptr addrspace(1) undef
1004 define void @void_func_v16f32_inreg(<16 x float> inreg %arg0) #0 {
1005 ; GFX9-LABEL: void_func_v16f32_inreg:
1007 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1008 ; GFX9-NEXT: v_mov_b32_e32 v0, s26
1009 ; GFX9-NEXT: v_mov_b32_e32 v1, s27
1010 ; GFX9-NEXT: v_mov_b32_e32 v2, s28
1011 ; GFX9-NEXT: v_mov_b32_e32 v3, s29
1012 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1013 ; GFX9-NEXT: s_nop 0
1014 ; GFX9-NEXT: v_mov_b32_e32 v0, s22
1015 ; GFX9-NEXT: v_mov_b32_e32 v1, s23
1016 ; GFX9-NEXT: v_mov_b32_e32 v2, s24
1017 ; GFX9-NEXT: v_mov_b32_e32 v3, s25
1018 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1019 ; GFX9-NEXT: s_nop 0
1020 ; GFX9-NEXT: v_mov_b32_e32 v0, s18
1021 ; GFX9-NEXT: v_mov_b32_e32 v1, s19
1022 ; GFX9-NEXT: v_mov_b32_e32 v2, s20
1023 ; GFX9-NEXT: v_mov_b32_e32 v3, s21
1024 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1025 ; GFX9-NEXT: s_nop 0
1026 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
1027 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
1028 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
1029 ; GFX9-NEXT: v_mov_b32_e32 v3, s17
1030 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1031 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1032 ; GFX9-NEXT: s_setpc_b64 s[30:31]
1034 ; GFX11-LABEL: void_func_v16f32_inreg:
1036 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1037 ; GFX11-NEXT: v_dual_mov_b32 v0, s22 :: v_dual_mov_b32 v1, s23
1038 ; GFX11-NEXT: v_dual_mov_b32 v2, s24 :: v_dual_mov_b32 v3, s25
1039 ; GFX11-NEXT: v_dual_mov_b32 v4, s18 :: v_dual_mov_b32 v5, s19
1040 ; GFX11-NEXT: v_dual_mov_b32 v6, s20 :: v_dual_mov_b32 v7, s21
1041 ; GFX11-NEXT: v_dual_mov_b32 v8, s6 :: v_dual_mov_b32 v9, s7
1042 ; GFX11-NEXT: v_dual_mov_b32 v10, s16 :: v_dual_mov_b32 v11, s17
1043 ; GFX11-NEXT: v_dual_mov_b32 v12, s0 :: v_dual_mov_b32 v13, s1
1044 ; GFX11-NEXT: v_dual_mov_b32 v14, s2 :: v_dual_mov_b32 v15, s3
1045 ; GFX11-NEXT: s_clause 0x3
1046 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off
1047 ; GFX11-NEXT: global_store_b128 v[0:1], v[4:7], off
1048 ; GFX11-NEXT: global_store_b128 v[0:1], v[8:11], off
1049 ; GFX11-NEXT: global_store_b128 v[0:1], v[12:15], off
1050 ; GFX11-NEXT: s_setpc_b64 s[30:31]
1051 store <16 x float> %arg0, ptr addrspace(1) undef
1055 define void @void_func_v2f64_inreg(<2 x double> inreg %arg0) #0 {
1056 ; GFX9-LABEL: void_func_v2f64_inreg:
1058 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1059 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
1060 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
1061 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
1062 ; GFX9-NEXT: v_mov_b32_e32 v3, s17
1063 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1064 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1065 ; GFX9-NEXT: s_setpc_b64 s[30:31]
1067 ; GFX11-LABEL: void_func_v2f64_inreg:
1069 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1070 ; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
1071 ; GFX11-NEXT: v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
1072 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off
1073 ; GFX11-NEXT: s_setpc_b64 s[30:31]
1074 store <2 x double> %arg0, ptr addrspace(1) undef
1078 define void @void_func_v3f64_inreg(<3 x double> inreg %arg0) #0 {
1079 ; GFX9-LABEL: void_func_v3f64_inreg:
1081 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1082 ; GFX9-NEXT: v_mov_b32_e32 v0, s18
1083 ; GFX9-NEXT: v_mov_b32_e32 v1, s19
1084 ; GFX9-NEXT: global_store_dwordx2 v[0:1], v[0:1], off
1085 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
1086 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
1087 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
1088 ; GFX9-NEXT: v_mov_b32_e32 v3, s17
1089 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1090 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1091 ; GFX9-NEXT: s_setpc_b64 s[30:31]
1093 ; GFX11-LABEL: void_func_v3f64_inreg:
1095 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1096 ; GFX11-NEXT: v_dual_mov_b32 v4, s6 :: v_dual_mov_b32 v5, s7
1097 ; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
1098 ; GFX11-NEXT: v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
1099 ; GFX11-NEXT: s_clause 0x1
1100 ; GFX11-NEXT: global_store_b64 v[0:1], v[4:5], off
1101 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off
1102 ; GFX11-NEXT: s_setpc_b64 s[30:31]
1103 store <3 x double> %arg0, ptr addrspace(1) undef
1107 define void @void_func_v4f64_inreg(<4 x double> inreg %arg0) #0 {
1108 ; GFX9-LABEL: void_func_v4f64_inreg:
1110 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1111 ; GFX9-NEXT: v_mov_b32_e32 v0, s18
1112 ; GFX9-NEXT: v_mov_b32_e32 v1, s19
1113 ; GFX9-NEXT: v_mov_b32_e32 v2, s20
1114 ; GFX9-NEXT: v_mov_b32_e32 v3, s21
1115 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1116 ; GFX9-NEXT: s_nop 0
1117 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
1118 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
1119 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
1120 ; GFX9-NEXT: v_mov_b32_e32 v3, s17
1121 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1122 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1123 ; GFX9-NEXT: s_setpc_b64 s[30:31]
1125 ; GFX11-LABEL: void_func_v4f64_inreg:
1127 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1128 ; GFX11-NEXT: v_dual_mov_b32 v0, s6 :: v_dual_mov_b32 v1, s7
1129 ; GFX11-NEXT: v_dual_mov_b32 v2, s16 :: v_dual_mov_b32 v3, s17
1130 ; GFX11-NEXT: v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v5, s1
1131 ; GFX11-NEXT: v_dual_mov_b32 v6, s2 :: v_dual_mov_b32 v7, s3
1132 ; GFX11-NEXT: s_clause 0x1
1133 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off
1134 ; GFX11-NEXT: global_store_b128 v[0:1], v[4:7], off
1135 ; GFX11-NEXT: s_setpc_b64 s[30:31]
1136 store <4 x double> %arg0, ptr addrspace(1) undef
1140 define void @void_func_v8f64_inreg(<8 x double> inreg %arg0) #0 {
1141 ; GFX9-LABEL: void_func_v8f64_inreg:
1143 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1144 ; GFX9-NEXT: v_mov_b32_e32 v0, s26
1145 ; GFX9-NEXT: v_mov_b32_e32 v1, s27
1146 ; GFX9-NEXT: v_mov_b32_e32 v2, s28
1147 ; GFX9-NEXT: v_mov_b32_e32 v3, s29
1148 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1149 ; GFX9-NEXT: s_nop 0
1150 ; GFX9-NEXT: v_mov_b32_e32 v0, s22
1151 ; GFX9-NEXT: v_mov_b32_e32 v1, s23
1152 ; GFX9-NEXT: v_mov_b32_e32 v2, s24
1153 ; GFX9-NEXT: v_mov_b32_e32 v3, s25
1154 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1155 ; GFX9-NEXT: s_nop 0
1156 ; GFX9-NEXT: v_mov_b32_e32 v0, s18
1157 ; GFX9-NEXT: v_mov_b32_e32 v1, s19
1158 ; GFX9-NEXT: v_mov_b32_e32 v2, s20
1159 ; GFX9-NEXT: v_mov_b32_e32 v3, s21
1160 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1161 ; GFX9-NEXT: s_nop 0
1162 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
1163 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
1164 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
1165 ; GFX9-NEXT: v_mov_b32_e32 v3, s17
1166 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1167 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1168 ; GFX9-NEXT: s_setpc_b64 s[30:31]
1170 ; GFX11-LABEL: void_func_v8f64_inreg:
1172 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1173 ; GFX11-NEXT: v_dual_mov_b32 v0, s22 :: v_dual_mov_b32 v1, s23
1174 ; GFX11-NEXT: v_dual_mov_b32 v2, s24 :: v_dual_mov_b32 v3, s25
1175 ; GFX11-NEXT: v_dual_mov_b32 v4, s18 :: v_dual_mov_b32 v5, s19
1176 ; GFX11-NEXT: v_dual_mov_b32 v6, s20 :: v_dual_mov_b32 v7, s21
1177 ; GFX11-NEXT: v_dual_mov_b32 v8, s6 :: v_dual_mov_b32 v9, s7
1178 ; GFX11-NEXT: v_dual_mov_b32 v10, s16 :: v_dual_mov_b32 v11, s17
1179 ; GFX11-NEXT: v_dual_mov_b32 v12, s0 :: v_dual_mov_b32 v13, s1
1180 ; GFX11-NEXT: v_dual_mov_b32 v14, s2 :: v_dual_mov_b32 v15, s3
1181 ; GFX11-NEXT: s_clause 0x3
1182 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off
1183 ; GFX11-NEXT: global_store_b128 v[0:1], v[4:7], off
1184 ; GFX11-NEXT: global_store_b128 v[0:1], v[8:11], off
1185 ; GFX11-NEXT: global_store_b128 v[0:1], v[12:15], off
1186 ; GFX11-NEXT: s_setpc_b64 s[30:31]
1187 store <8 x double> %arg0, ptr addrspace(1) undef
1191 define void @void_func_v16f64_inreg(<16 x double> inreg %arg0) #0 {
1192 ; GFX9-LABEL: void_func_v16f64_inreg:
1194 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1195 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[12:15], off
1196 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[8:11], off
1197 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[4:7], off
1198 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1199 ; GFX9-NEXT: s_nop 0
1200 ; GFX9-NEXT: v_mov_b32_e32 v0, s26
1201 ; GFX9-NEXT: v_mov_b32_e32 v1, s27
1202 ; GFX9-NEXT: v_mov_b32_e32 v2, s28
1203 ; GFX9-NEXT: v_mov_b32_e32 v3, s29
1204 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1205 ; GFX9-NEXT: s_nop 0
1206 ; GFX9-NEXT: v_mov_b32_e32 v0, s22
1207 ; GFX9-NEXT: v_mov_b32_e32 v1, s23
1208 ; GFX9-NEXT: v_mov_b32_e32 v2, s24
1209 ; GFX9-NEXT: v_mov_b32_e32 v3, s25
1210 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1211 ; GFX9-NEXT: s_nop 0
1212 ; GFX9-NEXT: v_mov_b32_e32 v0, s18
1213 ; GFX9-NEXT: v_mov_b32_e32 v1, s19
1214 ; GFX9-NEXT: v_mov_b32_e32 v2, s20
1215 ; GFX9-NEXT: v_mov_b32_e32 v3, s21
1216 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1217 ; GFX9-NEXT: s_nop 0
1218 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
1219 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
1220 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
1221 ; GFX9-NEXT: v_mov_b32_e32 v3, s17
1222 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1223 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1224 ; GFX9-NEXT: s_setpc_b64 s[30:31]
1226 ; GFX11-LABEL: void_func_v16f64_inreg:
1228 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1229 ; GFX11-NEXT: s_clause 0x2
1230 ; GFX11-NEXT: global_store_b128 v[0:1], v[8:11], off
1231 ; GFX11-NEXT: global_store_b128 v[0:1], v[4:7], off
1232 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off
1233 ; GFX11-NEXT: v_dual_mov_b32 v0, s26 :: v_dual_mov_b32 v1, s27
1234 ; GFX11-NEXT: v_dual_mov_b32 v2, s28 :: v_dual_mov_b32 v3, s29
1235 ; GFX11-NEXT: v_dual_mov_b32 v4, s22 :: v_dual_mov_b32 v5, s23
1236 ; GFX11-NEXT: v_dual_mov_b32 v6, s24 :: v_dual_mov_b32 v7, s25
1237 ; GFX11-NEXT: v_dual_mov_b32 v8, s18 :: v_dual_mov_b32 v9, s19
1238 ; GFX11-NEXT: v_dual_mov_b32 v10, s20 :: v_dual_mov_b32 v11, s21
1239 ; GFX11-NEXT: v_dual_mov_b32 v12, s6 :: v_dual_mov_b32 v13, s7
1240 ; GFX11-NEXT: v_dual_mov_b32 v14, s16 :: v_dual_mov_b32 v15, s17
1241 ; GFX11-NEXT: v_dual_mov_b32 v16, s0 :: v_dual_mov_b32 v17, s1
1242 ; GFX11-NEXT: v_dual_mov_b32 v18, s2 :: v_dual_mov_b32 v19, s3
1243 ; GFX11-NEXT: s_clause 0x4
1244 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off
1245 ; GFX11-NEXT: global_store_b128 v[0:1], v[4:7], off
1246 ; GFX11-NEXT: global_store_b128 v[0:1], v[8:11], off
1247 ; GFX11-NEXT: global_store_b128 v[0:1], v[12:15], off
1248 ; GFX11-NEXT: global_store_b128 v[0:1], v[16:19], off
1249 ; GFX11-NEXT: s_setpc_b64 s[30:31]
1250 store <16 x double> %arg0, ptr addrspace(1) undef
1254 define void @void_func_v32i32_i1_i8_i16_f32_inreg(<32 x i32> inreg %arg0, i1 inreg %arg1, i8 inreg %arg2, i16 inreg %arg3, half inreg %arg4) #0 {
1255 ; GFX9-LABEL: void_func_v32i32_i1_i8_i16_f32_inreg:
1257 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1258 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[12:15], off
1259 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1260 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[8:11], off
1261 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1262 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[4:7], off
1263 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1264 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1265 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1266 ; GFX9-NEXT: v_mov_b32_e32 v0, s26
1267 ; GFX9-NEXT: v_mov_b32_e32 v1, s27
1268 ; GFX9-NEXT: v_mov_b32_e32 v2, s28
1269 ; GFX9-NEXT: v_mov_b32_e32 v3, s29
1270 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1271 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1272 ; GFX9-NEXT: v_mov_b32_e32 v0, s22
1273 ; GFX9-NEXT: v_mov_b32_e32 v1, s23
1274 ; GFX9-NEXT: v_mov_b32_e32 v2, s24
1275 ; GFX9-NEXT: v_mov_b32_e32 v3, s25
1276 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1277 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1278 ; GFX9-NEXT: v_mov_b32_e32 v0, s18
1279 ; GFX9-NEXT: v_mov_b32_e32 v1, s19
1280 ; GFX9-NEXT: v_mov_b32_e32 v2, s20
1281 ; GFX9-NEXT: v_mov_b32_e32 v3, s21
1282 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1283 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1284 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
1285 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
1286 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
1287 ; GFX9-NEXT: v_mov_b32_e32 v3, s17
1288 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1289 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1290 ; GFX9-NEXT: v_and_b32_e32 v0, 1, v16
1291 ; GFX9-NEXT: global_store_byte v[0:1], v0, off
1292 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1293 ; GFX9-NEXT: global_store_byte v[0:1], v17, off
1294 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1295 ; GFX9-NEXT: global_store_short v[0:1], v18, off
1296 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1297 ; GFX9-NEXT: global_store_short v[0:1], v19, off
1298 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1299 ; GFX9-NEXT: s_setpc_b64 s[30:31]
1301 ; GFX11-LABEL: void_func_v32i32_i1_i8_i16_f32_inreg:
1303 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1304 ; GFX11-NEXT: v_dual_mov_b32 v16, s26 :: v_dual_mov_b32 v17, s27
1305 ; GFX11-NEXT: v_dual_mov_b32 v18, s28 :: v_dual_mov_b32 v19, s29
1306 ; GFX11-NEXT: global_store_b128 v[0:1], v[8:11], off dlc
1307 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1308 ; GFX11-NEXT: global_store_b128 v[0:1], v[4:7], off dlc
1309 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1310 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off dlc
1311 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1312 ; GFX11-NEXT: global_store_b128 v[0:1], v[16:19], off dlc
1313 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1314 ; GFX11-NEXT: v_dual_mov_b32 v0, s22 :: v_dual_mov_b32 v1, s23
1315 ; GFX11-NEXT: v_dual_mov_b32 v2, s24 :: v_dual_mov_b32 v3, s25
1316 ; GFX11-NEXT: v_dual_mov_b32 v4, s18 :: v_dual_mov_b32 v5, s19
1317 ; GFX11-NEXT: v_dual_mov_b32 v6, s20 :: v_dual_mov_b32 v7, s21
1318 ; GFX11-NEXT: v_dual_mov_b32 v8, s6 :: v_dual_mov_b32 v9, s7
1319 ; GFX11-NEXT: v_dual_mov_b32 v10, s16 :: v_dual_mov_b32 v11, s17
1320 ; GFX11-NEXT: v_dual_mov_b32 v16, s0 :: v_dual_mov_b32 v17, s1
1321 ; GFX11-NEXT: v_dual_mov_b32 v18, s2 :: v_dual_mov_b32 v19, s3
1322 ; GFX11-NEXT: v_and_b32_e32 v12, 1, v12
1323 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off dlc
1324 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1325 ; GFX11-NEXT: global_store_b128 v[0:1], v[4:7], off dlc
1326 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1327 ; GFX11-NEXT: global_store_b128 v[0:1], v[8:11], off dlc
1328 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1329 ; GFX11-NEXT: global_store_b128 v[0:1], v[16:19], off dlc
1330 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1331 ; GFX11-NEXT: global_store_b8 v[0:1], v12, off dlc
1332 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1333 ; GFX11-NEXT: global_store_b8 v[0:1], v13, off dlc
1334 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1335 ; GFX11-NEXT: global_store_b16 v[0:1], v14, off dlc
1336 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1337 ; GFX11-NEXT: global_store_b16 v[0:1], v15, off dlc
1338 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1339 ; GFX11-NEXT: s_setpc_b64 s[30:31]
1340 store volatile <32 x i32> %arg0, ptr addrspace(1) undef
1341 store volatile i1 %arg1, ptr addrspace(1) undef
1342 store volatile i8 %arg2, ptr addrspace(1) undef
1343 store volatile i16 %arg3, ptr addrspace(1) undef
1344 store volatile half %arg4, ptr addrspace(1) undef
1348 define void @void_func_v32i32_v2i32_v2f32_inreg(<32 x i32> inreg %arg0, <2 x i32> inreg %arg1, <2 x float> inreg %arg2) #0 {
1349 ; GFX9-LABEL: void_func_v32i32_v2i32_v2f32_inreg:
1351 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1352 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[12:15], off
1353 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1354 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[8:11], off
1355 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1356 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[4:7], off
1357 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1358 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1359 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1360 ; GFX9-NEXT: v_mov_b32_e32 v0, s26
1361 ; GFX9-NEXT: v_mov_b32_e32 v1, s27
1362 ; GFX9-NEXT: v_mov_b32_e32 v2, s28
1363 ; GFX9-NEXT: v_mov_b32_e32 v3, s29
1364 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1365 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1366 ; GFX9-NEXT: v_mov_b32_e32 v0, s22
1367 ; GFX9-NEXT: v_mov_b32_e32 v1, s23
1368 ; GFX9-NEXT: v_mov_b32_e32 v2, s24
1369 ; GFX9-NEXT: v_mov_b32_e32 v3, s25
1370 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1371 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1372 ; GFX9-NEXT: v_mov_b32_e32 v0, s18
1373 ; GFX9-NEXT: v_mov_b32_e32 v1, s19
1374 ; GFX9-NEXT: v_mov_b32_e32 v2, s20
1375 ; GFX9-NEXT: v_mov_b32_e32 v3, s21
1376 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1377 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1378 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
1379 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
1380 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
1381 ; GFX9-NEXT: v_mov_b32_e32 v3, s17
1382 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1383 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1384 ; GFX9-NEXT: global_store_dwordx2 v[0:1], v[16:17], off
1385 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1386 ; GFX9-NEXT: global_store_dwordx2 v[0:1], v[18:19], off
1387 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1388 ; GFX9-NEXT: s_setpc_b64 s[30:31]
1390 ; GFX11-LABEL: void_func_v32i32_v2i32_v2f32_inreg:
1392 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1393 ; GFX11-NEXT: global_store_b128 v[0:1], v[8:11], off dlc
1394 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1395 ; GFX11-NEXT: global_store_b128 v[0:1], v[4:7], off dlc
1396 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1397 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off dlc
1398 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1399 ; GFX11-NEXT: v_dual_mov_b32 v0, s26 :: v_dual_mov_b32 v1, s27
1400 ; GFX11-NEXT: v_dual_mov_b32 v2, s28 :: v_dual_mov_b32 v3, s29
1401 ; GFX11-NEXT: v_dual_mov_b32 v4, s22 :: v_dual_mov_b32 v5, s23
1402 ; GFX11-NEXT: v_dual_mov_b32 v6, s24 :: v_dual_mov_b32 v7, s25
1403 ; GFX11-NEXT: v_dual_mov_b32 v8, s18 :: v_dual_mov_b32 v9, s19
1404 ; GFX11-NEXT: v_dual_mov_b32 v10, s20 :: v_dual_mov_b32 v11, s21
1405 ; GFX11-NEXT: v_dual_mov_b32 v16, s6 :: v_dual_mov_b32 v17, s7
1406 ; GFX11-NEXT: v_dual_mov_b32 v18, s16 :: v_dual_mov_b32 v19, s17
1407 ; GFX11-NEXT: v_dual_mov_b32 v20, s0 :: v_dual_mov_b32 v21, s1
1408 ; GFX11-NEXT: v_dual_mov_b32 v22, s2 :: v_dual_mov_b32 v23, s3
1409 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off dlc
1410 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1411 ; GFX11-NEXT: global_store_b128 v[0:1], v[4:7], off dlc
1412 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1413 ; GFX11-NEXT: global_store_b128 v[0:1], v[8:11], off dlc
1414 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1415 ; GFX11-NEXT: global_store_b128 v[0:1], v[16:19], off dlc
1416 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1417 ; GFX11-NEXT: global_store_b128 v[0:1], v[20:23], off dlc
1418 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1419 ; GFX11-NEXT: global_store_b64 v[0:1], v[12:13], off dlc
1420 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1421 ; GFX11-NEXT: global_store_b64 v[0:1], v[14:15], off dlc
1422 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1423 ; GFX11-NEXT: s_setpc_b64 s[30:31]
1424 store volatile <32 x i32> %arg0, ptr addrspace(1) undef
1425 store volatile <2 x i32> %arg1, ptr addrspace(1) undef
1426 store volatile <2 x float> %arg2, ptr addrspace(1) undef
1430 define void @too_many_args_use_workitem_id_x_inreg(
1431 ; GFX9-LABEL: too_many_args_use_workitem_id_x_inreg:
1433 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1434 ; GFX9-NEXT: v_mov_b32_e32 v16, s6
1435 ; GFX9-NEXT: global_store_dword v[0:1], v16, off
1436 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1437 ; GFX9-NEXT: v_mov_b32_e32 v16, s7
1438 ; GFX9-NEXT: global_store_dword v[0:1], v16, off
1439 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1440 ; GFX9-NEXT: v_mov_b32_e32 v16, s16
1441 ; GFX9-NEXT: global_store_dword v[0:1], v16, off
1442 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1443 ; GFX9-NEXT: v_mov_b32_e32 v16, s17
1444 ; GFX9-NEXT: global_store_dword v[0:1], v16, off
1445 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1446 ; GFX9-NEXT: v_mov_b32_e32 v16, s18
1447 ; GFX9-NEXT: global_store_dword v[0:1], v16, off
1448 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1449 ; GFX9-NEXT: v_mov_b32_e32 v16, s19
1450 ; GFX9-NEXT: global_store_dword v[0:1], v16, off
1451 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1452 ; GFX9-NEXT: v_mov_b32_e32 v16, s20
1453 ; GFX9-NEXT: global_store_dword v[0:1], v16, off
1454 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1455 ; GFX9-NEXT: v_mov_b32_e32 v16, s21
1456 ; GFX9-NEXT: global_store_dword v[0:1], v16, off
1457 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1458 ; GFX9-NEXT: v_mov_b32_e32 v16, s22
1459 ; GFX9-NEXT: global_store_dword v[0:1], v16, off
1460 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1461 ; GFX9-NEXT: v_mov_b32_e32 v16, s23
1462 ; GFX9-NEXT: global_store_dword v[0:1], v16, off
1463 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1464 ; GFX9-NEXT: v_mov_b32_e32 v16, s24
1465 ; GFX9-NEXT: global_store_dword v[0:1], v16, off
1466 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1467 ; GFX9-NEXT: v_mov_b32_e32 v16, s25
1468 ; GFX9-NEXT: global_store_dword v[0:1], v16, off
1469 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1470 ; GFX9-NEXT: v_mov_b32_e32 v16, s26
1471 ; GFX9-NEXT: global_store_dword v[0:1], v16, off
1472 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1473 ; GFX9-NEXT: v_mov_b32_e32 v16, s27
1474 ; GFX9-NEXT: global_store_dword v[0:1], v16, off
1475 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1476 ; GFX9-NEXT: v_mov_b32_e32 v16, s28
1477 ; GFX9-NEXT: global_store_dword v[0:1], v16, off
1478 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1479 ; GFX9-NEXT: v_mov_b32_e32 v16, s29
1480 ; GFX9-NEXT: global_store_dword v[0:1], v16, off
1481 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1482 ; GFX9-NEXT: global_store_dword v[0:1], v0, off
1483 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1484 ; GFX9-NEXT: global_store_dword v[0:1], v1, off
1485 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1486 ; GFX9-NEXT: global_store_dword v[0:1], v2, off
1487 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1488 ; GFX9-NEXT: global_store_dword v[0:1], v3, off
1489 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1490 ; GFX9-NEXT: global_store_dword v[0:1], v4, off
1491 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1492 ; GFX9-NEXT: global_store_dword v[0:1], v5, off
1493 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1494 ; GFX9-NEXT: global_store_dword v[0:1], v6, off
1495 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1496 ; GFX9-NEXT: global_store_dword v[0:1], v7, off
1497 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1498 ; GFX9-NEXT: global_store_dword v[0:1], v8, off
1499 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1500 ; GFX9-NEXT: global_store_dword v[0:1], v9, off
1501 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1502 ; GFX9-NEXT: global_store_dword v[0:1], v10, off
1503 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1504 ; GFX9-NEXT: global_store_dword v[0:1], v11, off
1505 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1506 ; GFX9-NEXT: global_store_dword v[0:1], v12, off
1507 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1508 ; GFX9-NEXT: global_store_dword v[0:1], v13, off
1509 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1510 ; GFX9-NEXT: global_store_dword v[0:1], v14, off
1511 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1512 ; GFX9-NEXT: global_store_dword v[0:1], v15, off
1513 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1514 ; GFX9-NEXT: s_setpc_b64 s[30:31]
1516 ; GFX11-LABEL: too_many_args_use_workitem_id_x_inreg:
1518 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1519 ; GFX11-NEXT: v_dual_mov_b32 v12, s0 :: v_dual_mov_b32 v13, s1
1520 ; GFX11-NEXT: v_dual_mov_b32 v14, s2 :: v_dual_mov_b32 v15, s3
1521 ; GFX11-NEXT: v_mov_b32_e32 v16, s6
1522 ; GFX11-NEXT: global_store_b32 v[0:1], v12, off dlc
1523 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1524 ; GFX11-NEXT: global_store_b32 v[0:1], v13, off dlc
1525 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1526 ; GFX11-NEXT: global_store_b32 v[0:1], v14, off dlc
1527 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1528 ; GFX11-NEXT: global_store_b32 v[0:1], v15, off dlc
1529 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1530 ; GFX11-NEXT: global_store_b32 v[0:1], v16, off dlc
1531 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1532 ; GFX11-NEXT: v_dual_mov_b32 v13, s16 :: v_dual_mov_b32 v12, s7
1533 ; GFX11-NEXT: v_dual_mov_b32 v15, s18 :: v_dual_mov_b32 v14, s17
1534 ; GFX11-NEXT: v_mov_b32_e32 v16, s19
1535 ; GFX11-NEXT: global_store_b32 v[0:1], v12, off dlc
1536 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1537 ; GFX11-NEXT: global_store_b32 v[0:1], v13, off dlc
1538 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1539 ; GFX11-NEXT: global_store_b32 v[0:1], v14, off dlc
1540 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1541 ; GFX11-NEXT: global_store_b32 v[0:1], v15, off dlc
1542 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1543 ; GFX11-NEXT: global_store_b32 v[0:1], v16, off dlc
1544 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1545 ; GFX11-NEXT: v_dual_mov_b32 v15, s23 :: v_dual_mov_b32 v12, s20
1546 ; GFX11-NEXT: v_dual_mov_b32 v13, s21 :: v_dual_mov_b32 v14, s22
1547 ; GFX11-NEXT: v_mov_b32_e32 v16, s24
1548 ; GFX11-NEXT: global_store_b32 v[0:1], v12, off dlc
1549 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1550 ; GFX11-NEXT: global_store_b32 v[0:1], v13, off dlc
1551 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1552 ; GFX11-NEXT: global_store_b32 v[0:1], v14, off dlc
1553 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1554 ; GFX11-NEXT: global_store_b32 v[0:1], v15, off dlc
1555 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1556 ; GFX11-NEXT: global_store_b32 v[0:1], v16, off dlc
1557 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1558 ; GFX11-NEXT: v_dual_mov_b32 v15, s28 :: v_dual_mov_b32 v12, s25
1559 ; GFX11-NEXT: v_dual_mov_b32 v13, s26 :: v_dual_mov_b32 v14, s27
1560 ; GFX11-NEXT: v_mov_b32_e32 v16, s29
1561 ; GFX11-NEXT: global_store_b32 v[0:1], v12, off dlc
1562 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1563 ; GFX11-NEXT: global_store_b32 v[0:1], v13, off dlc
1564 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1565 ; GFX11-NEXT: global_store_b32 v[0:1], v14, off dlc
1566 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1567 ; GFX11-NEXT: global_store_b32 v[0:1], v15, off dlc
1568 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1569 ; GFX11-NEXT: global_store_b32 v[0:1], v16, off dlc
1570 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1571 ; GFX11-NEXT: global_store_b32 v[0:1], v0, off dlc
1572 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1573 ; GFX11-NEXT: global_store_b32 v[0:1], v1, off dlc
1574 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1575 ; GFX11-NEXT: global_store_b32 v[0:1], v2, off dlc
1576 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1577 ; GFX11-NEXT: global_store_b32 v[0:1], v3, off dlc
1578 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1579 ; GFX11-NEXT: global_store_b32 v[0:1], v4, off dlc
1580 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1581 ; GFX11-NEXT: global_store_b32 v[0:1], v5, off dlc
1582 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1583 ; GFX11-NEXT: global_store_b32 v[0:1], v6, off dlc
1584 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1585 ; GFX11-NEXT: global_store_b32 v[0:1], v7, off dlc
1586 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1587 ; GFX11-NEXT: global_store_b32 v[0:1], v8, off dlc
1588 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1589 ; GFX11-NEXT: global_store_b32 v[0:1], v9, off dlc
1590 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1591 ; GFX11-NEXT: global_store_b32 v[0:1], v10, off dlc
1592 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1593 ; GFX11-NEXT: global_store_b32 v[0:1], v11, off dlc
1594 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1595 ; GFX11-NEXT: s_setpc_b64 s[30:31]
1596 i32 inreg %arg0, i32 inreg %arg1, i32 inreg %arg2, i32 inreg %arg3, i32 inreg %arg4, i32 inreg %arg5, i32 inreg %arg6, i32 inreg %arg7,
1597 i32 inreg %arg8, i32 inreg %arg9, i32 inreg %arg10, i32 inreg %arg11, i32 inreg %arg12, i32 inreg %arg13, i32 inreg %arg14, i32 inreg %arg15,
1598 i32 inreg %arg16, i32 inreg %arg17, i32 inreg %arg18, i32 inreg %arg19, i32 inreg %arg20, i32 inreg %arg21, i32 inreg %arg22, i32 inreg %arg23,
1599 i32 inreg %arg24, i32 inreg %arg25, i32 inreg %arg26, i32 inreg %arg27, i32 inreg %arg28, i32 inreg %arg29, i32 inreg %arg30, i32 inreg %arg31) {
1600 ;%val = call i32 @llvm.amdgcn.workitem.id.x()
1601 ;store volatile i32 %val, ptr addrspace(1) undef
1603 store volatile i32 %arg0, ptr addrspace(1) undef
1604 store volatile i32 %arg1, ptr addrspace(1) undef
1605 store volatile i32 %arg2, ptr addrspace(1) undef
1606 store volatile i32 %arg3, ptr addrspace(1) undef
1607 store volatile i32 %arg4, ptr addrspace(1) undef
1608 store volatile i32 %arg5, ptr addrspace(1) undef
1609 store volatile i32 %arg6, ptr addrspace(1) undef
1610 store volatile i32 %arg7, ptr addrspace(1) undef
1612 store volatile i32 %arg8, ptr addrspace(1) undef
1613 store volatile i32 %arg9, ptr addrspace(1) undef
1614 store volatile i32 %arg10, ptr addrspace(1) undef
1615 store volatile i32 %arg11, ptr addrspace(1) undef
1616 store volatile i32 %arg12, ptr addrspace(1) undef
1617 store volatile i32 %arg13, ptr addrspace(1) undef
1618 store volatile i32 %arg14, ptr addrspace(1) undef
1619 store volatile i32 %arg15, ptr addrspace(1) undef
1621 store volatile i32 %arg16, ptr addrspace(1) undef
1622 store volatile i32 %arg17, ptr addrspace(1) undef
1623 store volatile i32 %arg18, ptr addrspace(1) undef
1624 store volatile i32 %arg19, ptr addrspace(1) undef
1625 store volatile i32 %arg20, ptr addrspace(1) undef
1626 store volatile i32 %arg21, ptr addrspace(1) undef
1627 store volatile i32 %arg22, ptr addrspace(1) undef
1628 store volatile i32 %arg23, ptr addrspace(1) undef
1630 store volatile i32 %arg24, ptr addrspace(1) undef
1631 store volatile i32 %arg25, ptr addrspace(1) undef
1632 store volatile i32 %arg26, ptr addrspace(1) undef
1633 store volatile i32 %arg27, ptr addrspace(1) undef
1634 store volatile i32 %arg28, ptr addrspace(1) undef
1635 store volatile i32 %arg29, ptr addrspace(1) undef
1636 store volatile i32 %arg30, ptr addrspace(1) undef
1637 store volatile i32 %arg31, ptr addrspace(1) undef
1642 define void @void_func_i32_v2float_inreg(i32 inreg %arg0, <2 x float> inreg %arg1) #0 {
1643 ; GFX9-LABEL: void_func_i32_v2float_inreg:
1645 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1646 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
1647 ; GFX9-NEXT: global_store_dword v[0:1], v0, off
1648 ; GFX9-NEXT: v_mov_b32_e32 v0, s7
1649 ; GFX9-NEXT: v_mov_b32_e32 v1, s16
1650 ; GFX9-NEXT: global_store_dwordx2 v[0:1], v[0:1], off
1651 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1652 ; GFX9-NEXT: s_setpc_b64 s[30:31]
1654 ; GFX11-LABEL: void_func_i32_v2float_inreg:
1656 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1657 ; GFX11-NEXT: v_dual_mov_b32 v2, s0 :: v_dual_mov_b32 v1, s2
1658 ; GFX11-NEXT: v_mov_b32_e32 v0, s1
1659 ; GFX11-NEXT: s_clause 0x1
1660 ; GFX11-NEXT: global_store_b32 v[0:1], v2, off
1661 ; GFX11-NEXT: global_store_b64 v[0:1], v[0:1], off
1662 ; GFX11-NEXT: s_setpc_b64 s[30:31]
1663 store i32 %arg0, ptr addrspace(1) undef
1664 store <2 x float> %arg1, ptr addrspace(1) undef
1668 define void @caller_void_func_i32_v2float_inreg(i32 inreg %arg0, <2 x float> inreg %arg1) #0 {
1669 ; GFX9-LABEL: caller_void_func_i32_v2float_inreg:
1671 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1672 ; GFX9-NEXT: s_mov_b32 s17, s33
1673 ; GFX9-NEXT: s_mov_b32 s33, s32
1674 ; GFX9-NEXT: s_or_saveexec_b64 s[18:19], -1
1675 ; GFX9-NEXT: buffer_store_dword v40, off, s[0:3], s33 ; 4-byte Folded Spill
1676 ; GFX9-NEXT: s_mov_b64 exec, s[18:19]
1677 ; GFX9-NEXT: s_addk_i32 s32, 0x400
1678 ; GFX9-NEXT: s_getpc_b64 s[18:19]
1679 ; GFX9-NEXT: s_add_u32 s18, s18, caller_void_func_i32_v2float_inreg@gotpcrel32@lo+4
1680 ; GFX9-NEXT: s_addc_u32 s19, s19, caller_void_func_i32_v2float_inreg@gotpcrel32@hi+12
1681 ; GFX9-NEXT: s_load_dwordx2 s[18:19], s[18:19], 0x0
1682 ; GFX9-NEXT: v_writelane_b32 v40, s17, 2
1683 ; GFX9-NEXT: v_writelane_b32 v40, s30, 0
1684 ; GFX9-NEXT: s_mov_b32 s2, s16
1685 ; GFX9-NEXT: s_mov_b32 s1, s7
1686 ; GFX9-NEXT: s_mov_b32 s0, s6
1687 ; GFX9-NEXT: v_writelane_b32 v40, s31, 1
1688 ; GFX9-NEXT: s_waitcnt lgkmcnt(0)
1689 ; GFX9-NEXT: s_swappc_b64 s[30:31], s[18:19]
1690 ; GFX9-NEXT: v_readlane_b32 s31, v40, 1
1691 ; GFX9-NEXT: v_readlane_b32 s30, v40, 0
1692 ; GFX9-NEXT: v_readlane_b32 s4, v40, 2
1693 ; GFX9-NEXT: s_or_saveexec_b64 s[6:7], -1
1694 ; GFX9-NEXT: buffer_load_dword v40, off, s[0:3], s33 ; 4-byte Folded Reload
1695 ; GFX9-NEXT: s_mov_b64 exec, s[6:7]
1696 ; GFX9-NEXT: s_addk_i32 s32, 0xfc00
1697 ; GFX9-NEXT: s_mov_b32 s33, s4
1698 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1699 ; GFX9-NEXT: s_setpc_b64 s[30:31]
1701 ; GFX11-LABEL: caller_void_func_i32_v2float_inreg:
1703 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1704 ; GFX11-NEXT: s_mov_b32 s3, s33
1705 ; GFX11-NEXT: s_mov_b32 s33, s32
1706 ; GFX11-NEXT: s_or_saveexec_b32 s16, -1
1707 ; GFX11-NEXT: scratch_store_b32 off, v40, s33 ; 4-byte Folded Spill
1708 ; GFX11-NEXT: s_mov_b32 exec_lo, s16
1709 ; GFX11-NEXT: s_add_i32 s32, s32, 16
1710 ; GFX11-NEXT: s_getpc_b64 s[16:17]
1711 ; GFX11-NEXT: s_add_u32 s16, s16, caller_void_func_i32_v2float_inreg@gotpcrel32@lo+4
1712 ; GFX11-NEXT: s_addc_u32 s17, s17, caller_void_func_i32_v2float_inreg@gotpcrel32@hi+12
1713 ; GFX11-NEXT: v_writelane_b32 v40, s3, 2
1714 ; GFX11-NEXT: s_load_b64 s[16:17], s[16:17], 0x0
1715 ; GFX11-NEXT: v_writelane_b32 v40, s30, 0
1716 ; GFX11-NEXT: v_writelane_b32 v40, s31, 1
1717 ; GFX11-NEXT: s_waitcnt lgkmcnt(0)
1718 ; GFX11-NEXT: s_swappc_b64 s[30:31], s[16:17]
1719 ; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
1720 ; GFX11-NEXT: v_readlane_b32 s31, v40, 1
1721 ; GFX11-NEXT: v_readlane_b32 s30, v40, 0
1722 ; GFX11-NEXT: v_readlane_b32 s0, v40, 2
1723 ; GFX11-NEXT: s_or_saveexec_b32 s1, -1
1724 ; GFX11-NEXT: scratch_load_b32 v40, off, s33 ; 4-byte Folded Reload
1725 ; GFX11-NEXT: s_mov_b32 exec_lo, s1
1726 ; GFX11-NEXT: s_add_i32 s32, s32, -16
1727 ; GFX11-NEXT: s_mov_b32 s33, s0
1728 ; GFX11-NEXT: s_waitcnt vmcnt(0)
1729 ; GFX11-NEXT: s_setpc_b64 s[30:31]
1730 ; GFX11-NEXT s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1731 ; GFX11-NEXT s_mov_b32 s3, s33
1732 ; GFX11-NEXT s_mov_b32 s33, s32
1733 ; GFX11-NEXT s_or_saveexec_b32 s4, -1
1734 ; GFX11-NEXT scratch_store_b32 off, v40, s33 ; 4-byte Folded Spill
1735 ; GFX11-NEXT s_mov_b32 exec_lo, s4
1736 ; GFX11-NEXT s_add_i32 s32, s32, 16
1737 ; GFX11-NEXT s_getpc_b64 s[4:5]
1738 ; GFX11-NEXT s_add_u32 s4, s4, caller_void_func_i32_v2float_inreg@gotpcrel32@lo+4
1739 ; GFX11-NEXT s_addc_u32 s5, s5, caller_void_func_i32_v2float_inreg@gotpcrel32@hi+12
1740 ; GFX11-NEXT v_writelane_b32 v40, s3, 2
1741 ; GFX11-NEXT s_load_b64 s[4:5], s[4:5], 0x0
1742 ; GFX11-NEXT v_writelane_b32 v40, s30, 0
1743 ; GFX11-NEXT v_writelane_b32 v40, s31, 1
1744 ; GFX11-NEXT s_waitcnt lgkmcnt(0)
1745 ; GFX11-NEXT s_swappc_b64 s[30:31], s[4:5]
1746 ; GFX11-NEXT s_delay_alu instid0(VALU_DEP_1)
1747 ; GFX11-NEXT v_readlane_b32 s31, v40, 1
1748 ; GFX11-NEXT v_readlane_b32 s30, v40, 0
1749 ; GFX11-NEXT v_readlane_b32 s0, v40, 2
1750 ; GFX11-NEXT s_or_saveexec_b32 s1, -1
1751 ; GFX11-NEXT scratch_load_b32 v40, off, s33 ; 4-byte Folded Reload
1752 ; GFX11-NEXT s_mov_b32 exec_lo, s1
1753 ; GFX11-NEXT s_add_i32 s32, s32, -16
1754 ; GFX11-NEXT s_mov_b32 s33, s0
1755 ; GFX11-NEXT s_waitcnt vmcnt(0)
1756 ; GFX11-NEXT s_setpc_b64 s[30:31]
1757 call void @caller_void_func_i32_v2float_inreg(i32 inreg %arg0, <2 x float> inreg %arg1)
1761 define void @void_func_bf16_inreg(bfloat inreg %arg0) #0 {
1762 ; GFX9-LABEL: void_func_bf16_inreg:
1764 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1765 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
1766 ; GFX9-NEXT: global_store_short v[0:1], v0, off
1767 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1768 ; GFX9-NEXT: s_setpc_b64 s[30:31]
1770 ; GFX11-LABEL: void_func_bf16_inreg:
1772 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1773 ; GFX11-NEXT: v_mov_b32_e32 v0, s0
1774 ; GFX11-NEXT: global_store_b16 v[0:1], v0, off
1775 ; GFX11-NEXT: s_setpc_b64 s[30:31]
1776 store bfloat %arg0, ptr addrspace(1) undef
1780 define void @void_func_v2bf16_inreg(<2 x bfloat> inreg %arg0) #0 {
1781 ; GFX9-LABEL: void_func_v2bf16_inreg:
1783 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1784 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
1785 ; GFX9-NEXT: global_store_dword v[0:1], v0, off
1786 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1787 ; GFX9-NEXT: s_setpc_b64 s[30:31]
1789 ; GFX11-LABEL: void_func_v2bf16_inreg:
1791 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1792 ; GFX11-NEXT: v_mov_b32_e32 v0, s0
1793 ; GFX11-NEXT: global_store_b32 v[0:1], v0, off
1794 ; GFX11-NEXT: s_setpc_b64 s[30:31]
1795 store <2 x bfloat> %arg0, ptr addrspace(1) undef
1799 define void @void_func_v3bf16_inreg(<3 x bfloat> inreg %arg0) #0 {
1800 ; GFX9-LABEL: void_func_v3bf16_inreg:
1802 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1803 ; GFX9-NEXT: v_mov_b32_e32 v0, s7
1804 ; GFX9-NEXT: global_store_short v[0:1], v0, off
1805 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
1806 ; GFX9-NEXT: global_store_dword v[0:1], v0, off
1807 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1808 ; GFX9-NEXT: s_setpc_b64 s[30:31]
1810 ; GFX11-LABEL: void_func_v3bf16_inreg:
1812 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1813 ; GFX11-NEXT: v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
1814 ; GFX11-NEXT: s_clause 0x1
1815 ; GFX11-NEXT: global_store_b16 v[0:1], v0, off
1816 ; GFX11-NEXT: global_store_b32 v[0:1], v1, off
1817 ; GFX11-NEXT: s_setpc_b64 s[30:31]
1818 store <3 x bfloat> %arg0, ptr addrspace(1) undef
1822 define void @void_func_v4bf16_inreg(<4 x bfloat> inreg %arg0) #0 {
1823 ; GFX9-LABEL: void_func_v4bf16_inreg:
1825 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1826 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
1827 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
1828 ; GFX9-NEXT: global_store_dwordx2 v[0:1], v[0:1], off
1829 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1830 ; GFX9-NEXT: s_setpc_b64 s[30:31]
1832 ; GFX11-LABEL: void_func_v4bf16_inreg:
1834 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1835 ; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
1836 ; GFX11-NEXT: global_store_b64 v[0:1], v[0:1], off
1837 ; GFX11-NEXT: s_setpc_b64 s[30:31]
1838 store <4 x bfloat> %arg0, ptr addrspace(1) undef
1842 define void @void_func_v8bf16_inreg(<8 x bfloat> inreg %arg0) #0 {
1843 ; GFX9-LABEL: void_func_v8bf16_inreg:
1845 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1846 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
1847 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
1848 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
1849 ; GFX9-NEXT: v_mov_b32_e32 v3, s17
1850 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1851 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1852 ; GFX9-NEXT: s_setpc_b64 s[30:31]
1854 ; GFX11-LABEL: void_func_v8bf16_inreg:
1856 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1857 ; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
1858 ; GFX11-NEXT: v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
1859 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off
1860 ; GFX11-NEXT: s_setpc_b64 s[30:31]
1861 store <8 x bfloat> %arg0, ptr addrspace(1) undef
1865 define void @void_func_v16bf16_inreg(<16 x bfloat> inreg %arg0) #0 {
1866 ; GFX9-LABEL: void_func_v16bf16_inreg:
1868 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1869 ; GFX9-NEXT: v_mov_b32_e32 v0, s18
1870 ; GFX9-NEXT: v_mov_b32_e32 v1, s19
1871 ; GFX9-NEXT: v_mov_b32_e32 v2, s20
1872 ; GFX9-NEXT: v_mov_b32_e32 v3, s21
1873 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1874 ; GFX9-NEXT: s_nop 0
1875 ; GFX9-NEXT: v_mov_b32_e32 v0, s6
1876 ; GFX9-NEXT: v_mov_b32_e32 v1, s7
1877 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
1878 ; GFX9-NEXT: v_mov_b32_e32 v3, s17
1879 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[0:3], off
1880 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1881 ; GFX9-NEXT: s_setpc_b64 s[30:31]
1883 ; GFX11-LABEL: void_func_v16bf16_inreg:
1885 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1886 ; GFX11-NEXT: v_dual_mov_b32 v0, s6 :: v_dual_mov_b32 v1, s7
1887 ; GFX11-NEXT: v_dual_mov_b32 v2, s16 :: v_dual_mov_b32 v3, s17
1888 ; GFX11-NEXT: v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v5, s1
1889 ; GFX11-NEXT: v_dual_mov_b32 v6, s2 :: v_dual_mov_b32 v7, s3
1890 ; GFX11-NEXT: s_clause 0x1
1891 ; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off
1892 ; GFX11-NEXT: global_store_b128 v[0:1], v[4:7], off
1893 ; GFX11-NEXT: s_setpc_b64 s[30:31]
1894 store <16 x bfloat> %arg0, ptr addrspace(1) undef
1898 define void @void_func_2_i32_inreg(i32 inreg %arg0, i32 inreg %arg1, ptr addrspace(1) %ptr) {
1899 ; GFX9-LABEL: void_func_2_i32_inreg:
1901 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1902 ; GFX9-NEXT: v_mov_b32_e32 v2, s6
1903 ; GFX9-NEXT: global_store_dword v[0:1], v2, off
1904 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1905 ; GFX9-NEXT: v_mov_b32_e32 v2, s7
1906 ; GFX9-NEXT: global_store_dword v[0:1], v2, off
1907 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1908 ; GFX9-NEXT: s_setpc_b64 s[30:31]
1910 ; GFX11-LABEL: void_func_2_i32_inreg:
1912 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1913 ; GFX11-NEXT: v_dual_mov_b32 v2, s0 :: v_dual_mov_b32 v3, s1
1914 ; GFX11-NEXT: global_store_b32 v[0:1], v2, off dlc
1915 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1916 ; GFX11-NEXT: global_store_b32 v[0:1], v3, off dlc
1917 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1918 ; GFX11-NEXT: s_setpc_b64 s[30:31]
1919 store volatile i32 %arg0, ptr addrspace(1) %ptr
1920 store volatile i32 %arg1, ptr addrspace(1) %ptr
1924 define void @void_func_2_i64_inreg(i64 inreg %arg0, i64 inreg %arg1, ptr addrspace(1) %ptr) {
1925 ; GFX9-LABEL: void_func_2_i64_inreg:
1927 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1928 ; GFX9-NEXT: v_mov_b32_e32 v4, s6
1929 ; GFX9-NEXT: v_mov_b32_e32 v5, s7
1930 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
1931 ; GFX9-NEXT: v_mov_b32_e32 v3, s17
1932 ; GFX9-NEXT: global_store_dwordx2 v[0:1], v[4:5], off
1933 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1934 ; GFX9-NEXT: global_store_dwordx2 v[0:1], v[2:3], off
1935 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1936 ; GFX9-NEXT: s_setpc_b64 s[30:31]
1938 ; GFX11-LABEL: void_func_2_i64_inreg:
1940 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1941 ; GFX11-NEXT: v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v5, s1
1942 ; GFX11-NEXT: v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v3, s3
1943 ; GFX11-NEXT: global_store_b64 v[0:1], v[4:5], off dlc
1944 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1945 ; GFX11-NEXT: global_store_b64 v[0:1], v[2:3], off dlc
1946 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1947 ; GFX11-NEXT: s_setpc_b64 s[30:31]
1948 store volatile i64 %arg0, ptr addrspace(1) %ptr
1949 store volatile i64 %arg1, ptr addrspace(1) %ptr
1953 define void @void_func_i64_inreg_i32_inreg_i64_inreg(i64 inreg %arg0, i32 inreg %arg1, i64 inreg %arg2, ptr addrspace(1) %ptr) {
1954 ; GFX9-LABEL: void_func_i64_inreg_i32_inreg_i64_inreg:
1956 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1957 ; GFX9-NEXT: v_mov_b32_e32 v4, s6
1958 ; GFX9-NEXT: v_mov_b32_e32 v5, s7
1959 ; GFX9-NEXT: global_store_dwordx2 v[0:1], v[4:5], off
1960 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1961 ; GFX9-NEXT: v_mov_b32_e32 v4, s16
1962 ; GFX9-NEXT: v_mov_b32_e32 v2, s17
1963 ; GFX9-NEXT: v_mov_b32_e32 v3, s18
1964 ; GFX9-NEXT: global_store_dword v[0:1], v4, off
1965 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1966 ; GFX9-NEXT: global_store_dwordx2 v[0:1], v[2:3], off
1967 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1968 ; GFX9-NEXT: s_setpc_b64 s[30:31]
1970 ; GFX11-LABEL: void_func_i64_inreg_i32_inreg_i64_inreg:
1972 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1973 ; GFX11-NEXT: v_dual_mov_b32 v2, s3 :: v_dual_mov_b32 v5, s1
1974 ; GFX11-NEXT: v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v3, s6
1975 ; GFX11-NEXT: v_mov_b32_e32 v6, s2
1976 ; GFX11-NEXT: global_store_b64 v[0:1], v[4:5], off dlc
1977 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1978 ; GFX11-NEXT: global_store_b32 v[0:1], v6, off dlc
1979 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1980 ; GFX11-NEXT: global_store_b64 v[0:1], v[2:3], off dlc
1981 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
1982 ; GFX11-NEXT: s_setpc_b64 s[30:31]
1983 store volatile i64 %arg0, ptr addrspace(1) %ptr
1984 store volatile i32 %arg1, ptr addrspace(1) %ptr
1985 store volatile i64 %arg2, ptr addrspace(1) %ptr
1989 define void @void_func_5_i32_inreg(i32 inreg %arg0, i32 inreg %arg1, i32 inreg %arg2, i32 inreg %arg3, i32 inreg %arg4, ptr addrspace(1) %ptr) {
1990 ; GFX9-LABEL: void_func_5_i32_inreg:
1992 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1993 ; GFX9-NEXT: v_mov_b32_e32 v2, s6
1994 ; GFX9-NEXT: global_store_dword v[0:1], v2, off
1995 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1996 ; GFX9-NEXT: v_mov_b32_e32 v2, s7
1997 ; GFX9-NEXT: global_store_dword v[0:1], v2, off
1998 ; GFX9-NEXT: s_waitcnt vmcnt(0)
1999 ; GFX9-NEXT: v_mov_b32_e32 v2, s16
2000 ; GFX9-NEXT: global_store_dword v[0:1], v2, off
2001 ; GFX9-NEXT: s_waitcnt vmcnt(0)
2002 ; GFX9-NEXT: v_mov_b32_e32 v2, s17
2003 ; GFX9-NEXT: global_store_dword v[0:1], v2, off
2004 ; GFX9-NEXT: s_waitcnt vmcnt(0)
2005 ; GFX9-NEXT: v_mov_b32_e32 v2, s18
2006 ; GFX9-NEXT: global_store_dword v[0:1], v2, off
2007 ; GFX9-NEXT: s_waitcnt vmcnt(0)
2008 ; GFX9-NEXT: s_setpc_b64 s[30:31]
2010 ; GFX11-LABEL: void_func_5_i32_inreg:
2012 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2013 ; GFX11-NEXT: v_dual_mov_b32 v2, s0 :: v_dual_mov_b32 v3, s1
2014 ; GFX11-NEXT: v_dual_mov_b32 v4, s2 :: v_dual_mov_b32 v5, s3
2015 ; GFX11-NEXT: v_mov_b32_e32 v6, s6
2016 ; GFX11-NEXT: global_store_b32 v[0:1], v2, off dlc
2017 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
2018 ; GFX11-NEXT: global_store_b32 v[0:1], v3, off dlc
2019 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
2020 ; GFX11-NEXT: global_store_b32 v[0:1], v4, off dlc
2021 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
2022 ; GFX11-NEXT: global_store_b32 v[0:1], v5, off dlc
2023 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
2024 ; GFX11-NEXT: global_store_b32 v[0:1], v6, off dlc
2025 ; GFX11-NEXT: s_waitcnt_vscnt null, 0x0
2026 ; GFX11-NEXT: s_setpc_b64 s[30:31]
2027 store volatile i32 %arg0, ptr addrspace(1) %ptr
2028 store volatile i32 %arg1, ptr addrspace(1) %ptr
2029 store volatile i32 %arg2, ptr addrspace(1) %ptr
2030 store volatile i32 %arg3, ptr addrspace(1) %ptr
2031 store volatile i32 %arg4, ptr addrspace(1) %ptr
2035 define void @void_func_a5i32_inreg([5 x i32] inreg %arg0, ptr addrspace(1) %ptr) {
2036 ; GFX9-LABEL: void_func_a5i32_inreg:
2038 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2039 ; GFX9-NEXT: v_mov_b32_e32 v2, s18
2040 ; GFX9-NEXT: global_store_dword v[0:1], v2, off offset:16
2041 ; GFX9-NEXT: v_mov_b32_e32 v5, s17
2042 ; GFX9-NEXT: v_mov_b32_e32 v4, s16
2043 ; GFX9-NEXT: v_mov_b32_e32 v3, s7
2044 ; GFX9-NEXT: v_mov_b32_e32 v2, s6
2045 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
2046 ; GFX9-NEXT: s_waitcnt vmcnt(0)
2047 ; GFX9-NEXT: s_setpc_b64 s[30:31]
2049 ; GFX11-LABEL: void_func_a5i32_inreg:
2051 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2052 ; GFX11-NEXT: v_dual_mov_b32 v6, s6 :: v_dual_mov_b32 v5, s3
2053 ; GFX11-NEXT: v_dual_mov_b32 v4, s2 :: v_dual_mov_b32 v3, s1
2054 ; GFX11-NEXT: v_mov_b32_e32 v2, s0
2055 ; GFX11-NEXT: s_clause 0x1
2056 ; GFX11-NEXT: global_store_b32 v[0:1], v6, off offset:16
2057 ; GFX11-NEXT: global_store_b128 v[0:1], v[2:5], off
2058 ; GFX11-NEXT: s_setpc_b64 s[30:31]
2059 store [5 x i32] %arg0, ptr addrspace(1) %ptr
2063 ; Force all implicit inputs to be required
2064 declare void @extern()
2066 define void @void_func_a13i32_inreg([13 x i32] inreg %arg0, ptr addrspace(1) %ptr) {
2067 ; GFX9-LABEL: void_func_a13i32_inreg:
2069 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2070 ; GFX9-NEXT: s_mov_b32 s27, s33
2071 ; GFX9-NEXT: s_mov_b32 s33, s32
2072 ; GFX9-NEXT: s_or_saveexec_b64 s[28:29], -1
2073 ; GFX9-NEXT: buffer_store_dword v40, off, s[0:3], s33 ; 4-byte Folded Spill
2074 ; GFX9-NEXT: s_mov_b64 exec, s[28:29]
2075 ; GFX9-NEXT: v_mov_b32_e32 v2, s26
2076 ; GFX9-NEXT: global_store_dword v[0:1], v2, off offset:48
2077 ; GFX9-NEXT: v_mov_b32_e32 v5, s25
2078 ; GFX9-NEXT: v_mov_b32_e32 v4, s24
2079 ; GFX9-NEXT: v_mov_b32_e32 v3, s23
2080 ; GFX9-NEXT: v_mov_b32_e32 v2, s22
2081 ; GFX9-NEXT: s_addk_i32 s32, 0x400
2082 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[2:5], off offset:32
2083 ; GFX9-NEXT: v_writelane_b32 v40, s27, 2
2084 ; GFX9-NEXT: v_mov_b32_e32 v5, s21
2085 ; GFX9-NEXT: v_mov_b32_e32 v4, s20
2086 ; GFX9-NEXT: v_mov_b32_e32 v3, s19
2087 ; GFX9-NEXT: v_mov_b32_e32 v2, s18
2088 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[2:5], off offset:16
2089 ; GFX9-NEXT: v_writelane_b32 v40, s30, 0
2090 ; GFX9-NEXT: v_mov_b32_e32 v5, s17
2091 ; GFX9-NEXT: v_mov_b32_e32 v4, s16
2092 ; GFX9-NEXT: s_getpc_b64 s[16:17]
2093 ; GFX9-NEXT: s_add_u32 s16, s16, extern@gotpcrel32@lo+4
2094 ; GFX9-NEXT: s_addc_u32 s17, s17, extern@gotpcrel32@hi+12
2095 ; GFX9-NEXT: s_load_dwordx2 s[16:17], s[16:17], 0x0
2096 ; GFX9-NEXT: v_mov_b32_e32 v3, s7
2097 ; GFX9-NEXT: v_mov_b32_e32 v2, s6
2098 ; GFX9-NEXT: v_writelane_b32 v40, s31, 1
2099 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
2100 ; GFX9-NEXT: s_waitcnt lgkmcnt(0)
2101 ; GFX9-NEXT: s_swappc_b64 s[30:31], s[16:17]
2102 ; GFX9-NEXT: v_readlane_b32 s31, v40, 1
2103 ; GFX9-NEXT: v_readlane_b32 s30, v40, 0
2104 ; GFX9-NEXT: v_readlane_b32 s4, v40, 2
2105 ; GFX9-NEXT: s_or_saveexec_b64 s[6:7], -1
2106 ; GFX9-NEXT: buffer_load_dword v40, off, s[0:3], s33 ; 4-byte Folded Reload
2107 ; GFX9-NEXT: s_mov_b64 exec, s[6:7]
2108 ; GFX9-NEXT: s_addk_i32 s32, 0xfc00
2109 ; GFX9-NEXT: s_mov_b32 s33, s4
2110 ; GFX9-NEXT: s_waitcnt vmcnt(0)
2111 ; GFX9-NEXT: s_setpc_b64 s[30:31]
2113 ; GFX11-LABEL: void_func_a13i32_inreg:
2115 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2116 ; GFX11-NEXT: s_mov_b32 s23, s33
2117 ; GFX11-NEXT: s_mov_b32 s33, s32
2118 ; GFX11-NEXT: s_or_saveexec_b32 s24, -1
2119 ; GFX11-NEXT: scratch_store_b32 off, v40, s33 ; 4-byte Folded Spill
2120 ; GFX11-NEXT: s_mov_b32 exec_lo, s24
2121 ; GFX11-NEXT: s_add_i32 s32, s32, 16
2122 ; GFX11-NEXT: v_dual_mov_b32 v4, s20 :: v_dual_mov_b32 v3, s19
2123 ; GFX11-NEXT: v_dual_mov_b32 v2, s18 :: v_dual_mov_b32 v9, s17
2124 ; GFX11-NEXT: s_getpc_b64 s[18:19]
2125 ; GFX11-NEXT: s_add_u32 s18, s18, extern@gotpcrel32@lo+4
2126 ; GFX11-NEXT: s_addc_u32 s19, s19, extern@gotpcrel32@hi+12
2127 ; GFX11-NEXT: v_dual_mov_b32 v8, s16 :: v_dual_mov_b32 v7, s7
2128 ; GFX11-NEXT: s_load_b64 s[16:17], s[18:19], 0x0
2129 ; GFX11-NEXT: v_writelane_b32 v40, s23, 2
2130 ; GFX11-NEXT: v_dual_mov_b32 v14, s22 :: v_dual_mov_b32 v5, s21
2131 ; GFX11-NEXT: v_dual_mov_b32 v6, s6 :: v_dual_mov_b32 v13, s3
2132 ; GFX11-NEXT: v_writelane_b32 v40, s30, 0
2133 ; GFX11-NEXT: v_dual_mov_b32 v12, s2 :: v_dual_mov_b32 v11, s1
2134 ; GFX11-NEXT: v_mov_b32_e32 v10, s0
2135 ; GFX11-NEXT: s_clause 0x3
2136 ; GFX11-NEXT: global_store_b32 v[0:1], v14, off offset:48
2137 ; GFX11-NEXT: global_store_b128 v[0:1], v[2:5], off offset:32
2138 ; GFX11-NEXT: global_store_b128 v[0:1], v[6:9], off offset:16
2139 ; GFX11-NEXT: global_store_b128 v[0:1], v[10:13], off
2140 ; GFX11-NEXT: v_writelane_b32 v40, s31, 1
2141 ; GFX11-NEXT: s_waitcnt lgkmcnt(0)
2142 ; GFX11-NEXT: s_swappc_b64 s[30:31], s[16:17]
2143 ; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
2144 ; GFX11-NEXT: v_readlane_b32 s31, v40, 1
2145 ; GFX11-NEXT: v_readlane_b32 s30, v40, 0
2146 ; GFX11-NEXT: v_readlane_b32 s0, v40, 2
2147 ; GFX11-NEXT: s_or_saveexec_b32 s1, -1
2148 ; GFX11-NEXT: scratch_load_b32 v40, off, s33 ; 4-byte Folded Reload
2149 ; GFX11-NEXT: s_mov_b32 exec_lo, s1
2150 ; GFX11-NEXT: s_add_i32 s32, s32, -16
2151 ; GFX11-NEXT: s_mov_b32 s33, s0
2152 ; GFX11-NEXT: s_waitcnt vmcnt(0)
2153 ; GFX11-NEXT: s_setpc_b64 s[30:31]
2154 store [13 x i32] %arg0, ptr addrspace(1) %ptr
2159 ; define void @void_func_a14i32_inreg([14 x i32] inreg %arg0, ptr addrspace(1) %ptr) {
2160 ; store [14 x i32] %arg0, ptr addrspace(1) %ptr
2161 ; call void @extern()
2166 ; define void @void_func_a15i32_inreg([15 x i32] inreg %arg0, ptr addrspace(1) %ptr) {
2167 ; store [15 x i32] %arg0, ptr addrspace(1) %ptr
2168 ; call void @extern()
2173 ; define void @void_func_a16i32_inreg([16 x i32] inreg %arg0, ptr addrspace(1) %ptr) {
2174 ; store [16 x i32] %arg0, ptr addrspace(1) %ptr
2175 ; call void @extern()
2179 ; FIXME: Should still fail
2180 define void @void_func_a16i32_inreg__noimplicit([16 x i32] inreg %arg0, ptr addrspace(1) %ptr) {
2181 ; GFX9-LABEL: void_func_a16i32_inreg__noimplicit:
2183 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2184 ; GFX9-NEXT: v_mov_b32_e32 v5, s29
2185 ; GFX9-NEXT: v_mov_b32_e32 v4, s28
2186 ; GFX9-NEXT: v_mov_b32_e32 v3, s27
2187 ; GFX9-NEXT: v_mov_b32_e32 v2, s26
2188 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[2:5], off offset:48
2189 ; GFX9-NEXT: s_nop 0
2190 ; GFX9-NEXT: v_mov_b32_e32 v5, s25
2191 ; GFX9-NEXT: v_mov_b32_e32 v4, s24
2192 ; GFX9-NEXT: v_mov_b32_e32 v3, s23
2193 ; GFX9-NEXT: v_mov_b32_e32 v2, s22
2194 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[2:5], off offset:32
2195 ; GFX9-NEXT: s_nop 0
2196 ; GFX9-NEXT: v_mov_b32_e32 v5, s21
2197 ; GFX9-NEXT: v_mov_b32_e32 v4, s20
2198 ; GFX9-NEXT: v_mov_b32_e32 v3, s19
2199 ; GFX9-NEXT: v_mov_b32_e32 v2, s18
2200 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[2:5], off offset:16
2201 ; GFX9-NEXT: s_nop 0
2202 ; GFX9-NEXT: v_mov_b32_e32 v5, s17
2203 ; GFX9-NEXT: v_mov_b32_e32 v4, s16
2204 ; GFX9-NEXT: v_mov_b32_e32 v3, s7
2205 ; GFX9-NEXT: v_mov_b32_e32 v2, s6
2206 ; GFX9-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
2207 ; GFX9-NEXT: s_waitcnt vmcnt(0)
2208 ; GFX9-NEXT: s_setpc_b64 s[30:31]
2210 ; GFX11-LABEL: void_func_a16i32_inreg__noimplicit:
2212 ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2213 ; GFX11-NEXT: v_dual_mov_b32 v5, s25 :: v_dual_mov_b32 v4, s24
2214 ; GFX11-NEXT: v_dual_mov_b32 v3, s23 :: v_dual_mov_b32 v2, s22
2215 ; GFX11-NEXT: v_dual_mov_b32 v9, s21 :: v_dual_mov_b32 v8, s20
2216 ; GFX11-NEXT: v_dual_mov_b32 v7, s19 :: v_dual_mov_b32 v6, s18
2217 ; GFX11-NEXT: v_dual_mov_b32 v13, s17 :: v_dual_mov_b32 v12, s16
2218 ; GFX11-NEXT: v_dual_mov_b32 v11, s7 :: v_dual_mov_b32 v10, s6
2219 ; GFX11-NEXT: v_dual_mov_b32 v17, s3 :: v_dual_mov_b32 v16, s2
2220 ; GFX11-NEXT: v_dual_mov_b32 v15, s1 :: v_dual_mov_b32 v14, s0
2221 ; GFX11-NEXT: s_clause 0x3
2222 ; GFX11-NEXT: global_store_b128 v[0:1], v[2:5], off offset:48
2223 ; GFX11-NEXT: global_store_b128 v[0:1], v[6:9], off offset:32
2224 ; GFX11-NEXT: global_store_b128 v[0:1], v[10:13], off offset:16
2225 ; GFX11-NEXT: global_store_b128 v[0:1], v[14:17], off
2226 ; GFX11-NEXT: s_setpc_b64 s[30:31]
2227 store [16 x i32] %arg0, ptr addrspace(1) %ptr
2231 attributes #0 = { nounwind }
2232 attributes #1 = { nounwind noinline }