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