1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=riscv64 -run-pass=legalizer %s -o - \
6 define i1 @phi_i1(i1 %cnd, i1 %a, i1 %b) {
8 br i1 %cnd, label %cond.end, label %cond.false
10 cond.false: ; preds = %entry
13 cond.end: ; preds = %entry, %cond.false
14 %cond = phi i1 [ %b, %cond.false ], [ %a, %entry ]
18 define i8 @phi_i8(i1 %cnd, i8 %a, i8 %b) {
20 br i1 %cnd, label %cond.end, label %cond.false
22 cond.false: ; preds = %entry
25 cond.end: ; preds = %entry, %cond.false
26 %cond = phi i8 [ %b, %cond.false ], [ %a, %entry ]
30 define i16 @phi_i16(i1 %cnd, i16 %a, i16 %b) {
32 br i1 %cnd, label %cond.end, label %cond.false
34 cond.false: ; preds = %entry
37 cond.end: ; preds = %entry, %cond.false
38 %cond = phi i16 [ %b, %cond.false ], [ %a, %entry ]
42 define i32 @phi_i32(i1 %cnd, i32 %a, i32 %b) {
44 br i1 %cnd, label %cond.end, label %cond.false
46 cond.false: ; preds = %entry
49 cond.end: ; preds = %entry, %cond.false
50 %cond = phi i32 [ %b, %cond.false ], [ %a, %entry ]
54 define i64 @phi_i64(i1 %cnd, i64 %a, i64 %b) {
56 br i1 %cnd, label %cond.end, label %cond.false
58 cond.false: ; preds = %entry
61 cond.end: ; preds = %entry, %cond.false
62 %cond = phi i64 [ %b, %cond.false ], [ %a, %entry ]
66 define ptr @phi_ptr(i1 %cnd, ptr %a, ptr %b) {
68 br i1 %cnd, label %cond.end, label %cond.false
70 cond.false: ; preds = %entry
73 cond.end: ; preds = %entry, %cond.false
74 %cond = phi ptr [ %b, %cond.false ], [ %a, %entry ]
78 define i72 @phi_i72(i1 %cnd, i72 %a, i72 %b) {
80 br i1 %cnd, label %cond.end, label %cond.false
82 cond.false: ; preds = %entry
85 cond.end: ; preds = %entry, %cond.false
86 %cond = phi i72 [ %b, %cond.false ], [ %a, %entry ]
90 define i128 @phi_i128(i1 %cnd, i128 %a, i128 %b) {
92 br i1 %cnd, label %cond.end, label %cond.false
94 cond.false: ; preds = %entry
97 cond.end: ; preds = %entry, %cond.false
98 %cond = phi i128 [ %b, %cond.false ], [ %a, %entry ]
102 define i192 @phi_i192(i1 %cnd, i192 %a, i192 %b) {
104 br i1 %cnd, label %cond.end, label %cond.false
106 cond.false: ; preds = %entry
109 cond.end: ; preds = %entry, %cond.false
110 %cond = phi i192 [ %b, %cond.false ], [ %a, %entry ]
118 tracksRegLiveness: true
120 - { id: 0, class: _ }
121 - { id: 1, class: _ }
122 - { id: 2, class: _ }
123 - { id: 3, class: _ }
124 - { id: 4, class: _ }
125 - { id: 5, class: _ }
126 - { id: 6, class: _ }
127 - { id: 7, class: _ }
134 ; CHECK-LABEL: name: phi_i1
136 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
137 ; CHECK-NEXT: liveins: $x10, $x11, $x12
139 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
140 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
141 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x12
142 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)
143 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
144 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
145 ; CHECK-NEXT: G_BRCOND [[AND]](s64), %bb.2
146 ; CHECK-NEXT: G_BR %bb.1
148 ; CHECK-NEXT: bb.1.cond.false:
149 ; CHECK-NEXT: successors: %bb.2(0x80000000)
151 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY2]](s64)
153 ; CHECK-NEXT: bb.2.cond.end:
154 ; CHECK-NEXT: [[PHI:%[0-9]+]]:_(s32) = G_PHI [[TRUNC1]](s32), %bb.1, [[TRUNC]](s32), %bb.0
155 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[PHI]](s32)
156 ; CHECK-NEXT: $x10 = COPY [[ANYEXT]](s64)
157 ; CHECK-NEXT: PseudoRET implicit $x10
159 liveins: $x10, $x11, $x12
161 %3:_(s64) = COPY $x10
162 %0:_(s1) = G_TRUNC %3(s64)
163 %4:_(s64) = COPY $x11
164 %1:_(s1) = G_TRUNC %4(s64)
165 %5:_(s64) = COPY $x12
166 %2:_(s1) = G_TRUNC %5(s64)
167 G_BRCOND %0(s1), %bb.3
173 %6:_(s1) = G_PHI %2(s1), %bb.2, %1(s1), %bb.1
174 %7:_(s64) = G_ANYEXT %6(s1)
176 PseudoRET implicit $x10
182 tracksRegLiveness: true
184 - { id: 0, class: _ }
185 - { id: 1, class: _ }
186 - { id: 2, class: _ }
187 - { id: 3, class: _ }
188 - { id: 4, class: _ }
189 - { id: 5, class: _ }
190 - { id: 6, class: _ }
191 - { id: 7, class: _ }
198 ; CHECK-LABEL: name: phi_i8
200 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
201 ; CHECK-NEXT: liveins: $x10, $x11, $x12
203 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
204 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
205 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x12
206 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)
207 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
208 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
209 ; CHECK-NEXT: G_BRCOND [[AND]](s64), %bb.2
210 ; CHECK-NEXT: G_BR %bb.1
212 ; CHECK-NEXT: bb.1.cond.false:
213 ; CHECK-NEXT: successors: %bb.2(0x80000000)
215 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY2]](s64)
217 ; CHECK-NEXT: bb.2.cond.end:
218 ; CHECK-NEXT: [[PHI:%[0-9]+]]:_(s32) = G_PHI [[TRUNC1]](s32), %bb.1, [[TRUNC]](s32), %bb.0
219 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[PHI]](s32)
220 ; CHECK-NEXT: $x10 = COPY [[ANYEXT]](s64)
221 ; CHECK-NEXT: PseudoRET implicit $x10
223 liveins: $x10, $x11, $x12
225 %3:_(s64) = COPY $x10
226 %0:_(s1) = G_TRUNC %3(s64)
227 %4:_(s64) = COPY $x11
228 %1:_(s8) = G_TRUNC %4(s64)
229 %5:_(s64) = COPY $x12
230 %2:_(s8) = G_TRUNC %5(s64)
231 G_BRCOND %0(s1), %bb.3
237 %6:_(s8) = G_PHI %2(s8), %bb.2, %1(s8), %bb.1
238 %7:_(s64) = G_ANYEXT %6(s8)
240 PseudoRET implicit $x10
246 tracksRegLiveness: true
248 - { id: 0, class: _ }
249 - { id: 1, class: _ }
250 - { id: 2, class: _ }
251 - { id: 3, class: _ }
252 - { id: 4, class: _ }
253 - { id: 5, class: _ }
254 - { id: 6, class: _ }
255 - { id: 7, class: _ }
262 ; CHECK-LABEL: name: phi_i16
264 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
265 ; CHECK-NEXT: liveins: $x10, $x11, $x12
267 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
268 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
269 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x12
270 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)
271 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
272 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
273 ; CHECK-NEXT: G_BRCOND [[AND]](s64), %bb.2
274 ; CHECK-NEXT: G_BR %bb.1
276 ; CHECK-NEXT: bb.1.cond.false:
277 ; CHECK-NEXT: successors: %bb.2(0x80000000)
279 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY2]](s64)
281 ; CHECK-NEXT: bb.2.cond.end:
282 ; CHECK-NEXT: [[PHI:%[0-9]+]]:_(s32) = G_PHI [[TRUNC1]](s32), %bb.1, [[TRUNC]](s32), %bb.0
283 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[PHI]](s32)
284 ; CHECK-NEXT: $x10 = COPY [[ANYEXT]](s64)
285 ; CHECK-NEXT: PseudoRET implicit $x10
287 liveins: $x10, $x11, $x12
289 %3:_(s64) = COPY $x10
290 %0:_(s1) = G_TRUNC %3(s64)
291 %4:_(s64) = COPY $x11
292 %1:_(s16) = G_TRUNC %4(s64)
293 %5:_(s64) = COPY $x12
294 %2:_(s16) = G_TRUNC %5(s64)
295 G_BRCOND %0(s1), %bb.3
301 %6:_(s16) = G_PHI %2(s16), %bb.2, %1(s16), %bb.1
302 %7:_(s64) = G_ANYEXT %6(s16)
304 PseudoRET implicit $x10
310 tracksRegLiveness: true
312 - { id: 0, class: _ }
313 - { id: 1, class: _ }
314 - { id: 2, class: _ }
315 - { id: 3, class: _ }
316 - { id: 4, class: _ }
317 - { id: 5, class: _ }
318 - { id: 6, class: _ }
319 - { id: 7, class: _ }
326 ; CHECK-LABEL: name: phi_i32
328 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
329 ; CHECK-NEXT: liveins: $x10, $x11, $x12
331 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
332 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
333 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)
334 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x12
335 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY2]](s64)
336 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
337 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
338 ; CHECK-NEXT: G_BRCOND [[AND]](s64), %bb.2
339 ; CHECK-NEXT: G_BR %bb.1
341 ; CHECK-NEXT: bb.1.cond.false:
342 ; CHECK-NEXT: successors: %bb.2(0x80000000)
344 ; CHECK-NEXT: bb.2.cond.end:
345 ; CHECK-NEXT: [[PHI:%[0-9]+]]:_(s32) = G_PHI [[TRUNC1]](s32), %bb.1, [[TRUNC]](s32), %bb.0
346 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[PHI]](s32)
347 ; CHECK-NEXT: $x10 = COPY [[ANYEXT]](s64)
348 ; CHECK-NEXT: PseudoRET implicit $x10
350 liveins: $x10, $x11, $x12
352 %3:_(s64) = COPY $x10
353 %0:_(s1) = G_TRUNC %3(s64)
354 %4:_(s64) = COPY $x11
355 %1:_(s32) = G_TRUNC %4(s64)
356 %5:_(s64) = COPY $x12
357 %2:_(s32) = G_TRUNC %5(s64)
358 G_BRCOND %0(s1), %bb.3
364 %6:_(s32) = G_PHI %2(s32), %bb.2, %1(s32), %bb.1
365 %7:_(s64) = G_ANYEXT %6(s32)
367 PseudoRET implicit $x10
373 tracksRegLiveness: true
375 - { id: 0, class: _ }
376 - { id: 1, class: _ }
377 - { id: 2, class: _ }
378 - { id: 3, class: _ }
379 - { id: 4, class: _ }
386 ; CHECK-LABEL: name: phi_i64
388 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
389 ; CHECK-NEXT: liveins: $x10, $x11, $x12
391 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
392 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
393 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x12
394 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
395 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
396 ; CHECK-NEXT: G_BRCOND [[AND]](s64), %bb.2
397 ; CHECK-NEXT: G_BR %bb.1
399 ; CHECK-NEXT: bb.1.cond.false:
400 ; CHECK-NEXT: successors: %bb.2(0x80000000)
402 ; CHECK-NEXT: bb.2.cond.end:
403 ; CHECK-NEXT: [[PHI:%[0-9]+]]:_(s64) = G_PHI [[COPY2]](s64), %bb.1, [[COPY1]](s64), %bb.0
404 ; CHECK-NEXT: $x10 = COPY [[PHI]](s64)
405 ; CHECK-NEXT: PseudoRET implicit $x10
407 liveins: $x10, $x11, $x12
409 %3:_(s64) = COPY $x10
410 %0:_(s1) = G_TRUNC %3(s64)
411 %1:_(s64) = COPY $x11
412 %2:_(s64) = COPY $x12
413 G_BRCOND %0(s1), %bb.3
419 %4:_(s64) = G_PHI %2(s64), %bb.2, %1(s64), %bb.1
421 PseudoRET implicit $x10
427 tracksRegLiveness: true
429 - { id: 0, class: _ }
430 - { id: 1, class: _ }
431 - { id: 2, class: _ }
432 - { id: 3, class: _ }
433 - { id: 4, class: _ }
440 ; CHECK-LABEL: name: phi_ptr
442 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
443 ; CHECK-NEXT: liveins: $x10, $x11, $x12
445 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
446 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x11
447 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(p0) = COPY $x12
448 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
449 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
450 ; CHECK-NEXT: G_BRCOND [[AND]](s64), %bb.2
451 ; CHECK-NEXT: G_BR %bb.1
453 ; CHECK-NEXT: bb.1.cond.false:
454 ; CHECK-NEXT: successors: %bb.2(0x80000000)
456 ; CHECK-NEXT: bb.2.cond.end:
457 ; CHECK-NEXT: [[PHI:%[0-9]+]]:_(p0) = G_PHI [[COPY2]](p0), %bb.1, [[COPY1]](p0), %bb.0
458 ; CHECK-NEXT: $x10 = COPY [[PHI]](p0)
459 ; CHECK-NEXT: PseudoRET implicit $x10
461 liveins: $x10, $x11, $x12
463 %3:_(s64) = COPY $x10
464 %0:_(s1) = G_TRUNC %3(s64)
467 G_BRCOND %0(s1), %bb.3
473 %4:_(p0) = G_PHI %2(p0), %bb.2, %1(p0), %bb.1
475 PseudoRET implicit $x10
481 tracksRegLiveness: true
483 - { id: 0, class: _ }
484 - { id: 1, class: _ }
485 - { id: 2, class: _ }
486 - { id: 3, class: _ }
487 - { id: 4, class: _ }
488 - { id: 5, class: _ }
489 - { id: 6, class: _ }
490 - { id: 7, class: _ }
491 - { id: 8, class: _ }
492 - { id: 9, class: _ }
493 - { id: 10, class: _ }
494 - { id: 11, class: _ }
495 - { id: 12, class: _ }
496 - { id: 13, class: _ }
503 ; CHECK-LABEL: name: phi_i72
505 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
506 ; CHECK-NEXT: liveins: $x10, $x11, $x12, $x13, $x14
508 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
509 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
510 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x12
511 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $x13
512 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $x14
513 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
514 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
515 ; CHECK-NEXT: G_BRCOND [[AND]](s64), %bb.2
516 ; CHECK-NEXT: G_BR %bb.1
518 ; CHECK-NEXT: bb.1.cond.false:
519 ; CHECK-NEXT: successors: %bb.2(0x80000000)
521 ; CHECK-NEXT: bb.2.cond.end:
522 ; CHECK-NEXT: [[PHI:%[0-9]+]]:_(s64) = G_PHI [[COPY3]](s64), %bb.1, [[COPY1]](s64), %bb.0
523 ; CHECK-NEXT: [[PHI1:%[0-9]+]]:_(s64) = G_PHI [[COPY4]](s64), %bb.1, [[COPY2]](s64), %bb.0
524 ; CHECK-NEXT: $x10 = COPY [[PHI]](s64)
525 ; CHECK-NEXT: $x11 = COPY [[PHI1]](s64)
526 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11
528 liveins: $x10, $x11, $x12, $x13, $x14
530 %3:_(s64) = COPY $x10
531 %0:_(s1) = G_TRUNC %3(s64)
532 %4:_(s64) = COPY $x11
533 %5:_(s64) = COPY $x12
534 %6:_(s128) = G_MERGE_VALUES %4(s64), %5(s64)
535 %1:_(s72) = G_TRUNC %6(s128)
536 %7:_(s64) = COPY $x13
537 %8:_(s64) = COPY $x14
538 %9:_(s128) = G_MERGE_VALUES %7(s64), %8(s64)
539 %2:_(s72) = G_TRUNC %9(s128)
540 G_BRCOND %0(s1), %bb.3
546 %10:_(s72) = G_PHI %2(s72), %bb.2, %1(s72), %bb.1
547 %13:_(s128) = G_ANYEXT %10(s72)
548 %11:_(s64), %12:_(s64) = G_UNMERGE_VALUES %13(s128)
551 PseudoRET implicit $x10, implicit $x11
557 tracksRegLiveness: true
559 - { id: 0, class: _ }
560 - { id: 1, class: _ }
561 - { id: 2, class: _ }
562 - { id: 3, class: _ }
563 - { id: 4, class: _ }
564 - { id: 5, class: _ }
565 - { id: 6, class: _ }
566 - { id: 7, class: _ }
567 - { id: 8, class: _ }
568 - { id: 9, class: _ }
569 - { id: 10, class: _ }
576 ; CHECK-LABEL: name: phi_i128
578 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
579 ; CHECK-NEXT: liveins: $x10, $x11, $x12, $x13, $x14
581 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
582 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
583 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x12
584 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $x13
585 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $x14
586 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
587 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
588 ; CHECK-NEXT: G_BRCOND [[AND]](s64), %bb.2
589 ; CHECK-NEXT: G_BR %bb.1
591 ; CHECK-NEXT: bb.1.cond.false:
592 ; CHECK-NEXT: successors: %bb.2(0x80000000)
594 ; CHECK-NEXT: bb.2.cond.end:
595 ; CHECK-NEXT: [[PHI:%[0-9]+]]:_(s64) = G_PHI [[COPY3]](s64), %bb.1, [[COPY1]](s64), %bb.0
596 ; CHECK-NEXT: [[PHI1:%[0-9]+]]:_(s64) = G_PHI [[COPY4]](s64), %bb.1, [[COPY2]](s64), %bb.0
597 ; CHECK-NEXT: $x10 = COPY [[PHI]](s64)
598 ; CHECK-NEXT: $x11 = COPY [[PHI1]](s64)
599 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11
601 liveins: $x10, $x11, $x12, $x13, $x14
603 %3:_(s64) = COPY $x10
604 %0:_(s1) = G_TRUNC %3(s64)
605 %4:_(s64) = COPY $x11
606 %5:_(s64) = COPY $x12
607 %1:_(s128) = G_MERGE_VALUES %4(s64), %5(s64)
608 %6:_(s64) = COPY $x13
609 %7:_(s64) = COPY $x14
610 %2:_(s128) = G_MERGE_VALUES %6(s64), %7(s64)
611 G_BRCOND %0(s1), %bb.3
617 %8:_(s128) = G_PHI %2(s128), %bb.2, %1(s128), %bb.1
618 %9:_(s64), %10:_(s64) = G_UNMERGE_VALUES %8(s128)
621 PseudoRET implicit $x10, implicit $x11
627 tracksRegLiveness: true
629 - { id: 0, class: _ }
630 - { id: 1, class: _ }
631 - { id: 2, class: _ }
632 - { id: 3, class: _ }
633 - { id: 4, class: _ }
634 - { id: 5, class: _ }
635 - { id: 6, class: _ }
636 - { id: 7, class: _ }
637 - { id: 8, class: _ }
638 - { id: 9, class: _ }
639 - { id: 10, class: _ }
640 - { id: 11, class: _ }
641 - { id: 12, class: _ }
642 - { id: 13, class: _ }
649 ; CHECK-LABEL: name: phi_i192
651 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
652 ; CHECK-NEXT: liveins: $x10, $x11, $x12
654 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
655 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
656 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x11
657 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $x11
658 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $x12
659 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s64) = COPY $x12
660 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s64) = COPY $x12
661 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
662 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
663 ; CHECK-NEXT: G_BRCOND [[AND]](s64), %bb.2
664 ; CHECK-NEXT: G_BR %bb.1
666 ; CHECK-NEXT: bb.1.cond.false:
667 ; CHECK-NEXT: successors: %bb.2(0x80000000)
669 ; CHECK-NEXT: bb.2.cond.end:
670 ; CHECK-NEXT: [[PHI:%[0-9]+]]:_(s64) = G_PHI [[COPY4]](s64), %bb.1, [[COPY1]](s64), %bb.0
671 ; CHECK-NEXT: [[PHI1:%[0-9]+]]:_(s64) = G_PHI [[COPY5]](s64), %bb.1, [[COPY2]](s64), %bb.0
672 ; CHECK-NEXT: [[PHI2:%[0-9]+]]:_(s64) = G_PHI [[COPY6]](s64), %bb.1, [[COPY3]](s64), %bb.0
673 ; CHECK-NEXT: $x10 = COPY [[PHI]](s64)
674 ; CHECK-NEXT: $x10 = COPY [[PHI1]](s64)
675 ; CHECK-NEXT: $x10 = COPY [[PHI2]](s64)
676 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x10, implicit $x10
678 liveins: $x10, $x11, $x12
680 %3:_(s64) = COPY $x10
681 %0:_(s1) = G_TRUNC %3(s64)
682 %4:_(s64) = COPY $x11
683 %5:_(s64) = COPY $x11
684 %6:_(s64) = COPY $x11
685 %1:_(s192) = G_MERGE_VALUES %4(s64), %5(s64), %6(s64)
686 %7:_(s64) = COPY $x12
687 %8:_(s64) = COPY $x12
688 %9:_(s64) = COPY $x12
689 %2:_(s192) = G_MERGE_VALUES %7(s64), %8(s64), %9(s64)
690 G_BRCOND %0(s1), %bb.3
696 %10:_(s192) = G_PHI %2(s192), %bb.2, %1(s192), %bb.1
697 %11:_(s64), %12:_(s64), %13:_(s64) = G_UNMERGE_VALUES %10(s192)
701 PseudoRET implicit $x10, implicit $x10, implicit $x10