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