1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2; RUN: llc -march=amdgcn -mcpu=tahiti -O0 -stop-after=irtranslator -global-isel -verify-machineinstrs -o - %s | FileCheck %s
3
4define void @void_func_i1(i1 %arg0) #0 {
5  ; CHECK-LABEL: name: void_func_i1
6  ; CHECK: bb.1 (%ir-block.0):
7  ; CHECK:   liveins: $vgpr0, $sgpr30_sgpr31
8  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
9  ; CHECK:   [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)
10  ; CHECK:   [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
11  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
12  ; CHECK:   G_STORE [[TRUNC]](s1), [[DEF]](p1) :: (store 1 into `i1 addrspace(1)* undef`, addrspace 1)
13  ; CHECK:   [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]]
14  ; CHECK:   S_SETPC_B64_return [[COPY2]]
15  store i1 %arg0, i1 addrspace(1)* undef
16  ret void
17}
18
19define void @void_func_i1_zeroext(i1 zeroext %arg0) #0 {
20  ; CHECK-LABEL: name: void_func_i1_zeroext
21  ; CHECK: bb.1 (%ir-block.0):
22  ; CHECK:   liveins: $vgpr0, $sgpr30_sgpr31
23  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
24  ; CHECK:   [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)
25  ; CHECK:   [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
26  ; CHECK:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 12
27  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
28  ; CHECK:   [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[TRUNC]](s1)
29  ; CHECK:   [[ADD:%[0-9]+]]:_(s32) = G_ADD [[ZEXT]], [[C]]
30  ; CHECK:   G_STORE [[ADD]](s32), [[DEF]](p1) :: (store 4 into `i32 addrspace(1)* undef`, addrspace 1)
31  ; CHECK:   [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]]
32  ; CHECK:   S_SETPC_B64_return [[COPY2]]
33  %ext = zext i1 %arg0 to i32
34  %add = add i32 %ext, 12
35  store i32 %add, i32 addrspace(1)* undef
36  ret void
37}
38
39define void @void_func_i1_signext(i1 signext %arg0) #0 {
40  ; CHECK-LABEL: name: void_func_i1_signext
41  ; CHECK: bb.1 (%ir-block.0):
42  ; CHECK:   liveins: $vgpr0, $sgpr30_sgpr31
43  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
44  ; CHECK:   [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)
45  ; CHECK:   [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
46  ; CHECK:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 12
47  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
48  ; CHECK:   [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s1)
49  ; CHECK:   [[ADD:%[0-9]+]]:_(s32) = G_ADD [[SEXT]], [[C]]
50  ; CHECK:   G_STORE [[ADD]](s32), [[DEF]](p1) :: (store 4 into `i32 addrspace(1)* undef`, addrspace 1)
51  ; CHECK:   [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]]
52  ; CHECK:   S_SETPC_B64_return [[COPY2]]
53  %ext = sext i1 %arg0 to i32
54  %add = add i32 %ext, 12
55  store i32 %add, i32 addrspace(1)* undef
56  ret void
57}
58
59define void @i1_arg_i1_use(i1 %arg) #0 {
60  ; CHECK-LABEL: name: i1_arg_i1_use
61  ; CHECK: bb.1.bb:
62  ; CHECK:   successors: %bb.2(0x40000000), %bb.3(0x40000000)
63  ; CHECK:   liveins: $vgpr0, $sgpr30_sgpr31
64  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
65  ; CHECK:   [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)
66  ; CHECK:   [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
67  ; CHECK:   [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 true
68  ; CHECK:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
69  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
70  ; CHECK:   [[XOR:%[0-9]+]]:_(s1) = G_XOR [[TRUNC]], [[C]]
71  ; CHECK:   [[INT:%[0-9]+]]:_(s1), [[INT1:%[0-9]+]]:_(s64) = G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.amdgcn.if), [[XOR]](s1)
72  ; CHECK:   G_BRCOND [[INT]](s1), %bb.2
73  ; CHECK:   G_BR %bb.3
74  ; CHECK: bb.2.bb1:
75  ; CHECK:   successors: %bb.3(0x80000000)
76  ; CHECK:   G_STORE [[C1]](s32), [[DEF]](p1) :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
77  ; CHECK: bb.3.bb2:
78  ; CHECK:   G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.amdgcn.end.cf), [[INT1]](s64)
79  ; CHECK:   [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]]
80  ; CHECK:   S_SETPC_B64_return [[COPY2]]
81bb:
82  br i1 %arg, label %bb2, label %bb1
83
84bb1:
85  store volatile i32 0, i32 addrspace(1)* undef
86  br label %bb2
87
88bb2:
89  ret void
90}
91
92define void @void_func_i8(i8 %arg0) #0 {
93  ; CHECK-LABEL: name: void_func_i8
94  ; CHECK: bb.1 (%ir-block.0):
95  ; CHECK:   liveins: $vgpr0, $sgpr30_sgpr31
96  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
97  ; CHECK:   [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32)
98  ; CHECK:   [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
99  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
100  ; CHECK:   G_STORE [[TRUNC]](s8), [[DEF]](p1) :: (store 1 into `i8 addrspace(1)* undef`, addrspace 1)
101  ; CHECK:   [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]]
102  ; CHECK:   S_SETPC_B64_return [[COPY2]]
103  store i8 %arg0, i8 addrspace(1)* undef
104  ret void
105}
106
107define void @void_func_i8_zeroext(i8 zeroext %arg0) #0 {
108  ; CHECK-LABEL: name: void_func_i8_zeroext
109  ; CHECK: bb.1 (%ir-block.0):
110  ; CHECK:   liveins: $vgpr0, $sgpr30_sgpr31
111  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
112  ; CHECK:   [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32)
113  ; CHECK:   [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
114  ; CHECK:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 12
115  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
116  ; CHECK:   [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[TRUNC]](s8)
117  ; CHECK:   [[ADD:%[0-9]+]]:_(s32) = G_ADD [[ZEXT]], [[C]]
118  ; CHECK:   G_STORE [[ADD]](s32), [[DEF]](p1) :: (store 4 into `i32 addrspace(1)* undef`, addrspace 1)
119  ; CHECK:   [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]]
120  ; CHECK:   S_SETPC_B64_return [[COPY2]]
121  %ext = zext i8 %arg0 to i32
122  %add = add i32 %ext, 12
123  store i32 %add, i32 addrspace(1)* undef
124  ret void
125}
126
127define void @void_func_i8_signext(i8 signext %arg0) #0 {
128  ; CHECK-LABEL: name: void_func_i8_signext
129  ; CHECK: bb.1 (%ir-block.0):
130  ; CHECK:   liveins: $vgpr0, $sgpr30_sgpr31
131  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
132  ; CHECK:   [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32)
133  ; CHECK:   [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
134  ; CHECK:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 12
135  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
136  ; CHECK:   [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s8)
137  ; CHECK:   [[ADD:%[0-9]+]]:_(s32) = G_ADD [[SEXT]], [[C]]
138  ; CHECK:   G_STORE [[ADD]](s32), [[DEF]](p1) :: (store 4 into `i32 addrspace(1)* undef`, addrspace 1)
139  ; CHECK:   [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]]
140  ; CHECK:   S_SETPC_B64_return [[COPY2]]
141  %ext = sext i8 %arg0 to i32
142  %add = add i32 %ext, 12
143  store i32 %add, i32 addrspace(1)* undef
144  ret void
145}
146
147define void @void_func_i16(i16 %arg0) #0 {
148  ; CHECK-LABEL: name: void_func_i16
149  ; CHECK: bb.1 (%ir-block.0):
150  ; CHECK:   liveins: $vgpr0, $sgpr30_sgpr31
151  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
152  ; CHECK:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
153  ; CHECK:   [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
154  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
155  ; CHECK:   G_STORE [[TRUNC]](s16), [[DEF]](p1) :: (store 2 into `i16 addrspace(1)* undef`, addrspace 1)
156  ; CHECK:   [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]]
157  ; CHECK:   S_SETPC_B64_return [[COPY2]]
158  store i16 %arg0, i16 addrspace(1)* undef
159  ret void
160}
161
162define void @void_func_i16_zeroext(i16 zeroext %arg0) #0 {
163  ; CHECK-LABEL: name: void_func_i16_zeroext
164  ; CHECK: bb.1 (%ir-block.0):
165  ; CHECK:   liveins: $vgpr0, $sgpr30_sgpr31
166  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
167  ; CHECK:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
168  ; CHECK:   [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
169  ; CHECK:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 12
170  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
171  ; CHECK:   [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[TRUNC]](s16)
172  ; CHECK:   [[ADD:%[0-9]+]]:_(s32) = G_ADD [[ZEXT]], [[C]]
173  ; CHECK:   G_STORE [[ADD]](s32), [[DEF]](p1) :: (store 4 into `i32 addrspace(1)* undef`, addrspace 1)
174  ; CHECK:   [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]]
175  ; CHECK:   S_SETPC_B64_return [[COPY2]]
176  %ext = zext i16 %arg0 to i32
177  %add = add i32 %ext, 12
178  store i32 %add, i32 addrspace(1)* undef
179  ret void
180}
181
182define void @void_func_i16_signext(i16 signext %arg0) #0 {
183  ; CHECK-LABEL: name: void_func_i16_signext
184  ; CHECK: bb.1 (%ir-block.0):
185  ; CHECK:   liveins: $vgpr0, $sgpr30_sgpr31
186  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
187  ; CHECK:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
188  ; CHECK:   [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
189  ; CHECK:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 12
190  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
191  ; CHECK:   [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s16)
192  ; CHECK:   [[ADD:%[0-9]+]]:_(s32) = G_ADD [[SEXT]], [[C]]
193  ; CHECK:   G_STORE [[ADD]](s32), [[DEF]](p1) :: (store 4 into `i32 addrspace(1)* undef`, addrspace 1)
194  ; CHECK:   [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]]
195  ; CHECK:   S_SETPC_B64_return [[COPY2]]
196  %ext = sext i16 %arg0 to i32
197  %add = add i32 %ext, 12
198  store i32 %add, i32 addrspace(1)* undef
199  ret void
200}
201
202define void @void_func_i32(i32 %arg0) #0 {
203  ; CHECK-LABEL: name: void_func_i32
204  ; CHECK: bb.1 (%ir-block.0):
205  ; CHECK:   liveins: $vgpr0, $sgpr30_sgpr31
206  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
207  ; CHECK:   [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
208  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
209  ; CHECK:   G_STORE [[COPY]](s32), [[DEF]](p1) :: (store 4 into `i32 addrspace(1)* undef`, addrspace 1)
210  ; CHECK:   [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]]
211  ; CHECK:   S_SETPC_B64_return [[COPY2]]
212  store i32 %arg0, i32 addrspace(1)* undef
213  ret void
214}
215
216define void @void_func_i64(i64 %arg0) #0 {
217  ; CHECK-LABEL: name: void_func_i64
218  ; CHECK: bb.1 (%ir-block.0):
219  ; CHECK:   liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31
220  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
221  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
222  ; CHECK:   [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
223  ; CHECK:   [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)
224  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
225  ; CHECK:   G_STORE [[MV]](s64), [[DEF]](p1) :: (store 8 into `i64 addrspace(1)* undef`, addrspace 1)
226  ; CHECK:   [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]]
227  ; CHECK:   S_SETPC_B64_return [[COPY3]]
228  store i64 %arg0, i64 addrspace(1)* undef
229  ret void
230}
231
232define void @void_func_f16(half %arg0) #0 {
233  ; CHECK-LABEL: name: void_func_f16
234  ; CHECK: bb.1 (%ir-block.0):
235  ; CHECK:   liveins: $vgpr0, $sgpr30_sgpr31
236  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
237  ; CHECK:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
238  ; CHECK:   [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
239  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
240  ; CHECK:   G_STORE [[TRUNC]](s16), [[DEF]](p1) :: (store 2 into `half addrspace(1)* undef`, addrspace 1)
241  ; CHECK:   [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]]
242  ; CHECK:   S_SETPC_B64_return [[COPY2]]
243  store half %arg0, half addrspace(1)* undef
244  ret void
245}
246
247define void @void_func_f32(float %arg0) #0 {
248  ; CHECK-LABEL: name: void_func_f32
249  ; CHECK: bb.1 (%ir-block.0):
250  ; CHECK:   liveins: $vgpr0, $sgpr30_sgpr31
251  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
252  ; CHECK:   [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
253  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
254  ; CHECK:   G_STORE [[COPY]](s32), [[DEF]](p1) :: (store 4 into `float addrspace(1)* undef`, addrspace 1)
255  ; CHECK:   [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]]
256  ; CHECK:   S_SETPC_B64_return [[COPY2]]
257  store float %arg0, float addrspace(1)* undef
258  ret void
259}
260
261define void @void_func_f64(double %arg0) #0 {
262  ; CHECK-LABEL: name: void_func_f64
263  ; CHECK: bb.1 (%ir-block.0):
264  ; CHECK:   liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31
265  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
266  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
267  ; CHECK:   [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
268  ; CHECK:   [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)
269  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
270  ; CHECK:   G_STORE [[MV]](s64), [[DEF]](p1) :: (store 8 into `double addrspace(1)* undef`, addrspace 1)
271  ; CHECK:   [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]]
272  ; CHECK:   S_SETPC_B64_return [[COPY3]]
273  store double %arg0, double addrspace(1)* undef
274  ret void
275}
276
277define void @void_func_v2i32(<2 x i32> %arg0) #0 {
278  ; CHECK-LABEL: name: void_func_v2i32
279  ; CHECK: bb.1 (%ir-block.0):
280  ; CHECK:   liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31
281  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
282  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
283  ; CHECK:   [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
284  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32)
285  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
286  ; CHECK:   G_STORE [[BUILD_VECTOR]](<2 x s32>), [[DEF]](p1) :: (store 8 into `<2 x i32> addrspace(1)* undef`, addrspace 1)
287  ; CHECK:   [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]]
288  ; CHECK:   S_SETPC_B64_return [[COPY3]]
289  store <2 x i32> %arg0, <2 x i32> addrspace(1)* undef
290  ret void
291}
292
293define void @void_func_v3i32(<3 x i32> %arg0) #0 {
294  ; CHECK-LABEL: name: void_func_v3i32
295  ; CHECK: bb.1 (%ir-block.0):
296  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $sgpr30_sgpr31
297  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
298  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
299  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
300  ; CHECK:   [[COPY3:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
301  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)
302  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
303  ; CHECK:   G_STORE [[BUILD_VECTOR]](<3 x s32>), [[DEF]](p1) :: (store 12 into `<3 x i32> addrspace(1)* undef`, align 16, addrspace 1)
304  ; CHECK:   [[COPY4:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY3]]
305  ; CHECK:   S_SETPC_B64_return [[COPY4]]
306  store <3 x i32> %arg0, <3 x i32> addrspace(1)* undef
307  ret void
308}
309
310define void @void_func_v4i32(<4 x i32> %arg0) #0 {
311  ; CHECK-LABEL: name: void_func_v4i32
312  ; CHECK: bb.1 (%ir-block.0):
313  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31
314  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
315  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
316  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
317  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
318  ; CHECK:   [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
319  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)
320  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
321  ; CHECK:   G_STORE [[BUILD_VECTOR]](<4 x s32>), [[DEF]](p1) :: (store 16 into `<4 x i32> addrspace(1)* undef`, addrspace 1)
322  ; CHECK:   [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]]
323  ; CHECK:   S_SETPC_B64_return [[COPY5]]
324  store <4 x i32> %arg0, <4 x i32> addrspace(1)* undef
325  ret void
326}
327
328define void @void_func_v5i32(<5 x i32> %arg0) #0 {
329  ; CHECK-LABEL: name: void_func_v5i32
330  ; CHECK: bb.1 (%ir-block.0):
331  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $sgpr30_sgpr31
332  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
333  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
334  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
335  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
336  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
337  ; CHECK:   [[COPY5:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
338  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<5 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32)
339  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
340  ; CHECK:   G_STORE [[BUILD_VECTOR]](<5 x s32>), [[DEF]](p1) :: (store 20 into `<5 x i32> addrspace(1)* undef`, align 32, addrspace 1)
341  ; CHECK:   [[COPY6:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY5]]
342  ; CHECK:   S_SETPC_B64_return [[COPY6]]
343  store <5 x i32> %arg0, <5 x i32> addrspace(1)* undef
344  ret void
345}
346
347define void @void_func_v8i32(<8 x i32> %arg0) #0 {
348  ; CHECK-LABEL: name: void_func_v8i32
349  ; CHECK: bb.1 (%ir-block.0):
350  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $sgpr30_sgpr31
351  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
352  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
353  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
354  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
355  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
356  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
357  ; CHECK:   [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
358  ; CHECK:   [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
359  ; CHECK:   [[COPY8:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
360  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
361  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
362  ; CHECK:   G_STORE [[BUILD_VECTOR]](<8 x s32>), [[DEF]](p1) :: (store 32 into `<8 x i32> addrspace(1)* undef`, addrspace 1)
363  ; CHECK:   [[COPY9:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY8]]
364  ; CHECK:   S_SETPC_B64_return [[COPY9]]
365  store <8 x i32> %arg0, <8 x i32> addrspace(1)* undef
366  ret void
367}
368
369define void @void_func_v16i32(<16 x i32> %arg0) #0 {
370  ; CHECK-LABEL: name: void_func_v16i32
371  ; CHECK: bb.1 (%ir-block.0):
372  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $sgpr30_sgpr31
373  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
374  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
375  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
376  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
377  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
378  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
379  ; CHECK:   [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
380  ; CHECK:   [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
381  ; CHECK:   [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
382  ; CHECK:   [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
383  ; CHECK:   [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
384  ; CHECK:   [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
385  ; CHECK:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
386  ; CHECK:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
387  ; CHECK:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14
388  ; CHECK:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15
389  ; CHECK:   [[COPY16:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
390  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<16 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32)
391  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
392  ; CHECK:   G_STORE [[BUILD_VECTOR]](<16 x s32>), [[DEF]](p1) :: (store 64 into `<16 x i32> addrspace(1)* undef`, addrspace 1)
393  ; CHECK:   [[COPY17:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY16]]
394  ; CHECK:   S_SETPC_B64_return [[COPY17]]
395  store <16 x i32> %arg0, <16 x i32> addrspace(1)* undef
396  ret void
397}
398
399define void @void_func_v32i32(<32 x i32> %arg0) #0 {
400  ; CHECK-LABEL: name: void_func_v32i32
401  ; CHECK: bb.1 (%ir-block.0):
402  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31
403  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
404  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
405  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
406  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
407  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
408  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
409  ; CHECK:   [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
410  ; CHECK:   [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
411  ; CHECK:   [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
412  ; CHECK:   [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
413  ; CHECK:   [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
414  ; CHECK:   [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
415  ; CHECK:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
416  ; CHECK:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
417  ; CHECK:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14
418  ; CHECK:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15
419  ; CHECK:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16
420  ; CHECK:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17
421  ; CHECK:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18
422  ; CHECK:   [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19
423  ; CHECK:   [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20
424  ; CHECK:   [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21
425  ; CHECK:   [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22
426  ; CHECK:   [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23
427  ; CHECK:   [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24
428  ; CHECK:   [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25
429  ; CHECK:   [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26
430  ; CHECK:   [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27
431  ; CHECK:   [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28
432  ; CHECK:   [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29
433  ; CHECK:   [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30
434  ; CHECK:   [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31
435  ; CHECK:   [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
436  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32)
437  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
438  ; CHECK:   G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (store 128 into `<32 x i32> addrspace(1)* undef`, addrspace 1)
439  ; CHECK:   [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]]
440  ; CHECK:   S_SETPC_B64_return [[COPY33]]
441  store <32 x i32> %arg0, <32 x i32> addrspace(1)* undef
442  ret void
443}
444
445; 1 over register limit
446define void @void_func_v33i32(<33 x i32> %arg0) #0 {
447  ; CHECK-LABEL: name: void_func_v33i32
448  ; CHECK: bb.1 (%ir-block.0):
449  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31
450  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
451  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
452  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
453  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
454  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
455  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
456  ; CHECK:   [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
457  ; CHECK:   [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
458  ; CHECK:   [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
459  ; CHECK:   [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
460  ; CHECK:   [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
461  ; CHECK:   [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
462  ; CHECK:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
463  ; CHECK:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
464  ; CHECK:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14
465  ; CHECK:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15
466  ; CHECK:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16
467  ; CHECK:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17
468  ; CHECK:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18
469  ; CHECK:   [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19
470  ; CHECK:   [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20
471  ; CHECK:   [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21
472  ; CHECK:   [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22
473  ; CHECK:   [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23
474  ; CHECK:   [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24
475  ; CHECK:   [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25
476  ; CHECK:   [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26
477  ; CHECK:   [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27
478  ; CHECK:   [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28
479  ; CHECK:   [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29
480  ; CHECK:   [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30
481  ; CHECK:   [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31
482  ; CHECK:   [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0
483  ; CHECK:   [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load 4 from %fixed-stack.0, align 1, addrspace 5)
484  ; CHECK:   [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
485  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<33 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32), [[LOAD]](s32)
486  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
487  ; CHECK:   G_STORE [[BUILD_VECTOR]](<33 x s32>), [[DEF]](p1) :: (store 132 into `<33 x i32> addrspace(1)* undef`, align 256, addrspace 1)
488  ; CHECK:   [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]]
489  ; CHECK:   S_SETPC_B64_return [[COPY33]]
490  store <33 x i32> %arg0, <33 x i32> addrspace(1)* undef
491  ret void
492}
493
494define void @void_func_v2i64(<2 x i64> %arg0) #0 {
495  ; CHECK-LABEL: name: void_func_v2i64
496  ; CHECK: bb.1 (%ir-block.0):
497  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31
498  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
499  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
500  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
501  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
502  ; CHECK:   [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
503  ; CHECK:   [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)
504  ; CHECK:   [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)
505  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64)
506  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
507  ; CHECK:   G_STORE [[BUILD_VECTOR]](<2 x s64>), [[DEF]](p1) :: (store 16 into `<2 x i64> addrspace(1)* undef`, addrspace 1)
508  ; CHECK:   [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]]
509  ; CHECK:   S_SETPC_B64_return [[COPY5]]
510  store <2 x i64> %arg0, <2 x i64> addrspace(1)* undef
511  ret void
512}
513
514define void @void_func_v3i64(<3 x i64> %arg0) #0 {
515  ; CHECK-LABEL: name: void_func_v3i64
516  ; CHECK: bb.1 (%ir-block.0):
517  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $sgpr30_sgpr31
518  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
519  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
520  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
521  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
522  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
523  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
524  ; CHECK:   [[COPY6:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
525  ; CHECK:   [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)
526  ; CHECK:   [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)
527  ; CHECK:   [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)
528  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64)
529  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
530  ; CHECK:   G_STORE [[BUILD_VECTOR]](<3 x s64>), [[DEF]](p1) :: (store 24 into `<3 x i64> addrspace(1)* undef`, align 32, addrspace 1)
531  ; CHECK:   [[COPY7:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY6]]
532  ; CHECK:   S_SETPC_B64_return [[COPY7]]
533  store <3 x i64> %arg0, <3 x i64> addrspace(1)* undef
534  ret void
535}
536
537define void @void_func_v4i64(<4 x i64> %arg0) #0 {
538  ; CHECK-LABEL: name: void_func_v4i64
539  ; CHECK: bb.1 (%ir-block.0):
540  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $sgpr30_sgpr31
541  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
542  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
543  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
544  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
545  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
546  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
547  ; CHECK:   [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
548  ; CHECK:   [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
549  ; CHECK:   [[COPY8:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
550  ; CHECK:   [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)
551  ; CHECK:   [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)
552  ; CHECK:   [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)
553  ; CHECK:   [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)
554  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64)
555  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
556  ; CHECK:   G_STORE [[BUILD_VECTOR]](<4 x s64>), [[DEF]](p1) :: (store 32 into `<4 x i64> addrspace(1)* undef`, addrspace 1)
557  ; CHECK:   [[COPY9:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY8]]
558  ; CHECK:   S_SETPC_B64_return [[COPY9]]
559  store <4 x i64> %arg0, <4 x i64> addrspace(1)* undef
560  ret void
561}
562
563define void @void_func_v5i64(<5 x i64> %arg0) #0 {
564  ; CHECK-LABEL: name: void_func_v5i64
565  ; CHECK: bb.1 (%ir-block.0):
566  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $sgpr30_sgpr31
567  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
568  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
569  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
570  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
571  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
572  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
573  ; CHECK:   [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
574  ; CHECK:   [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
575  ; CHECK:   [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
576  ; CHECK:   [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
577  ; CHECK:   [[COPY10:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
578  ; CHECK:   [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)
579  ; CHECK:   [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)
580  ; CHECK:   [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)
581  ; CHECK:   [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)
582  ; CHECK:   [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)
583  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<5 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64), [[MV4]](s64)
584  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
585  ; CHECK:   G_STORE [[BUILD_VECTOR]](<5 x s64>), [[DEF]](p1) :: (store 40 into `<5 x i64> addrspace(1)* undef`, align 64, addrspace 1)
586  ; CHECK:   [[COPY11:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY10]]
587  ; CHECK:   S_SETPC_B64_return [[COPY11]]
588  store <5 x i64> %arg0, <5 x i64> addrspace(1)* undef
589  ret void
590}
591
592define void @void_func_v8i64(<8 x i64> %arg0) #0 {
593  ; CHECK-LABEL: name: void_func_v8i64
594  ; CHECK: bb.1 (%ir-block.0):
595  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $sgpr30_sgpr31
596  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
597  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
598  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
599  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
600  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
601  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
602  ; CHECK:   [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
603  ; CHECK:   [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
604  ; CHECK:   [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
605  ; CHECK:   [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
606  ; CHECK:   [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
607  ; CHECK:   [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
608  ; CHECK:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
609  ; CHECK:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
610  ; CHECK:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14
611  ; CHECK:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15
612  ; CHECK:   [[COPY16:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
613  ; CHECK:   [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)
614  ; CHECK:   [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)
615  ; CHECK:   [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)
616  ; CHECK:   [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)
617  ; CHECK:   [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)
618  ; CHECK:   [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)
619  ; CHECK:   [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)
620  ; CHECK:   [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)
621  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64), [[MV4]](s64), [[MV5]](s64), [[MV6]](s64), [[MV7]](s64)
622  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
623  ; CHECK:   G_STORE [[BUILD_VECTOR]](<8 x s64>), [[DEF]](p1) :: (store 64 into `<8 x i64> addrspace(1)* undef`, addrspace 1)
624  ; CHECK:   [[COPY17:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY16]]
625  ; CHECK:   S_SETPC_B64_return [[COPY17]]
626  store <8 x i64> %arg0, <8 x i64> addrspace(1)* undef
627  ret void
628}
629
630define void @void_func_v16i64(<16 x i64> %arg0) #0 {
631  ; CHECK-LABEL: name: void_func_v16i64
632  ; CHECK: bb.1 (%ir-block.0):
633  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31
634  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
635  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
636  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
637  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
638  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
639  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
640  ; CHECK:   [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
641  ; CHECK:   [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
642  ; CHECK:   [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
643  ; CHECK:   [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
644  ; CHECK:   [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
645  ; CHECK:   [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
646  ; CHECK:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
647  ; CHECK:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
648  ; CHECK:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14
649  ; CHECK:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15
650  ; CHECK:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16
651  ; CHECK:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17
652  ; CHECK:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18
653  ; CHECK:   [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19
654  ; CHECK:   [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20
655  ; CHECK:   [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21
656  ; CHECK:   [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22
657  ; CHECK:   [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23
658  ; CHECK:   [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24
659  ; CHECK:   [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25
660  ; CHECK:   [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26
661  ; CHECK:   [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27
662  ; CHECK:   [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28
663  ; CHECK:   [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29
664  ; CHECK:   [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30
665  ; CHECK:   [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31
666  ; CHECK:   [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
667  ; CHECK:   [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)
668  ; CHECK:   [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)
669  ; CHECK:   [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)
670  ; CHECK:   [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)
671  ; CHECK:   [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)
672  ; CHECK:   [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)
673  ; CHECK:   [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)
674  ; CHECK:   [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)
675  ; CHECK:   [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)
676  ; CHECK:   [[MV9:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY18]](s32), [[COPY19]](s32)
677  ; CHECK:   [[MV10:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY20]](s32), [[COPY21]](s32)
678  ; CHECK:   [[MV11:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY22]](s32), [[COPY23]](s32)
679  ; CHECK:   [[MV12:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY24]](s32), [[COPY25]](s32)
680  ; CHECK:   [[MV13:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY26]](s32), [[COPY27]](s32)
681  ; CHECK:   [[MV14:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY28]](s32), [[COPY29]](s32)
682  ; CHECK:   [[MV15:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY30]](s32), [[COPY31]](s32)
683  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<16 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64), [[MV4]](s64), [[MV5]](s64), [[MV6]](s64), [[MV7]](s64), [[MV8]](s64), [[MV9]](s64), [[MV10]](s64), [[MV11]](s64), [[MV12]](s64), [[MV13]](s64), [[MV14]](s64), [[MV15]](s64)
684  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
685  ; CHECK:   G_STORE [[BUILD_VECTOR]](<16 x s64>), [[DEF]](p1) :: (store 128 into `<16 x i64> addrspace(1)* undef`, addrspace 1)
686  ; CHECK:   [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]]
687  ; CHECK:   S_SETPC_B64_return [[COPY33]]
688  store <16 x i64> %arg0, <16 x i64> addrspace(1)* undef
689  ret void
690}
691
692define void @void_func_v2i16(<2 x i16> %arg0) #0 {
693  ; CHECK-LABEL: name: void_func_v2i16
694  ; CHECK: bb.1 (%ir-block.0):
695  ; CHECK:   liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31
696  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
697  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
698  ; CHECK:   [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
699  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32)
700  ; CHECK:   [[TRUNC:%[0-9]+]]:_(<2 x s16>) = G_TRUNC [[BUILD_VECTOR]](<2 x s32>)
701  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
702  ; CHECK:   G_STORE [[TRUNC]](<2 x s16>), [[DEF]](p1) :: (store 4 into `<2 x i16> addrspace(1)* undef`, addrspace 1)
703  ; CHECK:   [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]]
704  ; CHECK:   S_SETPC_B64_return [[COPY3]]
705  store <2 x i16> %arg0, <2 x i16> addrspace(1)* undef
706  ret void
707}
708
709define void @void_func_v3i16(<3 x i16> %arg0) #0 {
710  ; CHECK-LABEL: name: void_func_v3i16
711  ; CHECK: bb.1 (%ir-block.0):
712  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $sgpr30_sgpr31
713  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
714  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
715  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
716  ; CHECK:   [[COPY3:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
717  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)
718  ; CHECK:   [[TRUNC:%[0-9]+]]:_(<3 x s16>) = G_TRUNC [[BUILD_VECTOR]](<3 x s32>)
719  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
720  ; CHECK:   G_STORE [[TRUNC]](<3 x s16>), [[DEF]](p1) :: (store 6 into `<3 x i16> addrspace(1)* undef`, align 8, addrspace 1)
721  ; CHECK:   [[COPY4:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY3]]
722  ; CHECK:   S_SETPC_B64_return [[COPY4]]
723  store <3 x i16> %arg0, <3 x i16> addrspace(1)* undef
724  ret void
725}
726
727define void @void_func_v4i16(<4 x i16> %arg0) #0 {
728  ; CHECK-LABEL: name: void_func_v4i16
729  ; CHECK: bb.1 (%ir-block.0):
730  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31
731  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
732  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
733  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
734  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
735  ; CHECK:   [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
736  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)
737  ; CHECK:   [[TRUNC:%[0-9]+]]:_(<4 x s16>) = G_TRUNC [[BUILD_VECTOR]](<4 x s32>)
738  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
739  ; CHECK:   G_STORE [[TRUNC]](<4 x s16>), [[DEF]](p1) :: (store 8 into `<4 x i16> addrspace(1)* undef`, addrspace 1)
740  ; CHECK:   [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]]
741  ; CHECK:   S_SETPC_B64_return [[COPY5]]
742  store <4 x i16> %arg0, <4 x i16> addrspace(1)* undef
743  ret void
744}
745
746define void @void_func_v5i16(<5 x i16> %arg0) #0 {
747  ; CHECK-LABEL: name: void_func_v5i16
748  ; CHECK: bb.1 (%ir-block.0):
749  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $sgpr30_sgpr31
750  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
751  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
752  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
753  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
754  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
755  ; CHECK:   [[COPY5:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
756  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<5 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32)
757  ; CHECK:   [[TRUNC:%[0-9]+]]:_(<5 x s16>) = G_TRUNC [[BUILD_VECTOR]](<5 x s32>)
758  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
759  ; CHECK:   G_STORE [[TRUNC]](<5 x s16>), [[DEF]](p1) :: (store 10 into `<5 x i16> addrspace(1)* undef`, align 16, addrspace 1)
760  ; CHECK:   [[COPY6:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY5]]
761  ; CHECK:   S_SETPC_B64_return [[COPY6]]
762  store <5 x i16> %arg0, <5 x i16> addrspace(1)* undef
763  ret void
764}
765
766define void @void_func_v8i16(<8 x i16> %arg0) #0 {
767  ; CHECK-LABEL: name: void_func_v8i16
768  ; CHECK: bb.1 (%ir-block.0):
769  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $sgpr30_sgpr31
770  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
771  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
772  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
773  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
774  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
775  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
776  ; CHECK:   [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
777  ; CHECK:   [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
778  ; CHECK:   [[COPY8:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
779  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
780  ; CHECK:   [[TRUNC:%[0-9]+]]:_(<8 x s16>) = G_TRUNC [[BUILD_VECTOR]](<8 x s32>)
781  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
782  ; CHECK:   G_STORE [[TRUNC]](<8 x s16>), [[DEF]](p1) :: (store 16 into `<8 x i16> addrspace(1)* undef`, addrspace 1)
783  ; CHECK:   [[COPY9:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY8]]
784  ; CHECK:   S_SETPC_B64_return [[COPY9]]
785  store <8 x i16> %arg0, <8 x i16> addrspace(1)* undef
786  ret void
787}
788
789define void @void_func_v16i16(<16 x i16> %arg0) #0 {
790  ; CHECK-LABEL: name: void_func_v16i16
791  ; CHECK: bb.1 (%ir-block.0):
792  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $sgpr30_sgpr31
793  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
794  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
795  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
796  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
797  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
798  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
799  ; CHECK:   [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
800  ; CHECK:   [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
801  ; CHECK:   [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
802  ; CHECK:   [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
803  ; CHECK:   [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
804  ; CHECK:   [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
805  ; CHECK:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
806  ; CHECK:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
807  ; CHECK:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14
808  ; CHECK:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15
809  ; CHECK:   [[COPY16:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
810  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<16 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32)
811  ; CHECK:   [[TRUNC:%[0-9]+]]:_(<16 x s16>) = G_TRUNC [[BUILD_VECTOR]](<16 x s32>)
812  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
813  ; CHECK:   G_STORE [[TRUNC]](<16 x s16>), [[DEF]](p1) :: (store 32 into `<16 x i16> addrspace(1)* undef`, addrspace 1)
814  ; CHECK:   [[COPY17:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY16]]
815  ; CHECK:   S_SETPC_B64_return [[COPY17]]
816  store <16 x i16> %arg0, <16 x i16> addrspace(1)* undef
817  ret void
818}
819
820define void @void_func_v2f32(<2 x float> %arg0) #0 {
821  ; CHECK-LABEL: name: void_func_v2f32
822  ; CHECK: bb.1 (%ir-block.0):
823  ; CHECK:   liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31
824  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
825  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
826  ; CHECK:   [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
827  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32)
828  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
829  ; CHECK:   G_STORE [[BUILD_VECTOR]](<2 x s32>), [[DEF]](p1) :: (store 8 into `<2 x float> addrspace(1)* undef`, addrspace 1)
830  ; CHECK:   [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]]
831  ; CHECK:   S_SETPC_B64_return [[COPY3]]
832  store <2 x float> %arg0, <2 x float> addrspace(1)* undef
833  ret void
834}
835
836define void @void_func_v3f32(<3 x float> %arg0) #0 {
837  ; CHECK-LABEL: name: void_func_v3f32
838  ; CHECK: bb.1 (%ir-block.0):
839  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $sgpr30_sgpr31
840  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
841  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
842  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
843  ; CHECK:   [[COPY3:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
844  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)
845  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
846  ; CHECK:   G_STORE [[BUILD_VECTOR]](<3 x s32>), [[DEF]](p1) :: (store 12 into `<3 x float> addrspace(1)* undef`, align 16, addrspace 1)
847  ; CHECK:   [[COPY4:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY3]]
848  ; CHECK:   S_SETPC_B64_return [[COPY4]]
849  store <3 x float> %arg0, <3 x float> addrspace(1)* undef
850  ret void
851}
852
853define void @void_func_v4f32(<4 x float> %arg0) #0 {
854  ; CHECK-LABEL: name: void_func_v4f32
855  ; CHECK: bb.1 (%ir-block.0):
856  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31
857  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
858  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
859  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
860  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
861  ; CHECK:   [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
862  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)
863  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
864  ; CHECK:   G_STORE [[BUILD_VECTOR]](<4 x s32>), [[DEF]](p1) :: (store 16 into `<4 x float> addrspace(1)* undef`, addrspace 1)
865  ; CHECK:   [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]]
866  ; CHECK:   S_SETPC_B64_return [[COPY5]]
867  store <4 x float> %arg0, <4 x float> addrspace(1)* undef
868  ret void
869}
870
871define void @void_func_v8f32(<8 x float> %arg0) #0 {
872  ; CHECK-LABEL: name: void_func_v8f32
873  ; CHECK: bb.1 (%ir-block.0):
874  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $sgpr30_sgpr31
875  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
876  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
877  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
878  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
879  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
880  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
881  ; CHECK:   [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
882  ; CHECK:   [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
883  ; CHECK:   [[COPY8:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
884  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
885  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
886  ; CHECK:   G_STORE [[BUILD_VECTOR]](<8 x s32>), [[DEF]](p1) :: (store 32 into `<8 x float> addrspace(1)* undef`, addrspace 1)
887  ; CHECK:   [[COPY9:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY8]]
888  ; CHECK:   S_SETPC_B64_return [[COPY9]]
889  store <8 x float> %arg0, <8 x float> addrspace(1)* undef
890  ret void
891}
892
893define void @void_func_v16f32(<16 x float> %arg0) #0 {
894  ; CHECK-LABEL: name: void_func_v16f32
895  ; CHECK: bb.1 (%ir-block.0):
896  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $sgpr30_sgpr31
897  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
898  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
899  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
900  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
901  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
902  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
903  ; CHECK:   [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
904  ; CHECK:   [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
905  ; CHECK:   [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
906  ; CHECK:   [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
907  ; CHECK:   [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
908  ; CHECK:   [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
909  ; CHECK:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
910  ; CHECK:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
911  ; CHECK:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14
912  ; CHECK:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15
913  ; CHECK:   [[COPY16:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
914  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<16 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32)
915  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
916  ; CHECK:   G_STORE [[BUILD_VECTOR]](<16 x s32>), [[DEF]](p1) :: (store 64 into `<16 x float> addrspace(1)* undef`, addrspace 1)
917  ; CHECK:   [[COPY17:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY16]]
918  ; CHECK:   S_SETPC_B64_return [[COPY17]]
919  store <16 x float> %arg0, <16 x float> addrspace(1)* undef
920  ret void
921}
922
923define void @void_func_v2f64(<2 x double> %arg0) #0 {
924  ; CHECK-LABEL: name: void_func_v2f64
925  ; CHECK: bb.1 (%ir-block.0):
926  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31
927  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
928  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
929  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
930  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
931  ; CHECK:   [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
932  ; CHECK:   [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)
933  ; CHECK:   [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)
934  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64)
935  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
936  ; CHECK:   G_STORE [[BUILD_VECTOR]](<2 x s64>), [[DEF]](p1) :: (store 16 into `<2 x double> addrspace(1)* undef`, addrspace 1)
937  ; CHECK:   [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]]
938  ; CHECK:   S_SETPC_B64_return [[COPY5]]
939  store <2 x double> %arg0, <2 x double> addrspace(1)* undef
940  ret void
941}
942
943define void @void_func_v3f64(<3 x double> %arg0) #0 {
944  ; CHECK-LABEL: name: void_func_v3f64
945  ; CHECK: bb.1 (%ir-block.0):
946  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $sgpr30_sgpr31
947  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
948  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
949  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
950  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
951  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
952  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
953  ; CHECK:   [[COPY6:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
954  ; CHECK:   [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)
955  ; CHECK:   [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)
956  ; CHECK:   [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)
957  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64)
958  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
959  ; CHECK:   G_STORE [[BUILD_VECTOR]](<3 x s64>), [[DEF]](p1) :: (store 24 into `<3 x double> addrspace(1)* undef`, align 32, addrspace 1)
960  ; CHECK:   [[COPY7:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY6]]
961  ; CHECK:   S_SETPC_B64_return [[COPY7]]
962  store <3 x double> %arg0, <3 x double> addrspace(1)* undef
963  ret void
964}
965
966define void @void_func_v4f64(<4 x double> %arg0) #0 {
967  ; CHECK-LABEL: name: void_func_v4f64
968  ; CHECK: bb.1 (%ir-block.0):
969  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $sgpr30_sgpr31
970  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
971  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
972  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
973  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
974  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
975  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
976  ; CHECK:   [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
977  ; CHECK:   [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
978  ; CHECK:   [[COPY8:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
979  ; CHECK:   [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)
980  ; CHECK:   [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)
981  ; CHECK:   [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)
982  ; CHECK:   [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)
983  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64)
984  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
985  ; CHECK:   G_STORE [[BUILD_VECTOR]](<4 x s64>), [[DEF]](p1) :: (store 32 into `<4 x double> addrspace(1)* undef`, addrspace 1)
986  ; CHECK:   [[COPY9:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY8]]
987  ; CHECK:   S_SETPC_B64_return [[COPY9]]
988  store <4 x double> %arg0, <4 x double> addrspace(1)* undef
989  ret void
990}
991
992define void @void_func_v8f64(<8 x double> %arg0) #0 {
993  ; CHECK-LABEL: name: void_func_v8f64
994  ; CHECK: bb.1 (%ir-block.0):
995  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $sgpr30_sgpr31
996  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
997  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
998  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
999  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
1000  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
1001  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
1002  ; CHECK:   [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
1003  ; CHECK:   [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
1004  ; CHECK:   [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
1005  ; CHECK:   [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
1006  ; CHECK:   [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
1007  ; CHECK:   [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
1008  ; CHECK:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
1009  ; CHECK:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
1010  ; CHECK:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14
1011  ; CHECK:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15
1012  ; CHECK:   [[COPY16:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1013  ; CHECK:   [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)
1014  ; CHECK:   [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)
1015  ; CHECK:   [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)
1016  ; CHECK:   [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)
1017  ; CHECK:   [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)
1018  ; CHECK:   [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)
1019  ; CHECK:   [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)
1020  ; CHECK:   [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)
1021  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64), [[MV4]](s64), [[MV5]](s64), [[MV6]](s64), [[MV7]](s64)
1022  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1023  ; CHECK:   G_STORE [[BUILD_VECTOR]](<8 x s64>), [[DEF]](p1) :: (store 64 into `<8 x double> addrspace(1)* undef`, addrspace 1)
1024  ; CHECK:   [[COPY17:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY16]]
1025  ; CHECK:   S_SETPC_B64_return [[COPY17]]
1026  store <8 x double> %arg0, <8 x double> addrspace(1)* undef
1027  ret void
1028}
1029
1030define void @void_func_v16f64(<16 x double> %arg0) #0 {
1031  ; CHECK-LABEL: name: void_func_v16f64
1032  ; CHECK: bb.1 (%ir-block.0):
1033  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31
1034  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
1035  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
1036  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
1037  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
1038  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
1039  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
1040  ; CHECK:   [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
1041  ; CHECK:   [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
1042  ; CHECK:   [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
1043  ; CHECK:   [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
1044  ; CHECK:   [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
1045  ; CHECK:   [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
1046  ; CHECK:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
1047  ; CHECK:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
1048  ; CHECK:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14
1049  ; CHECK:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15
1050  ; CHECK:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16
1051  ; CHECK:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17
1052  ; CHECK:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18
1053  ; CHECK:   [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19
1054  ; CHECK:   [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20
1055  ; CHECK:   [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21
1056  ; CHECK:   [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22
1057  ; CHECK:   [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23
1058  ; CHECK:   [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24
1059  ; CHECK:   [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25
1060  ; CHECK:   [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26
1061  ; CHECK:   [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27
1062  ; CHECK:   [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28
1063  ; CHECK:   [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29
1064  ; CHECK:   [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30
1065  ; CHECK:   [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31
1066  ; CHECK:   [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1067  ; CHECK:   [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)
1068  ; CHECK:   [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)
1069  ; CHECK:   [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)
1070  ; CHECK:   [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)
1071  ; CHECK:   [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)
1072  ; CHECK:   [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)
1073  ; CHECK:   [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)
1074  ; CHECK:   [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)
1075  ; CHECK:   [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)
1076  ; CHECK:   [[MV9:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY18]](s32), [[COPY19]](s32)
1077  ; CHECK:   [[MV10:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY20]](s32), [[COPY21]](s32)
1078  ; CHECK:   [[MV11:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY22]](s32), [[COPY23]](s32)
1079  ; CHECK:   [[MV12:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY24]](s32), [[COPY25]](s32)
1080  ; CHECK:   [[MV13:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY26]](s32), [[COPY27]](s32)
1081  ; CHECK:   [[MV14:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY28]](s32), [[COPY29]](s32)
1082  ; CHECK:   [[MV15:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY30]](s32), [[COPY31]](s32)
1083  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<16 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64), [[MV4]](s64), [[MV5]](s64), [[MV6]](s64), [[MV7]](s64), [[MV8]](s64), [[MV9]](s64), [[MV10]](s64), [[MV11]](s64), [[MV12]](s64), [[MV13]](s64), [[MV14]](s64), [[MV15]](s64)
1084  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1085  ; CHECK:   G_STORE [[BUILD_VECTOR]](<16 x s64>), [[DEF]](p1) :: (store 128 into `<16 x double> addrspace(1)* undef`, addrspace 1)
1086  ; CHECK:   [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]]
1087  ; CHECK:   S_SETPC_B64_return [[COPY33]]
1088  store <16 x double> %arg0, <16 x double> addrspace(1)* undef
1089  ret void
1090}
1091
1092define void @void_func_v2f16(<2 x half> %arg0) #0 {
1093  ; CHECK-LABEL: name: void_func_v2f16
1094  ; CHECK: bb.1 (%ir-block.0):
1095  ; CHECK:   liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31
1096  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
1097  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
1098  ; CHECK:   [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1099  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32)
1100  ; CHECK:   [[TRUNC:%[0-9]+]]:_(<2 x s16>) = G_TRUNC [[BUILD_VECTOR]](<2 x s32>)
1101  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1102  ; CHECK:   G_STORE [[TRUNC]](<2 x s16>), [[DEF]](p1) :: (store 4 into `<2 x half> addrspace(1)* undef`, addrspace 1)
1103  ; CHECK:   [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]]
1104  ; CHECK:   S_SETPC_B64_return [[COPY3]]
1105  store <2 x half> %arg0, <2 x half> addrspace(1)* undef
1106  ret void
1107}
1108
1109define void @void_func_v3f16(<3 x half> %arg0) #0 {
1110  ; CHECK-LABEL: name: void_func_v3f16
1111  ; CHECK: bb.1 (%ir-block.0):
1112  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $sgpr30_sgpr31
1113  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
1114  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
1115  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
1116  ; CHECK:   [[COPY3:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1117  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)
1118  ; CHECK:   [[TRUNC:%[0-9]+]]:_(<3 x s16>) = G_TRUNC [[BUILD_VECTOR]](<3 x s32>)
1119  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1120  ; CHECK:   G_STORE [[TRUNC]](<3 x s16>), [[DEF]](p1) :: (store 6 into `<3 x half> addrspace(1)* undef`, align 8, addrspace 1)
1121  ; CHECK:   [[COPY4:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY3]]
1122  ; CHECK:   S_SETPC_B64_return [[COPY4]]
1123  store <3 x half> %arg0, <3 x half> addrspace(1)* undef
1124  ret void
1125}
1126
1127define void @void_func_v4f16(<4 x half> %arg0) #0 {
1128  ; CHECK-LABEL: name: void_func_v4f16
1129  ; CHECK: bb.1 (%ir-block.0):
1130  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31
1131  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
1132  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
1133  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
1134  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
1135  ; CHECK:   [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1136  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)
1137  ; CHECK:   [[TRUNC:%[0-9]+]]:_(<4 x s16>) = G_TRUNC [[BUILD_VECTOR]](<4 x s32>)
1138  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1139  ; CHECK:   G_STORE [[TRUNC]](<4 x s16>), [[DEF]](p1) :: (store 8 into `<4 x half> addrspace(1)* undef`, addrspace 1)
1140  ; CHECK:   [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]]
1141  ; CHECK:   S_SETPC_B64_return [[COPY5]]
1142  store <4 x half> %arg0, <4 x half> addrspace(1)* undef
1143  ret void
1144}
1145
1146define void @void_func_v8f16(<8 x half> %arg0) #0 {
1147  ; CHECK-LABEL: name: void_func_v8f16
1148  ; CHECK: bb.1 (%ir-block.0):
1149  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $sgpr30_sgpr31
1150  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
1151  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
1152  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
1153  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
1154  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
1155  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
1156  ; CHECK:   [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
1157  ; CHECK:   [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
1158  ; CHECK:   [[COPY8:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1159  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
1160  ; CHECK:   [[TRUNC:%[0-9]+]]:_(<8 x s16>) = G_TRUNC [[BUILD_VECTOR]](<8 x s32>)
1161  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1162  ; CHECK:   G_STORE [[TRUNC]](<8 x s16>), [[DEF]](p1) :: (store 16 into `<8 x half> addrspace(1)* undef`, addrspace 1)
1163  ; CHECK:   [[COPY9:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY8]]
1164  ; CHECK:   S_SETPC_B64_return [[COPY9]]
1165  store <8 x half> %arg0, <8 x half> addrspace(1)* undef
1166  ret void
1167}
1168
1169define void @void_func_v16f16(<16 x half> %arg0) #0 {
1170  ; CHECK-LABEL: name: void_func_v16f16
1171  ; CHECK: bb.1 (%ir-block.0):
1172  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $sgpr30_sgpr31
1173  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
1174  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
1175  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
1176  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
1177  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
1178  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
1179  ; CHECK:   [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
1180  ; CHECK:   [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
1181  ; CHECK:   [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
1182  ; CHECK:   [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
1183  ; CHECK:   [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
1184  ; CHECK:   [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
1185  ; CHECK:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
1186  ; CHECK:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
1187  ; CHECK:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14
1188  ; CHECK:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15
1189  ; CHECK:   [[COPY16:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1190  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<16 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32)
1191  ; CHECK:   [[TRUNC:%[0-9]+]]:_(<16 x s16>) = G_TRUNC [[BUILD_VECTOR]](<16 x s32>)
1192  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1193  ; CHECK:   G_STORE [[TRUNC]](<16 x s16>), [[DEF]](p1) :: (store 32 into `<16 x half> addrspace(1)* undef`, addrspace 1)
1194  ; CHECK:   [[COPY17:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY16]]
1195  ; CHECK:   S_SETPC_B64_return [[COPY17]]
1196  store <16 x half> %arg0, <16 x half> addrspace(1)* undef
1197  ret void
1198}
1199
1200; Make sure there is no alignment requirement for passed vgprs.
1201define void @void_func_i32_i64_i32(i32 %arg0, i64 %arg1, i32 %arg2) #0 {
1202  ; CHECK-LABEL: name: void_func_i32_i64_i32
1203  ; CHECK: bb.1 (%ir-block.0):
1204  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31
1205  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
1206  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
1207  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
1208  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
1209  ; CHECK:   [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1210  ; CHECK:   [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY1]](s32), [[COPY2]](s32)
1211  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1212  ; CHECK:   [[DEF1:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1213  ; CHECK:   G_STORE [[COPY]](s32), [[DEF]](p1) :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
1214  ; CHECK:   G_STORE [[MV]](s64), [[DEF1]](p1) :: (volatile store 8 into `i64 addrspace(1)* undef`, addrspace 1)
1215  ; CHECK:   G_STORE [[COPY3]](s32), [[DEF]](p1) :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
1216  ; CHECK:   [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]]
1217  ; CHECK:   S_SETPC_B64_return [[COPY5]]
1218  store volatile i32 %arg0, i32 addrspace(1)* undef
1219  store volatile i64 %arg1, i64 addrspace(1)* undef
1220  store volatile i32 %arg2, i32 addrspace(1)* undef
1221  ret void
1222}
1223
1224define void @void_func_struct_i32({ i32 } %arg0) #0 {
1225  ; CHECK-LABEL: name: void_func_struct_i32
1226  ; CHECK: bb.1 (%ir-block.0):
1227  ; CHECK:   liveins: $vgpr0, $sgpr30_sgpr31
1228  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
1229  ; CHECK:   [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1230  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1231  ; CHECK:   G_STORE [[COPY]](s32), [[DEF]](p1) :: (store 4 into `{ i32 } addrspace(1)* undef`, addrspace 1)
1232  ; CHECK:   [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]]
1233  ; CHECK:   S_SETPC_B64_return [[COPY2]]
1234  store { i32 } %arg0, { i32 } addrspace(1)* undef
1235  ret void
1236}
1237
1238define void @void_func_struct_i8_i32({ i8, i32 } %arg0) #0 {
1239  ; CHECK-LABEL: name: void_func_struct_i8_i32
1240  ; CHECK: bb.1 (%ir-block.0):
1241  ; CHECK:   liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31
1242  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
1243  ; CHECK:   [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32)
1244  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
1245  ; CHECK:   [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1246  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1247  ; CHECK:   G_STORE [[TRUNC]](s8), [[DEF]](p1) :: (store 1 into `{ i8, i32 } addrspace(1)* undef`, align 4, addrspace 1)
1248  ; CHECK:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 4
1249  ; CHECK:   [[GEP:%[0-9]+]]:_(p1) = G_GEP [[DEF]], [[C]](s64)
1250  ; CHECK:   G_STORE [[COPY1]](s32), [[GEP]](p1) :: (store 4 into `{ i8, i32 } addrspace(1)* undef` + 4, addrspace 1)
1251  ; CHECK:   [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]]
1252  ; CHECK:   S_SETPC_B64_return [[COPY3]]
1253  store { i8, i32 } %arg0, { i8, i32 } addrspace(1)* undef
1254  ret void
1255}
1256
1257define void @void_func_byval_struct_i8_i32({ i8, i32 } addrspace(5)* byval %arg0) #0 {
1258  ; CHECK-LABEL: name: void_func_byval_struct_i8_i32
1259  ; CHECK: bb.1 (%ir-block.0):
1260  ; CHECK:   liveins: $sgpr30_sgpr31
1261  ; CHECK:   [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0
1262  ; CHECK:   [[LOAD:%[0-9]+]]:_(p5) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load 4 from %fixed-stack.0, align 1, addrspace 5)
1263  ; CHECK:   [[COPY:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1264  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1265  ; CHECK:   [[LOAD1:%[0-9]+]]:_(s8) = G_LOAD [[LOAD]](p5) :: (load 1 from %ir.arg0, align 4, addrspace 5)
1266  ; CHECK:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 4
1267  ; CHECK:   [[GEP:%[0-9]+]]:_(p5) = G_GEP [[LOAD]], [[C]](s32)
1268  ; CHECK:   [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[GEP]](p5) :: (load 4 from %ir.arg0 + 4, addrspace 5)
1269  ; CHECK:   G_STORE [[LOAD1]](s8), [[DEF]](p1) :: (store 1 into `{ i8, i32 } addrspace(1)* undef`, align 4, addrspace 1)
1270  ; CHECK:   [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 4
1271  ; CHECK:   [[GEP1:%[0-9]+]]:_(p1) = G_GEP [[DEF]], [[C1]](s64)
1272  ; CHECK:   G_STORE [[LOAD2]](s32), [[GEP1]](p1) :: (store 4 into `{ i8, i32 } addrspace(1)* undef` + 4, addrspace 1)
1273  ; CHECK:   [[COPY1:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY]]
1274  ; CHECK:   S_SETPC_B64_return [[COPY1]]
1275  %arg0.load = load { i8, i32 }, { i8, i32 } addrspace(5)* %arg0
1276  store { i8, i32 } %arg0.load, { i8, i32 } addrspace(1)* undef
1277  ret void
1278}
1279
1280define void @void_func_byval_struct_i8_i32_x2({ i8, i32 } addrspace(5)* byval %arg0, { i8, i32 } addrspace(5)* byval %arg1, i32 %arg2) #0 {
1281  ; CHECK-LABEL: name: void_func_byval_struct_i8_i32_x2
1282  ; CHECK: bb.1 (%ir-block.0):
1283  ; CHECK:   liveins: $vgpr0, $sgpr30_sgpr31
1284  ; CHECK:   [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1
1285  ; CHECK:   [[LOAD:%[0-9]+]]:_(p5) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load 4 from %fixed-stack.1, align 1, addrspace 5)
1286  ; CHECK:   [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0
1287  ; CHECK:   [[LOAD1:%[0-9]+]]:_(p5) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load 4 from %fixed-stack.0, align 1, addrspace 5)
1288  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
1289  ; CHECK:   [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1290  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1291  ; CHECK:   [[DEF1:%[0-9]+]]:_(p3) = G_IMPLICIT_DEF
1292  ; CHECK:   [[LOAD2:%[0-9]+]]:_(s8) = G_LOAD [[LOAD]](p5) :: (volatile load 1 from %ir.arg0, align 4, addrspace 5)
1293  ; CHECK:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 4
1294  ; CHECK:   [[GEP:%[0-9]+]]:_(p5) = G_GEP [[LOAD]], [[C]](s32)
1295  ; CHECK:   [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[GEP]](p5) :: (volatile load 4 from %ir.arg0 + 4, addrspace 5)
1296  ; CHECK:   [[LOAD4:%[0-9]+]]:_(s8) = G_LOAD [[LOAD1]](p5) :: (volatile load 1 from %ir.arg1, align 4, addrspace 5)
1297  ; CHECK:   [[GEP1:%[0-9]+]]:_(p5) = G_GEP [[LOAD1]], [[C]](s32)
1298  ; CHECK:   [[LOAD5:%[0-9]+]]:_(s32) = G_LOAD [[GEP1]](p5) :: (volatile load 4 from %ir.arg1 + 4, addrspace 5)
1299  ; CHECK:   G_STORE [[LOAD2]](s8), [[DEF]](p1) :: (volatile store 1 into `{ i8, i32 } addrspace(1)* undef`, align 4, addrspace 1)
1300  ; CHECK:   [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 4
1301  ; CHECK:   [[GEP2:%[0-9]+]]:_(p1) = G_GEP [[DEF]], [[C1]](s64)
1302  ; CHECK:   G_STORE [[LOAD3]](s32), [[GEP2]](p1) :: (volatile store 4 into `{ i8, i32 } addrspace(1)* undef` + 4, addrspace 1)
1303  ; CHECK:   G_STORE [[LOAD4]](s8), [[DEF]](p1) :: (volatile store 1 into `{ i8, i32 } addrspace(1)* undef`, align 4, addrspace 1)
1304  ; CHECK:   [[GEP3:%[0-9]+]]:_(p1) = G_GEP [[DEF]], [[C1]](s64)
1305  ; CHECK:   G_STORE [[LOAD5]](s32), [[GEP3]](p1) :: (volatile store 4 into `{ i8, i32 } addrspace(1)* undef` + 4, addrspace 1)
1306  ; CHECK:   G_STORE [[COPY]](s32), [[DEF1]](p3) :: (volatile store 4 into `i32 addrspace(3)* undef`, addrspace 3)
1307  ; CHECK:   [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]]
1308  ; CHECK:   S_SETPC_B64_return [[COPY2]]
1309  %arg0.load = load volatile { i8, i32 }, { i8, i32 } addrspace(5)* %arg0
1310  %arg1.load = load volatile { i8, i32 }, { i8, i32 } addrspace(5)* %arg1
1311  store volatile { i8, i32 } %arg0.load, { i8, i32 } addrspace(1)* undef
1312  store volatile { i8, i32 } %arg1.load, { i8, i32 } addrspace(1)* undef
1313  store volatile i32 %arg2, i32 addrspace(3)* undef
1314  ret void
1315}
1316
1317define void @void_func_byval_i32_byval_i64(i32 addrspace(5)* byval %arg0, i64 addrspace(5)* byval %arg1) #0 {
1318  ; CHECK-LABEL: name: void_func_byval_i32_byval_i64
1319  ; CHECK: bb.1 (%ir-block.0):
1320  ; CHECK:   liveins: $sgpr30_sgpr31
1321  ; CHECK:   [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1
1322  ; CHECK:   [[LOAD:%[0-9]+]]:_(p5) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load 4 from %fixed-stack.1, align 1, addrspace 5)
1323  ; CHECK:   [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0
1324  ; CHECK:   [[LOAD1:%[0-9]+]]:_(p5) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load 4 from %fixed-stack.0, align 1, addrspace 5)
1325  ; CHECK:   [[COPY:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1326  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1327  ; CHECK:   [[DEF1:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1328  ; CHECK:   [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[LOAD]](p5) :: (load 4 from %ir.arg0, addrspace 5)
1329  ; CHECK:   [[LOAD3:%[0-9]+]]:_(s64) = G_LOAD [[LOAD1]](p5) :: (load 8 from %ir.arg1, addrspace 5)
1330  ; CHECK:   G_STORE [[LOAD2]](s32), [[DEF]](p1) :: (store 4 into `i32 addrspace(1)* undef`, addrspace 1)
1331  ; CHECK:   G_STORE [[LOAD3]](s64), [[DEF1]](p1) :: (store 8 into `i64 addrspace(1)* undef`, addrspace 1)
1332  ; CHECK:   [[COPY1:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY]]
1333  ; CHECK:   S_SETPC_B64_return [[COPY1]]
1334  %arg0.load = load i32, i32 addrspace(5)* %arg0
1335  %arg1.load = load i64, i64 addrspace(5)* %arg1
1336  store i32 %arg0.load, i32 addrspace(1)* undef
1337  store i64 %arg1.load, i64 addrspace(1)* undef
1338  ret void
1339}
1340
1341define void @void_func_v32i32_i32_i64(<32 x i32> %arg0, i32 %arg1, i64 %arg2) #0 {
1342  ; CHECK-LABEL: name: void_func_v32i32_i32_i64
1343  ; CHECK: bb.1 (%ir-block.0):
1344  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31
1345  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
1346  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
1347  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
1348  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
1349  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
1350  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
1351  ; CHECK:   [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
1352  ; CHECK:   [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
1353  ; CHECK:   [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
1354  ; CHECK:   [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
1355  ; CHECK:   [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
1356  ; CHECK:   [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
1357  ; CHECK:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
1358  ; CHECK:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
1359  ; CHECK:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14
1360  ; CHECK:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15
1361  ; CHECK:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16
1362  ; CHECK:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17
1363  ; CHECK:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18
1364  ; CHECK:   [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19
1365  ; CHECK:   [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20
1366  ; CHECK:   [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21
1367  ; CHECK:   [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22
1368  ; CHECK:   [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23
1369  ; CHECK:   [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24
1370  ; CHECK:   [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25
1371  ; CHECK:   [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26
1372  ; CHECK:   [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27
1373  ; CHECK:   [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28
1374  ; CHECK:   [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29
1375  ; CHECK:   [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30
1376  ; CHECK:   [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31
1377  ; CHECK:   [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2
1378  ; CHECK:   [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load 4 from %fixed-stack.2, align 1, addrspace 5)
1379  ; CHECK:   [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1
1380  ; CHECK:   [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load 4 from %fixed-stack.1, align 1, addrspace 5)
1381  ; CHECK:   [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0
1382  ; CHECK:   [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load 4 from %fixed-stack.0, align 1, addrspace 5)
1383  ; CHECK:   [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1384  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32)
1385  ; CHECK:   [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[LOAD1]](s32), [[LOAD2]](s32)
1386  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1387  ; CHECK:   [[DEF1:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1388  ; CHECK:   [[DEF2:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1389  ; CHECK:   G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store 128 into `<32 x i32> addrspace(1)* undef`, addrspace 1)
1390  ; CHECK:   G_STORE [[LOAD]](s32), [[DEF1]](p1) :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
1391  ; CHECK:   G_STORE [[MV]](s64), [[DEF2]](p1) :: (volatile store 8 into `i64 addrspace(1)* undef`, addrspace 1)
1392  ; CHECK:   [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]]
1393  ; CHECK:   S_SETPC_B64_return [[COPY33]]
1394  store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef
1395  store volatile i32 %arg1, i32 addrspace(1)* undef
1396  store volatile i64 %arg2, i64 addrspace(1)* undef
1397  ret void
1398}
1399
1400; FIXME: Different ext load types on CI vs. VI
1401define void @void_func_v32i32_i1_i8_i16(<32 x i32> %arg0, i1 %arg1, i8 %arg2, i16 %arg3, half %arg4) #0 {
1402  ; CHECK-LABEL: name: void_func_v32i32_i1_i8_i16
1403  ; CHECK: bb.1 (%ir-block.0):
1404  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31
1405  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
1406  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
1407  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
1408  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
1409  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
1410  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
1411  ; CHECK:   [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
1412  ; CHECK:   [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
1413  ; CHECK:   [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
1414  ; CHECK:   [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
1415  ; CHECK:   [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
1416  ; CHECK:   [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
1417  ; CHECK:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
1418  ; CHECK:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
1419  ; CHECK:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14
1420  ; CHECK:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15
1421  ; CHECK:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16
1422  ; CHECK:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17
1423  ; CHECK:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18
1424  ; CHECK:   [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19
1425  ; CHECK:   [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20
1426  ; CHECK:   [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21
1427  ; CHECK:   [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22
1428  ; CHECK:   [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23
1429  ; CHECK:   [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24
1430  ; CHECK:   [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25
1431  ; CHECK:   [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26
1432  ; CHECK:   [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27
1433  ; CHECK:   [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28
1434  ; CHECK:   [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29
1435  ; CHECK:   [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30
1436  ; CHECK:   [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31
1437  ; CHECK:   [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.3
1438  ; CHECK:   [[LOAD:%[0-9]+]]:_(s1) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load 1 from %fixed-stack.3, addrspace 5)
1439  ; CHECK:   [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2
1440  ; CHECK:   [[LOAD1:%[0-9]+]]:_(s8) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load 1 from %fixed-stack.2, addrspace 5)
1441  ; CHECK:   [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1
1442  ; CHECK:   [[LOAD2:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load 2 from %fixed-stack.1, align 1, addrspace 5)
1443  ; CHECK:   [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0
1444  ; CHECK:   [[LOAD3:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load 2 from %fixed-stack.0, align 1, addrspace 5)
1445  ; CHECK:   [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1446  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32)
1447  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1448  ; CHECK:   [[DEF1:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1449  ; CHECK:   [[DEF2:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1450  ; CHECK:   [[DEF3:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1451  ; CHECK:   [[DEF4:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1452  ; CHECK:   G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store 128 into `<32 x i32> addrspace(1)* undef`, addrspace 1)
1453  ; CHECK:   G_STORE [[LOAD]](s1), [[DEF1]](p1) :: (volatile store 1 into `i1 addrspace(1)* undef`, addrspace 1)
1454  ; CHECK:   G_STORE [[LOAD1]](s8), [[DEF2]](p1) :: (volatile store 1 into `i8 addrspace(1)* undef`, addrspace 1)
1455  ; CHECK:   G_STORE [[LOAD2]](s16), [[DEF3]](p1) :: (volatile store 2 into `i16 addrspace(1)* undef`, addrspace 1)
1456  ; CHECK:   G_STORE [[LOAD3]](s16), [[DEF4]](p1) :: (volatile store 2 into `half addrspace(1)* undef`, addrspace 1)
1457  ; CHECK:   [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]]
1458  ; CHECK:   S_SETPC_B64_return [[COPY33]]
1459  store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef
1460  store volatile i1 %arg1, i1 addrspace(1)* undef
1461  store volatile i8 %arg2, i8 addrspace(1)* undef
1462  store volatile i16 %arg3, i16 addrspace(1)* undef
1463  store volatile half %arg4, half addrspace(1)* undef
1464  ret void
1465}
1466
1467define void @void_func_v32i32_v2i32_v2f32(<32 x i32> %arg0, <2 x i32> %arg1, <2 x float> %arg2) #0 {
1468  ; CHECK-LABEL: name: void_func_v32i32_v2i32_v2f32
1469  ; CHECK: bb.1 (%ir-block.0):
1470  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31
1471  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
1472  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
1473  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
1474  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
1475  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
1476  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
1477  ; CHECK:   [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
1478  ; CHECK:   [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
1479  ; CHECK:   [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
1480  ; CHECK:   [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
1481  ; CHECK:   [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
1482  ; CHECK:   [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
1483  ; CHECK:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
1484  ; CHECK:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
1485  ; CHECK:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14
1486  ; CHECK:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15
1487  ; CHECK:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16
1488  ; CHECK:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17
1489  ; CHECK:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18
1490  ; CHECK:   [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19
1491  ; CHECK:   [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20
1492  ; CHECK:   [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21
1493  ; CHECK:   [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22
1494  ; CHECK:   [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23
1495  ; CHECK:   [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24
1496  ; CHECK:   [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25
1497  ; CHECK:   [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26
1498  ; CHECK:   [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27
1499  ; CHECK:   [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28
1500  ; CHECK:   [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29
1501  ; CHECK:   [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30
1502  ; CHECK:   [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31
1503  ; CHECK:   [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.3
1504  ; CHECK:   [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load 4 from %fixed-stack.3, align 1, addrspace 5)
1505  ; CHECK:   [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2
1506  ; CHECK:   [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load 4 from %fixed-stack.2, align 1, addrspace 5)
1507  ; CHECK:   [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1
1508  ; CHECK:   [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load 4 from %fixed-stack.1, align 1, addrspace 5)
1509  ; CHECK:   [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0
1510  ; CHECK:   [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load 4 from %fixed-stack.0, align 1, addrspace 5)
1511  ; CHECK:   [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1512  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32)
1513  ; CHECK:   [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[LOAD]](s32), [[LOAD1]](s32)
1514  ; CHECK:   [[BUILD_VECTOR2:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[LOAD2]](s32), [[LOAD3]](s32)
1515  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1516  ; CHECK:   [[DEF1:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1517  ; CHECK:   [[DEF2:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1518  ; CHECK:   G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store 128 into `<32 x i32> addrspace(1)* undef`, addrspace 1)
1519  ; CHECK:   G_STORE [[BUILD_VECTOR1]](<2 x s32>), [[DEF1]](p1) :: (volatile store 8 into `<2 x i32> addrspace(1)* undef`, addrspace 1)
1520  ; CHECK:   G_STORE [[BUILD_VECTOR2]](<2 x s32>), [[DEF2]](p1) :: (volatile store 8 into `<2 x float> addrspace(1)* undef`, addrspace 1)
1521  ; CHECK:   [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]]
1522  ; CHECK:   S_SETPC_B64_return [[COPY33]]
1523  store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef
1524  store volatile <2 x i32> %arg1, <2 x i32> addrspace(1)* undef
1525  store volatile <2 x float> %arg2, <2 x float> addrspace(1)* undef
1526  ret void
1527}
1528
1529define void @void_func_v32i32_v2i16_v2f16(<32 x i32> %arg0, <2 x i16> %arg1, <2 x half> %arg2) #0 {
1530  ; CHECK-LABEL: name: void_func_v32i32_v2i16_v2f16
1531  ; CHECK: bb.1 (%ir-block.0):
1532  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31
1533  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
1534  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
1535  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
1536  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
1537  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
1538  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
1539  ; CHECK:   [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
1540  ; CHECK:   [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
1541  ; CHECK:   [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
1542  ; CHECK:   [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
1543  ; CHECK:   [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
1544  ; CHECK:   [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
1545  ; CHECK:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
1546  ; CHECK:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
1547  ; CHECK:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14
1548  ; CHECK:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15
1549  ; CHECK:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16
1550  ; CHECK:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17
1551  ; CHECK:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18
1552  ; CHECK:   [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19
1553  ; CHECK:   [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20
1554  ; CHECK:   [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21
1555  ; CHECK:   [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22
1556  ; CHECK:   [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23
1557  ; CHECK:   [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24
1558  ; CHECK:   [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25
1559  ; CHECK:   [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26
1560  ; CHECK:   [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27
1561  ; CHECK:   [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28
1562  ; CHECK:   [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29
1563  ; CHECK:   [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30
1564  ; CHECK:   [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31
1565  ; CHECK:   [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.3
1566  ; CHECK:   [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load 4 from %fixed-stack.3, align 1, addrspace 5)
1567  ; CHECK:   [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2
1568  ; CHECK:   [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load 4 from %fixed-stack.2, align 1, addrspace 5)
1569  ; CHECK:   [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1
1570  ; CHECK:   [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load 4 from %fixed-stack.1, align 1, addrspace 5)
1571  ; CHECK:   [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0
1572  ; CHECK:   [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load 4 from %fixed-stack.0, align 1, addrspace 5)
1573  ; CHECK:   [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1574  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32)
1575  ; CHECK:   [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[LOAD]](s32), [[LOAD1]](s32)
1576  ; CHECK:   [[TRUNC:%[0-9]+]]:_(<2 x s16>) = G_TRUNC [[BUILD_VECTOR1]](<2 x s32>)
1577  ; CHECK:   [[BUILD_VECTOR2:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[LOAD2]](s32), [[LOAD3]](s32)
1578  ; CHECK:   [[TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_TRUNC [[BUILD_VECTOR2]](<2 x s32>)
1579  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1580  ; CHECK:   [[DEF1:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1581  ; CHECK:   [[DEF2:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1582  ; CHECK:   G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store 128 into `<32 x i32> addrspace(1)* undef`, addrspace 1)
1583  ; CHECK:   G_STORE [[TRUNC]](<2 x s16>), [[DEF1]](p1) :: (volatile store 4 into `<2 x i16> addrspace(1)* undef`, addrspace 1)
1584  ; CHECK:   G_STORE [[TRUNC1]](<2 x s16>), [[DEF2]](p1) :: (volatile store 4 into `<2 x half> addrspace(1)* undef`, addrspace 1)
1585  ; CHECK:   [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]]
1586  ; CHECK:   S_SETPC_B64_return [[COPY33]]
1587  store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef
1588  store volatile <2 x i16> %arg1, <2 x i16> addrspace(1)* undef
1589  store volatile <2 x half> %arg2, <2 x half> addrspace(1)* undef
1590  ret void
1591}
1592
1593define void @void_func_v32i32_v2i64_v2f64(<32 x i32> %arg0, <2 x i64> %arg1, <2 x double> %arg2) #0 {
1594  ; CHECK-LABEL: name: void_func_v32i32_v2i64_v2f64
1595  ; CHECK: bb.1 (%ir-block.0):
1596  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31
1597  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
1598  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
1599  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
1600  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
1601  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
1602  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
1603  ; CHECK:   [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
1604  ; CHECK:   [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
1605  ; CHECK:   [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
1606  ; CHECK:   [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
1607  ; CHECK:   [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
1608  ; CHECK:   [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
1609  ; CHECK:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
1610  ; CHECK:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
1611  ; CHECK:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14
1612  ; CHECK:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15
1613  ; CHECK:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16
1614  ; CHECK:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17
1615  ; CHECK:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18
1616  ; CHECK:   [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19
1617  ; CHECK:   [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20
1618  ; CHECK:   [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21
1619  ; CHECK:   [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22
1620  ; CHECK:   [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23
1621  ; CHECK:   [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24
1622  ; CHECK:   [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25
1623  ; CHECK:   [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26
1624  ; CHECK:   [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27
1625  ; CHECK:   [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28
1626  ; CHECK:   [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29
1627  ; CHECK:   [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30
1628  ; CHECK:   [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31
1629  ; CHECK:   [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.7
1630  ; CHECK:   [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load 4 from %fixed-stack.7, align 1, addrspace 5)
1631  ; CHECK:   [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.6
1632  ; CHECK:   [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load 4 from %fixed-stack.6, align 1, addrspace 5)
1633  ; CHECK:   [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.5
1634  ; CHECK:   [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load 4 from %fixed-stack.5, align 1, addrspace 5)
1635  ; CHECK:   [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.4
1636  ; CHECK:   [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load 4 from %fixed-stack.4, align 1, addrspace 5)
1637  ; CHECK:   [[FRAME_INDEX4:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.3
1638  ; CHECK:   [[LOAD4:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX4]](p5) :: (invariant load 4 from %fixed-stack.3, align 1, addrspace 5)
1639  ; CHECK:   [[FRAME_INDEX5:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2
1640  ; CHECK:   [[LOAD5:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX5]](p5) :: (invariant load 4 from %fixed-stack.2, align 1, addrspace 5)
1641  ; CHECK:   [[FRAME_INDEX6:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1
1642  ; CHECK:   [[LOAD6:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX6]](p5) :: (invariant load 4 from %fixed-stack.1, align 1, addrspace 5)
1643  ; CHECK:   [[FRAME_INDEX7:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0
1644  ; CHECK:   [[LOAD7:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX7]](p5) :: (invariant load 4 from %fixed-stack.0, align 1, addrspace 5)
1645  ; CHECK:   [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1646  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32)
1647  ; CHECK:   [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[LOAD]](s32), [[LOAD1]](s32)
1648  ; CHECK:   [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[LOAD2]](s32), [[LOAD3]](s32)
1649  ; CHECK:   [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64)
1650  ; CHECK:   [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[LOAD4]](s32), [[LOAD5]](s32)
1651  ; CHECK:   [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[LOAD6]](s32), [[LOAD7]](s32)
1652  ; CHECK:   [[BUILD_VECTOR2:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[MV2]](s64), [[MV3]](s64)
1653  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1654  ; CHECK:   [[DEF1:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1655  ; CHECK:   [[DEF2:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1656  ; CHECK:   G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store 128 into `<32 x i32> addrspace(1)* undef`, addrspace 1)
1657  ; CHECK:   G_STORE [[BUILD_VECTOR1]](<2 x s64>), [[DEF1]](p1) :: (volatile store 16 into `<2 x i64> addrspace(1)* undef`, addrspace 1)
1658  ; CHECK:   G_STORE [[BUILD_VECTOR2]](<2 x s64>), [[DEF2]](p1) :: (volatile store 16 into `<2 x double> addrspace(1)* undef`, addrspace 1)
1659  ; CHECK:   [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]]
1660  ; CHECK:   S_SETPC_B64_return [[COPY33]]
1661  store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef
1662  store volatile <2 x i64> %arg1, <2 x i64> addrspace(1)* undef
1663  store volatile <2 x double> %arg2, <2 x double> addrspace(1)* undef
1664  ret void
1665}
1666
1667define void @void_func_v32i32_v4i32_v4f32(<32 x i32> %arg0, <4 x i32> %arg1, <4 x float> %arg2) #0 {
1668  ; CHECK-LABEL: name: void_func_v32i32_v4i32_v4f32
1669  ; CHECK: bb.1 (%ir-block.0):
1670  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31
1671  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
1672  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
1673  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
1674  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
1675  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
1676  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
1677  ; CHECK:   [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
1678  ; CHECK:   [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
1679  ; CHECK:   [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
1680  ; CHECK:   [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
1681  ; CHECK:   [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
1682  ; CHECK:   [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
1683  ; CHECK:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
1684  ; CHECK:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
1685  ; CHECK:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14
1686  ; CHECK:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15
1687  ; CHECK:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16
1688  ; CHECK:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17
1689  ; CHECK:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18
1690  ; CHECK:   [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19
1691  ; CHECK:   [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20
1692  ; CHECK:   [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21
1693  ; CHECK:   [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22
1694  ; CHECK:   [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23
1695  ; CHECK:   [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24
1696  ; CHECK:   [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25
1697  ; CHECK:   [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26
1698  ; CHECK:   [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27
1699  ; CHECK:   [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28
1700  ; CHECK:   [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29
1701  ; CHECK:   [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30
1702  ; CHECK:   [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31
1703  ; CHECK:   [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.7
1704  ; CHECK:   [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load 4 from %fixed-stack.7, align 1, addrspace 5)
1705  ; CHECK:   [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.6
1706  ; CHECK:   [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load 4 from %fixed-stack.6, align 1, addrspace 5)
1707  ; CHECK:   [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.5
1708  ; CHECK:   [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load 4 from %fixed-stack.5, align 1, addrspace 5)
1709  ; CHECK:   [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.4
1710  ; CHECK:   [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load 4 from %fixed-stack.4, align 1, addrspace 5)
1711  ; CHECK:   [[FRAME_INDEX4:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.3
1712  ; CHECK:   [[LOAD4:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX4]](p5) :: (invariant load 4 from %fixed-stack.3, align 1, addrspace 5)
1713  ; CHECK:   [[FRAME_INDEX5:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2
1714  ; CHECK:   [[LOAD5:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX5]](p5) :: (invariant load 4 from %fixed-stack.2, align 1, addrspace 5)
1715  ; CHECK:   [[FRAME_INDEX6:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1
1716  ; CHECK:   [[LOAD6:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX6]](p5) :: (invariant load 4 from %fixed-stack.1, align 1, addrspace 5)
1717  ; CHECK:   [[FRAME_INDEX7:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0
1718  ; CHECK:   [[LOAD7:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX7]](p5) :: (invariant load 4 from %fixed-stack.0, align 1, addrspace 5)
1719  ; CHECK:   [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1720  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32)
1721  ; CHECK:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[LOAD]](s32), [[LOAD1]](s32), [[LOAD2]](s32), [[LOAD3]](s32)
1722  ; CHECK:   [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[LOAD4]](s32), [[LOAD5]](s32), [[LOAD6]](s32), [[LOAD7]](s32)
1723  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1724  ; CHECK:   [[DEF1:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1725  ; CHECK:   [[DEF2:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1726  ; CHECK:   G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store 128 into `<32 x i32> addrspace(1)* undef`, addrspace 1)
1727  ; CHECK:   G_STORE [[BUILD_VECTOR1]](<4 x s32>), [[DEF1]](p1) :: (volatile store 16 into `<4 x i32> addrspace(1)* undef`, addrspace 1)
1728  ; CHECK:   G_STORE [[BUILD_VECTOR2]](<4 x s32>), [[DEF2]](p1) :: (volatile store 16 into `<4 x float> addrspace(1)* undef`, addrspace 1)
1729  ; CHECK:   [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]]
1730  ; CHECK:   S_SETPC_B64_return [[COPY33]]
1731  store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef
1732  store volatile <4 x i32> %arg1, <4 x i32> addrspace(1)* undef
1733  store volatile <4 x float> %arg2, <4 x float> addrspace(1)* undef
1734  ret void
1735}
1736
1737define void @void_func_v32i32_v8i32_v8f32(<32 x i32> %arg0, <8 x i32> %arg1, <8 x float> %arg2) #0 {
1738  ; CHECK-LABEL: name: void_func_v32i32_v8i32_v8f32
1739  ; CHECK: bb.1 (%ir-block.0):
1740  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31
1741  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
1742  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
1743  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
1744  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
1745  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
1746  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
1747  ; CHECK:   [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
1748  ; CHECK:   [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
1749  ; CHECK:   [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
1750  ; CHECK:   [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
1751  ; CHECK:   [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
1752  ; CHECK:   [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
1753  ; CHECK:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
1754  ; CHECK:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
1755  ; CHECK:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14
1756  ; CHECK:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15
1757  ; CHECK:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16
1758  ; CHECK:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17
1759  ; CHECK:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18
1760  ; CHECK:   [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19
1761  ; CHECK:   [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20
1762  ; CHECK:   [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21
1763  ; CHECK:   [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22
1764  ; CHECK:   [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23
1765  ; CHECK:   [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24
1766  ; CHECK:   [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25
1767  ; CHECK:   [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26
1768  ; CHECK:   [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27
1769  ; CHECK:   [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28
1770  ; CHECK:   [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29
1771  ; CHECK:   [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30
1772  ; CHECK:   [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31
1773  ; CHECK:   [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.15
1774  ; CHECK:   [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load 4 from %fixed-stack.15, align 1, addrspace 5)
1775  ; CHECK:   [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.14
1776  ; CHECK:   [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load 4 from %fixed-stack.14, align 1, addrspace 5)
1777  ; CHECK:   [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.13
1778  ; CHECK:   [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load 4 from %fixed-stack.13, align 1, addrspace 5)
1779  ; CHECK:   [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.12
1780  ; CHECK:   [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load 4 from %fixed-stack.12, align 1, addrspace 5)
1781  ; CHECK:   [[FRAME_INDEX4:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.11
1782  ; CHECK:   [[LOAD4:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX4]](p5) :: (invariant load 4 from %fixed-stack.11, align 1, addrspace 5)
1783  ; CHECK:   [[FRAME_INDEX5:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.10
1784  ; CHECK:   [[LOAD5:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX5]](p5) :: (invariant load 4 from %fixed-stack.10, align 1, addrspace 5)
1785  ; CHECK:   [[FRAME_INDEX6:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.9
1786  ; CHECK:   [[LOAD6:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX6]](p5) :: (invariant load 4 from %fixed-stack.9, align 1, addrspace 5)
1787  ; CHECK:   [[FRAME_INDEX7:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.8
1788  ; CHECK:   [[LOAD7:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX7]](p5) :: (invariant load 4 from %fixed-stack.8, align 1, addrspace 5)
1789  ; CHECK:   [[FRAME_INDEX8:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.7
1790  ; CHECK:   [[LOAD8:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX8]](p5) :: (invariant load 4 from %fixed-stack.7, align 1, addrspace 5)
1791  ; CHECK:   [[FRAME_INDEX9:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.6
1792  ; CHECK:   [[LOAD9:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX9]](p5) :: (invariant load 4 from %fixed-stack.6, align 1, addrspace 5)
1793  ; CHECK:   [[FRAME_INDEX10:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.5
1794  ; CHECK:   [[LOAD10:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX10]](p5) :: (invariant load 4 from %fixed-stack.5, align 1, addrspace 5)
1795  ; CHECK:   [[FRAME_INDEX11:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.4
1796  ; CHECK:   [[LOAD11:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX11]](p5) :: (invariant load 4 from %fixed-stack.4, align 1, addrspace 5)
1797  ; CHECK:   [[FRAME_INDEX12:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.3
1798  ; CHECK:   [[LOAD12:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX12]](p5) :: (invariant load 4 from %fixed-stack.3, align 1, addrspace 5)
1799  ; CHECK:   [[FRAME_INDEX13:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2
1800  ; CHECK:   [[LOAD13:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX13]](p5) :: (invariant load 4 from %fixed-stack.2, align 1, addrspace 5)
1801  ; CHECK:   [[FRAME_INDEX14:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1
1802  ; CHECK:   [[LOAD14:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX14]](p5) :: (invariant load 4 from %fixed-stack.1, align 1, addrspace 5)
1803  ; CHECK:   [[FRAME_INDEX15:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0
1804  ; CHECK:   [[LOAD15:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX15]](p5) :: (invariant load 4 from %fixed-stack.0, align 1, addrspace 5)
1805  ; CHECK:   [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1806  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32)
1807  ; CHECK:   [[BUILD_VECTOR1:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[LOAD]](s32), [[LOAD1]](s32), [[LOAD2]](s32), [[LOAD3]](s32), [[LOAD4]](s32), [[LOAD5]](s32), [[LOAD6]](s32), [[LOAD7]](s32)
1808  ; CHECK:   [[BUILD_VECTOR2:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[LOAD8]](s32), [[LOAD9]](s32), [[LOAD10]](s32), [[LOAD11]](s32), [[LOAD12]](s32), [[LOAD13]](s32), [[LOAD14]](s32), [[LOAD15]](s32)
1809  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1810  ; CHECK:   [[DEF1:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1811  ; CHECK:   [[DEF2:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1812  ; CHECK:   G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store 128 into `<32 x i32> addrspace(1)* undef`, addrspace 1)
1813  ; CHECK:   G_STORE [[BUILD_VECTOR1]](<8 x s32>), [[DEF1]](p1) :: (volatile store 32 into `<8 x i32> addrspace(1)* undef`, addrspace 1)
1814  ; CHECK:   G_STORE [[BUILD_VECTOR2]](<8 x s32>), [[DEF2]](p1) :: (volatile store 32 into `<8 x float> addrspace(1)* undef`, addrspace 1)
1815  ; CHECK:   [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]]
1816  ; CHECK:   S_SETPC_B64_return [[COPY33]]
1817  store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef
1818  store volatile <8 x i32> %arg1, <8 x i32> addrspace(1)* undef
1819  store volatile <8 x float> %arg2, <8 x float> addrspace(1)* undef
1820  ret void
1821}
1822
1823define void @void_func_v32i32_v16i32_v16f32(<32 x i32> %arg0, <16 x i32> %arg1, <16 x float> %arg2) #0 {
1824  ; CHECK-LABEL: name: void_func_v32i32_v16i32_v16f32
1825  ; CHECK: bb.1 (%ir-block.0):
1826  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31
1827  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
1828  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
1829  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
1830  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
1831  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
1832  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
1833  ; CHECK:   [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
1834  ; CHECK:   [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
1835  ; CHECK:   [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
1836  ; CHECK:   [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
1837  ; CHECK:   [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
1838  ; CHECK:   [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
1839  ; CHECK:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
1840  ; CHECK:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
1841  ; CHECK:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14
1842  ; CHECK:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15
1843  ; CHECK:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16
1844  ; CHECK:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17
1845  ; CHECK:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18
1846  ; CHECK:   [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19
1847  ; CHECK:   [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20
1848  ; CHECK:   [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21
1849  ; CHECK:   [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22
1850  ; CHECK:   [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23
1851  ; CHECK:   [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24
1852  ; CHECK:   [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25
1853  ; CHECK:   [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26
1854  ; CHECK:   [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27
1855  ; CHECK:   [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28
1856  ; CHECK:   [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29
1857  ; CHECK:   [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30
1858  ; CHECK:   [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31
1859  ; CHECK:   [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.31
1860  ; CHECK:   [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load 4 from %fixed-stack.31, align 1, addrspace 5)
1861  ; CHECK:   [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.30
1862  ; CHECK:   [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load 4 from %fixed-stack.30, align 1, addrspace 5)
1863  ; CHECK:   [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.29
1864  ; CHECK:   [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load 4 from %fixed-stack.29, align 1, addrspace 5)
1865  ; CHECK:   [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.28
1866  ; CHECK:   [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load 4 from %fixed-stack.28, align 1, addrspace 5)
1867  ; CHECK:   [[FRAME_INDEX4:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.27
1868  ; CHECK:   [[LOAD4:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX4]](p5) :: (invariant load 4 from %fixed-stack.27, align 1, addrspace 5)
1869  ; CHECK:   [[FRAME_INDEX5:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.26
1870  ; CHECK:   [[LOAD5:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX5]](p5) :: (invariant load 4 from %fixed-stack.26, align 1, addrspace 5)
1871  ; CHECK:   [[FRAME_INDEX6:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.25
1872  ; CHECK:   [[LOAD6:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX6]](p5) :: (invariant load 4 from %fixed-stack.25, align 1, addrspace 5)
1873  ; CHECK:   [[FRAME_INDEX7:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.24
1874  ; CHECK:   [[LOAD7:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX7]](p5) :: (invariant load 4 from %fixed-stack.24, align 1, addrspace 5)
1875  ; CHECK:   [[FRAME_INDEX8:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.23
1876  ; CHECK:   [[LOAD8:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX8]](p5) :: (invariant load 4 from %fixed-stack.23, align 1, addrspace 5)
1877  ; CHECK:   [[FRAME_INDEX9:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.22
1878  ; CHECK:   [[LOAD9:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX9]](p5) :: (invariant load 4 from %fixed-stack.22, align 1, addrspace 5)
1879  ; CHECK:   [[FRAME_INDEX10:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.21
1880  ; CHECK:   [[LOAD10:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX10]](p5) :: (invariant load 4 from %fixed-stack.21, align 1, addrspace 5)
1881  ; CHECK:   [[FRAME_INDEX11:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.20
1882  ; CHECK:   [[LOAD11:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX11]](p5) :: (invariant load 4 from %fixed-stack.20, align 1, addrspace 5)
1883  ; CHECK:   [[FRAME_INDEX12:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.19
1884  ; CHECK:   [[LOAD12:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX12]](p5) :: (invariant load 4 from %fixed-stack.19, align 1, addrspace 5)
1885  ; CHECK:   [[FRAME_INDEX13:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.18
1886  ; CHECK:   [[LOAD13:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX13]](p5) :: (invariant load 4 from %fixed-stack.18, align 1, addrspace 5)
1887  ; CHECK:   [[FRAME_INDEX14:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.17
1888  ; CHECK:   [[LOAD14:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX14]](p5) :: (invariant load 4 from %fixed-stack.17, align 1, addrspace 5)
1889  ; CHECK:   [[FRAME_INDEX15:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.16
1890  ; CHECK:   [[LOAD15:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX15]](p5) :: (invariant load 4 from %fixed-stack.16, align 1, addrspace 5)
1891  ; CHECK:   [[FRAME_INDEX16:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.15
1892  ; CHECK:   [[LOAD16:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX16]](p5) :: (invariant load 4 from %fixed-stack.15, align 1, addrspace 5)
1893  ; CHECK:   [[FRAME_INDEX17:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.14
1894  ; CHECK:   [[LOAD17:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX17]](p5) :: (invariant load 4 from %fixed-stack.14, align 1, addrspace 5)
1895  ; CHECK:   [[FRAME_INDEX18:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.13
1896  ; CHECK:   [[LOAD18:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX18]](p5) :: (invariant load 4 from %fixed-stack.13, align 1, addrspace 5)
1897  ; CHECK:   [[FRAME_INDEX19:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.12
1898  ; CHECK:   [[LOAD19:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX19]](p5) :: (invariant load 4 from %fixed-stack.12, align 1, addrspace 5)
1899  ; CHECK:   [[FRAME_INDEX20:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.11
1900  ; CHECK:   [[LOAD20:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX20]](p5) :: (invariant load 4 from %fixed-stack.11, align 1, addrspace 5)
1901  ; CHECK:   [[FRAME_INDEX21:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.10
1902  ; CHECK:   [[LOAD21:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX21]](p5) :: (invariant load 4 from %fixed-stack.10, align 1, addrspace 5)
1903  ; CHECK:   [[FRAME_INDEX22:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.9
1904  ; CHECK:   [[LOAD22:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX22]](p5) :: (invariant load 4 from %fixed-stack.9, align 1, addrspace 5)
1905  ; CHECK:   [[FRAME_INDEX23:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.8
1906  ; CHECK:   [[LOAD23:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX23]](p5) :: (invariant load 4 from %fixed-stack.8, align 1, addrspace 5)
1907  ; CHECK:   [[FRAME_INDEX24:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.7
1908  ; CHECK:   [[LOAD24:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX24]](p5) :: (invariant load 4 from %fixed-stack.7, align 1, addrspace 5)
1909  ; CHECK:   [[FRAME_INDEX25:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.6
1910  ; CHECK:   [[LOAD25:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX25]](p5) :: (invariant load 4 from %fixed-stack.6, align 1, addrspace 5)
1911  ; CHECK:   [[FRAME_INDEX26:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.5
1912  ; CHECK:   [[LOAD26:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX26]](p5) :: (invariant load 4 from %fixed-stack.5, align 1, addrspace 5)
1913  ; CHECK:   [[FRAME_INDEX27:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.4
1914  ; CHECK:   [[LOAD27:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX27]](p5) :: (invariant load 4 from %fixed-stack.4, align 1, addrspace 5)
1915  ; CHECK:   [[FRAME_INDEX28:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.3
1916  ; CHECK:   [[LOAD28:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX28]](p5) :: (invariant load 4 from %fixed-stack.3, align 1, addrspace 5)
1917  ; CHECK:   [[FRAME_INDEX29:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2
1918  ; CHECK:   [[LOAD29:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX29]](p5) :: (invariant load 4 from %fixed-stack.2, align 1, addrspace 5)
1919  ; CHECK:   [[FRAME_INDEX30:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1
1920  ; CHECK:   [[LOAD30:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX30]](p5) :: (invariant load 4 from %fixed-stack.1, align 1, addrspace 5)
1921  ; CHECK:   [[FRAME_INDEX31:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0
1922  ; CHECK:   [[LOAD31:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX31]](p5) :: (invariant load 4 from %fixed-stack.0, align 1, addrspace 5)
1923  ; CHECK:   [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1924  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32)
1925  ; CHECK:   [[BUILD_VECTOR1:%[0-9]+]]:_(<16 x s32>) = G_BUILD_VECTOR [[LOAD]](s32), [[LOAD1]](s32), [[LOAD2]](s32), [[LOAD3]](s32), [[LOAD4]](s32), [[LOAD5]](s32), [[LOAD6]](s32), [[LOAD7]](s32), [[LOAD8]](s32), [[LOAD9]](s32), [[LOAD10]](s32), [[LOAD11]](s32), [[LOAD12]](s32), [[LOAD13]](s32), [[LOAD14]](s32), [[LOAD15]](s32)
1926  ; CHECK:   [[BUILD_VECTOR2:%[0-9]+]]:_(<16 x s32>) = G_BUILD_VECTOR [[LOAD16]](s32), [[LOAD17]](s32), [[LOAD18]](s32), [[LOAD19]](s32), [[LOAD20]](s32), [[LOAD21]](s32), [[LOAD22]](s32), [[LOAD23]](s32), [[LOAD24]](s32), [[LOAD25]](s32), [[LOAD26]](s32), [[LOAD27]](s32), [[LOAD28]](s32), [[LOAD29]](s32), [[LOAD30]](s32), [[LOAD31]](s32)
1927  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1928  ; CHECK:   [[DEF1:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1929  ; CHECK:   [[DEF2:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
1930  ; CHECK:   G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store 128 into `<32 x i32> addrspace(1)* undef`, addrspace 1)
1931  ; CHECK:   G_STORE [[BUILD_VECTOR1]](<16 x s32>), [[DEF1]](p1) :: (volatile store 64 into `<16 x i32> addrspace(1)* undef`, addrspace 1)
1932  ; CHECK:   G_STORE [[BUILD_VECTOR2]](<16 x s32>), [[DEF2]](p1) :: (volatile store 64 into `<16 x float> addrspace(1)* undef`, addrspace 1)
1933  ; CHECK:   [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]]
1934  ; CHECK:   S_SETPC_B64_return [[COPY33]]
1935  store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef
1936  store volatile <16 x i32> %arg1, <16 x i32> addrspace(1)* undef
1937  store volatile <16 x float> %arg2, <16 x float> addrspace(1)* undef
1938  ret void
1939}
1940
1941; Make sure v3 isn't a wasted register because of v3 types being promoted to v4
1942define void @void_func_v3f32_wasted_reg(<3 x float> %arg0, i32 %arg1) #0 {
1943  ; CHECK-LABEL: name: void_func_v3f32_wasted_reg
1944  ; CHECK: bb.1 (%ir-block.0):
1945  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31
1946  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
1947  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
1948  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
1949  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
1950  ; CHECK:   [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1951  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)
1952  ; CHECK:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
1953  ; CHECK:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
1954  ; CHECK:   [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 2
1955  ; CHECK:   [[DEF:%[0-9]+]]:_(p3) = G_IMPLICIT_DEF
1956  ; CHECK:   [[DEF1:%[0-9]+]]:_(p3) = G_IMPLICIT_DEF
1957  ; CHECK:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<3 x s32>), [[C]](s32)
1958  ; CHECK:   [[EVEC1:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<3 x s32>), [[C1]](s32)
1959  ; CHECK:   [[EVEC2:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<3 x s32>), [[C2]](s32)
1960  ; CHECK:   G_STORE [[EVEC]](s32), [[DEF]](p3) :: (volatile store 4 into `float addrspace(3)* undef`, addrspace 3)
1961  ; CHECK:   G_STORE [[EVEC1]](s32), [[DEF]](p3) :: (volatile store 4 into `float addrspace(3)* undef`, addrspace 3)
1962  ; CHECK:   G_STORE [[EVEC2]](s32), [[DEF]](p3) :: (volatile store 4 into `float addrspace(3)* undef`, addrspace 3)
1963  ; CHECK:   G_STORE [[COPY3]](s32), [[DEF1]](p3) :: (volatile store 4 into `i32 addrspace(3)* undef`, addrspace 3)
1964  ; CHECK:   [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]]
1965  ; CHECK:   S_SETPC_B64_return [[COPY5]]
1966  %arg0.0 = extractelement <3 x float> %arg0, i32 0
1967  %arg0.1 = extractelement <3 x float> %arg0, i32 1
1968  %arg0.2 = extractelement <3 x float> %arg0, i32 2
1969  store volatile float %arg0.0, float addrspace(3)* undef
1970  store volatile float %arg0.1, float addrspace(3)* undef
1971  store volatile float %arg0.2, float addrspace(3)* undef
1972  store volatile i32 %arg1, i32 addrspace(3)* undef
1973  ret void
1974}
1975
1976define void @void_func_v3i32_wasted_reg(<3 x i32> %arg0, i32 %arg1) #0 {
1977  ; CHECK-LABEL: name: void_func_v3i32_wasted_reg
1978  ; CHECK: bb.1 (%ir-block.0):
1979  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31
1980  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
1981  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
1982  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
1983  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
1984  ; CHECK:   [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1985  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)
1986  ; CHECK:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
1987  ; CHECK:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
1988  ; CHECK:   [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 2
1989  ; CHECK:   [[DEF:%[0-9]+]]:_(p3) = G_IMPLICIT_DEF
1990  ; CHECK:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<3 x s32>), [[C]](s32)
1991  ; CHECK:   [[EVEC1:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<3 x s32>), [[C1]](s32)
1992  ; CHECK:   [[EVEC2:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<3 x s32>), [[C2]](s32)
1993  ; CHECK:   G_STORE [[EVEC]](s32), [[DEF]](p3) :: (volatile store 4 into `i32 addrspace(3)* undef`, addrspace 3)
1994  ; CHECK:   G_STORE [[EVEC1]](s32), [[DEF]](p3) :: (volatile store 4 into `i32 addrspace(3)* undef`, addrspace 3)
1995  ; CHECK:   G_STORE [[EVEC2]](s32), [[DEF]](p3) :: (volatile store 4 into `i32 addrspace(3)* undef`, addrspace 3)
1996  ; CHECK:   G_STORE [[COPY3]](s32), [[DEF]](p3) :: (volatile store 4 into `i32 addrspace(3)* undef`, addrspace 3)
1997  ; CHECK:   [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]]
1998  ; CHECK:   S_SETPC_B64_return [[COPY5]]
1999  %arg0.0 = extractelement <3 x i32> %arg0, i32 0
2000  %arg0.1 = extractelement <3 x i32> %arg0, i32 1
2001  %arg0.2 = extractelement <3 x i32> %arg0, i32 2
2002  store volatile i32 %arg0.0, i32 addrspace(3)* undef
2003  store volatile i32 %arg0.1, i32 addrspace(3)* undef
2004  store volatile i32 %arg0.2, i32 addrspace(3)* undef
2005  store volatile i32 %arg1, i32 addrspace(3)* undef
2006  ret void
2007}
2008
2009; Check there is no crash.
2010define void @void_func_v16i8(<16 x i8> %arg0) #0 {
2011  ; CHECK-LABEL: name: void_func_v16i8
2012  ; CHECK: bb.1 (%ir-block.0):
2013  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $sgpr30_sgpr31
2014  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
2015  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
2016  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
2017  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
2018  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
2019  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
2020  ; CHECK:   [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
2021  ; CHECK:   [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
2022  ; CHECK:   [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
2023  ; CHECK:   [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
2024  ; CHECK:   [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
2025  ; CHECK:   [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
2026  ; CHECK:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
2027  ; CHECK:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
2028  ; CHECK:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14
2029  ; CHECK:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15
2030  ; CHECK:   [[COPY16:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
2031  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<16 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32)
2032  ; CHECK:   [[TRUNC:%[0-9]+]]:_(<16 x s8>) = G_TRUNC [[BUILD_VECTOR]](<16 x s32>)
2033  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
2034  ; CHECK:   G_STORE [[TRUNC]](<16 x s8>), [[DEF]](p1) :: (volatile store 16 into `<16 x i8> addrspace(1)* undef`, addrspace 1)
2035  ; CHECK:   [[COPY17:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY16]]
2036  ; CHECK:   S_SETPC_B64_return [[COPY17]]
2037  store volatile <16 x i8> %arg0, <16 x i8> addrspace(1)* undef
2038  ret void
2039}
2040
2041; Check there is no crash.
2042define void @void_func_v32i32_v16i8(<32 x i32> %arg0, <16 x i8> %arg1) #0 {
2043  ; CHECK-LABEL: name: void_func_v32i32_v16i8
2044  ; CHECK: bb.1 (%ir-block.0):
2045  ; CHECK:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31
2046  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
2047  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
2048  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
2049  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
2050  ; CHECK:   [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
2051  ; CHECK:   [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
2052  ; CHECK:   [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
2053  ; CHECK:   [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
2054  ; CHECK:   [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
2055  ; CHECK:   [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
2056  ; CHECK:   [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
2057  ; CHECK:   [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
2058  ; CHECK:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
2059  ; CHECK:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
2060  ; CHECK:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14
2061  ; CHECK:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15
2062  ; CHECK:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16
2063  ; CHECK:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17
2064  ; CHECK:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18
2065  ; CHECK:   [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19
2066  ; CHECK:   [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20
2067  ; CHECK:   [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21
2068  ; CHECK:   [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22
2069  ; CHECK:   [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23
2070  ; CHECK:   [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24
2071  ; CHECK:   [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25
2072  ; CHECK:   [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26
2073  ; CHECK:   [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27
2074  ; CHECK:   [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28
2075  ; CHECK:   [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29
2076  ; CHECK:   [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30
2077  ; CHECK:   [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31
2078  ; CHECK:   [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.15
2079  ; CHECK:   [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load 4 from %fixed-stack.15, align 1, addrspace 5)
2080  ; CHECK:   [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.14
2081  ; CHECK:   [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load 4 from %fixed-stack.14, align 1, addrspace 5)
2082  ; CHECK:   [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.13
2083  ; CHECK:   [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load 4 from %fixed-stack.13, align 1, addrspace 5)
2084  ; CHECK:   [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.12
2085  ; CHECK:   [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load 4 from %fixed-stack.12, align 1, addrspace 5)
2086  ; CHECK:   [[FRAME_INDEX4:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.11
2087  ; CHECK:   [[LOAD4:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX4]](p5) :: (invariant load 4 from %fixed-stack.11, align 1, addrspace 5)
2088  ; CHECK:   [[FRAME_INDEX5:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.10
2089  ; CHECK:   [[LOAD5:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX5]](p5) :: (invariant load 4 from %fixed-stack.10, align 1, addrspace 5)
2090  ; CHECK:   [[FRAME_INDEX6:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.9
2091  ; CHECK:   [[LOAD6:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX6]](p5) :: (invariant load 4 from %fixed-stack.9, align 1, addrspace 5)
2092  ; CHECK:   [[FRAME_INDEX7:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.8
2093  ; CHECK:   [[LOAD7:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX7]](p5) :: (invariant load 4 from %fixed-stack.8, align 1, addrspace 5)
2094  ; CHECK:   [[FRAME_INDEX8:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.7
2095  ; CHECK:   [[LOAD8:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX8]](p5) :: (invariant load 4 from %fixed-stack.7, align 1, addrspace 5)
2096  ; CHECK:   [[FRAME_INDEX9:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.6
2097  ; CHECK:   [[LOAD9:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX9]](p5) :: (invariant load 4 from %fixed-stack.6, align 1, addrspace 5)
2098  ; CHECK:   [[FRAME_INDEX10:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.5
2099  ; CHECK:   [[LOAD10:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX10]](p5) :: (invariant load 4 from %fixed-stack.5, align 1, addrspace 5)
2100  ; CHECK:   [[FRAME_INDEX11:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.4
2101  ; CHECK:   [[LOAD11:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX11]](p5) :: (invariant load 4 from %fixed-stack.4, align 1, addrspace 5)
2102  ; CHECK:   [[FRAME_INDEX12:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.3
2103  ; CHECK:   [[LOAD12:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX12]](p5) :: (invariant load 4 from %fixed-stack.3, align 1, addrspace 5)
2104  ; CHECK:   [[FRAME_INDEX13:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2
2105  ; CHECK:   [[LOAD13:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX13]](p5) :: (invariant load 4 from %fixed-stack.2, align 1, addrspace 5)
2106  ; CHECK:   [[FRAME_INDEX14:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1
2107  ; CHECK:   [[LOAD14:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX14]](p5) :: (invariant load 4 from %fixed-stack.1, align 1, addrspace 5)
2108  ; CHECK:   [[FRAME_INDEX15:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0
2109  ; CHECK:   [[LOAD15:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX15]](p5) :: (invariant load 4 from %fixed-stack.0, align 1, addrspace 5)
2110  ; CHECK:   [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
2111  ; CHECK:   [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32)
2112  ; CHECK:   [[BUILD_VECTOR1:%[0-9]+]]:_(<16 x s32>) = G_BUILD_VECTOR [[LOAD]](s32), [[LOAD1]](s32), [[LOAD2]](s32), [[LOAD3]](s32), [[LOAD4]](s32), [[LOAD5]](s32), [[LOAD6]](s32), [[LOAD7]](s32), [[LOAD8]](s32), [[LOAD9]](s32), [[LOAD10]](s32), [[LOAD11]](s32), [[LOAD12]](s32), [[LOAD13]](s32), [[LOAD14]](s32), [[LOAD15]](s32)
2113  ; CHECK:   [[TRUNC:%[0-9]+]]:_(<16 x s8>) = G_TRUNC [[BUILD_VECTOR1]](<16 x s32>)
2114  ; CHECK:   [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
2115  ; CHECK:   [[DEF1:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
2116  ; CHECK:   G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store 128 into `<32 x i32> addrspace(1)* undef`, addrspace 1)
2117  ; CHECK:   G_STORE [[TRUNC]](<16 x s8>), [[DEF1]](p1) :: (volatile store 16 into `<16 x i8> addrspace(1)* undef`, addrspace 1)
2118  ; CHECK:   [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]]
2119  ; CHECK:   S_SETPC_B64_return [[COPY33]]
2120  store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef
2121  store volatile <16 x i8> %arg1, <16 x i8> addrspace(1)* undef
2122  ret void
2123}
2124
2125attributes #0 = { nounwind }
2126