Re-land [openmp] Fix warnings when building on Windows with latest MSVC or Clang...
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / function-args-inreg.ll
blob44a9127b4bd09c2922676d81fd493b8cb81cd6ec
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:
7 ; GFX9:       ; %bb.0:
8 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9 ; GFX9-NEXT:    s_and_b32 s4, s4, 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:
16 ; GFX11:       ; %bb.0:
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
24   ret void
27 define void @void_func_i8_inreg(i8 inreg %arg0) #0 {
28 ; GFX9-LABEL: void_func_i8_inreg:
29 ; GFX9:       ; %bb.0:
30 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
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:
37 ; GFX11:       ; %bb.0:
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
43   ret void
46 define void @void_func_i16_inreg(i16 inreg %arg0) #0 {
47 ; GFX9-LABEL: void_func_i16_inreg:
48 ; GFX9:       ; %bb.0:
49 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
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:
56 ; GFX11:       ; %bb.0:
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
62   ret void
65 define void @void_func_i32_inreg(i32 inreg %arg0) #0 {
66 ; GFX9-LABEL: void_func_i32_inreg:
67 ; GFX9:       ; %bb.0:
68 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
69 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
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:
75 ; GFX11:       ; %bb.0:
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
81   ret void
84 define void @void_func_i64_inreg(i64 inreg %arg0) #0 {
85 ; GFX9-LABEL: void_func_i64_inreg:
86 ; GFX9:       ; %bb.0:
87 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
88 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
89 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
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:
95 ; GFX11:       ; %bb.0:
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
101   ret void
104 define void @void_func_f16_inreg(half inreg %arg0) #0 {
105 ; GFX9-LABEL: void_func_f16_inreg:
106 ; GFX9:       ; %bb.0:
107 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
108 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
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:
114 ; GFX11:       ; %bb.0:
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
120   ret void
123 define void @void_func_f32_inreg(float inreg %arg0) #0 {
124 ; GFX9-LABEL: void_func_f32_inreg:
125 ; GFX9:       ; %bb.0:
126 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
127 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
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:
133 ; GFX11:       ; %bb.0:
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
139   ret void
142 define void @void_func_f64_inreg(double inreg %arg0) #0 {
143 ; GFX9-LABEL: void_func_f64_inreg:
144 ; GFX9:       ; %bb.0:
145 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
146 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
147 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
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:
153 ; GFX11:       ; %bb.0:
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
159   ret void
162 define void @void_func_v2i16_inreg(<2 x i16> inreg %arg0) #0 {
163 ; GFX9-LABEL: void_func_v2i16_inreg:
164 ; GFX9:       ; %bb.0:
165 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
166 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
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:
172 ; GFX11:       ; %bb.0:
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
178   ret void
181 define void @void_func_v3i16_inreg(<3 x i16> inreg %arg0) #0 {
182 ; GFX9-LABEL: void_func_v3i16_inreg:
183 ; GFX9:       ; %bb.0:
184 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
185 ; GFX9-NEXT:    v_mov_b32_e32 v0, s5
186 ; GFX9-NEXT:    global_store_short v[0:1], v0, off
187 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
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:
193 ; GFX11:       ; %bb.0:
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
201   ret void
204 define void @void_func_v4i16_inreg(<4 x i16> inreg %arg0) #0 {
205 ; GFX89-LABEL: void_func_v4i16_inreg:
206 ; GFX89:       ; %bb.0:
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:
215 ; GFX9:       ; %bb.0:
216 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
217 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
218 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
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:
224 ; GFX11:       ; %bb.0:
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
230   ret void
233 define void @void_func_v5i16_inreg(<5 x i16> inreg %arg0) #0 {
234 ; GFX9-LABEL: void_func_v5i16_inreg:
235 ; GFX9:       ; %bb.0:
236 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
237 ; GFX9-NEXT:    v_mov_b32_e32 v0, s6
238 ; GFX9-NEXT:    global_store_short v[0:1], v0, off
239 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
240 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
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:
246 ; GFX11:       ; %bb.0:
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
255   ret void
258 define void @void_func_v8i16_inreg(<8 x i16> inreg %arg0) #0 {
259 ; GFX9-LABEL: void_func_v8i16_inreg:
260 ; GFX9:       ; %bb.0:
261 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
262 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
263 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
264 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
265 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
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:
271 ; GFX11:       ; %bb.0:
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
278   ret void
281 define void @void_func_v2i32_inreg(<2 x i32> inreg %arg0) #0 {
282 ; GFX9-LABEL: void_func_v2i32_inreg:
283 ; GFX9:       ; %bb.0:
284 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
285 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
286 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
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:
292 ; GFX11:       ; %bb.0:
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
298   ret void
301 define void @void_func_v3i32_inreg(<3 x i32> inreg %arg0) #0 {
302 ; GFX9-LABEL: void_func_v3i32_inreg:
303 ; GFX9:       ; %bb.0:
304 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
305 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
306 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
307 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
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:
313 ; GFX11:       ; %bb.0:
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
320   ret void
323 define void @void_func_v4i32_inreg(<4 x i32> inreg %arg0) #0 {
324 ; GFX9-LABEL: void_func_v4i32_inreg:
325 ; GFX9:       ; %bb.0:
326 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
327 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
328 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
329 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
330 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
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:
336 ; GFX11:       ; %bb.0:
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
343   ret void
346 define void @void_func_v5i32_inreg(<5 x i32> inreg %arg0) #0 {
347 ; GFX9-LABEL: void_func_v5i32_inreg:
348 ; GFX9:       ; %bb.0:
349 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
350 ; GFX9-NEXT:    v_mov_b32_e32 v0, s8
351 ; GFX9-NEXT:    global_store_dword v[0:1], v0, off
352 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
353 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
354 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
355 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
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:
361 ; GFX11:       ; %bb.0:
362 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
363 ; GFX11-NEXT:    v_dual_mov_b32 v4, s4 :: 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
371   ret void
374 define void @void_func_v8i32_inreg(<8 x i32> inreg %arg0) #0 {
375 ; GFX9-LABEL: void_func_v8i32_inreg:
376 ; GFX9:       ; %bb.0:
377 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
378 ; GFX9-NEXT:    v_mov_b32_e32 v0, s8
379 ; GFX9-NEXT:    v_mov_b32_e32 v1, s9
380 ; GFX9-NEXT:    v_mov_b32_e32 v2, s10
381 ; GFX9-NEXT:    v_mov_b32_e32 v3, s11
382 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
383 ; GFX9-NEXT:    s_nop 0
384 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
385 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
386 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
387 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
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:
393 ; GFX11:       ; %bb.0:
394 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
395 ; GFX11-NEXT:    v_dual_mov_b32 v0, s4 :: v_dual_mov_b32 v1, s5
396 ; GFX11-NEXT:    v_dual_mov_b32 v2, s6 :: v_dual_mov_b32 v3, s7
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
404   ret void
407 define void @void_func_v16i32_inreg(<16 x i32> inreg %arg0) #0 {
408 ; CIGFX89-LABEL: void_func_v16i32_inreg:
409 ; CIGFX89:       ; %bb.0:
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:
438 ; GFX9:       ; %bb.0:
439 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
440 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
441 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
442 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
443 ; GFX9-NEXT:    v_mov_b32_e32 v3, s19
444 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
445 ; GFX9-NEXT:    s_nop 0
446 ; GFX9-NEXT:    v_mov_b32_e32 v0, s12
447 ; GFX9-NEXT:    v_mov_b32_e32 v1, s13
448 ; GFX9-NEXT:    v_mov_b32_e32 v2, s14
449 ; GFX9-NEXT:    v_mov_b32_e32 v3, s15
450 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
451 ; GFX9-NEXT:    s_nop 0
452 ; GFX9-NEXT:    v_mov_b32_e32 v0, s8
453 ; GFX9-NEXT:    v_mov_b32_e32 v1, s9
454 ; GFX9-NEXT:    v_mov_b32_e32 v2, s10
455 ; GFX9-NEXT:    v_mov_b32_e32 v3, s11
456 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
457 ; GFX9-NEXT:    s_nop 0
458 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
459 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
460 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
461 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
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:
467 ; GFX11:       ; %bb.0:
468 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
469 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
470 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
471 ; GFX11-NEXT:    v_dual_mov_b32 v4, s8 :: v_dual_mov_b32 v5, s9
472 ; GFX11-NEXT:    v_dual_mov_b32 v6, s10 :: v_dual_mov_b32 v7, s11
473 ; GFX11-NEXT:    v_dual_mov_b32 v8, s4 :: v_dual_mov_b32 v9, s5
474 ; GFX11-NEXT:    v_dual_mov_b32 v10, s6 :: v_dual_mov_b32 v11, s7
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
484   ret void
487 define void @void_func_v32i32_inreg(<32 x i32> inreg %arg0) #0 {
488 ; GFX9-LABEL: void_func_v32i32_inreg:
489 ; GFX9:       ; %bb.0:
490 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
491 ; GFX9-NEXT:    v_mov_b32_e32 v7, v1
492 ; GFX9-NEXT:    v_mov_b32_e32 v6, v0
493 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
494 ; GFX9-NEXT:    s_nop 0
495 ; GFX9-NEXT:    v_mov_b32_e32 v4, s28
496 ; GFX9-NEXT:    v_mov_b32_e32 v5, s29
497 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off
498 ; GFX9-NEXT:    v_mov_b32_e32 v0, s24
499 ; GFX9-NEXT:    v_mov_b32_e32 v1, s25
500 ; GFX9-NEXT:    v_mov_b32_e32 v2, s26
501 ; GFX9-NEXT:    v_mov_b32_e32 v3, s27
502 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
503 ; GFX9-NEXT:    s_nop 0
504 ; GFX9-NEXT:    v_mov_b32_e32 v0, s20
505 ; GFX9-NEXT:    v_mov_b32_e32 v1, s21
506 ; GFX9-NEXT:    v_mov_b32_e32 v2, s22
507 ; GFX9-NEXT:    v_mov_b32_e32 v3, s23
508 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
509 ; GFX9-NEXT:    s_nop 0
510 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
511 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
512 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
513 ; GFX9-NEXT:    v_mov_b32_e32 v3, s19
514 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
515 ; GFX9-NEXT:    s_nop 0
516 ; GFX9-NEXT:    v_mov_b32_e32 v0, s12
517 ; GFX9-NEXT:    v_mov_b32_e32 v1, s13
518 ; GFX9-NEXT:    v_mov_b32_e32 v2, s14
519 ; GFX9-NEXT:    v_mov_b32_e32 v3, s15
520 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
521 ; GFX9-NEXT:    s_nop 0
522 ; GFX9-NEXT:    v_mov_b32_e32 v0, s8
523 ; GFX9-NEXT:    v_mov_b32_e32 v1, s9
524 ; GFX9-NEXT:    v_mov_b32_e32 v2, s10
525 ; GFX9-NEXT:    v_mov_b32_e32 v3, s11
526 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
527 ; GFX9-NEXT:    s_nop 0
528 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
529 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
530 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
531 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
532 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
533 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
534 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
536 ; GFX11-LABEL: void_func_v32i32_inreg:
537 ; GFX11:       ; %bb.0:
538 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
539 ; GFX11-NEXT:    v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v0
540 ; GFX11-NEXT:    v_dual_mov_b32 v0, s28 :: v_dual_mov_b32 v1, s29
541 ; GFX11-NEXT:    v_dual_mov_b32 v4, s24 :: v_dual_mov_b32 v5, s25
542 ; GFX11-NEXT:    v_dual_mov_b32 v6, s26 :: v_dual_mov_b32 v7, s27
543 ; GFX11-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v9, s21
544 ; GFX11-NEXT:    v_dual_mov_b32 v10, s22 :: v_dual_mov_b32 v11, s23
545 ; GFX11-NEXT:    s_clause 0x2
546 ; GFX11-NEXT:    global_store_b128 v[0:1], v[0:3], off
547 ; GFX11-NEXT:    global_store_b128 v[0:1], v[4:7], off
548 ; GFX11-NEXT:    global_store_b128 v[0:1], v[8:11], off
549 ; GFX11-NEXT:    v_dual_mov_b32 v0, s16 :: v_dual_mov_b32 v1, s17
550 ; GFX11-NEXT:    v_dual_mov_b32 v2, s18 :: v_dual_mov_b32 v3, s19
551 ; GFX11-NEXT:    v_dual_mov_b32 v4, s12 :: v_dual_mov_b32 v5, s13
552 ; GFX11-NEXT:    v_dual_mov_b32 v6, s14 :: v_dual_mov_b32 v7, s15
553 ; GFX11-NEXT:    v_dual_mov_b32 v8, s8 :: v_dual_mov_b32 v9, s9
554 ; GFX11-NEXT:    v_dual_mov_b32 v10, s10 :: v_dual_mov_b32 v11, s11
555 ; GFX11-NEXT:    v_dual_mov_b32 v12, s4 :: v_dual_mov_b32 v13, s5
556 ; GFX11-NEXT:    v_dual_mov_b32 v14, s6 :: v_dual_mov_b32 v15, s7
557 ; GFX11-NEXT:    v_dual_mov_b32 v16, s0 :: v_dual_mov_b32 v17, s1
558 ; GFX11-NEXT:    v_dual_mov_b32 v18, s2 :: v_dual_mov_b32 v19, s3
559 ; GFX11-NEXT:    s_clause 0x4
560 ; GFX11-NEXT:    global_store_b128 v[0:1], v[0:3], off
561 ; GFX11-NEXT:    global_store_b128 v[0:1], v[4:7], off
562 ; GFX11-NEXT:    global_store_b128 v[0:1], v[8:11], off
563 ; GFX11-NEXT:    global_store_b128 v[0:1], v[12:15], off
564 ; GFX11-NEXT:    global_store_b128 v[0:1], v[16:19], off
565 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
566   store <32 x i32> %arg0, ptr addrspace(1) undef
567   ret void
570 define void @void_func_v2i64_inreg(<2 x i64> inreg %arg0) #0 {
571 ; GFX9-LABEL: void_func_v2i64_inreg:
572 ; GFX9:       ; %bb.0:
573 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
574 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
575 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
576 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
577 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
578 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
579 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
580 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
582 ; GFX11-LABEL: void_func_v2i64_inreg:
583 ; GFX11:       ; %bb.0:
584 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
585 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
586 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
587 ; GFX11-NEXT:    global_store_b128 v[0:1], v[0:3], off
588 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
589   store <2 x i64> %arg0, ptr addrspace(1) undef
590   ret void
593 define void @void_func_v3i64_inreg(<3 x i64> inreg %arg0) #0 {
594 ; GFX9-LABEL: void_func_v3i64_inreg:
595 ; GFX9:       ; %bb.0:
596 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
597 ; GFX9-NEXT:    v_mov_b32_e32 v0, s8
598 ; GFX9-NEXT:    v_mov_b32_e32 v1, s9
599 ; GFX9-NEXT:    global_store_dwordx2 v[0:1], v[0:1], off
600 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
601 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
602 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
603 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
604 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
605 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
606 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
608 ; GFX11-LABEL: void_func_v3i64_inreg:
609 ; GFX11:       ; %bb.0:
610 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
611 ; GFX11-NEXT:    v_dual_mov_b32 v4, s4 :: v_dual_mov_b32 v5, s5
612 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
613 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
614 ; GFX11-NEXT:    s_clause 0x1
615 ; GFX11-NEXT:    global_store_b64 v[0:1], v[4:5], off
616 ; GFX11-NEXT:    global_store_b128 v[0:1], v[0:3], off
617 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
618   store <3 x i64> %arg0, ptr addrspace(1) undef
619   ret void
622 define void @void_func_v4i64_inreg(<4 x i64> inreg %arg0) #0 {
623 ; GFX9-LABEL: void_func_v4i64_inreg:
624 ; GFX9:       ; %bb.0:
625 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
626 ; GFX9-NEXT:    v_mov_b32_e32 v0, s8
627 ; GFX9-NEXT:    v_mov_b32_e32 v1, s9
628 ; GFX9-NEXT:    v_mov_b32_e32 v2, s10
629 ; GFX9-NEXT:    v_mov_b32_e32 v3, s11
630 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
631 ; GFX9-NEXT:    s_nop 0
632 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
633 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
634 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
635 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
636 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
637 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
638 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
640 ; GFX11-LABEL: void_func_v4i64_inreg:
641 ; GFX11:       ; %bb.0:
642 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
643 ; GFX11-NEXT:    v_dual_mov_b32 v0, s4 :: v_dual_mov_b32 v1, s5
644 ; GFX11-NEXT:    v_dual_mov_b32 v2, s6 :: v_dual_mov_b32 v3, s7
645 ; GFX11-NEXT:    v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v5, s1
646 ; GFX11-NEXT:    v_dual_mov_b32 v6, s2 :: v_dual_mov_b32 v7, s3
647 ; GFX11-NEXT:    s_clause 0x1
648 ; GFX11-NEXT:    global_store_b128 v[0:1], v[0:3], off
649 ; GFX11-NEXT:    global_store_b128 v[0:1], v[4:7], off
650 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
651   store <4 x i64> %arg0, ptr addrspace(1) undef
652   ret void
655 define void @void_func_v5i64_inreg(<5 x i64> inreg %arg0) #0 {
656 ; GFX9-LABEL: void_func_v5i64_inreg:
657 ; GFX9:       ; %bb.0:
658 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
659 ; GFX9-NEXT:    v_mov_b32_e32 v0, s8
660 ; GFX9-NEXT:    v_mov_b32_e32 v1, s9
661 ; GFX9-NEXT:    v_mov_b32_e32 v2, s10
662 ; GFX9-NEXT:    v_mov_b32_e32 v3, s11
663 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
664 ; GFX9-NEXT:    s_nop 0
665 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
666 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
667 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
668 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
669 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
670 ; GFX9-NEXT:    s_nop 0
671 ; GFX9-NEXT:    v_mov_b32_e32 v0, s12
672 ; GFX9-NEXT:    v_mov_b32_e32 v1, s13
673 ; GFX9-NEXT:    global_store_dwordx2 v[0:1], v[0:1], off
674 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
675 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
677 ; GFX11-LABEL: void_func_v5i64_inreg:
678 ; GFX11:       ; %bb.0:
679 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
680 ; GFX11-NEXT:    v_dual_mov_b32 v0, s4 :: v_dual_mov_b32 v1, s5
681 ; GFX11-NEXT:    v_dual_mov_b32 v2, s6 :: v_dual_mov_b32 v3, s7
682 ; GFX11-NEXT:    v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v5, s1
683 ; GFX11-NEXT:    v_dual_mov_b32 v6, s2 :: v_dual_mov_b32 v7, s3
684 ; GFX11-NEXT:    v_dual_mov_b32 v8, s8 :: v_dual_mov_b32 v9, s9
685 ; GFX11-NEXT:    s_clause 0x2
686 ; GFX11-NEXT:    global_store_b128 v[0:1], v[0:3], off
687 ; GFX11-NEXT:    global_store_b128 v[0:1], v[4:7], off
688 ; GFX11-NEXT:    global_store_b64 v[0:1], v[8:9], off
689 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
690   store <5 x i64> %arg0, ptr addrspace(1) undef
691   ret void
694 define void @void_func_v8i64_inreg(<8 x i64> inreg %arg0) #0 {
695 ; GFX9-LABEL: void_func_v8i64_inreg:
696 ; GFX9:       ; %bb.0:
697 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
698 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
699 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
700 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
701 ; GFX9-NEXT:    v_mov_b32_e32 v3, s19
702 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
703 ; GFX9-NEXT:    s_nop 0
704 ; GFX9-NEXT:    v_mov_b32_e32 v0, s12
705 ; GFX9-NEXT:    v_mov_b32_e32 v1, s13
706 ; GFX9-NEXT:    v_mov_b32_e32 v2, s14
707 ; GFX9-NEXT:    v_mov_b32_e32 v3, s15
708 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
709 ; GFX9-NEXT:    s_nop 0
710 ; GFX9-NEXT:    v_mov_b32_e32 v0, s8
711 ; GFX9-NEXT:    v_mov_b32_e32 v1, s9
712 ; GFX9-NEXT:    v_mov_b32_e32 v2, s10
713 ; GFX9-NEXT:    v_mov_b32_e32 v3, s11
714 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
715 ; GFX9-NEXT:    s_nop 0
716 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
717 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
718 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
719 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
720 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
721 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
722 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
724 ; GFX11-LABEL: void_func_v8i64_inreg:
725 ; GFX11:       ; %bb.0:
726 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
727 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
728 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
729 ; GFX11-NEXT:    v_dual_mov_b32 v4, s8 :: v_dual_mov_b32 v5, s9
730 ; GFX11-NEXT:    v_dual_mov_b32 v6, s10 :: v_dual_mov_b32 v7, s11
731 ; GFX11-NEXT:    v_dual_mov_b32 v8, s4 :: v_dual_mov_b32 v9, s5
732 ; GFX11-NEXT:    v_dual_mov_b32 v10, s6 :: v_dual_mov_b32 v11, s7
733 ; GFX11-NEXT:    v_dual_mov_b32 v12, s0 :: v_dual_mov_b32 v13, s1
734 ; GFX11-NEXT:    v_dual_mov_b32 v14, s2 :: v_dual_mov_b32 v15, s3
735 ; GFX11-NEXT:    s_clause 0x3
736 ; GFX11-NEXT:    global_store_b128 v[0:1], v[0:3], off
737 ; GFX11-NEXT:    global_store_b128 v[0:1], v[4:7], off
738 ; GFX11-NEXT:    global_store_b128 v[0:1], v[8:11], off
739 ; GFX11-NEXT:    global_store_b128 v[0:1], v[12:15], off
740 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
741   store <8 x i64> %arg0, ptr addrspace(1) undef
742   ret void
745 define void @void_func_v16i64_inreg(<16 x i64> inreg %arg0) #0 {
746 ; GFX9-LABEL: void_func_v16i64_inreg:
747 ; GFX9:       ; %bb.0:
748 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
749 ; GFX9-NEXT:    v_mov_b32_e32 v7, v1
750 ; GFX9-NEXT:    v_mov_b32_e32 v6, v0
751 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
752 ; GFX9-NEXT:    s_nop 0
753 ; GFX9-NEXT:    v_mov_b32_e32 v4, s28
754 ; GFX9-NEXT:    v_mov_b32_e32 v5, s29
755 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off
756 ; GFX9-NEXT:    v_mov_b32_e32 v0, s24
757 ; GFX9-NEXT:    v_mov_b32_e32 v1, s25
758 ; GFX9-NEXT:    v_mov_b32_e32 v2, s26
759 ; GFX9-NEXT:    v_mov_b32_e32 v3, s27
760 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
761 ; GFX9-NEXT:    s_nop 0
762 ; GFX9-NEXT:    v_mov_b32_e32 v0, s20
763 ; GFX9-NEXT:    v_mov_b32_e32 v1, s21
764 ; GFX9-NEXT:    v_mov_b32_e32 v2, s22
765 ; GFX9-NEXT:    v_mov_b32_e32 v3, s23
766 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
767 ; GFX9-NEXT:    s_nop 0
768 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
769 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
770 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
771 ; GFX9-NEXT:    v_mov_b32_e32 v3, s19
772 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
773 ; GFX9-NEXT:    s_nop 0
774 ; GFX9-NEXT:    v_mov_b32_e32 v0, s12
775 ; GFX9-NEXT:    v_mov_b32_e32 v1, s13
776 ; GFX9-NEXT:    v_mov_b32_e32 v2, s14
777 ; GFX9-NEXT:    v_mov_b32_e32 v3, s15
778 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
779 ; GFX9-NEXT:    s_nop 0
780 ; GFX9-NEXT:    v_mov_b32_e32 v0, s8
781 ; GFX9-NEXT:    v_mov_b32_e32 v1, s9
782 ; GFX9-NEXT:    v_mov_b32_e32 v2, s10
783 ; GFX9-NEXT:    v_mov_b32_e32 v3, s11
784 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
785 ; GFX9-NEXT:    s_nop 0
786 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
787 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
788 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
789 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
790 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
791 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
792 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
794 ; GFX11-LABEL: void_func_v16i64_inreg:
795 ; GFX11:       ; %bb.0:
796 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
797 ; GFX11-NEXT:    v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v0
798 ; GFX11-NEXT:    v_dual_mov_b32 v0, s28 :: v_dual_mov_b32 v1, s29
799 ; GFX11-NEXT:    v_dual_mov_b32 v4, s24 :: v_dual_mov_b32 v5, s25
800 ; GFX11-NEXT:    v_dual_mov_b32 v6, s26 :: v_dual_mov_b32 v7, s27
801 ; GFX11-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v9, s21
802 ; GFX11-NEXT:    v_dual_mov_b32 v10, s22 :: v_dual_mov_b32 v11, s23
803 ; GFX11-NEXT:    s_clause 0x2
804 ; GFX11-NEXT:    global_store_b128 v[0:1], v[0:3], off
805 ; GFX11-NEXT:    global_store_b128 v[0:1], v[4:7], off
806 ; GFX11-NEXT:    global_store_b128 v[0:1], v[8:11], off
807 ; GFX11-NEXT:    v_dual_mov_b32 v0, s16 :: v_dual_mov_b32 v1, s17
808 ; GFX11-NEXT:    v_dual_mov_b32 v2, s18 :: v_dual_mov_b32 v3, s19
809 ; GFX11-NEXT:    v_dual_mov_b32 v4, s12 :: v_dual_mov_b32 v5, s13
810 ; GFX11-NEXT:    v_dual_mov_b32 v6, s14 :: v_dual_mov_b32 v7, s15
811 ; GFX11-NEXT:    v_dual_mov_b32 v8, s8 :: v_dual_mov_b32 v9, s9
812 ; GFX11-NEXT:    v_dual_mov_b32 v10, s10 :: v_dual_mov_b32 v11, s11
813 ; GFX11-NEXT:    v_dual_mov_b32 v12, s4 :: v_dual_mov_b32 v13, s5
814 ; GFX11-NEXT:    v_dual_mov_b32 v14, s6 :: v_dual_mov_b32 v15, s7
815 ; GFX11-NEXT:    v_dual_mov_b32 v16, s0 :: v_dual_mov_b32 v17, s1
816 ; GFX11-NEXT:    v_dual_mov_b32 v18, s2 :: v_dual_mov_b32 v19, s3
817 ; GFX11-NEXT:    s_clause 0x4
818 ; GFX11-NEXT:    global_store_b128 v[0:1], v[0:3], off
819 ; GFX11-NEXT:    global_store_b128 v[0:1], v[4:7], off
820 ; GFX11-NEXT:    global_store_b128 v[0:1], v[8:11], off
821 ; GFX11-NEXT:    global_store_b128 v[0:1], v[12:15], off
822 ; GFX11-NEXT:    global_store_b128 v[0:1], v[16:19], off
823 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
824   store <16 x i64> %arg0, ptr addrspace(1) undef
825   ret void
828 define void @void_func_v2f16_inreg(<2 x half> inreg %arg0) #0 {
829 ; GFX9-LABEL: void_func_v2f16_inreg:
830 ; GFX9:       ; %bb.0:
831 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
832 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
833 ; GFX9-NEXT:    global_store_dword v[0:1], v0, off
834 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
835 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
837 ; GFX11-LABEL: void_func_v2f16_inreg:
838 ; GFX11:       ; %bb.0:
839 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
840 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
841 ; GFX11-NEXT:    global_store_b32 v[0:1], v0, off
842 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
843   store <2 x half> %arg0, ptr addrspace(1) undef
844   ret void
847 define void @void_func_v3f16_inreg(<3 x half> inreg %arg0) #0 {
848 ; GFX9-LABEL: void_func_v3f16_inreg:
849 ; GFX9:       ; %bb.0:
850 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
851 ; GFX9-NEXT:    v_mov_b32_e32 v0, s5
852 ; GFX9-NEXT:    global_store_short v[0:1], v0, off
853 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
854 ; GFX9-NEXT:    global_store_dword v[0:1], v0, off
855 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
856 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
858 ; GFX11-LABEL: void_func_v3f16_inreg:
859 ; GFX11:       ; %bb.0:
860 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
861 ; GFX11-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
862 ; GFX11-NEXT:    s_clause 0x1
863 ; GFX11-NEXT:    global_store_b16 v[0:1], v0, off
864 ; GFX11-NEXT:    global_store_b32 v[0:1], v1, off
865 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
866   store <3 x half> %arg0, ptr addrspace(1) undef
867   ret void
870 define void @void_func_v4f16_inreg(<4 x half> inreg %arg0) #0 {
871 ; GFX9-LABEL: void_func_v4f16_inreg:
872 ; GFX9:       ; %bb.0:
873 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
874 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
875 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
876 ; GFX9-NEXT:    global_store_dwordx2 v[0:1], v[0:1], off
877 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
878 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
880 ; GFX11-LABEL: void_func_v4f16_inreg:
881 ; GFX11:       ; %bb.0:
882 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
883 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
884 ; GFX11-NEXT:    global_store_b64 v[0:1], v[0:1], off
885 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
886   store <4 x half> %arg0, ptr addrspace(1) undef
887   ret void
890 define void @void_func_v8f16_inreg(<8 x half> inreg %arg0) #0 {
891 ; GFX9-LABEL: void_func_v8f16_inreg:
892 ; GFX9:       ; %bb.0:
893 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
894 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
895 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
896 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
897 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
898 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
899 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
900 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
902 ; GFX11-LABEL: void_func_v8f16_inreg:
903 ; GFX11:       ; %bb.0:
904 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
905 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
906 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
907 ; GFX11-NEXT:    global_store_b128 v[0:1], v[0:3], off
908 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
909   store <8 x half> %arg0, ptr addrspace(1) undef
910   ret void
913 define void @void_func_v16f16_inreg(<16 x half> inreg %arg0) #0 {
914 ; GFX9-LABEL: void_func_v16f16_inreg:
915 ; GFX9:       ; %bb.0:
916 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
917 ; GFX9-NEXT:    v_mov_b32_e32 v0, s8
918 ; GFX9-NEXT:    v_mov_b32_e32 v1, s9
919 ; GFX9-NEXT:    v_mov_b32_e32 v2, s10
920 ; GFX9-NEXT:    v_mov_b32_e32 v3, s11
921 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
922 ; GFX9-NEXT:    s_nop 0
923 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
924 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
925 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
926 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
927 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
928 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
929 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
931 ; GFX11-LABEL: void_func_v16f16_inreg:
932 ; GFX11:       ; %bb.0:
933 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
934 ; GFX11-NEXT:    v_dual_mov_b32 v0, s4 :: v_dual_mov_b32 v1, s5
935 ; GFX11-NEXT:    v_dual_mov_b32 v2, s6 :: v_dual_mov_b32 v3, s7
936 ; GFX11-NEXT:    v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v5, s1
937 ; GFX11-NEXT:    v_dual_mov_b32 v6, s2 :: v_dual_mov_b32 v7, s3
938 ; GFX11-NEXT:    s_clause 0x1
939 ; GFX11-NEXT:    global_store_b128 v[0:1], v[0:3], off
940 ; GFX11-NEXT:    global_store_b128 v[0:1], v[4:7], off
941 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
942   store <16 x half> %arg0, ptr addrspace(1) undef
943   ret void
946 define void @void_func_v2f32_inreg(<2 x float> inreg %arg0) #0 {
947 ; GFX9-LABEL: void_func_v2f32_inreg:
948 ; GFX9:       ; %bb.0:
949 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
950 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
951 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
952 ; GFX9-NEXT:    global_store_dwordx2 v[0:1], v[0:1], off
953 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
954 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
956 ; GFX11-LABEL: void_func_v2f32_inreg:
957 ; GFX11:       ; %bb.0:
958 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
959 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
960 ; GFX11-NEXT:    global_store_b64 v[0:1], v[0:1], off
961 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
962   store <2 x float> %arg0, ptr addrspace(1) undef
963   ret void
966 define void @void_func_v3f32_inreg(<3 x float> inreg %arg0) #0 {
967 ; GFX9-LABEL: void_func_v3f32_inreg:
968 ; GFX9:       ; %bb.0:
969 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
970 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
971 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
972 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
973 ; GFX9-NEXT:    global_store_dwordx3 v[0:1], v[0:2], off
974 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
975 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
977 ; GFX11-LABEL: void_func_v3f32_inreg:
978 ; GFX11:       ; %bb.0:
979 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
980 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
981 ; GFX11-NEXT:    v_mov_b32_e32 v2, s2
982 ; GFX11-NEXT:    global_store_b96 v[0:1], v[0:2], off
983 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
984   store <3 x float> %arg0, ptr addrspace(1) undef
985   ret void
988 define void @void_func_v4f32_inreg(<4 x float> inreg %arg0) #0 {
989 ; GFX9-LABEL: void_func_v4f32_inreg:
990 ; GFX9:       ; %bb.0:
991 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
992 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
993 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
994 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
995 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
996 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
997 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
998 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1000 ; GFX11-LABEL: void_func_v4f32_inreg:
1001 ; GFX11:       ; %bb.0:
1002 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1003 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
1004 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
1005 ; GFX11-NEXT:    global_store_b128 v[0:1], v[0:3], off
1006 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1007   store <4 x float> %arg0, ptr addrspace(1) undef
1008   ret void
1011 define void @void_func_v8f32_inreg(<8 x float> inreg %arg0) #0 {
1012 ; GFX9-LABEL: void_func_v8f32_inreg:
1013 ; GFX9:       ; %bb.0:
1014 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1015 ; GFX9-NEXT:    v_mov_b32_e32 v0, s8
1016 ; GFX9-NEXT:    v_mov_b32_e32 v1, s9
1017 ; GFX9-NEXT:    v_mov_b32_e32 v2, s10
1018 ; GFX9-NEXT:    v_mov_b32_e32 v3, s11
1019 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1020 ; GFX9-NEXT:    s_nop 0
1021 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
1022 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
1023 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
1024 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
1025 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1026 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1027 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1029 ; GFX11-LABEL: void_func_v8f32_inreg:
1030 ; GFX11:       ; %bb.0:
1031 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1032 ; GFX11-NEXT:    v_dual_mov_b32 v0, s4 :: v_dual_mov_b32 v1, s5
1033 ; GFX11-NEXT:    v_dual_mov_b32 v2, s6 :: v_dual_mov_b32 v3, s7
1034 ; GFX11-NEXT:    v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v5, s1
1035 ; GFX11-NEXT:    v_dual_mov_b32 v6, s2 :: v_dual_mov_b32 v7, s3
1036 ; GFX11-NEXT:    s_clause 0x1
1037 ; GFX11-NEXT:    global_store_b128 v[0:1], v[0:3], off
1038 ; GFX11-NEXT:    global_store_b128 v[0:1], v[4:7], off
1039 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1040   store <8 x float> %arg0, ptr addrspace(1) undef
1041   ret void
1044 define void @void_func_v16f32_inreg(<16 x float> inreg %arg0) #0 {
1045 ; GFX9-LABEL: void_func_v16f32_inreg:
1046 ; GFX9:       ; %bb.0:
1047 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1048 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
1049 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
1050 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
1051 ; GFX9-NEXT:    v_mov_b32_e32 v3, s19
1052 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1053 ; GFX9-NEXT:    s_nop 0
1054 ; GFX9-NEXT:    v_mov_b32_e32 v0, s12
1055 ; GFX9-NEXT:    v_mov_b32_e32 v1, s13
1056 ; GFX9-NEXT:    v_mov_b32_e32 v2, s14
1057 ; GFX9-NEXT:    v_mov_b32_e32 v3, s15
1058 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1059 ; GFX9-NEXT:    s_nop 0
1060 ; GFX9-NEXT:    v_mov_b32_e32 v0, s8
1061 ; GFX9-NEXT:    v_mov_b32_e32 v1, s9
1062 ; GFX9-NEXT:    v_mov_b32_e32 v2, s10
1063 ; GFX9-NEXT:    v_mov_b32_e32 v3, s11
1064 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1065 ; GFX9-NEXT:    s_nop 0
1066 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
1067 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
1068 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
1069 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
1070 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1071 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1072 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1074 ; GFX11-LABEL: void_func_v16f32_inreg:
1075 ; GFX11:       ; %bb.0:
1076 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1077 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
1078 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
1079 ; GFX11-NEXT:    v_dual_mov_b32 v4, s8 :: v_dual_mov_b32 v5, s9
1080 ; GFX11-NEXT:    v_dual_mov_b32 v6, s10 :: v_dual_mov_b32 v7, s11
1081 ; GFX11-NEXT:    v_dual_mov_b32 v8, s4 :: v_dual_mov_b32 v9, s5
1082 ; GFX11-NEXT:    v_dual_mov_b32 v10, s6 :: v_dual_mov_b32 v11, s7
1083 ; GFX11-NEXT:    v_dual_mov_b32 v12, s0 :: v_dual_mov_b32 v13, s1
1084 ; GFX11-NEXT:    v_dual_mov_b32 v14, s2 :: v_dual_mov_b32 v15, s3
1085 ; GFX11-NEXT:    s_clause 0x3
1086 ; GFX11-NEXT:    global_store_b128 v[0:1], v[0:3], off
1087 ; GFX11-NEXT:    global_store_b128 v[0:1], v[4:7], off
1088 ; GFX11-NEXT:    global_store_b128 v[0:1], v[8:11], off
1089 ; GFX11-NEXT:    global_store_b128 v[0:1], v[12:15], off
1090 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1091   store <16 x float> %arg0, ptr addrspace(1) undef
1092   ret void
1095 define void @void_func_v2f64_inreg(<2 x double> inreg %arg0) #0 {
1096 ; GFX9-LABEL: void_func_v2f64_inreg:
1097 ; GFX9:       ; %bb.0:
1098 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1099 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
1100 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
1101 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
1102 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
1103 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1104 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1105 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1107 ; GFX11-LABEL: void_func_v2f64_inreg:
1108 ; GFX11:       ; %bb.0:
1109 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1110 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
1111 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
1112 ; GFX11-NEXT:    global_store_b128 v[0:1], v[0:3], off
1113 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1114   store <2 x double> %arg0, ptr addrspace(1) undef
1115   ret void
1118 define void @void_func_v3f64_inreg(<3 x double> inreg %arg0) #0 {
1119 ; GFX9-LABEL: void_func_v3f64_inreg:
1120 ; GFX9:       ; %bb.0:
1121 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1122 ; GFX9-NEXT:    v_mov_b32_e32 v0, s8
1123 ; GFX9-NEXT:    v_mov_b32_e32 v1, s9
1124 ; GFX9-NEXT:    global_store_dwordx2 v[0:1], v[0:1], off
1125 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
1126 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
1127 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
1128 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
1129 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1130 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1131 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1133 ; GFX11-LABEL: void_func_v3f64_inreg:
1134 ; GFX11:       ; %bb.0:
1135 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1136 ; GFX11-NEXT:    v_dual_mov_b32 v4, s4 :: v_dual_mov_b32 v5, s5
1137 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
1138 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
1139 ; GFX11-NEXT:    s_clause 0x1
1140 ; GFX11-NEXT:    global_store_b64 v[0:1], v[4:5], off
1141 ; GFX11-NEXT:    global_store_b128 v[0:1], v[0:3], off
1142 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1143   store <3 x double> %arg0, ptr addrspace(1) undef
1144   ret void
1147 define void @void_func_v4f64_inreg(<4 x double> inreg %arg0) #0 {
1148 ; GFX9-LABEL: void_func_v4f64_inreg:
1149 ; GFX9:       ; %bb.0:
1150 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1151 ; GFX9-NEXT:    v_mov_b32_e32 v0, s8
1152 ; GFX9-NEXT:    v_mov_b32_e32 v1, s9
1153 ; GFX9-NEXT:    v_mov_b32_e32 v2, s10
1154 ; GFX9-NEXT:    v_mov_b32_e32 v3, s11
1155 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1156 ; GFX9-NEXT:    s_nop 0
1157 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
1158 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
1159 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
1160 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
1161 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1162 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1163 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1165 ; GFX11-LABEL: void_func_v4f64_inreg:
1166 ; GFX11:       ; %bb.0:
1167 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1168 ; GFX11-NEXT:    v_dual_mov_b32 v0, s4 :: v_dual_mov_b32 v1, s5
1169 ; GFX11-NEXT:    v_dual_mov_b32 v2, s6 :: v_dual_mov_b32 v3, s7
1170 ; GFX11-NEXT:    v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v5, s1
1171 ; GFX11-NEXT:    v_dual_mov_b32 v6, s2 :: v_dual_mov_b32 v7, s3
1172 ; GFX11-NEXT:    s_clause 0x1
1173 ; GFX11-NEXT:    global_store_b128 v[0:1], v[0:3], off
1174 ; GFX11-NEXT:    global_store_b128 v[0:1], v[4:7], off
1175 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1176   store <4 x double> %arg0, ptr addrspace(1) undef
1177   ret void
1180 define void @void_func_v8f64_inreg(<8 x double> inreg %arg0) #0 {
1181 ; GFX9-LABEL: void_func_v8f64_inreg:
1182 ; GFX9:       ; %bb.0:
1183 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1184 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
1185 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
1186 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
1187 ; GFX9-NEXT:    v_mov_b32_e32 v3, s19
1188 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1189 ; GFX9-NEXT:    s_nop 0
1190 ; GFX9-NEXT:    v_mov_b32_e32 v0, s12
1191 ; GFX9-NEXT:    v_mov_b32_e32 v1, s13
1192 ; GFX9-NEXT:    v_mov_b32_e32 v2, s14
1193 ; GFX9-NEXT:    v_mov_b32_e32 v3, s15
1194 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1195 ; GFX9-NEXT:    s_nop 0
1196 ; GFX9-NEXT:    v_mov_b32_e32 v0, s8
1197 ; GFX9-NEXT:    v_mov_b32_e32 v1, s9
1198 ; GFX9-NEXT:    v_mov_b32_e32 v2, s10
1199 ; GFX9-NEXT:    v_mov_b32_e32 v3, s11
1200 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1201 ; GFX9-NEXT:    s_nop 0
1202 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
1203 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
1204 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
1205 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
1206 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1207 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1208 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1210 ; GFX11-LABEL: void_func_v8f64_inreg:
1211 ; GFX11:       ; %bb.0:
1212 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1213 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
1214 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
1215 ; GFX11-NEXT:    v_dual_mov_b32 v4, s8 :: v_dual_mov_b32 v5, s9
1216 ; GFX11-NEXT:    v_dual_mov_b32 v6, s10 :: v_dual_mov_b32 v7, s11
1217 ; GFX11-NEXT:    v_dual_mov_b32 v8, s4 :: v_dual_mov_b32 v9, s5
1218 ; GFX11-NEXT:    v_dual_mov_b32 v10, s6 :: v_dual_mov_b32 v11, s7
1219 ; GFX11-NEXT:    v_dual_mov_b32 v12, s0 :: v_dual_mov_b32 v13, s1
1220 ; GFX11-NEXT:    v_dual_mov_b32 v14, s2 :: v_dual_mov_b32 v15, s3
1221 ; GFX11-NEXT:    s_clause 0x3
1222 ; GFX11-NEXT:    global_store_b128 v[0:1], v[0:3], off
1223 ; GFX11-NEXT:    global_store_b128 v[0:1], v[4:7], off
1224 ; GFX11-NEXT:    global_store_b128 v[0:1], v[8:11], off
1225 ; GFX11-NEXT:    global_store_b128 v[0:1], v[12:15], off
1226 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1227   store <8 x double> %arg0, ptr addrspace(1) undef
1228   ret void
1231 define void @void_func_v16f64_inreg(<16 x double> inreg %arg0) #0 {
1232 ; GFX9-LABEL: void_func_v16f64_inreg:
1233 ; GFX9:       ; %bb.0:
1234 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1235 ; GFX9-NEXT:    v_mov_b32_e32 v7, v1
1236 ; GFX9-NEXT:    v_mov_b32_e32 v6, v0
1237 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
1238 ; GFX9-NEXT:    s_nop 0
1239 ; GFX9-NEXT:    v_mov_b32_e32 v4, s28
1240 ; GFX9-NEXT:    v_mov_b32_e32 v5, s29
1241 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off
1242 ; GFX9-NEXT:    v_mov_b32_e32 v0, s24
1243 ; GFX9-NEXT:    v_mov_b32_e32 v1, s25
1244 ; GFX9-NEXT:    v_mov_b32_e32 v2, s26
1245 ; GFX9-NEXT:    v_mov_b32_e32 v3, s27
1246 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1247 ; GFX9-NEXT:    s_nop 0
1248 ; GFX9-NEXT:    v_mov_b32_e32 v0, s20
1249 ; GFX9-NEXT:    v_mov_b32_e32 v1, s21
1250 ; GFX9-NEXT:    v_mov_b32_e32 v2, s22
1251 ; GFX9-NEXT:    v_mov_b32_e32 v3, s23
1252 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1253 ; GFX9-NEXT:    s_nop 0
1254 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
1255 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
1256 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
1257 ; GFX9-NEXT:    v_mov_b32_e32 v3, s19
1258 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1259 ; GFX9-NEXT:    s_nop 0
1260 ; GFX9-NEXT:    v_mov_b32_e32 v0, s12
1261 ; GFX9-NEXT:    v_mov_b32_e32 v1, s13
1262 ; GFX9-NEXT:    v_mov_b32_e32 v2, s14
1263 ; GFX9-NEXT:    v_mov_b32_e32 v3, s15
1264 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1265 ; GFX9-NEXT:    s_nop 0
1266 ; GFX9-NEXT:    v_mov_b32_e32 v0, s8
1267 ; GFX9-NEXT:    v_mov_b32_e32 v1, s9
1268 ; GFX9-NEXT:    v_mov_b32_e32 v2, s10
1269 ; GFX9-NEXT:    v_mov_b32_e32 v3, s11
1270 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1271 ; GFX9-NEXT:    s_nop 0
1272 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
1273 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
1274 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
1275 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
1276 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1277 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1278 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1280 ; GFX11-LABEL: void_func_v16f64_inreg:
1281 ; GFX11:       ; %bb.0:
1282 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1283 ; GFX11-NEXT:    v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v0
1284 ; GFX11-NEXT:    v_dual_mov_b32 v0, s28 :: v_dual_mov_b32 v1, s29
1285 ; GFX11-NEXT:    v_dual_mov_b32 v4, s24 :: v_dual_mov_b32 v5, s25
1286 ; GFX11-NEXT:    v_dual_mov_b32 v6, s26 :: v_dual_mov_b32 v7, s27
1287 ; GFX11-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v9, s21
1288 ; GFX11-NEXT:    v_dual_mov_b32 v10, s22 :: v_dual_mov_b32 v11, s23
1289 ; GFX11-NEXT:    s_clause 0x2
1290 ; GFX11-NEXT:    global_store_b128 v[0:1], v[0:3], off
1291 ; GFX11-NEXT:    global_store_b128 v[0:1], v[4:7], off
1292 ; GFX11-NEXT:    global_store_b128 v[0:1], v[8:11], off
1293 ; GFX11-NEXT:    v_dual_mov_b32 v0, s16 :: v_dual_mov_b32 v1, s17
1294 ; GFX11-NEXT:    v_dual_mov_b32 v2, s18 :: v_dual_mov_b32 v3, s19
1295 ; GFX11-NEXT:    v_dual_mov_b32 v4, s12 :: v_dual_mov_b32 v5, s13
1296 ; GFX11-NEXT:    v_dual_mov_b32 v6, s14 :: v_dual_mov_b32 v7, s15
1297 ; GFX11-NEXT:    v_dual_mov_b32 v8, s8 :: v_dual_mov_b32 v9, s9
1298 ; GFX11-NEXT:    v_dual_mov_b32 v10, s10 :: v_dual_mov_b32 v11, s11
1299 ; GFX11-NEXT:    v_dual_mov_b32 v12, s4 :: v_dual_mov_b32 v13, s5
1300 ; GFX11-NEXT:    v_dual_mov_b32 v14, s6 :: v_dual_mov_b32 v15, s7
1301 ; GFX11-NEXT:    v_dual_mov_b32 v16, s0 :: v_dual_mov_b32 v17, s1
1302 ; GFX11-NEXT:    v_dual_mov_b32 v18, s2 :: v_dual_mov_b32 v19, s3
1303 ; GFX11-NEXT:    s_clause 0x4
1304 ; GFX11-NEXT:    global_store_b128 v[0:1], v[0:3], off
1305 ; GFX11-NEXT:    global_store_b128 v[0:1], v[4:7], off
1306 ; GFX11-NEXT:    global_store_b128 v[0:1], v[8:11], off
1307 ; GFX11-NEXT:    global_store_b128 v[0:1], v[12:15], off
1308 ; GFX11-NEXT:    global_store_b128 v[0:1], v[16:19], off
1309 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1310   store <16 x double> %arg0, ptr addrspace(1) undef
1311   ret void
1314 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 {
1315 ; GFX9-LABEL: void_func_v32i32_i1_i8_i16_f32_inreg:
1316 ; GFX9:       ; %bb.0:
1317 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1318 ; GFX9-NEXT:    v_mov_b32_e32 v13, v1
1319 ; GFX9-NEXT:    v_mov_b32_e32 v12, v0
1320 ; GFX9-NEXT:    v_mov_b32_e32 v10, s28
1321 ; GFX9-NEXT:    v_mov_b32_e32 v11, s29
1322 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
1323 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1324 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[10:13], off
1325 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1326 ; GFX9-NEXT:    v_mov_b32_e32 v0, s24
1327 ; GFX9-NEXT:    v_mov_b32_e32 v1, s25
1328 ; GFX9-NEXT:    v_mov_b32_e32 v2, s26
1329 ; GFX9-NEXT:    v_mov_b32_e32 v3, s27
1330 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1331 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1332 ; GFX9-NEXT:    v_mov_b32_e32 v0, s20
1333 ; GFX9-NEXT:    v_mov_b32_e32 v1, s21
1334 ; GFX9-NEXT:    v_mov_b32_e32 v2, s22
1335 ; GFX9-NEXT:    v_mov_b32_e32 v3, s23
1336 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1337 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1338 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
1339 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
1340 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
1341 ; GFX9-NEXT:    v_mov_b32_e32 v3, s19
1342 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1343 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1344 ; GFX9-NEXT:    v_mov_b32_e32 v0, s12
1345 ; GFX9-NEXT:    v_mov_b32_e32 v1, s13
1346 ; GFX9-NEXT:    v_mov_b32_e32 v2, s14
1347 ; GFX9-NEXT:    v_mov_b32_e32 v3, s15
1348 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1349 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1350 ; GFX9-NEXT:    v_mov_b32_e32 v0, s8
1351 ; GFX9-NEXT:    v_mov_b32_e32 v1, s9
1352 ; GFX9-NEXT:    v_mov_b32_e32 v2, s10
1353 ; GFX9-NEXT:    v_mov_b32_e32 v3, s11
1354 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1355 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1356 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
1357 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
1358 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
1359 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
1360 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1361 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1362 ; GFX9-NEXT:    v_and_b32_e32 v0, 1, v6
1363 ; GFX9-NEXT:    global_store_byte v[0:1], v0, off
1364 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1365 ; GFX9-NEXT:    global_store_byte v[0:1], v7, off
1366 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1367 ; GFX9-NEXT:    global_store_short v[0:1], v8, off
1368 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1369 ; GFX9-NEXT:    global_store_short v[0:1], v9, off
1370 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1371 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1373 ; GFX11-LABEL: void_func_v32i32_i1_i8_i16_f32_inreg:
1374 ; GFX11:       ; %bb.0:
1375 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1376 ; GFX11-NEXT:    v_dual_mov_b32 v9, v1 :: v_dual_mov_b32 v8, v0
1377 ; GFX11-NEXT:    v_dual_mov_b32 v6, s28 :: v_dual_mov_b32 v7, s29
1378 ; GFX11-NEXT:    v_dual_mov_b32 v10, s24 :: v_dual_mov_b32 v11, s25
1379 ; GFX11-NEXT:    v_dual_mov_b32 v12, s26 :: v_dual_mov_b32 v13, s27
1380 ; GFX11-NEXT:    v_dual_mov_b32 v14, s20 :: v_dual_mov_b32 v15, s21
1381 ; GFX11-NEXT:    v_dual_mov_b32 v16, s22 :: v_dual_mov_b32 v17, s23
1382 ; GFX11-NEXT:    v_dual_mov_b32 v18, s16 :: v_dual_mov_b32 v19, s17
1383 ; GFX11-NEXT:    v_dual_mov_b32 v20, s18 :: v_dual_mov_b32 v21, s19
1384 ; GFX11-NEXT:    global_store_b128 v[0:1], v[6:9], off dlc
1385 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1386 ; GFX11-NEXT:    global_store_b128 v[0:1], v[10:13], off dlc
1387 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1388 ; GFX11-NEXT:    global_store_b128 v[0:1], v[14:17], off dlc
1389 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1390 ; GFX11-NEXT:    global_store_b128 v[0:1], v[18:21], off dlc
1391 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1392 ; GFX11-NEXT:    v_dual_mov_b32 v6, s12 :: v_dual_mov_b32 v7, s13
1393 ; GFX11-NEXT:    v_dual_mov_b32 v8, s14 :: v_dual_mov_b32 v9, s15
1394 ; GFX11-NEXT:    v_and_b32_e32 v0, 1, v2
1395 ; GFX11-NEXT:    v_dual_mov_b32 v10, s8 :: v_dual_mov_b32 v11, s9
1396 ; GFX11-NEXT:    v_dual_mov_b32 v12, s10 :: v_dual_mov_b32 v13, s11
1397 ; GFX11-NEXT:    v_dual_mov_b32 v14, s4 :: v_dual_mov_b32 v15, s5
1398 ; GFX11-NEXT:    v_dual_mov_b32 v16, s6 :: v_dual_mov_b32 v17, s7
1399 ; GFX11-NEXT:    v_dual_mov_b32 v18, s0 :: v_dual_mov_b32 v19, s1
1400 ; GFX11-NEXT:    v_dual_mov_b32 v20, s2 :: v_dual_mov_b32 v21, s3
1401 ; GFX11-NEXT:    global_store_b128 v[0:1], v[6:9], off dlc
1402 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1403 ; GFX11-NEXT:    global_store_b128 v[0:1], v[10:13], off dlc
1404 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1405 ; GFX11-NEXT:    global_store_b128 v[0:1], v[14:17], off dlc
1406 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1407 ; GFX11-NEXT:    global_store_b128 v[0:1], v[18:21], off dlc
1408 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1409 ; GFX11-NEXT:    global_store_b8 v[0:1], v0, off dlc
1410 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1411 ; GFX11-NEXT:    global_store_b8 v[0:1], v3, off dlc
1412 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1413 ; GFX11-NEXT:    global_store_b16 v[0:1], v4, off dlc
1414 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1415 ; GFX11-NEXT:    global_store_b16 v[0:1], v5, off dlc
1416 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1417 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1418   store volatile <32 x i32> %arg0, ptr addrspace(1) undef
1419   store volatile i1 %arg1, ptr addrspace(1) undef
1420   store volatile i8 %arg2, ptr addrspace(1) undef
1421   store volatile i16 %arg3, ptr addrspace(1) undef
1422   store volatile half %arg4, ptr addrspace(1) undef
1423   ret void
1426 define void @void_func_v32i32_v2i32_v2f32_inreg(<32 x i32> inreg %arg0, <2 x i32> inreg %arg1, <2 x float> inreg %arg2) #0 {
1427 ; GFX9-LABEL: void_func_v32i32_v2i32_v2f32_inreg:
1428 ; GFX9:       ; %bb.0:
1429 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1430 ; GFX9-NEXT:    v_mov_b32_e32 v13, v1
1431 ; GFX9-NEXT:    v_mov_b32_e32 v12, v0
1432 ; GFX9-NEXT:    v_mov_b32_e32 v10, s28
1433 ; GFX9-NEXT:    v_mov_b32_e32 v11, s29
1434 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
1435 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1436 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[10:13], off
1437 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1438 ; GFX9-NEXT:    v_mov_b32_e32 v0, s24
1439 ; GFX9-NEXT:    v_mov_b32_e32 v1, s25
1440 ; GFX9-NEXT:    v_mov_b32_e32 v2, s26
1441 ; GFX9-NEXT:    v_mov_b32_e32 v3, s27
1442 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1443 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1444 ; GFX9-NEXT:    v_mov_b32_e32 v0, s20
1445 ; GFX9-NEXT:    v_mov_b32_e32 v1, s21
1446 ; GFX9-NEXT:    v_mov_b32_e32 v2, s22
1447 ; GFX9-NEXT:    v_mov_b32_e32 v3, s23
1448 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1449 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1450 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
1451 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
1452 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
1453 ; GFX9-NEXT:    v_mov_b32_e32 v3, s19
1454 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1455 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1456 ; GFX9-NEXT:    v_mov_b32_e32 v0, s12
1457 ; GFX9-NEXT:    v_mov_b32_e32 v1, s13
1458 ; GFX9-NEXT:    v_mov_b32_e32 v2, s14
1459 ; GFX9-NEXT:    v_mov_b32_e32 v3, s15
1460 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1461 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1462 ; GFX9-NEXT:    v_mov_b32_e32 v0, s8
1463 ; GFX9-NEXT:    v_mov_b32_e32 v1, s9
1464 ; GFX9-NEXT:    v_mov_b32_e32 v2, s10
1465 ; GFX9-NEXT:    v_mov_b32_e32 v3, s11
1466 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1467 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1468 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
1469 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
1470 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
1471 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
1472 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1473 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1474 ; GFX9-NEXT:    global_store_dwordx2 v[0:1], v[6:7], off
1475 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1476 ; GFX9-NEXT:    global_store_dwordx2 v[0:1], v[8:9], off
1477 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1478 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1480 ; GFX11-LABEL: void_func_v32i32_v2i32_v2f32_inreg:
1481 ; GFX11:       ; %bb.0:
1482 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1483 ; GFX11-NEXT:    v_dual_mov_b32 v9, v1 :: v_dual_mov_b32 v8, v0
1484 ; GFX11-NEXT:    v_dual_mov_b32 v6, s28 :: v_dual_mov_b32 v7, s29
1485 ; GFX11-NEXT:    v_dual_mov_b32 v10, s24 :: v_dual_mov_b32 v11, s25
1486 ; GFX11-NEXT:    v_dual_mov_b32 v12, s26 :: v_dual_mov_b32 v13, s27
1487 ; GFX11-NEXT:    v_dual_mov_b32 v14, s20 :: v_dual_mov_b32 v15, s21
1488 ; GFX11-NEXT:    v_dual_mov_b32 v16, s22 :: v_dual_mov_b32 v17, s23
1489 ; GFX11-NEXT:    global_store_b128 v[0:1], v[6:9], off dlc
1490 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1491 ; GFX11-NEXT:    global_store_b128 v[0:1], v[10:13], off dlc
1492 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1493 ; GFX11-NEXT:    global_store_b128 v[0:1], v[14:17], off dlc
1494 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1495 ; GFX11-NEXT:    v_dual_mov_b32 v6, s16 :: v_dual_mov_b32 v7, s17
1496 ; GFX11-NEXT:    v_dual_mov_b32 v8, s18 :: v_dual_mov_b32 v9, s19
1497 ; GFX11-NEXT:    v_dual_mov_b32 v10, s12 :: v_dual_mov_b32 v11, s13
1498 ; GFX11-NEXT:    v_dual_mov_b32 v12, s14 :: v_dual_mov_b32 v13, s15
1499 ; GFX11-NEXT:    v_dual_mov_b32 v14, s8 :: v_dual_mov_b32 v15, s9
1500 ; GFX11-NEXT:    v_dual_mov_b32 v16, s10 :: v_dual_mov_b32 v17, s11
1501 ; GFX11-NEXT:    v_dual_mov_b32 v18, s4 :: v_dual_mov_b32 v19, s5
1502 ; GFX11-NEXT:    v_dual_mov_b32 v20, s6 :: v_dual_mov_b32 v21, s7
1503 ; GFX11-NEXT:    v_dual_mov_b32 v22, s0 :: v_dual_mov_b32 v23, s1
1504 ; GFX11-NEXT:    v_dual_mov_b32 v24, s2 :: v_dual_mov_b32 v25, s3
1505 ; GFX11-NEXT:    global_store_b128 v[0:1], v[6:9], off dlc
1506 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1507 ; GFX11-NEXT:    global_store_b128 v[0:1], v[10:13], off dlc
1508 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1509 ; GFX11-NEXT:    global_store_b128 v[0:1], v[14:17], off dlc
1510 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1511 ; GFX11-NEXT:    global_store_b128 v[0:1], v[18:21], off dlc
1512 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1513 ; GFX11-NEXT:    global_store_b128 v[0:1], v[22:25], off dlc
1514 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1515 ; GFX11-NEXT:    global_store_b64 v[0:1], v[2:3], off dlc
1516 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1517 ; GFX11-NEXT:    global_store_b64 v[0:1], v[4:5], off dlc
1518 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1519 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1520   store volatile <32 x i32> %arg0, ptr addrspace(1) undef
1521   store volatile <2 x i32> %arg1, ptr addrspace(1) undef
1522   store volatile <2 x float> %arg2, ptr addrspace(1) undef
1523   ret void
1526 define void @too_many_args_use_workitem_id_x_inreg(
1527 ; GFX9-LABEL: too_many_args_use_workitem_id_x_inreg:
1528 ; GFX9:       ; %bb.0:
1529 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1530 ; GFX9-NEXT:    v_mov_b32_e32 v6, s4
1531 ; GFX9-NEXT:    global_store_dword v[0:1], v6, off
1532 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1533 ; GFX9-NEXT:    v_mov_b32_e32 v6, s5
1534 ; GFX9-NEXT:    global_store_dword v[0:1], v6, off
1535 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1536 ; GFX9-NEXT:    v_mov_b32_e32 v6, s6
1537 ; GFX9-NEXT:    global_store_dword v[0:1], v6, off
1538 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1539 ; GFX9-NEXT:    v_mov_b32_e32 v6, s7
1540 ; GFX9-NEXT:    global_store_dword v[0:1], v6, off
1541 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1542 ; GFX9-NEXT:    v_mov_b32_e32 v6, s8
1543 ; GFX9-NEXT:    global_store_dword v[0:1], v6, off
1544 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1545 ; GFX9-NEXT:    v_mov_b32_e32 v6, s9
1546 ; GFX9-NEXT:    global_store_dword v[0:1], v6, off
1547 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1548 ; GFX9-NEXT:    v_mov_b32_e32 v6, s10
1549 ; GFX9-NEXT:    global_store_dword v[0:1], v6, off
1550 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1551 ; GFX9-NEXT:    v_mov_b32_e32 v6, s11
1552 ; GFX9-NEXT:    global_store_dword v[0:1], v6, off
1553 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1554 ; GFX9-NEXT:    v_mov_b32_e32 v6, s12
1555 ; GFX9-NEXT:    global_store_dword v[0:1], v6, off
1556 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1557 ; GFX9-NEXT:    v_mov_b32_e32 v6, s13
1558 ; GFX9-NEXT:    global_store_dword v[0:1], v6, off
1559 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1560 ; GFX9-NEXT:    v_mov_b32_e32 v6, s14
1561 ; GFX9-NEXT:    global_store_dword v[0:1], v6, off
1562 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1563 ; GFX9-NEXT:    v_mov_b32_e32 v6, s15
1564 ; GFX9-NEXT:    global_store_dword v[0:1], v6, off
1565 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1566 ; GFX9-NEXT:    v_mov_b32_e32 v6, s16
1567 ; GFX9-NEXT:    global_store_dword v[0:1], v6, off
1568 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1569 ; GFX9-NEXT:    v_mov_b32_e32 v6, s17
1570 ; GFX9-NEXT:    global_store_dword v[0:1], v6, off
1571 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1572 ; GFX9-NEXT:    v_mov_b32_e32 v6, s18
1573 ; GFX9-NEXT:    global_store_dword v[0:1], v6, off
1574 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1575 ; GFX9-NEXT:    v_mov_b32_e32 v6, s19
1576 ; GFX9-NEXT:    global_store_dword v[0:1], v6, off
1577 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1578 ; GFX9-NEXT:    v_mov_b32_e32 v6, s20
1579 ; GFX9-NEXT:    global_store_dword v[0:1], v6, off
1580 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1581 ; GFX9-NEXT:    v_mov_b32_e32 v6, s21
1582 ; GFX9-NEXT:    global_store_dword v[0:1], v6, off
1583 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1584 ; GFX9-NEXT:    v_mov_b32_e32 v6, s22
1585 ; GFX9-NEXT:    global_store_dword v[0:1], v6, off
1586 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1587 ; GFX9-NEXT:    v_mov_b32_e32 v6, s23
1588 ; GFX9-NEXT:    global_store_dword v[0:1], v6, off
1589 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1590 ; GFX9-NEXT:    v_mov_b32_e32 v6, s24
1591 ; GFX9-NEXT:    global_store_dword v[0:1], v6, off
1592 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1593 ; GFX9-NEXT:    v_mov_b32_e32 v6, s25
1594 ; GFX9-NEXT:    global_store_dword v[0:1], v6, off
1595 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1596 ; GFX9-NEXT:    v_mov_b32_e32 v6, s26
1597 ; GFX9-NEXT:    global_store_dword v[0:1], v6, off
1598 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1599 ; GFX9-NEXT:    v_mov_b32_e32 v6, s27
1600 ; GFX9-NEXT:    global_store_dword v[0:1], v6, off
1601 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1602 ; GFX9-NEXT:    v_mov_b32_e32 v6, s28
1603 ; GFX9-NEXT:    global_store_dword v[0:1], v6, off
1604 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1605 ; GFX9-NEXT:    v_mov_b32_e32 v6, s29
1606 ; GFX9-NEXT:    global_store_dword v[0:1], v6, off
1607 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1608 ; GFX9-NEXT:    global_store_dword v[0:1], v0, off
1609 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1610 ; GFX9-NEXT:    global_store_dword v[0:1], v1, off
1611 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1612 ; GFX9-NEXT:    global_store_dword v[0:1], v2, off
1613 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1614 ; GFX9-NEXT:    global_store_dword v[0:1], v3, off
1615 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1616 ; GFX9-NEXT:    global_store_dword v[0:1], v4, off
1617 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1618 ; GFX9-NEXT:    global_store_dword v[0:1], v5, off
1619 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1620 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1622 ; GFX11-LABEL: too_many_args_use_workitem_id_x_inreg:
1623 ; GFX11:       ; %bb.0:
1624 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1625 ; GFX11-NEXT:    v_dual_mov_b32 v2, s0 :: v_dual_mov_b32 v3, s1
1626 ; GFX11-NEXT:    v_dual_mov_b32 v4, s2 :: v_dual_mov_b32 v5, s3
1627 ; GFX11-NEXT:    v_mov_b32_e32 v6, s4
1628 ; GFX11-NEXT:    global_store_b32 v[0:1], v2, off dlc
1629 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1630 ; GFX11-NEXT:    global_store_b32 v[0:1], v3, off dlc
1631 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1632 ; GFX11-NEXT:    global_store_b32 v[0:1], v4, off dlc
1633 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1634 ; GFX11-NEXT:    global_store_b32 v[0:1], v5, off dlc
1635 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1636 ; GFX11-NEXT:    global_store_b32 v[0:1], v6, off dlc
1637 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1638 ; GFX11-NEXT:    v_dual_mov_b32 v3, s6 :: v_dual_mov_b32 v2, s5
1639 ; GFX11-NEXT:    v_dual_mov_b32 v5, s8 :: v_dual_mov_b32 v4, s7
1640 ; GFX11-NEXT:    v_mov_b32_e32 v6, s9
1641 ; GFX11-NEXT:    global_store_b32 v[0:1], v2, off dlc
1642 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1643 ; GFX11-NEXT:    global_store_b32 v[0:1], v3, off dlc
1644 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1645 ; GFX11-NEXT:    global_store_b32 v[0:1], v4, off dlc
1646 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1647 ; GFX11-NEXT:    global_store_b32 v[0:1], v5, off dlc
1648 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1649 ; GFX11-NEXT:    global_store_b32 v[0:1], v6, off dlc
1650 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1651 ; GFX11-NEXT:    v_dual_mov_b32 v5, s13 :: v_dual_mov_b32 v2, s10
1652 ; GFX11-NEXT:    v_dual_mov_b32 v3, s11 :: v_dual_mov_b32 v4, s12
1653 ; GFX11-NEXT:    v_mov_b32_e32 v6, s14
1654 ; GFX11-NEXT:    global_store_b32 v[0:1], v2, off dlc
1655 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1656 ; GFX11-NEXT:    global_store_b32 v[0:1], v3, off dlc
1657 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1658 ; GFX11-NEXT:    global_store_b32 v[0:1], v4, off dlc
1659 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1660 ; GFX11-NEXT:    global_store_b32 v[0:1], v5, off dlc
1661 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1662 ; GFX11-NEXT:    global_store_b32 v[0:1], v6, off dlc
1663 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1664 ; GFX11-NEXT:    v_dual_mov_b32 v2, s15 :: v_dual_mov_b32 v3, s16
1665 ; GFX11-NEXT:    v_dual_mov_b32 v4, s17 :: v_dual_mov_b32 v5, s18
1666 ; GFX11-NEXT:    v_mov_b32_e32 v6, s19
1667 ; GFX11-NEXT:    global_store_b32 v[0:1], v2, off dlc
1668 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1669 ; GFX11-NEXT:    global_store_b32 v[0:1], v3, off dlc
1670 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1671 ; GFX11-NEXT:    global_store_b32 v[0:1], v4, off dlc
1672 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1673 ; GFX11-NEXT:    global_store_b32 v[0:1], v5, off dlc
1674 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1675 ; GFX11-NEXT:    global_store_b32 v[0:1], v6, off dlc
1676 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1677 ; GFX11-NEXT:    v_dual_mov_b32 v2, s20 :: v_dual_mov_b32 v3, s21
1678 ; GFX11-NEXT:    v_dual_mov_b32 v4, s22 :: v_dual_mov_b32 v5, s23
1679 ; GFX11-NEXT:    v_mov_b32_e32 v6, s24
1680 ; GFX11-NEXT:    global_store_b32 v[0:1], v2, off dlc
1681 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1682 ; GFX11-NEXT:    global_store_b32 v[0:1], v3, off dlc
1683 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1684 ; GFX11-NEXT:    global_store_b32 v[0:1], v4, off dlc
1685 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1686 ; GFX11-NEXT:    global_store_b32 v[0:1], v5, off dlc
1687 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1688 ; GFX11-NEXT:    global_store_b32 v[0:1], v6, off dlc
1689 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1690 ; GFX11-NEXT:    v_dual_mov_b32 v5, s28 :: v_dual_mov_b32 v2, s25
1691 ; GFX11-NEXT:    v_dual_mov_b32 v3, s26 :: v_dual_mov_b32 v4, s27
1692 ; GFX11-NEXT:    v_mov_b32_e32 v6, s29
1693 ; GFX11-NEXT:    global_store_b32 v[0:1], v2, off dlc
1694 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1695 ; GFX11-NEXT:    global_store_b32 v[0:1], v3, off dlc
1696 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1697 ; GFX11-NEXT:    global_store_b32 v[0:1], v4, off dlc
1698 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1699 ; GFX11-NEXT:    global_store_b32 v[0:1], v5, off dlc
1700 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1701 ; GFX11-NEXT:    global_store_b32 v[0:1], v6, off dlc
1702 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1703 ; GFX11-NEXT:    global_store_b32 v[0:1], v0, off dlc
1704 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1705 ; GFX11-NEXT:    global_store_b32 v[0:1], v1, off dlc
1706 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
1707 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1708   i32 inreg %arg0, i32 inreg %arg1, i32 inreg %arg2, i32 inreg %arg3, i32 inreg %arg4, i32 inreg %arg5, i32 inreg %arg6, i32 inreg %arg7,
1709   i32 inreg %arg8, i32 inreg %arg9, i32 inreg %arg10, i32 inreg %arg11, i32 inreg %arg12, i32 inreg %arg13, i32 inreg %arg14, i32 inreg %arg15,
1710   i32 inreg %arg16, i32 inreg %arg17, i32 inreg %arg18, i32 inreg %arg19, i32 inreg %arg20, i32 inreg %arg21, i32 inreg %arg22, i32 inreg %arg23,
1711   i32 inreg %arg24, i32 inreg %arg25, i32 inreg %arg26, i32 inreg %arg27, i32 inreg %arg28, i32 inreg %arg29, i32 inreg %arg30, i32 inreg %arg31) {
1712   ;%val = call i32 @llvm.amdgcn.workitem.id.x()
1713   ;store volatile i32 %val, ptr addrspace(1) undef
1715   store volatile i32 %arg0, ptr addrspace(1) undef
1716   store volatile i32 %arg1, ptr addrspace(1) undef
1717   store volatile i32 %arg2, ptr addrspace(1) undef
1718   store volatile i32 %arg3, ptr addrspace(1) undef
1719   store volatile i32 %arg4, ptr addrspace(1) undef
1720   store volatile i32 %arg5, ptr addrspace(1) undef
1721   store volatile i32 %arg6, ptr addrspace(1) undef
1722   store volatile i32 %arg7, ptr addrspace(1) undef
1724   store volatile i32 %arg8, ptr addrspace(1) undef
1725   store volatile i32 %arg9, ptr addrspace(1) undef
1726   store volatile i32 %arg10, ptr addrspace(1) undef
1727   store volatile i32 %arg11, ptr addrspace(1) undef
1728   store volatile i32 %arg12, ptr addrspace(1) undef
1729   store volatile i32 %arg13, ptr addrspace(1) undef
1730   store volatile i32 %arg14, ptr addrspace(1) undef
1731   store volatile i32 %arg15, ptr addrspace(1) undef
1733   store volatile i32 %arg16, ptr addrspace(1) undef
1734   store volatile i32 %arg17, ptr addrspace(1) undef
1735   store volatile i32 %arg18, ptr addrspace(1) undef
1736   store volatile i32 %arg19, ptr addrspace(1) undef
1737   store volatile i32 %arg20, ptr addrspace(1) undef
1738   store volatile i32 %arg21, ptr addrspace(1) undef
1739   store volatile i32 %arg22, ptr addrspace(1) undef
1740   store volatile i32 %arg23, ptr addrspace(1) undef
1742   store volatile i32 %arg24, ptr addrspace(1) undef
1743   store volatile i32 %arg25, ptr addrspace(1) undef
1744   store volatile i32 %arg26, ptr addrspace(1) undef
1745   store volatile i32 %arg27, ptr addrspace(1) undef
1746   store volatile i32 %arg28, ptr addrspace(1) undef
1747   store volatile i32 %arg29, ptr addrspace(1) undef
1748   store volatile i32 %arg30, ptr addrspace(1) undef
1749   store volatile i32 %arg31, ptr addrspace(1) undef
1751   ret void
1754 define void @void_func_i32_v2float_inreg(i32 inreg %arg0, <2 x float> inreg %arg1) #0 {
1755 ; GFX9-LABEL: void_func_i32_v2float_inreg:
1756 ; GFX9:       ; %bb.0:
1757 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1758 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
1759 ; GFX9-NEXT:    global_store_dword v[0:1], v0, off
1760 ; GFX9-NEXT:    v_mov_b32_e32 v0, s5
1761 ; GFX9-NEXT:    v_mov_b32_e32 v1, s6
1762 ; GFX9-NEXT:    global_store_dwordx2 v[0:1], v[0:1], off
1763 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1764 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1766 ; GFX11-LABEL: void_func_i32_v2float_inreg:
1767 ; GFX11:       ; %bb.0:
1768 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1769 ; GFX11-NEXT:    v_dual_mov_b32 v2, s0 :: v_dual_mov_b32 v1, s2
1770 ; GFX11-NEXT:    v_mov_b32_e32 v0, s1
1771 ; GFX11-NEXT:    s_clause 0x1
1772 ; GFX11-NEXT:    global_store_b32 v[0:1], v2, off
1773 ; GFX11-NEXT:    global_store_b64 v[0:1], v[0:1], off
1774 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1775   store i32 %arg0, ptr addrspace(1) undef
1776   store <2 x float> %arg1, ptr addrspace(1) undef
1777   ret void
1780 define void @caller_void_func_i32_v2float_inreg(i32 inreg %arg0, <2 x float> inreg %arg1) #0 {
1781 ; GFX9-LABEL: caller_void_func_i32_v2float_inreg:
1782 ; GFX9:       ; %bb.0:
1783 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1784 ; GFX9-NEXT:    s_mov_b32 s7, s33
1785 ; GFX9-NEXT:    s_mov_b32 s33, s32
1786 ; GFX9-NEXT:    s_or_saveexec_b64 s[8:9], -1
1787 ; GFX9-NEXT:    buffer_store_dword v40, off, s[0:3], s33 ; 4-byte Folded Spill
1788 ; GFX9-NEXT:    s_mov_b64 exec, s[8:9]
1789 ; GFX9-NEXT:    s_addk_i32 s32, 0x400
1790 ; GFX9-NEXT:    s_getpc_b64 s[8:9]
1791 ; GFX9-NEXT:    s_add_u32 s8, s8, caller_void_func_i32_v2float_inreg@gotpcrel32@lo+4
1792 ; GFX9-NEXT:    s_addc_u32 s9, s9, caller_void_func_i32_v2float_inreg@gotpcrel32@hi+12
1793 ; GFX9-NEXT:    s_load_dwordx2 s[8:9], s[8:9], 0x0
1794 ; GFX9-NEXT:    v_writelane_b32 v40, s7, 2
1795 ; GFX9-NEXT:    v_writelane_b32 v40, s30, 0
1796 ; GFX9-NEXT:    s_mov_b32 s2, s6
1797 ; GFX9-NEXT:    s_mov_b32 s1, s5
1798 ; GFX9-NEXT:    s_mov_b32 s0, s4
1799 ; GFX9-NEXT:    v_writelane_b32 v40, s31, 1
1800 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
1801 ; GFX9-NEXT:    s_swappc_b64 s[30:31], s[8:9]
1802 ; GFX9-NEXT:    v_readlane_b32 s31, v40, 1
1803 ; GFX9-NEXT:    v_readlane_b32 s30, v40, 0
1804 ; GFX9-NEXT:    v_readlane_b32 s4, v40, 2
1805 ; GFX9-NEXT:    s_or_saveexec_b64 s[6:7], -1
1806 ; GFX9-NEXT:    buffer_load_dword v40, off, s[0:3], s33 ; 4-byte Folded Reload
1807 ; GFX9-NEXT:    s_mov_b64 exec, s[6:7]
1808 ; GFX9-NEXT:    s_addk_i32 s32, 0xfc00
1809 ; GFX9-NEXT:    s_mov_b32 s33, s4
1810 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1811 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1813 ; GFX11-LABEL: caller_void_func_i32_v2float_inreg:
1814 ; GFX11:       ; %bb.0:
1815 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1816 ; GFX11-NEXT:    s_mov_b32 s3, s33
1817 ; GFX11-NEXT:    s_mov_b32 s33, s32
1818 ; GFX11-NEXT:    s_or_saveexec_b32 s4, -1
1819 ; GFX11-NEXT:    scratch_store_b32 off, v40, s33 ; 4-byte Folded Spill
1820 ; GFX11-NEXT:    s_mov_b32 exec_lo, s4
1821 ; GFX11-NEXT:    s_add_i32 s32, s32, 16
1822 ; GFX11-NEXT:    s_getpc_b64 s[4:5]
1823 ; GFX11-NEXT:    s_add_u32 s4, s4, caller_void_func_i32_v2float_inreg@gotpcrel32@lo+4
1824 ; GFX11-NEXT:    s_addc_u32 s5, s5, caller_void_func_i32_v2float_inreg@gotpcrel32@hi+12
1825 ; GFX11-NEXT:    v_writelane_b32 v40, s3, 2
1826 ; GFX11-NEXT:    s_load_b64 s[4:5], s[4:5], 0x0
1827 ; GFX11-NEXT:    v_writelane_b32 v40, s30, 0
1828 ; GFX11-NEXT:    v_writelane_b32 v40, s31, 1
1829 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
1830 ; GFX11-NEXT:    s_swappc_b64 s[30:31], s[4:5]
1831 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1832 ; GFX11-NEXT:    v_readlane_b32 s31, v40, 1
1833 ; GFX11-NEXT:    v_readlane_b32 s30, v40, 0
1834 ; GFX11-NEXT:    v_readlane_b32 s0, v40, 2
1835 ; GFX11-NEXT:    s_or_saveexec_b32 s1, -1
1836 ; GFX11-NEXT:    scratch_load_b32 v40, off, s33 ; 4-byte Folded Reload
1837 ; GFX11-NEXT:    s_mov_b32 exec_lo, s1
1838 ; GFX11-NEXT:    s_add_i32 s32, s32, -16
1839 ; GFX11-NEXT:    s_mov_b32 s33, s0
1840 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
1841 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1842 ; GFX11-NEXT  s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1843 ; GFX11-NEXT  s_mov_b32 s3, s33
1844 ; GFX11-NEXT  s_mov_b32 s33, s32
1845 ; GFX11-NEXT  s_or_saveexec_b32 s4, -1
1846 ; GFX11-NEXT  scratch_store_b32 off, v40, s33         ; 4-byte Folded Spill
1847 ; GFX11-NEXT  s_mov_b32 exec_lo, s4
1848 ; GFX11-NEXT  s_add_i32 s32, s32, 16
1849 ; GFX11-NEXT  s_getpc_b64 s[4:5]
1850 ; GFX11-NEXT  s_add_u32 s4, s4, caller_void_func_i32_v2float_inreg@gotpcrel32@lo+4
1851 ; GFX11-NEXT  s_addc_u32 s5, s5, caller_void_func_i32_v2float_inreg@gotpcrel32@hi+12
1852 ; GFX11-NEXT  v_writelane_b32 v40, s3, 2
1853 ; GFX11-NEXT  s_load_b64 s[4:5], s[4:5], 0x0
1854 ; GFX11-NEXT  v_writelane_b32 v40, s30, 0
1855 ; GFX11-NEXT  v_writelane_b32 v40, s31, 1
1856 ; GFX11-NEXT  s_waitcnt lgkmcnt(0)
1857 ; GFX11-NEXT  s_swappc_b64 s[30:31], s[4:5]
1858 ; GFX11-NEXT  s_delay_alu instid0(VALU_DEP_1)
1859 ; GFX11-NEXT  v_readlane_b32 s31, v40, 1
1860 ; GFX11-NEXT  v_readlane_b32 s30, v40, 0
1861 ; GFX11-NEXT  v_readlane_b32 s0, v40, 2
1862 ; GFX11-NEXT  s_or_saveexec_b32 s1, -1
1863 ; GFX11-NEXT  scratch_load_b32 v40, off, s33          ; 4-byte Folded Reload
1864 ; GFX11-NEXT  s_mov_b32 exec_lo, s1
1865 ; GFX11-NEXT  s_add_i32 s32, s32, -16
1866 ; GFX11-NEXT  s_mov_b32 s33, s0
1867 ; GFX11-NEXT  s_waitcnt vmcnt(0)
1868 ; GFX11-NEXT  s_setpc_b64 s[30:31]
1869   call void @caller_void_func_i32_v2float_inreg(i32 inreg %arg0, <2 x float> inreg %arg1)
1870   ret void
1873 define void @void_func_bf16_inreg(bfloat inreg %arg0) #0 {
1874 ; GFX9-LABEL: void_func_bf16_inreg:
1875 ; GFX9:       ; %bb.0:
1876 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1877 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
1878 ; GFX9-NEXT:    global_store_short v[0:1], v0, off
1879 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1880 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1882 ; GFX11-LABEL: void_func_bf16_inreg:
1883 ; GFX11:       ; %bb.0:
1884 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1885 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
1886 ; GFX11-NEXT:    global_store_b16 v[0:1], v0, off
1887 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1888   store bfloat %arg0, ptr addrspace(1) undef
1889   ret void
1892 define void @void_func_v2bf16_inreg(<2 x bfloat> inreg %arg0) #0 {
1893 ; GFX9-LABEL: void_func_v2bf16_inreg:
1894 ; GFX9:       ; %bb.0:
1895 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1896 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
1897 ; GFX9-NEXT:    global_store_dword v[0:1], v0, off
1898 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1899 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1901 ; GFX11-LABEL: void_func_v2bf16_inreg:
1902 ; GFX11:       ; %bb.0:
1903 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1904 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
1905 ; GFX11-NEXT:    global_store_b32 v[0:1], v0, off
1906 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1907   store <2 x bfloat> %arg0, ptr addrspace(1) undef
1908   ret void
1911 define void @void_func_v3bf16_inreg(<3 x bfloat> inreg %arg0) #0 {
1912 ; GFX9-LABEL: void_func_v3bf16_inreg:
1913 ; GFX9:       ; %bb.0:
1914 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1915 ; GFX9-NEXT:    v_mov_b32_e32 v0, s5
1916 ; GFX9-NEXT:    global_store_short v[0:1], v0, off
1917 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
1918 ; GFX9-NEXT:    global_store_dword v[0:1], v0, off
1919 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1920 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1922 ; GFX11-LABEL: void_func_v3bf16_inreg:
1923 ; GFX11:       ; %bb.0:
1924 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1925 ; GFX11-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
1926 ; GFX11-NEXT:    s_clause 0x1
1927 ; GFX11-NEXT:    global_store_b16 v[0:1], v0, off
1928 ; GFX11-NEXT:    global_store_b32 v[0:1], v1, off
1929 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1930   store <3 x bfloat> %arg0, ptr addrspace(1) undef
1931   ret void
1934 define void @void_func_v4bf16_inreg(<4 x bfloat> inreg %arg0) #0 {
1935 ; GFX9-LABEL: void_func_v4bf16_inreg:
1936 ; GFX9:       ; %bb.0:
1937 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1938 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
1939 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
1940 ; GFX9-NEXT:    global_store_dwordx2 v[0:1], v[0:1], off
1941 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1942 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1944 ; GFX11-LABEL: void_func_v4bf16_inreg:
1945 ; GFX11:       ; %bb.0:
1946 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1947 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
1948 ; GFX11-NEXT:    global_store_b64 v[0:1], v[0:1], off
1949 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1950   store <4 x bfloat> %arg0, ptr addrspace(1) undef
1951   ret void
1954 define void @void_func_v8bf16_inreg(<8 x bfloat> inreg %arg0) #0 {
1955 ; GFX9-LABEL: void_func_v8bf16_inreg:
1956 ; GFX9:       ; %bb.0:
1957 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1958 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
1959 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
1960 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
1961 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
1962 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1963 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1964 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1966 ; GFX11-LABEL: void_func_v8bf16_inreg:
1967 ; GFX11:       ; %bb.0:
1968 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1969 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
1970 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
1971 ; GFX11-NEXT:    global_store_b128 v[0:1], v[0:3], off
1972 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
1973   store <8 x bfloat> %arg0, ptr addrspace(1) undef
1974   ret void
1977 define void @void_func_v16bf16_inreg(<16 x bfloat> inreg %arg0) #0 {
1978 ; GFX9-LABEL: void_func_v16bf16_inreg:
1979 ; GFX9:       ; %bb.0:
1980 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1981 ; GFX9-NEXT:    v_mov_b32_e32 v0, s8
1982 ; GFX9-NEXT:    v_mov_b32_e32 v1, s9
1983 ; GFX9-NEXT:    v_mov_b32_e32 v2, s10
1984 ; GFX9-NEXT:    v_mov_b32_e32 v3, s11
1985 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1986 ; GFX9-NEXT:    s_nop 0
1987 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
1988 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
1989 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
1990 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
1991 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
1992 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
1993 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1995 ; GFX11-LABEL: void_func_v16bf16_inreg:
1996 ; GFX11:       ; %bb.0:
1997 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1998 ; GFX11-NEXT:    v_dual_mov_b32 v0, s4 :: v_dual_mov_b32 v1, s5
1999 ; GFX11-NEXT:    v_dual_mov_b32 v2, s6 :: v_dual_mov_b32 v3, s7
2000 ; GFX11-NEXT:    v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v5, s1
2001 ; GFX11-NEXT:    v_dual_mov_b32 v6, s2 :: v_dual_mov_b32 v7, s3
2002 ; GFX11-NEXT:    s_clause 0x1
2003 ; GFX11-NEXT:    global_store_b128 v[0:1], v[0:3], off
2004 ; GFX11-NEXT:    global_store_b128 v[0:1], v[4:7], off
2005 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
2006   store <16 x bfloat> %arg0, ptr addrspace(1) undef
2007   ret void
2010 define void @void_func_2_i32_inreg(i32 inreg %arg0, i32 inreg %arg1, ptr addrspace(1) %ptr) {
2011 ; GFX9-LABEL: void_func_2_i32_inreg:
2012 ; GFX9:       ; %bb.0:
2013 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2014 ; GFX9-NEXT:    v_mov_b32_e32 v2, s4
2015 ; GFX9-NEXT:    global_store_dword v[0:1], v2, off
2016 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2017 ; GFX9-NEXT:    v_mov_b32_e32 v2, s5
2018 ; GFX9-NEXT:    global_store_dword v[0:1], v2, off
2019 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2020 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
2022 ; GFX11-LABEL: void_func_2_i32_inreg:
2023 ; GFX11:       ; %bb.0:
2024 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2025 ; GFX11-NEXT:    v_dual_mov_b32 v2, s0 :: v_dual_mov_b32 v3, s1
2026 ; GFX11-NEXT:    global_store_b32 v[0:1], v2, off dlc
2027 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2028 ; GFX11-NEXT:    global_store_b32 v[0:1], v3, off dlc
2029 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2030 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
2031   store volatile i32 %arg0, ptr addrspace(1) %ptr
2032   store volatile i32 %arg1, ptr addrspace(1) %ptr
2033   ret void
2036 define void @void_func_2_i64_inreg(i64 inreg %arg0, i64 inreg %arg1, ptr addrspace(1) %ptr) {
2037 ; GFX9-LABEL: void_func_2_i64_inreg:
2038 ; GFX9:       ; %bb.0:
2039 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2040 ; GFX9-NEXT:    v_mov_b32_e32 v4, s4
2041 ; GFX9-NEXT:    v_mov_b32_e32 v5, s5
2042 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
2043 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
2044 ; GFX9-NEXT:    global_store_dwordx2 v[0:1], v[4:5], off
2045 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2046 ; GFX9-NEXT:    global_store_dwordx2 v[0:1], v[2:3], off
2047 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2048 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
2050 ; GFX11-LABEL: void_func_2_i64_inreg:
2051 ; GFX11:       ; %bb.0:
2052 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2053 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v5, s1
2054 ; GFX11-NEXT:    v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v3, s3
2055 ; GFX11-NEXT:    global_store_b64 v[0:1], v[4:5], off dlc
2056 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2057 ; GFX11-NEXT:    global_store_b64 v[0:1], v[2:3], off dlc
2058 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2059 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
2060   store volatile i64 %arg0, ptr addrspace(1) %ptr
2061   store volatile i64 %arg1, ptr addrspace(1) %ptr
2062   ret void
2065 define void @void_func_i64_inreg_i32_inreg_i64_inreg(i64 inreg %arg0, i32 inreg %arg1, i64 inreg %arg2, ptr addrspace(1) %ptr) {
2066 ; GFX9-LABEL: void_func_i64_inreg_i32_inreg_i64_inreg:
2067 ; GFX9:       ; %bb.0:
2068 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2069 ; GFX9-NEXT:    v_mov_b32_e32 v4, s4
2070 ; GFX9-NEXT:    v_mov_b32_e32 v5, s5
2071 ; GFX9-NEXT:    global_store_dwordx2 v[0:1], v[4:5], off
2072 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2073 ; GFX9-NEXT:    v_mov_b32_e32 v4, s6
2074 ; GFX9-NEXT:    v_mov_b32_e32 v2, s7
2075 ; GFX9-NEXT:    v_mov_b32_e32 v3, s8
2076 ; GFX9-NEXT:    global_store_dword v[0:1], v4, off
2077 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2078 ; GFX9-NEXT:    global_store_dwordx2 v[0:1], v[2:3], off
2079 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2080 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
2082 ; GFX11-LABEL: void_func_i64_inreg_i32_inreg_i64_inreg:
2083 ; GFX11:       ; %bb.0:
2084 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2085 ; GFX11-NEXT:    v_dual_mov_b32 v2, s3 :: v_dual_mov_b32 v5, s1
2086 ; GFX11-NEXT:    v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v3, s4
2087 ; GFX11-NEXT:    v_mov_b32_e32 v6, s2
2088 ; GFX11-NEXT:    global_store_b64 v[0:1], v[4:5], off dlc
2089 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2090 ; GFX11-NEXT:    global_store_b32 v[0:1], v6, off dlc
2091 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2092 ; GFX11-NEXT:    global_store_b64 v[0:1], v[2:3], off dlc
2093 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2094 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
2095   store volatile i64 %arg0, ptr addrspace(1) %ptr
2096   store volatile i32 %arg1, ptr addrspace(1) %ptr
2097   store volatile i64 %arg2, ptr addrspace(1) %ptr
2098   ret void
2101 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) {
2102 ; GFX9-LABEL: void_func_5_i32_inreg:
2103 ; GFX9:       ; %bb.0:
2104 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2105 ; GFX9-NEXT:    v_mov_b32_e32 v2, s4
2106 ; GFX9-NEXT:    global_store_dword v[0:1], v2, off
2107 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2108 ; GFX9-NEXT:    v_mov_b32_e32 v2, s5
2109 ; GFX9-NEXT:    global_store_dword v[0:1], v2, off
2110 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2111 ; GFX9-NEXT:    v_mov_b32_e32 v2, s6
2112 ; GFX9-NEXT:    global_store_dword v[0:1], v2, off
2113 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2114 ; GFX9-NEXT:    v_mov_b32_e32 v2, s7
2115 ; GFX9-NEXT:    global_store_dword v[0:1], v2, off
2116 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2117 ; GFX9-NEXT:    v_mov_b32_e32 v2, s8
2118 ; GFX9-NEXT:    global_store_dword v[0:1], v2, off
2119 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2120 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
2122 ; GFX11-LABEL: void_func_5_i32_inreg:
2123 ; GFX11:       ; %bb.0:
2124 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2125 ; GFX11-NEXT:    v_dual_mov_b32 v2, s0 :: v_dual_mov_b32 v3, s1
2126 ; GFX11-NEXT:    v_dual_mov_b32 v4, s2 :: v_dual_mov_b32 v5, s3
2127 ; GFX11-NEXT:    v_mov_b32_e32 v6, s4
2128 ; GFX11-NEXT:    global_store_b32 v[0:1], v2, off dlc
2129 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2130 ; GFX11-NEXT:    global_store_b32 v[0:1], v3, off dlc
2131 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2132 ; GFX11-NEXT:    global_store_b32 v[0:1], v4, off dlc
2133 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2134 ; GFX11-NEXT:    global_store_b32 v[0:1], v5, off dlc
2135 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2136 ; GFX11-NEXT:    global_store_b32 v[0:1], v6, off dlc
2137 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
2138 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
2139   store volatile i32 %arg0, ptr addrspace(1) %ptr
2140   store volatile i32 %arg1, ptr addrspace(1) %ptr
2141   store volatile i32 %arg2, ptr addrspace(1) %ptr
2142   store volatile i32 %arg3, ptr addrspace(1) %ptr
2143   store volatile i32 %arg4, ptr addrspace(1) %ptr
2144   ret void
2147 define void @void_func_a5i32_inreg([5 x i32] inreg %arg0, ptr addrspace(1) %ptr) {
2148 ; GFX9-LABEL: void_func_a5i32_inreg:
2149 ; GFX9:       ; %bb.0:
2150 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2151 ; GFX9-NEXT:    v_mov_b32_e32 v2, s8
2152 ; GFX9-NEXT:    global_store_dword v[0:1], v2, off offset:16
2153 ; GFX9-NEXT:    v_mov_b32_e32 v5, s7
2154 ; GFX9-NEXT:    v_mov_b32_e32 v4, s6
2155 ; GFX9-NEXT:    v_mov_b32_e32 v3, s5
2156 ; GFX9-NEXT:    v_mov_b32_e32 v2, s4
2157 ; GFX9-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
2158 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
2159 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
2161 ; GFX11-LABEL: void_func_a5i32_inreg:
2162 ; GFX11:       ; %bb.0:
2163 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2164 ; GFX11-NEXT:    v_dual_mov_b32 v6, s4 :: v_dual_mov_b32 v5, s3
2165 ; GFX11-NEXT:    v_dual_mov_b32 v4, s2 :: v_dual_mov_b32 v3, s1
2166 ; GFX11-NEXT:    v_mov_b32_e32 v2, s0
2167 ; GFX11-NEXT:    s_clause 0x1
2168 ; GFX11-NEXT:    global_store_b32 v[0:1], v6, off offset:16
2169 ; GFX11-NEXT:    global_store_b128 v[0:1], v[2:5], off
2170 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
2171   store [5 x i32] %arg0, ptr addrspace(1) %ptr
2172   ret void
2175 ; Force all implicit inputs to be required
2176 declare void @extern()
2178 define void @void_func_a13i32_inreg([13  x i32] inreg %arg0, ptr addrspace(1) %ptr) {
2179   store [13 x i32] %arg0, ptr addrspace(1) %ptr
2180   call void @extern()
2181   ret void
2184 ; define void @void_func_a14i32_inreg([14 x i32] inreg %arg0, ptr addrspace(1) %ptr) {
2185 ;   store [14 x i32] %arg0, ptr addrspace(1) %ptr
2186 ;   call void @extern()
2187 ;   ret void
2188 ; }
2190 ; FIXME:
2191 ; define void @void_func_a15i32_inreg([15 x i32] inreg %arg0, ptr addrspace(1) %ptr) {
2192 ;   store [15 x i32] %arg0, ptr addrspace(1) %ptr
2193 ;   call void @extern()
2194 ;   ret void
2195 ; }
2197 ; FIXME:
2198 ; define void @void_func_a16i32_inreg([16 x i32] inreg %arg0, ptr addrspace(1) %ptr) {
2199 ;   store [16 x i32] %arg0, ptr addrspace(1) %ptr
2200 ;   call void @extern()
2201 ;   ret void
2202 ; }
2204 ; FIXME: Should still fail
2205 define void @void_func_a16i32_inreg__noimplicit([16 x i32] inreg %arg0, ptr addrspace(1) %ptr) {
2206   store [16 x i32] %arg0, ptr addrspace(1) %ptr
2207   ret void
2210 attributes #0 = { nounwind }
2211 attributes #1 = { nounwind noinline }