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