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