@@ -489,3 +489,68 @@ body: |
489
489
RET_ReallyLR implicit $x0
490
490
491
491
...
492
+ # Same as above but with a source MI with multiple destination operands.
493
+ ---
494
+ name : anyext_add_through_phi_multiple_operands
495
+ tracksRegLiveness : true
496
+ body : |
497
+ ; CHECK-LABEL: name: anyext_add_through_phi_multiple_operands
498
+ ; CHECK: bb.0.entry:
499
+ ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)
500
+ ; CHECK-NEXT: liveins: $w0, $w1
501
+ ; CHECK-NEXT: {{ $}}
502
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
503
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
504
+ ; CHECK-NEXT: %one:_(s32) = G_CONSTANT i32 2
505
+ ; CHECK-NEXT: %cmp:_(s1) = G_ICMP intpred(sle), [[COPY]](s32), %one
506
+ ; CHECK-NEXT: G_BRCOND %cmp(s1), %bb.2
507
+ ; CHECK-NEXT: G_BR %bb.1
508
+ ; CHECK-NEXT: {{ $}}
509
+ ; CHECK-NEXT: bb.1:
510
+ ; CHECK-NEXT: successors: %bb.3(0x80000000)
511
+ ; CHECK-NEXT: {{ $}}
512
+ ; CHECK-NEXT: %big0:_(s64) = G_SEXT [[COPY]](s32)
513
+ ; CHECK-NEXT: %big1:_(s64) = G_SEXT [[COPY1]](s32)
514
+ ; CHECK-NEXT: %add:_(s64) = G_ADD %big0, %big1
515
+ ; CHECK-NEXT: %first:_(s32), %second:_(s32) = G_UNMERGE_VALUES %add(s64)
516
+ ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT %second(s32)
517
+ ; CHECK-NEXT: G_BR %bb.3
518
+ ; CHECK-NEXT: {{ $}}
519
+ ; CHECK-NEXT: bb.2:
520
+ ; CHECK-NEXT: successors: %bb.3(0x80000000)
521
+ ; CHECK-NEXT: {{ $}}
522
+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 10
523
+ ; CHECK-NEXT: [[ANYEXT1:%[0-9]+]]:_(s64) = G_ANYEXT [[C]](s32)
524
+ ; CHECK-NEXT: {{ $}}
525
+ ; CHECK-NEXT: bb.3:
526
+ ; CHECK-NEXT: %ext:_(s64) = G_PHI [[ANYEXT]](s64), %bb.1, [[ANYEXT1]](s64), %bb.2
527
+ ; CHECK-NEXT: $x0 = COPY %ext(s64)
528
+ ; CHECK-NEXT: RET_ReallyLR implicit $x0
529
+ bb.1.entry:
530
+ liveins: $w0, $w1
531
+
532
+ %0:_(s32) = COPY $w0
533
+ %1:_(s32) = COPY $w1
534
+ %zero:_(s32) = G_CONSTANT i32 0
535
+ %one:_(s32) = G_CONSTANT i32 2
536
+ %cmp:_(s1) = G_ICMP intpred(sgt), %0(s32), %one
537
+ G_BRCOND %cmp(s1), %bb.2
538
+ G_BR %bb.3
539
+
540
+ bb.2:
541
+ %big0:_(s64) = G_SEXT %0
542
+ %big1:_(s64) = G_SEXT %1
543
+ %add:_(s64) = G_ADD %big0, %big1
544
+ %first:_(s32), %second:_(s32) = G_UNMERGE_VALUES %add:_(s64)
545
+ G_BR %bb.4
546
+
547
+ bb.3:
548
+ %cst32_10:_(s32) = G_CONSTANT i32 10
549
+
550
+ bb.4:
551
+ %phi:_(s32) = G_PHI %second, %bb.2, %cst32_10, %bb.3
552
+ %ext:_(s64) = G_ANYEXT %phi
553
+ $x0 = COPY %ext(s64)
554
+ RET_ReallyLR implicit $x0
555
+
556
+ ...
0 commit comments