1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=aarch64 -run-pass=legalizer %s -o - | FileCheck %s
4 name: test_scalar_add_big
7 ; CHECK-LABEL: name: test_scalar_add_big
8 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
9 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
10 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x2
11 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $x3
12 ; CHECK-NEXT: [[UADDO:%[0-9]+]]:_(s64), [[UADDO1:%[0-9]+]]:_(s32) = G_UADDO [[COPY]], [[COPY2]]
13 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
14 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[UADDO1]], [[C]]
15 ; CHECK-NEXT: [[UADDE:%[0-9]+]]:_(s64), [[UADDE1:%[0-9]+]]:_(s32) = G_UADDE [[COPY1]], [[COPY3]], [[AND]]
16 ; CHECK-NEXT: $x0 = COPY [[UADDO]](s64)
17 ; CHECK-NEXT: $x1 = COPY [[UADDE]](s64)
22 %4:_(s128) = G_MERGE_VALUES %0(s64), %1(s64)
23 %5:_(s128) = G_MERGE_VALUES %2(s64), %3(s64)
24 %6:_(s128) = G_ADD %4, %5
25 %7:_(s64), %8:_(s64) = G_UNMERGE_VALUES %6(s128)
31 name: test_scalar_add_big_nonpow2
34 ; CHECK-LABEL: name: test_scalar_add_big_nonpow2
35 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
36 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
37 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x2
38 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $x3
39 ; CHECK-NEXT: [[UADDO:%[0-9]+]]:_(s64), [[UADDO1:%[0-9]+]]:_(s32) = G_UADDO [[COPY]], [[COPY1]]
40 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
41 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[UADDO1]], [[C]]
42 ; CHECK-NEXT: [[UADDE:%[0-9]+]]:_(s64), [[UADDE1:%[0-9]+]]:_(s32) = G_UADDE [[COPY1]], [[COPY2]], [[AND]]
43 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[UADDE1]], [[C]]
44 ; CHECK-NEXT: [[UADDE2:%[0-9]+]]:_(s64), [[UADDE3:%[0-9]+]]:_(s32) = G_UADDE [[COPY2]], [[COPY3]], [[AND1]]
45 ; CHECK-NEXT: $x0 = COPY [[UADDO]](s64)
46 ; CHECK-NEXT: $x1 = COPY [[UADDE]](s64)
47 ; CHECK-NEXT: $x2 = COPY [[UADDE2]](s64)
52 %4:_(s192) = G_MERGE_VALUES %0(s64), %1(s64), %2(s64)
53 %5:_(s192) = G_MERGE_VALUES %1(s64), %2(s64), %3(s64)
54 %6:_(s192) = G_ADD %4, %5
55 %7:_(s64), %8:_(s64), %9:_(s64) = G_UNMERGE_VALUES %6(s192)
62 name: test_scalar_add_small
65 ; CHECK-LABEL: name: test_scalar_add_small
66 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
67 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
68 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)
69 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)
70 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[TRUNC]], [[TRUNC1]]
71 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[ADD]](s32)
72 ; CHECK-NEXT: $x0 = COPY [[ANYEXT]](s64)
75 %2:_(s8) = G_TRUNC %0(s64)
76 %3:_(s8) = G_TRUNC %1(s64)
77 %4:_(s8) = G_ADD %2, %3
78 %5:_(s64) = G_ANYEXT %4(s8)
83 name: test_scalar_add_narrowing
86 ; CHECK-LABEL: name: test_scalar_add_narrowing
87 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
88 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
89 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x2
90 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $x3
91 ; CHECK-NEXT: [[UADDO:%[0-9]+]]:_(s64), [[UADDO1:%[0-9]+]]:_(s32) = G_UADDO [[COPY]], [[COPY2]]
92 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
93 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[UADDO1]], [[C]]
94 ; CHECK-NEXT: [[UADDE:%[0-9]+]]:_(s64), [[UADDE1:%[0-9]+]]:_(s32) = G_UADDE [[COPY1]], [[COPY3]], [[AND]]
95 ; CHECK-NEXT: $x0 = COPY [[UADDO]](s64)
96 ; CHECK-NEXT: $x1 = COPY [[UADDE]](s64)
101 %4:_(s128) = G_MERGE_VALUES %0(s64), %1(s64)
102 %5:_(s128) = G_MERGE_VALUES %2(s64), %3(s64)
103 %6:_(s96) = G_TRUNC %4(s128)
104 %7:_(s96) = G_TRUNC %5(s128)
105 %8:_(s96) = G_ADD %6, %7
106 %9:_(s128) = G_ANYEXT %8(s96)
107 %10:_(s64), %11:_(s64) = G_UNMERGE_VALUES %9(s128)
113 name: test_scalar_add_narrowing_s65
116 ; CHECK-LABEL: name: test_scalar_add_narrowing_s65
117 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
118 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
119 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x2
120 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $x3
121 ; CHECK-NEXT: [[UADDO:%[0-9]+]]:_(s64), [[UADDO1:%[0-9]+]]:_(s32) = G_UADDO [[COPY]], [[COPY2]]
122 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
123 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[UADDO1]], [[C]]
124 ; CHECK-NEXT: [[UADDE:%[0-9]+]]:_(s64), [[UADDE1:%[0-9]+]]:_(s32) = G_UADDE [[COPY1]], [[COPY3]], [[AND]]
125 ; CHECK-NEXT: $x0 = COPY [[UADDO]](s64)
126 ; CHECK-NEXT: $x1 = COPY [[UADDE]](s64)
131 %4:_(s128) = G_MERGE_VALUES %0(s64), %1(s64)
132 %5:_(s128) = G_MERGE_VALUES %2(s64), %3(s64)
133 %6:_(s65) = G_TRUNC %4(s128)
134 %7:_(s65) = G_TRUNC %5(s128)
135 %8:_(s65) = G_ADD %6, %7
136 %9:_(s128) = G_ANYEXT %8(s65)
137 %10:_(s64), %11:_(s64) = G_UNMERGE_VALUES %9(s128)
143 name: test_vector_add
146 ; CHECK-LABEL: name: test_vector_add
147 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q0
148 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $q1
149 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s64>) = COPY $q2
150 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s64>) = COPY $q3
151 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(<2 x s64>) = G_ADD [[COPY]], [[COPY2]]
152 ; CHECK-NEXT: [[ADD1:%[0-9]+]]:_(<2 x s64>) = G_ADD [[COPY1]], [[COPY3]]
153 ; CHECK-NEXT: $q0 = COPY [[ADD]](<2 x s64>)
154 ; CHECK-NEXT: $q1 = COPY [[ADD1]](<2 x s64>)
155 %0:_(<2 x s64>) = COPY $q0
156 %1:_(<2 x s64>) = COPY $q1
157 %2:_(<2 x s64>) = COPY $q2
158 %3:_(<2 x s64>) = COPY $q3
159 %4:_(<4 x s64>) = G_CONCAT_VECTORS %0, %1
160 %5:_(<4 x s64>) = G_CONCAT_VECTORS %2, %3
161 %6:_(<4 x s64>) = G_ADD %4, %5
162 %7:_(<2 x s64>), %8:_(<2 x s64>) = G_UNMERGE_VALUES %6(<4 x s64>)
163 $q0 = COPY %7(<2 x s64>)
164 $q1 = COPY %8(<2 x s64>)
168 name: test_vector_add_v16s16
171 ; CHECK-LABEL: name: test_vector_add_v16s16
172 ; CHECK: [[COPY:%[0-9]+]]:_(<8 x s16>) = COPY $q0
173 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<8 x s16>) = COPY $q1
174 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(<8 x s16>) = G_ADD [[COPY]], [[COPY]]
175 ; CHECK-NEXT: [[ADD1:%[0-9]+]]:_(<8 x s16>) = G_ADD [[COPY1]], [[COPY1]]
176 ; CHECK-NEXT: $q0 = COPY [[ADD]](<8 x s16>)
177 ; CHECK-NEXT: $q1 = COPY [[ADD1]](<8 x s16>)
178 %1:_(<8 x s16>) = COPY $q0
179 %2:_(<8 x s16>) = COPY $q1
180 %0:_(<16 x s16>) = G_CONCAT_VECTORS %1(<8 x s16>), %2(<8 x s16>)
181 %3:_(<16 x s16>) = G_ADD %0, %0
182 %4:_(<8 x s16>), %5:_(<8 x s16>) = G_UNMERGE_VALUES %3(<16 x s16>)
183 $q0 = COPY %4(<8 x s16>)
184 $q1 = COPY %5(<8 x s16>)
188 name: test_vector_add_v32s8
191 ; CHECK-LABEL: name: test_vector_add_v32s8
192 ; CHECK: [[COPY:%[0-9]+]]:_(<16 x s8>) = COPY $q0
193 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<16 x s8>) = COPY $q1
194 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(<16 x s8>) = G_ADD [[COPY]], [[COPY]]
195 ; CHECK-NEXT: [[ADD1:%[0-9]+]]:_(<16 x s8>) = G_ADD [[COPY1]], [[COPY1]]
196 ; CHECK-NEXT: $q0 = COPY [[ADD]](<16 x s8>)
197 ; CHECK-NEXT: $q1 = COPY [[ADD1]](<16 x s8>)
198 %0:_(<16 x s8>) = COPY $q0
199 %1:_(<16 x s8>) = COPY $q1
200 %2:_(<32 x s8>) = G_CONCAT_VECTORS %0, %1
201 %3:_(<32 x s8>) = G_ADD %2, %2
202 %7:_(<16 x s8>), %8:_(<16 x s8>) = G_UNMERGE_VALUES %3(<32 x s8>)
203 $q0 = COPY %7(<16 x s8>)
204 $q1 = COPY %8(<16 x s8>)
208 name: test_vector_add_nonpow2
211 ; CHECK-LABEL: name: test_vector_add_nonpow2
212 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q0
213 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $q1
214 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s64>) = COPY $q2
215 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s64>) = COPY $q3
216 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(<2 x s64>) = G_ADD [[COPY]], [[COPY1]]
217 ; CHECK-NEXT: [[ADD1:%[0-9]+]]:_(<2 x s64>) = G_ADD [[COPY1]], [[COPY2]]
218 ; CHECK-NEXT: [[ADD2:%[0-9]+]]:_(<2 x s64>) = G_ADD [[COPY2]], [[COPY3]]
219 ; CHECK-NEXT: $q0 = COPY [[ADD]](<2 x s64>)
220 ; CHECK-NEXT: $q1 = COPY [[ADD1]](<2 x s64>)
221 ; CHECK-NEXT: $q2 = COPY [[ADD2]](<2 x s64>)
222 %0:_(<2 x s64>) = COPY $q0
223 %1:_(<2 x s64>) = COPY $q1
224 %2:_(<2 x s64>) = COPY $q2
225 %3:_(<2 x s64>) = COPY $q3
226 %4:_(<6 x s64>) = G_CONCAT_VECTORS %0(<2 x s64>), %1(<2 x s64>), %2(<2 x s64>)
227 %5:_(<6 x s64>) = G_CONCAT_VECTORS %1(<2 x s64>), %2(<2 x s64>), %3(<2 x s64>)
228 %6:_(<6 x s64>) = G_ADD %4, %5
229 %7:_(<2 x s64>), %8:_(<2 x s64>), %9:_(<2 x s64>) = G_UNMERGE_VALUES %6(<6 x s64>)
230 $q0 = COPY %7(<2 x s64>)
231 $q1 = COPY %8(<2 x s64>)
232 $q2 = COPY %9(<2 x s64>)
237 tracksRegLiveness: true
238 machineFunctionInfo: {}
243 ; CHECK-LABEL: name: add_v8i16
244 ; CHECK: liveins: $q0, $q1
246 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<8 x s16>) = COPY $q0
247 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<8 x s16>) = COPY $q1
248 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(<8 x s16>) = G_ADD [[COPY]], [[COPY1]]
249 ; CHECK-NEXT: $q0 = COPY [[ADD]](<8 x s16>)
250 ; CHECK-NEXT: RET_ReallyLR implicit $q0
251 %0:_(<8 x s16>) = COPY $q0
252 %1:_(<8 x s16>) = COPY $q1
253 %2:_(<8 x s16>) = G_ADD %0, %1
254 $q0 = COPY %2(<8 x s16>)
255 RET_ReallyLR implicit $q0
261 tracksRegLiveness: true
262 machineFunctionInfo: {}
267 ; CHECK-LABEL: name: add_v16i8
268 ; CHECK: liveins: $q0, $q1
270 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<16 x s8>) = COPY $q0
271 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<16 x s8>) = COPY $q1
272 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(<16 x s8>) = G_ADD [[COPY]], [[COPY1]]
273 ; CHECK-NEXT: $q0 = COPY [[ADD]](<16 x s8>)
274 ; CHECK-NEXT: RET_ReallyLR implicit $q0
275 %0:_(<16 x s8>) = COPY $q0
276 %1:_(<16 x s8>) = COPY $q1
277 %2:_(<16 x s8>) = G_ADD %0, %1
278 $q0 = COPY %2(<16 x s8>)
279 RET_ReallyLR implicit $q0
285 tracksRegLiveness: true
286 machineFunctionInfo: {}
291 ; CHECK-LABEL: name: add_v4i16
292 ; CHECK: liveins: $d0, $d1
294 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $d0
295 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s16>) = COPY $d1
296 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(<4 x s16>) = G_ADD [[COPY]], [[COPY1]]
297 ; CHECK-NEXT: $d0 = COPY [[ADD]](<4 x s16>)
298 ; CHECK-NEXT: RET_ReallyLR implicit $d0
299 %0:_(<4 x s16>) = COPY $d0
300 %1:_(<4 x s16>) = COPY $d1
301 %2:_(<4 x s16>) = G_ADD %0, %1
302 $d0 = COPY %2(<4 x s16>)
303 RET_ReallyLR implicit $d0
307 tracksRegLiveness: true
312 ; CHECK-LABEL: name: add_v8s8
313 ; CHECK: liveins: $d0, $d1
315 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<8 x s8>) = COPY $d0
316 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<8 x s8>) = COPY $d1
317 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(<8 x s8>) = G_ADD [[COPY]], [[COPY1]]
318 ; CHECK-NEXT: $d0 = COPY [[ADD]](<8 x s8>)
319 ; CHECK-NEXT: RET_ReallyLR implicit $d0
320 %0:_(<8 x s8>) = COPY $d0
321 %1:_(<8 x s8>) = COPY $d1
322 %2:_(<8 x s8>) = G_ADD %0, %1
323 $d0 = COPY %2(<8 x s8>)
324 RET_ReallyLR implicit $d0
329 tracksRegLiveness: true
332 liveins: $d0, $d1, $d2, $d3
334 ; CHECK-LABEL: name: add_v2s1
335 ; CHECK: liveins: $d0, $d1, $d2, $d3
337 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $d0
338 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $d1
339 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s32>) = COPY $d2
340 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s32>) = COPY $d3
341 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<2 x s32>) = G_ICMP intpred(eq), [[COPY]](<2 x s32>), [[COPY1]]
342 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(<2 x s32>) = G_ICMP intpred(eq), [[COPY2]](<2 x s32>), [[COPY3]]
343 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(<2 x s32>) = G_ADD [[ICMP]], [[ICMP1]]
344 ; CHECK-NEXT: $d0 = COPY [[ADD]](<2 x s32>)
345 ; CHECK-NEXT: RET_ReallyLR implicit $d0
346 %0:_(<2 x s32>) = COPY $d0
347 %1:_(<2 x s32>) = COPY $d1
348 %2:_(<2 x s32>) = COPY $d2
349 %3:_(<2 x s32>) = COPY $d3
350 %4:_(<2 x s1>) = G_ICMP intpred(eq), %0(<2 x s32>), %1
351 %5:_(<2 x s1>) = G_ICMP intpred(eq), %2(<2 x s32>), %3
352 %6:_(<2 x s1>) = G_ADD %4, %5
353 %7:_(<2 x s32>) = G_ANYEXT %6
354 $d0 = COPY %7:_(<2 x s32>)
355 RET_ReallyLR implicit $d0
359 tracksRegLiveness: true
362 liveins: $b0, $b1, $b2
364 ; CHECK-LABEL: name: add_v3s1
365 ; CHECK: liveins: $b0, $b1, $b2
367 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $b0
368 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s8) = COPY $b1
369 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s8) = COPY $b2
370 ; CHECK-NEXT: [[ANYEXT0:%[0-9]+]]:_(s16) = G_ANYEXT [[COPY]](s8)
371 ; CHECK-NEXT: [[ANYEXT1:%[0-9]+]]:_(s16) = G_ANYEXT [[COPY1]](s8)
372 ; CHECK-NEXT: [[ANYEXT2:%[0-9]+]]:_(s16) = G_ANYEXT [[COPY2]](s8)
373 ; CHECK-NEXT: [[IMPLICIT_DEF:%[0-9]+]]:_(s16) = G_IMPLICIT_DEF
374 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s16>) = G_BUILD_VECTOR [[ANYEXT0]](s16), [[ANYEXT1]](s16), [[ANYEXT2]](s16), [[IMPLICIT_DEF]](s16)
375 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(<4 x s16>) = G_ADD [[BUILD_VECTOR]], [[BUILD_VECTOR]]
376 ; CHECK-NEXT: [[VAL0:%[0-9]+]]:_(s16), [[VAL1:%[0-9]+]]:_(s16), [[VAL2:%[0-9]+]]:_(s16), [[VAL3:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[ADD]](<4 x s16>)
377 ; CHECK-NEXT: [[TRUNC3:%[0-9]+]]:_(s8) = G_TRUNC [[VAL0]](s16)
378 ; CHECK-NEXT: $b0 = COPY [[TRUNC3]](s8)
379 ; CHECK-NEXT: RET_ReallyLR implicit $b0
383 %4:_(<3 x s8>) = G_BUILD_VECTOR %1(s8), %2(s8), %3(s8)
384 %0:_(<3 x s1>) = G_TRUNC %4(<3 x s8>)
385 %5:_(<3 x s1>) = G_ADD %0, %0
386 %7:_(<3 x s8>) = G_ANYEXT %5(<3 x s1>)
387 %8:_(s8), %9:_(s8), %10:_(s8) = G_UNMERGE_VALUES %7(<3 x s8>)
389 RET_ReallyLR implicit $b0
393 tracksRegLiveness: true
396 liveins: $d0, $d1, $d2, $d3
398 ; CHECK-LABEL: name: add_v4s1
399 ; CHECK: liveins: $d0, $d1, $d2, $d3
401 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $d0
402 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s16>) = COPY $d1
403 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(<4 x s16>) = COPY $d2
404 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(<4 x s16>) = COPY $d3
405 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<4 x s16>) = G_ICMP intpred(eq), [[COPY]](<4 x s16>), [[COPY1]]
406 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(<4 x s16>) = G_ICMP intpred(eq), [[COPY2]](<4 x s16>), [[COPY3]]
407 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(<4 x s16>) = G_ADD [[ICMP]], [[ICMP1]]
408 ; CHECK-NEXT: $d0 = COPY [[ADD]](<4 x s16>)
409 ; CHECK-NEXT: RET_ReallyLR implicit $d0
410 %0:_(<4 x s16>) = COPY $d0
411 %1:_(<4 x s16>) = COPY $d1
412 %2:_(<4 x s16>) = COPY $d2
413 %3:_(<4 x s16>) = COPY $d3
414 %4:_(<4 x s1>) = G_ICMP intpred(eq), %0(<4 x s16>), %1
415 %5:_(<4 x s1>) = G_ICMP intpred(eq), %2(<4 x s16>), %3
416 %6:_(<4 x s1>) = G_ADD %4, %5
417 %7:_(<4 x s16>) = G_ANYEXT %6
418 $d0 = COPY %7:_(<4 x s16>)
419 RET_ReallyLR implicit $d0
423 tracksRegLiveness: true
426 liveins: $d0, $d1, $d2, $d3
428 ; CHECK-LABEL: name: add_v8s1
429 ; CHECK: liveins: $d0, $d1, $d2, $d3
431 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<8 x s8>) = COPY $d0
432 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<8 x s8>) = COPY $d1
433 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(<8 x s8>) = COPY $d2
434 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(<8 x s8>) = COPY $d3
435 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<8 x s8>) = G_ICMP intpred(eq), [[COPY]](<8 x s8>), [[COPY1]]
436 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(<8 x s8>) = G_ICMP intpred(eq), [[COPY2]](<8 x s8>), [[COPY3]]
437 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(<8 x s8>) = G_ADD [[ICMP]], [[ICMP1]]
438 ; CHECK-NEXT: $d0 = COPY [[ADD]](<8 x s8>)
439 ; CHECK-NEXT: RET_ReallyLR implicit $d0
440 %0:_(<8 x s8>) = COPY $d0
441 %1:_(<8 x s8>) = COPY $d1
442 %2:_(<8 x s8>) = COPY $d2
443 %3:_(<8 x s8>) = COPY $d3
444 %4:_(<8 x s1>) = G_ICMP intpred(eq), %0(<8 x s8>), %1
445 %5:_(<8 x s1>) = G_ICMP intpred(eq), %2(<8 x s8>), %3
446 %6:_(<8 x s1>) = G_ADD %4, %5
447 %7:_(<8 x s8>) = G_ANYEXT %6
448 $d0 = COPY %7:_(<8 x s8>)
449 RET_ReallyLR implicit $d0
453 tracksRegLiveness: true
456 liveins: $q0, $q1, $q2, $q3
458 ; CHECK-LABEL: name: add_v16s1
459 ; CHECK: liveins: $q0, $q1, $q2, $q3
461 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<16 x s8>) = COPY $q0
462 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<16 x s8>) = COPY $q1
463 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(<16 x s8>) = COPY $q2
464 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(<16 x s8>) = COPY $q3
465 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<16 x s8>) = G_ICMP intpred(eq), [[COPY]](<16 x s8>), [[COPY1]]
466 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(<16 x s8>) = G_ICMP intpred(eq), [[COPY2]](<16 x s8>), [[COPY3]]
467 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(<16 x s8>) = G_ADD [[ICMP]], [[ICMP1]]
468 ; CHECK-NEXT: $q0 = COPY [[ADD]](<16 x s8>)
469 ; CHECK-NEXT: RET_ReallyLR implicit $q0
470 %0:_(<16 x s8>) = COPY $q0
471 %1:_(<16 x s8>) = COPY $q1
472 %2:_(<16 x s8>) = COPY $q2
473 %3:_(<16 x s8>) = COPY $q3
474 %4:_(<16 x s1>) = G_ICMP intpred(eq), %0(<16 x s8>), %1
475 %5:_(<16 x s1>) = G_ICMP intpred(eq), %2(<16 x s8>), %3
476 %6:_(<16 x s1>) = G_ADD %4, %5
477 %7:_(<16 x s8>) = G_ANYEXT %6
478 $q0 = COPY %7:_(<16 x s8>)
479 RET_ReallyLR implicit $q0