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