brintos

brintos / llvm-project-archived public Read only

0
0
Text · 33.5 KiB · 47aa570 Raw
949 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -O0 -mtriple=aarch64-unknown-unknown -verify-machineinstrs -global-isel-abort=0 -run-pass=legalizer %s -o - | FileCheck %s3---4name:            legalize_phi5alignment:       46exposesReturnsTwice: false7legalized:       false8regBankSelected: false9selected:        false10tracksRegLiveness: true11registers:12  - { id: 0, class: _, preferred-register: '' }13  - { id: 1, class: _, preferred-register: '' }14  - { id: 2, class: _, preferred-register: '' }15  - { id: 3, class: _, preferred-register: '' }16  - { id: 4, class: _, preferred-register: '' }17  - { id: 5, class: _, preferred-register: '' }18  - { id: 6, class: _, preferred-register: '' }19  - { id: 7, class: _, preferred-register: '' }20  - { id: 8, class: _, preferred-register: '' }21  - { id: 9, class: _, preferred-register: '' }22  - { id: 10, class: _, preferred-register: '' }23liveins:24body:             |25  ; CHECK-LABEL: name: legalize_phi26  ; CHECK: bb.0:27  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)28  ; CHECK-NEXT:   liveins: $w029  ; CHECK-NEXT: {{  $}}30  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w031  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 032  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 133  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 234  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ugt), [[COPY]](s32), [[C]]35  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s32), %bb.136  ; CHECK-NEXT:   G_BR %bb.237  ; CHECK-NEXT: {{  $}}38  ; CHECK-NEXT: bb.1:39  ; CHECK-NEXT:   successors: %bb.3(0x80000000)40  ; CHECK-NEXT: {{  $}}41  ; CHECK-NEXT:   [[ADD:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[C1]]42  ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[ADD]](s32)43  ; CHECK-NEXT:   G_BR %bb.344  ; CHECK-NEXT: {{  $}}45  ; CHECK-NEXT: bb.2:46  ; CHECK-NEXT:   successors: %bb.3(0x80000000)47  ; CHECK-NEXT: {{  $}}48  ; CHECK-NEXT:   [[ADD1:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[C2]]49  ; CHECK-NEXT:   [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[ADD1]](s32)50  ; CHECK-NEXT: {{  $}}51  ; CHECK-NEXT: bb.3:52  ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(s16) = G_PHI [[TRUNC]](s16), %bb.1, [[TRUNC1]](s16), %bb.253  ; CHECK-NEXT:   [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[PHI]](s16)54  ; CHECK-NEXT:   [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 155  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C3]]56  ; CHECK-NEXT:   $w0 = COPY [[AND]](s32)57  ; CHECK-NEXT:   RET_ReallyLR implicit $w058  bb.0:59   ; Test that we insert legalization artifacts(Truncs here) into the correct BBs60   ; while legalizing the G_PHI to s16.61 62 63    successors: %bb.1(0x40000000), %bb.2(0x40000000)64    liveins: $w065 66    %0(s32) = COPY $w067    %1(s32) = G_CONSTANT i32 068    %3(s32) = G_CONSTANT i32 169    %6(s32) = G_CONSTANT i32 270    %2(s1) = G_ICMP intpred(ugt), %0(s32), %171    G_BRCOND %2(s1), %bb.172    G_BR %bb.273 74  bb.1:75    successors: %bb.3(0x80000000)76 77    %4(s32) = G_ADD %0, %378    %5(s1) = G_TRUNC %4(s32)79    G_BR %bb.380 81  bb.2:82    successors: %bb.3(0x80000000)83 84    %7(s32) = G_ADD %0, %685    %8(s1) = G_TRUNC %7(s32)86 87  bb.3:88    %9(s1) = G_PHI %5(s1), %bb.1, %8(s1), %bb.289    %11:_(s1) = G_PHI %5(s1), %bb.1, %8(s1), %bb.290    %10(s32) = G_ZEXT %9(s1)91    $w0 = COPY %10(s32)92    RET_ReallyLR implicit $w093 94...95---96name:            legalize_phi_ptr97alignment:       498exposesReturnsTwice: false99legalized:       false100regBankSelected: false101selected:        false102tracksRegLiveness: true103registers:104  - { id: 0, class: _, preferred-register: '' }105  - { id: 1, class: _, preferred-register: '' }106  - { id: 2, class: _, preferred-register: '' }107  - { id: 3, class: _, preferred-register: '' }108  - { id: 4, class: _, preferred-register: '' }109  - { id: 5, class: _, preferred-register: '' }110liveins:111body:             |112  ; CHECK-LABEL: name: legalize_phi_ptr113  ; CHECK: bb.0:114  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)115  ; CHECK-NEXT:   liveins: $w2, $x0, $x1116  ; CHECK-NEXT: {{  $}}117  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p0) = COPY $x0118  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(p0) = COPY $x1119  ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:_(s32) = COPY $w2120  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1121  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]]122  ; CHECK-NEXT:   G_BRCOND [[AND]](s32), %bb.1123  ; CHECK-NEXT:   G_BR %bb.2124  ; CHECK-NEXT: {{  $}}125  ; CHECK-NEXT: bb.1:126  ; CHECK-NEXT:   successors: %bb.2(0x80000000)127  ; CHECK-NEXT: {{  $}}128  ; CHECK-NEXT: bb.2:129  ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(p0) = G_PHI [[COPY]](p0), %bb.0, [[COPY1]](p0), %bb.1130  ; CHECK-NEXT:   $x0 = COPY [[PHI]](p0)131  ; CHECK-NEXT:   RET_ReallyLR implicit $x0132  bb.1:133 134    successors: %bb.2, %bb.3135    liveins: $w2, $x0, $x1136 137    %0(p0) = COPY $x0138    %1(p0) = COPY $x1139    %4(s32) = COPY $w2140    %2(s1) = G_TRUNC %4(s32)141    G_BRCOND %2(s1), %bb.2142    G_BR %bb.3143 144  bb.2:145    successors: %bb.3146 147  bb.3:148    %3(p0) = G_PHI %0(p0), %bb.1, %1(p0), %bb.2149    $x0 = COPY %3(p0)150    RET_ReallyLR implicit $x0151 152...153---154name:            legalize_phi_empty155alignment:       4156exposesReturnsTwice: false157legalized:       false158regBankSelected: false159selected:        false160tracksRegLiveness: true161registers:162  - { id: 0, class: _, preferred-register: '' }163  - { id: 1, class: _, preferred-register: '' }164  - { id: 2, class: _, preferred-register: '' }165  - { id: 3, class: _, preferred-register: '' }166  - { id: 4, class: _, preferred-register: '' }167  - { id: 5, class: _, preferred-register: '' }168  - { id: 6, class: _, preferred-register: '' }169  - { id: 7, class: _, preferred-register: '' }170  - { id: 8, class: _, preferred-register: '' }171  - { id: 9, class: _, preferred-register: '' }172  - { id: 10, class: _, preferred-register: '' }173liveins:174body:             |175  ; CHECK-LABEL: name: legalize_phi_empty176  ; CHECK: bb.0:177  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)178  ; CHECK-NEXT:   liveins: $w0179  ; CHECK-NEXT: {{  $}}180  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w0181  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0182  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 3183  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1184  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ugt), [[COPY]](s32), [[C]]185  ; CHECK-NEXT:   [[ADD:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[C1]]186  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s32), %bb.1187  ; CHECK-NEXT:   G_BR %bb.2188  ; CHECK-NEXT: {{  $}}189  ; CHECK-NEXT: bb.1:190  ; CHECK-NEXT:   successors: %bb.3(0x80000000)191  ; CHECK-NEXT: {{  $}}192  ; CHECK-NEXT:   [[ADD1:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[C2]]193  ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[ADD1]](s32)194  ; CHECK-NEXT:   G_BR %bb.3195  ; CHECK-NEXT: {{  $}}196  ; CHECK-NEXT: bb.2:197  ; CHECK-NEXT:   successors: %bb.3(0x80000000)198  ; CHECK-NEXT: {{  $}}199  ; CHECK-NEXT:   [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[ADD]](s32)200  ; CHECK-NEXT: {{  $}}201  ; CHECK-NEXT: bb.3:202  ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(s16) = G_PHI [[TRUNC]](s16), %bb.1, [[TRUNC1]](s16), %bb.2203  ; CHECK-NEXT:   [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[PHI]](s16)204  ; CHECK-NEXT:   [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 1205  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C3]]206  ; CHECK-NEXT:   $w0 = COPY [[AND]](s32)207  ; CHECK-NEXT:   RET_ReallyLR implicit $w0208  bb.0:209    successors: %bb.1(0x40000000), %bb.2(0x40000000)210    liveins: $w0211   ; Test that we properly legalize a phi with a predecessor that's empty212 213 214 215 216    %0(s32) = COPY $w0217    %1(s32) = G_CONSTANT i32 0218    %3(s32) = G_CONSTANT i32 3219    %6(s32) = G_CONSTANT i32 1220    %2(s1) = G_ICMP intpred(ugt), %0(s32), %1221    %4(s32) = G_ADD %0, %3222    %5(s1) = G_TRUNC %4(s32)223    G_BRCOND %2(s1), %bb.1224    G_BR %bb.2225 226  bb.1:227    successors: %bb.3(0x80000000)228 229    %7(s32) = G_ADD %0, %6230    %8(s1) = G_TRUNC %7(s32)231    G_BR %bb.3232 233  bb.2:234    successors: %bb.3(0x80000000)235 236 237  bb.3:238    %9(s1) = G_PHI %8(s1), %bb.1, %5(s1), %bb.2239    %10(s32) = G_ZEXT %9(s1)240    $w0 = COPY %10(s32)241    RET_ReallyLR implicit $w0242 243...244---245name:            legalize_phi_loop246alignment:       4247exposesReturnsTwice: false248legalized:       false249regBankSelected: false250selected:        false251tracksRegLiveness: true252registers:253  - { id: 0, class: _, preferred-register: '' }254  - { id: 1, class: _, preferred-register: '' }255  - { id: 2, class: _, preferred-register: '' }256  - { id: 3, class: _, preferred-register: '' }257  - { id: 4, class: _, preferred-register: '' }258  - { id: 5, class: _, preferred-register: '' }259  - { id: 6, class: _, preferred-register: '' }260  - { id: 7, class: _, preferred-register: '' }261liveins:262body:             |263  ; CHECK-LABEL: name: legalize_phi_loop264  ; CHECK: bb.0:265  ; CHECK-NEXT:   successors: %bb.1(0x80000000)266  ; CHECK-NEXT:   liveins: $w0267  ; CHECK-NEXT: {{  $}}268  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w0269  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 0270  ; CHECK-NEXT: {{  $}}271  ; CHECK-NEXT: bb.1:272  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)273  ; CHECK-NEXT: {{  $}}274  ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(s16) = G_PHI [[C]](s16), %bb.0, %14(s16), %bb.1275  ; CHECK-NEXT:   [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[PHI]](s16)276  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1277  ; CHECK-NEXT:   [[ADD:%[0-9]+]]:_(s32) = G_ADD [[ANYEXT]], [[C1]]278  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 255279  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s32) = G_AND [[ADD]], [[C2]]280  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ugt), [[AND]](s32), [[COPY]]281  ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[ADD]](s32)282  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s32), %bb.1283  ; CHECK-NEXT: {{  $}}284  ; CHECK-NEXT: bb.2:285  ; CHECK-NEXT:   [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 255286  ; CHECK-NEXT:   [[AND1:%[0-9]+]]:_(s32) = G_AND [[ADD]], [[C3]]287  ; CHECK-NEXT:   $w0 = COPY [[AND1]](s32)288  ; CHECK-NEXT:   RET_ReallyLR implicit $w0289  bb.0:290    successors: %bb.1(0x80000000)291    liveins: $w0292   ; Test that we properly legalize a phi that uses a value from the same BB293 294    %0(s32) = COPY $w0295    %2(s8) = G_CONSTANT i8 1296    %7(s8) = G_CONSTANT i8 0297 298  bb.1:299    successors: %bb.1(0x40000000), %bb.3(0x40000000)300 301    %1(s8) = G_PHI %7(s8), %bb.0, %3(s8), %bb.1302    %3(s8) = G_ADD %1, %2303    %4(s32) = G_ZEXT %3(s8)304    %5(s1) = G_ICMP intpred(ugt), %4(s32), %0305    G_BRCOND %5(s1), %bb.1306 307  bb.3:308    %6(s32) = G_ZEXT %3(s8)309    $w0 = COPY %6(s32)310    RET_ReallyLR implicit $w0311 312...313---314name:            legalize_phi_cycle315alignment:       4316exposesReturnsTwice: false317legalized:       false318regBankSelected: false319selected:        false320tracksRegLiveness: true321registers:322  - { id: 0, class: _, preferred-register: '' }323  - { id: 1, class: _, preferred-register: '' }324  - { id: 2, class: _, preferred-register: '' }325  - { id: 3, class: _, preferred-register: '' }326  - { id: 4, class: _, preferred-register: '' }327liveins:328body:             |329  ; CHECK-LABEL: name: legalize_phi_cycle330  ; CHECK: bb.0:331  ; CHECK-NEXT:   successors: %bb.1(0x80000000)332  ; CHECK-NEXT:   liveins: $w0333  ; CHECK-NEXT: {{  $}}334  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w0335  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 0336  ; CHECK-NEXT: {{  $}}337  ; CHECK-NEXT: bb.1:338  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)339  ; CHECK-NEXT: {{  $}}340  ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(s16) = G_PHI [[C]](s16), %bb.0, [[PHI]](s16), %bb.1341  ; CHECK-NEXT:   [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[PHI]](s16)342  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 255343  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C1]]344  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ugt), [[AND]](s32), [[COPY]]345  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s32), %bb.1346  ; CHECK-NEXT: {{  $}}347  ; CHECK-NEXT: bb.2:348  ; CHECK-NEXT:   $w0 = COPY [[AND]](s32)349  ; CHECK-NEXT:   RET_ReallyLR implicit $w0350  bb.0:351    successors: %bb.1(0x80000000)352    liveins: $w0353   ; Test that we properly legalize a phi that uses itself354 355 356    %0(s32) = COPY $w0357    %4(s8) = G_CONSTANT i8 0358 359  bb.1:360    successors: %bb.1(0x40000000), %bb.3(0x40000000)361 362    %1(s8) = G_PHI %4(s8), %bb.0, %1(s8), %bb.1363    %2(s32) = G_ZEXT %1(s8)364    %3(s1) = G_ICMP intpred(ugt), %2(s32), %0365    G_BRCOND %3(s1), %bb.1366 367  bb.3:368    $w0 = COPY %2(s32)369    RET_ReallyLR implicit $w0370 371...372---373name:            legalize_phi_same_bb374alignment:       4375exposesReturnsTwice: false376legalized:       false377regBankSelected: false378selected:        false379tracksRegLiveness: true380registers:381  - { id: 0, class: _, preferred-register: '' }382  - { id: 1, class: _, preferred-register: '' }383  - { id: 2, class: _, preferred-register: '' }384  - { id: 3, class: _, preferred-register: '' }385  - { id: 4, class: _, preferred-register: '' }386  - { id: 5, class: _, preferred-register: '' }387  - { id: 6, class: _, preferred-register: '' }388  - { id: 7, class: _, preferred-register: '' }389  - { id: 8, class: _, preferred-register: '' }390  - { id: 9, class: _, preferred-register: '' }391  - { id: 10, class: _, preferred-register: '' }392  - { id: 11, class: _, preferred-register: '' }393  - { id: 12, class: _, preferred-register: '' }394  - { id: 13, class: _, preferred-register: '' }395  - { id: 14, class: _, preferred-register: '' }396liveins:397body:             |398  ; CHECK-LABEL: name: legalize_phi_same_bb399  ; CHECK: bb.0:400  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)401  ; CHECK-NEXT:   liveins: $w0402  ; CHECK-NEXT: {{  $}}403  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w0404  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0405  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 3406  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1407  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ugt), [[COPY]](s32), [[C]]408  ; CHECK-NEXT:   [[ADD:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[C1]]409  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s32), %bb.1410  ; CHECK-NEXT:   G_BR %bb.2411  ; CHECK-NEXT: {{  $}}412  ; CHECK-NEXT: bb.1:413  ; CHECK-NEXT:   successors: %bb.3(0x80000000)414  ; CHECK-NEXT: {{  $}}415  ; CHECK-NEXT:   [[ADD1:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[C2]]416  ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[ADD1]](s32)417  ; CHECK-NEXT:   [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[ADD1]](s32)418  ; CHECK-NEXT:   G_BR %bb.3419  ; CHECK-NEXT: {{  $}}420  ; CHECK-NEXT: bb.2:421  ; CHECK-NEXT:   successors: %bb.3(0x80000000)422  ; CHECK-NEXT: {{  $}}423  ; CHECK-NEXT:   [[C3:%[0-9]+]]:_(s16) = G_CONSTANT i16 42424  ; CHECK-NEXT:   [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[ADD]](s32)425  ; CHECK-NEXT: {{  $}}426  ; CHECK-NEXT: bb.3:427  ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(s16) = G_PHI [[TRUNC1]](s16), %bb.1, [[TRUNC2]](s16), %bb.2428  ; CHECK-NEXT:   [[PHI1:%[0-9]+]]:_(s16) = G_PHI [[TRUNC]](s16), %bb.1, [[C3]](s16), %bb.2429  ; CHECK-NEXT:   [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[PHI]](s16)430  ; CHECK-NEXT:   [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 255431  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C4]]432  ; CHECK-NEXT:   [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[PHI1]](s16)433  ; CHECK-NEXT:   [[AND1:%[0-9]+]]:_(s32) = G_AND [[ANYEXT1]], [[C4]]434  ; CHECK-NEXT:   [[ADD2:%[0-9]+]]:_(s32) = G_ADD [[AND]], [[AND1]]435  ; CHECK-NEXT:   $w0 = COPY [[ADD2]](s32)436  ; CHECK-NEXT:   RET_ReallyLR implicit $w0437  bb.0:438    successors: %bb.1(0x40000000), %bb.2(0x40000000)439    liveins: $w0440   ; Make sure that we correctly insert the new legalized G_PHI at the441   ; correct location (ie make sure G_PHIs are the first insts in the BB).442 443 444 445 446    %0(s32) = COPY $w0447    %1(s32) = G_CONSTANT i32 0448    %3(s32) = G_CONSTANT i32 3449    %6(s32) = G_CONSTANT i32 1450    %14(s8) = G_CONSTANT i8 42451    %2(s1) = G_ICMP intpred(ugt), %0(s32), %1452    %4(s32) = G_ADD %0, %3453    %5(s8) = G_TRUNC %4(s32)454    G_BRCOND %2(s1), %bb.1455    G_BR %bb.2456 457  bb.1:458    successors: %bb.3(0x80000000)459 460    %7(s32) = G_ADD %0, %6461    %8(s8) = G_TRUNC %7(s32)462    G_BR %bb.3463 464  bb.2:465    successors: %bb.3(0x80000000)466 467 468  bb.3:469    %9(s8) = G_PHI %8(s8), %bb.1, %5(s8), %bb.2470    %10(s8) = G_PHI %8(s8), %bb.1, %14(s8), %bb.2471    %11(s32) = G_ZEXT %9(s8)472    %12(s32) = G_ZEXT %10(s8)473    %13(s32) = G_ADD %11, %12474    $w0 = COPY %13(s32)475    RET_ReallyLR implicit $w0476 477...478---479name:            legalize_phi_diff_bb480alignment:       4481exposesReturnsTwice: false482legalized:       false483regBankSelected: false484selected:        false485tracksRegLiveness: true486registers:487  - { id: 0, class: _, preferred-register: '' }488  - { id: 1, class: _, preferred-register: '' }489  - { id: 2, class: _, preferred-register: '' }490  - { id: 3, class: _, preferred-register: '' }491  - { id: 4, class: _, preferred-register: '' }492  - { id: 5, class: _, preferred-register: '' }493  - { id: 6, class: _, preferred-register: '' }494  - { id: 7, class: _, preferred-register: '' }495  - { id: 8, class: _, preferred-register: '' }496  - { id: 9, class: _, preferred-register: '' }497  - { id: 10, class: _, preferred-register: '' }498  - { id: 11, class: _, preferred-register: '' }499  - { id: 12, class: _, preferred-register: '' }500  - { id: 13, class: _, preferred-register: '' }501  - { id: 14, class: _, preferred-register: '' }502  - { id: 15, class: _, preferred-register: '' }503liveins:504body:             |505  ; CHECK-LABEL: name: legalize_phi_diff_bb506  ; CHECK: bb.0:507  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)508  ; CHECK-NEXT:   liveins: $w0, $w1509  ; CHECK-NEXT: {{  $}}510  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w0511  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $w1512  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0513  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 3514  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1515  ; CHECK-NEXT:   [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 44516  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ugt), [[COPY]](s32), [[C]]517  ; CHECK-NEXT:   [[ADD:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[C1]]518  ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[ADD]](s32)519  ; CHECK-NEXT:   [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[ADD]](s32)520  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s32), %bb.1521  ; CHECK-NEXT:   G_BR %bb.2522  ; CHECK-NEXT: {{  $}}523  ; CHECK-NEXT: bb.1:524  ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)525  ; CHECK-NEXT: {{  $}}526  ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(s16) = G_PHI [[TRUNC1]](s16), %bb.0, %22(s16), %bb.1527  ; CHECK-NEXT:   [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[PHI]](s16)528  ; CHECK-NEXT:   [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 255529  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C4]]530  ; CHECK-NEXT:   [[ADD1:%[0-9]+]]:_(s32) = G_ADD [[AND]], [[C2]]531  ; CHECK-NEXT:   [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(ugt), [[ADD1]](s32), [[C3]]532  ; CHECK-NEXT:   [[C5:%[0-9]+]]:_(s16) = G_CONSTANT i16 43533  ; CHECK-NEXT:   G_BRCOND [[ICMP1]](s32), %bb.2534  ; CHECK-NEXT:   G_BR %bb.1535  ; CHECK-NEXT: {{  $}}536  ; CHECK-NEXT: bb.2:537  ; CHECK-NEXT:   [[PHI1:%[0-9]+]]:_(s16) = G_PHI [[PHI]](s16), %bb.1, [[TRUNC]](s16), %bb.0538  ; CHECK-NEXT:   [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[PHI1]](s16)539  ; CHECK-NEXT:   [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 255540  ; CHECK-NEXT:   [[AND1:%[0-9]+]]:_(s32) = G_AND [[ANYEXT1]], [[C6]]541  ; CHECK-NEXT:   $w0 = COPY [[AND1]](s32)542  ; CHECK-NEXT:   RET_ReallyLR implicit $w0543  bb.0:544    successors: %bb.1(0x40000000), %bb.3(0x40000000)545    liveins: $w0, $w1546   ; Make sure that we correctly legalize PHIs sharing common defs547   ; in different BBs.548 549 550 551    %0(s32) = COPY $w0552    %1(s32) = COPY $w1553    %2(s32) = G_CONSTANT i32 0554    %4(s32) = G_CONSTANT i32 3555    %9(s32) = G_CONSTANT i32 1556    %11(s32) = G_CONSTANT i32 44557    %15(s8) = G_CONSTANT i8 43558    %3(s1) = G_ICMP intpred(ugt), %0(s32), %2559    %5(s32) = G_ADD %0, %4560    %6(s8) = G_TRUNC %5(s32)561    G_BRCOND %3(s1), %bb.1562    G_BR %bb.3563 564  bb.1:565    successors: %bb.3(0x40000000), %bb.1(0x40000000)566 567    %7(s8) = G_PHI %6(s8), %bb.0, %15(s8), %bb.1568    %8(s32) = G_ZEXT %7(s8)569    %10(s32) = G_ADD %8, %9570    %12(s1) = G_ICMP intpred(ugt), %10(s32), %11571    G_BRCOND %12(s1), %bb.3572    G_BR %bb.1573 574  bb.3:575    %13(s8) = G_PHI %7(s8), %bb.1, %6(s8), %bb.0576    %14(s32) = G_ZEXT %13(s8)577    $w0 = COPY %14(s32)578    RET_ReallyLR implicit $w0579 580...581---582name:            legalize_phi_check_insertpt583alignment:       4584exposesReturnsTwice: false585legalized:       false586regBankSelected: false587selected:        false588tracksRegLiveness: true589body:             |590  ; CHECK-LABEL: name: legalize_phi_check_insertpt591  ; CHECK: bb.0:592  ; CHECK-NEXT:   successors: %bb.1(0x80000000)593  ; CHECK-NEXT:   liveins: $x0, $x1594  ; CHECK-NEXT: {{  $}}595  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s64) = COPY $x0596  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(p0) = COPY $x1597  ; CHECK-NEXT:   [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF598  ; CHECK-NEXT:   G_BR %bb.1599  ; CHECK-NEXT: {{  $}}600  ; CHECK-NEXT: bb.1:601  ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(s64) = G_PHI [[DEF]](s64), %bb.0602  ; CHECK-NEXT:   [[PHI1:%[0-9]+]]:_(s64) = G_PHI [[DEF]](s64), %bb.0603  ; CHECK-NEXT:   [[PHI2:%[0-9]+]]:_(s64) = G_PHI [[COPY]](s64), %bb.0604  ; CHECK-NEXT:   [[MV:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[PHI]](s64), [[PHI1]](s64)605  ; CHECK-NEXT:   G_STORE [[MV]](s128), [[COPY1]](p0) :: (store (s128))606  ; CHECK-NEXT:   G_STORE [[PHI2]](s64), [[COPY1]](p0) :: (store (s64))607  ; CHECK-NEXT:   RET_ReallyLR608  ; Check that the G_MERGE here gets inserted after all the PHIs.609  bb.0:610    successors: %bb.1(0x40000000)611    liveins: $x0, $x1612 613    %0:_(s64) = COPY $x0614    %1:_(p0) = COPY $x1615    %2:_(s128) = G_IMPLICIT_DEF616    G_BR %bb.1617 618  bb.1:619    %3:_(s128) = G_PHI %2(s128), %bb.0620    %4:_(s64) = G_PHI %0(s64), %bb.0621    G_STORE %3(s128), %1(p0) :: (store (s128))622    G_STORE %4(s64), %1(p0) :: (store (s64))623    RET_ReallyLR624 625...626---627name:            legalize_phi_vector628tracksRegLiveness: true629body:             |630  ; CHECK-LABEL: name: legalize_phi_vector631  ; CHECK: bb.0:632  ; CHECK-NEXT:   successors: %bb.1(0x80000000)633  ; CHECK-NEXT:   liveins: $q0, $x1634  ; CHECK-NEXT: {{  $}}635  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(<16 x s8>) = COPY $q0636  ; CHECK-NEXT:   G_BR %bb.1637  ; CHECK-NEXT: {{  $}}638  ; CHECK-NEXT: bb.1:639  ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(<16 x s8>) = G_PHI [[COPY]](<16 x s8>), %bb.0640  ; CHECK-NEXT:   $q0 = COPY [[PHI]](<16 x s8>)641  ; CHECK-NEXT:   RET_ReallyLR642  bb.0:643    successors: %bb.1644    liveins: $q0, $x1645 646    %0:_(<16 x s8>) = COPY $q0647    G_BR %bb.1648 649  bb.1:650    %3:_(<16 x s8>) = G_PHI %0(<16 x s8>), %bb.0651    $q0 = COPY %3(<16 x s8>)652    RET_ReallyLR653...654---655name:             s88656tracksRegLiveness: true657liveins:658body:             |659  ; CHECK-LABEL: name: s88660  ; CHECK: bb.0:661  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)662  ; CHECK-NEXT:   liveins: $x0663  ; CHECK-NEXT: {{  $}}664  ; CHECK-NEXT:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF665  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1666  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s32) = G_AND [[DEF]], [[C]]667  ; CHECK-NEXT:   G_BRCOND [[AND]](s32), %bb.1668  ; CHECK-NEXT:   G_BR %bb.2669  ; CHECK-NEXT: {{  $}}670  ; CHECK-NEXT: bb.1:671  ; CHECK-NEXT:   successors: %bb.3(0x80000000)672  ; CHECK-NEXT: {{  $}}673  ; CHECK-NEXT:   [[DEF1:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF674  ; CHECK-NEXT:   G_BR %bb.3675  ; CHECK-NEXT: {{  $}}676  ; CHECK-NEXT: bb.2:677  ; CHECK-NEXT:   successors: %bb.3(0x80000000)678  ; CHECK-NEXT: {{  $}}679  ; CHECK-NEXT:   [[DEF2:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF680  ; CHECK-NEXT: {{  $}}681  ; CHECK-NEXT: bb.3:682  ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(s64) = G_PHI [[DEF1]](s64), %bb.1, [[DEF2]](s64), %bb.2683  ; CHECK-NEXT:   $x0 = COPY [[PHI]](s64)684  ; CHECK-NEXT:   RET_ReallyLR implicit $x0685  bb.0:686    successors: %bb.1(0x40000000), %bb.2(0x40000000)687    liveins: $x0688    %cond:_(s1) = G_IMPLICIT_DEF689    G_BRCOND %cond(s1), %bb.1690    G_BR %bb.2691  bb.1:692    successors: %bb.3(0x80000000)693    %imp_1:_(s88) = G_IMPLICIT_DEF694    G_BR %bb.3695  bb.2:696    successors: %bb.3(0x80000000)697    %imp_2:_(s88) = G_IMPLICIT_DEF698  bb.3:699    %phi:_(s88) = G_PHI %imp_1:_(s88), %bb.1, %imp_2:_(s88), %bb.2700    %trunc:_(s64) = G_TRUNC %phi701    $x0 = COPY %trunc702    RET_ReallyLR implicit $x0703...704---705name:            v4s64706alignment:       4707tracksRegLiveness: true708body:             |709  ; CHECK-LABEL: name: v4s64710  ; CHECK: bb.0:711  ; CHECK-NEXT:   successors: %bb.1(0x50000000), %bb.2(0x30000000)712  ; CHECK-NEXT:   liveins: $x0, $x1713  ; CHECK-NEXT: {{  $}}714  ; CHECK-NEXT:   %ptr1:_(p0) = COPY $x1715  ; CHECK-NEXT:   %ptr2:_(p0) = COPY $x0716  ; CHECK-NEXT:   [[LOAD:%[0-9]+]]:_(<2 x s64>) = G_LOAD %ptr1(p0) :: (load (<2 x s64>), align 32)717  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 16718  ; CHECK-NEXT:   [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr1, [[C]](s64)719  ; CHECK-NEXT:   [[LOAD1:%[0-9]+]]:_(<2 x s64>) = G_LOAD [[PTR_ADD]](p0) :: (load (<2 x s64>) from unknown-address + 16)720  ; CHECK-NEXT:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF721  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1722  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s32) = G_AND [[DEF]], [[C1]]723  ; CHECK-NEXT:   G_BRCOND [[AND]](s32), %bb.2724  ; CHECK-NEXT:   G_BR %bb.1725  ; CHECK-NEXT: {{  $}}726  ; CHECK-NEXT: bb.1:727  ; CHECK-NEXT:   successors: %bb.2(0x80000000)728  ; CHECK-NEXT: {{  $}}729  ; CHECK-NEXT:   [[LOAD2:%[0-9]+]]:_(<2 x s64>) = G_LOAD %ptr2(p0) :: (load (<2 x s64>), align 32)730  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 16731  ; CHECK-NEXT:   [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr2, [[C2]](s64)732  ; CHECK-NEXT:   [[LOAD3:%[0-9]+]]:_(<2 x s64>) = G_LOAD [[PTR_ADD1]](p0) :: (load (<2 x s64>) from unknown-address + 16)733  ; CHECK-NEXT: {{  $}}734  ; CHECK-NEXT: bb.2:735  ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(<2 x s64>) = G_PHI [[LOAD2]](<2 x s64>), %bb.1, [[LOAD]](<2 x s64>), %bb.0736  ; CHECK-NEXT:   [[PHI1:%[0-9]+]]:_(<2 x s64>) = G_PHI [[LOAD3]](<2 x s64>), %bb.1, [[LOAD1]](<2 x s64>), %bb.0737  ; CHECK-NEXT:   $q0 = COPY [[PHI]](<2 x s64>)738  ; CHECK-NEXT:   $q1 = COPY [[PHI1]](<2 x s64>)739  ; CHECK-NEXT:   RET_ReallyLR implicit $q0, implicit $q1740  bb.0:741    successors: %bb.1(0x50000000), %bb.2(0x30000000)742    liveins: $x0, $x1743 744    %ptr1:_(p0) = COPY $x1745    %ptr2:_(p0) = COPY $x0746    %cond:_(s1) = G_IMPLICIT_DEF747    %val_1:_(<4 x s64>) = G_LOAD %ptr1(p0) :: (load (<4 x s64>))748    G_BRCOND %cond(s1), %bb.2749    G_BR %bb.1750  bb.1:751    %val_2:_(<4 x s64>) = G_LOAD %ptr2(p0) :: (load (<4 x s64>))752  bb.2:753    %phi:_(<4 x s64>) = G_PHI %val_2(<4 x s64>), %bb.1, %val_1(<4 x s64>), %bb.0754    %unmerge_1:_(<2 x s64>), %unmerge_2:_(<2 x s64>) = G_UNMERGE_VALUES %phi(<4 x s64>)755    $q0 = COPY %unmerge_1(<2 x s64>)756    $q1 = COPY %unmerge_2(<2 x s64>)757    RET_ReallyLR implicit $q0, implicit $q1758...759---760name:            v8s32761alignment:       4762tracksRegLiveness: true763body:             |764  ; CHECK-LABEL: name: v8s32765  ; CHECK: bb.0:766  ; CHECK-NEXT:   successors: %bb.1(0x50000000), %bb.2(0x30000000)767  ; CHECK-NEXT:   liveins: $x0, $x1768  ; CHECK-NEXT: {{  $}}769  ; CHECK-NEXT:   [[DEF:%[0-9]+]]:_(<4 x s32>) = G_IMPLICIT_DEF770  ; CHECK-NEXT:   [[DEF1:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF771  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1772  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s32) = G_AND [[DEF1]], [[C]]773  ; CHECK-NEXT:   G_BRCOND [[AND]](s32), %bb.2774  ; CHECK-NEXT:   G_BR %bb.1775  ; CHECK-NEXT: {{  $}}776  ; CHECK-NEXT: bb.1:777  ; CHECK-NEXT:   successors: %bb.2(0x80000000)778  ; CHECK-NEXT: {{  $}}779  ; CHECK-NEXT:   [[DEF2:%[0-9]+]]:_(<4 x s32>) = G_IMPLICIT_DEF780  ; CHECK-NEXT: {{  $}}781  ; CHECK-NEXT: bb.2:782  ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(<4 x s32>) = G_PHI [[DEF2]](<4 x s32>), %bb.1, [[DEF]](<4 x s32>), %bb.0783  ; CHECK-NEXT:   %one:_(s64) = G_CONSTANT i64 1784  ; CHECK-NEXT:   %extract:_(s32) = G_EXTRACT_VECTOR_ELT [[PHI]](<4 x s32>), %one(s64)785  ; CHECK-NEXT:   $w0 = COPY %extract(s32)786  ; CHECK-NEXT:   RET_ReallyLR implicit $w0787  bb.0:788    successors: %bb.1(0x50000000), %bb.2(0x30000000)789    liveins: $x0, $x1790    %cond:_(s1) = G_IMPLICIT_DEF791    %val_1:_(<8 x s32>) = G_IMPLICIT_DEF792    G_BRCOND %cond(s1), %bb.2793    G_BR %bb.1794  bb.1:795    %val_2:_(<8 x s32>) = G_IMPLICIT_DEF796  bb.2:797    %phi:_(<8 x s32>) = G_PHI %val_2(<8 x s32>), %bb.1, %val_1(<8 x s32>), %bb.0798    %one:_(s64) = G_CONSTANT i64 1799    %extract:_(s32) = G_EXTRACT_VECTOR_ELT %phi(<8 x s32>), %one(s64)800    $w0 = COPY %extract801    RET_ReallyLR implicit $w0802...803---804name:            v16s16805alignment:       4806tracksRegLiveness: true807body:             |808  ; CHECK-LABEL: name: v16s16809  ; CHECK: bb.0:810  ; CHECK-NEXT:   successors: %bb.1(0x50000000), %bb.2(0x30000000)811  ; CHECK-NEXT:   liveins: $x0, $x1812  ; CHECK-NEXT: {{  $}}813  ; CHECK-NEXT:   [[DEF:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF814  ; CHECK-NEXT:   [[DEF1:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF815  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1816  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s32) = G_AND [[DEF1]], [[C]]817  ; CHECK-NEXT:   G_BRCOND [[AND]](s32), %bb.2818  ; CHECK-NEXT:   G_BR %bb.1819  ; CHECK-NEXT: {{  $}}820  ; CHECK-NEXT: bb.1:821  ; CHECK-NEXT:   successors: %bb.2(0x80000000)822  ; CHECK-NEXT: {{  $}}823  ; CHECK-NEXT:   [[DEF2:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF824  ; CHECK-NEXT: {{  $}}825  ; CHECK-NEXT: bb.2:826  ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(<8 x s16>) = G_PHI [[DEF2]](<8 x s16>), %bb.1, [[DEF]](<8 x s16>), %bb.0827  ; CHECK-NEXT:   %one:_(s64) = G_CONSTANT i64 1828  ; CHECK-NEXT:   %extract:_(s16) = G_EXTRACT_VECTOR_ELT [[PHI]](<8 x s16>), %one(s64)829  ; CHECK-NEXT:   $h0 = COPY %extract(s16)830  ; CHECK-NEXT:   RET_ReallyLR implicit $h0831  bb.0:832    successors: %bb.1(0x50000000), %bb.2(0x30000000)833    liveins: $x0, $x1834    %cond:_(s1) = G_IMPLICIT_DEF835    %val_1:_(<16 x s16>) = G_IMPLICIT_DEF836    G_BRCOND %cond(s1), %bb.2837    G_BR %bb.1838  bb.1:839    %val_2:_(<16 x s16>) = G_IMPLICIT_DEF840  bb.2:841    %phi:_(<16 x s16>) = G_PHI %val_2(<16 x s16>), %bb.1, %val_1(<16 x s16>), %bb.0842    %one:_(s64) = G_CONSTANT i64 1843    %extract:_(s16) = G_EXTRACT_VECTOR_ELT %phi(<16 x s16>), %one(s64)844    $h0 = COPY %extract845    RET_ReallyLR implicit $h0846...847---848name:            v32s8849alignment:       4850tracksRegLiveness: true851body:             |852  ; CHECK-LABEL: name: v32s8853  ; CHECK: bb.0:854  ; CHECK-NEXT:   successors: %bb.1(0x50000000), %bb.2(0x30000000)855  ; CHECK-NEXT:   liveins: $x0, $x1856  ; CHECK-NEXT: {{  $}}857  ; CHECK-NEXT:   [[DEF:%[0-9]+]]:_(<16 x s8>) = G_IMPLICIT_DEF858  ; CHECK-NEXT:   [[DEF1:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF859  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1860  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s32) = G_AND [[DEF1]], [[C]]861  ; CHECK-NEXT:   G_BRCOND [[AND]](s32), %bb.2862  ; CHECK-NEXT:   G_BR %bb.1863  ; CHECK-NEXT: {{  $}}864  ; CHECK-NEXT: bb.1:865  ; CHECK-NEXT:   successors: %bb.2(0x80000000)866  ; CHECK-NEXT: {{  $}}867  ; CHECK-NEXT:   [[DEF2:%[0-9]+]]:_(<16 x s8>) = G_IMPLICIT_DEF868  ; CHECK-NEXT: {{  $}}869  ; CHECK-NEXT: bb.2:870  ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(<16 x s8>) = G_PHI [[DEF2]](<16 x s8>), %bb.1, [[DEF]](<16 x s8>), %bb.0871  ; CHECK-NEXT:   %one:_(s64) = G_CONSTANT i64 1872  ; CHECK-NEXT:   %extract:_(s8) = G_EXTRACT_VECTOR_ELT [[PHI]](<16 x s8>), %one(s64)873  ; CHECK-NEXT:   $b0 = COPY %extract(s8)874  ; CHECK-NEXT:   RET_ReallyLR implicit $b0875  bb.0:876    successors: %bb.1(0x50000000), %bb.2(0x30000000)877    liveins: $x0, $x1878    %cond:_(s1) = G_IMPLICIT_DEF879    %val_1:_(<32 x s8>) = G_IMPLICIT_DEF880    G_BRCOND %cond(s1), %bb.2881    G_BR %bb.1882  bb.1:883    %val_2:_(<32 x s8>) = G_IMPLICIT_DEF884  bb.2:885    %phi:_(<32 x s8>) = G_PHI %val_2(<32 x s8>), %bb.1, %val_1(<32 x s8>), %bb.0886    %one:_(s64) = G_CONSTANT i64 1887    %extract:_(s8) = G_EXTRACT_VECTOR_ELT %phi(<32 x s8>), %one(s64)888    $b0 = COPY %extract889    RET_ReallyLR implicit $b0890...891---892name:            v4p0893alignment:       4894tracksRegLiveness: true895body:             |896  ; CHECK-LABEL: name: v4p0897  ; CHECK: bb.0:898  ; CHECK-NEXT:   successors: %bb.1(0x50000000), %bb.2(0x30000000)899  ; CHECK-NEXT:   liveins: $x0, $x1900  ; CHECK-NEXT: {{  $}}901  ; CHECK-NEXT:   %ptr1:_(p0) = COPY $x1902  ; CHECK-NEXT:   %ptr2:_(p0) = COPY $x0903  ; CHECK-NEXT:   [[LOAD:%[0-9]+]]:_(<2 x s64>) = G_LOAD %ptr1(p0) :: (load (<2 x s64>), align 32)904  ; CHECK-NEXT:   [[BITCAST:%[0-9]+]]:_(<2 x p0>) = G_BITCAST [[LOAD]](<2 x s64>)905  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 16906  ; CHECK-NEXT:   [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr1, [[C]](s64)907  ; CHECK-NEXT:   [[LOAD1:%[0-9]+]]:_(<2 x s64>) = G_LOAD [[PTR_ADD]](p0) :: (load (<2 x s64>) from unknown-address + 16)908  ; CHECK-NEXT:   [[BITCAST1:%[0-9]+]]:_(<2 x p0>) = G_BITCAST [[LOAD1]](<2 x s64>)909  ; CHECK-NEXT:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF910  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1911  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s32) = G_AND [[DEF]], [[C1]]912  ; CHECK-NEXT:   G_BRCOND [[AND]](s32), %bb.2913  ; CHECK-NEXT:   G_BR %bb.1914  ; CHECK-NEXT: {{  $}}915  ; CHECK-NEXT: bb.1:916  ; CHECK-NEXT:   successors: %bb.2(0x80000000)917  ; CHECK-NEXT: {{  $}}918  ; CHECK-NEXT:   [[LOAD2:%[0-9]+]]:_(<2 x s64>) = G_LOAD %ptr2(p0) :: (load (<2 x s64>), align 32)919  ; CHECK-NEXT:   [[BITCAST2:%[0-9]+]]:_(<2 x p0>) = G_BITCAST [[LOAD2]](<2 x s64>)920  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 16921  ; CHECK-NEXT:   [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr2, [[C2]](s64)922  ; CHECK-NEXT:   [[LOAD3:%[0-9]+]]:_(<2 x s64>) = G_LOAD [[PTR_ADD1]](p0) :: (load (<2 x s64>) from unknown-address + 16)923  ; CHECK-NEXT:   [[BITCAST3:%[0-9]+]]:_(<2 x p0>) = G_BITCAST [[LOAD3]](<2 x s64>)924  ; CHECK-NEXT: {{  $}}925  ; CHECK-NEXT: bb.2:926  ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(<2 x p0>) = G_PHI [[BITCAST2]](<2 x p0>), %bb.1, [[BITCAST]](<2 x p0>), %bb.0927  ; CHECK-NEXT:   [[PHI1:%[0-9]+]]:_(<2 x p0>) = G_PHI [[BITCAST3]](<2 x p0>), %bb.1, [[BITCAST1]](<2 x p0>), %bb.0928  ; CHECK-NEXT:   $q0 = COPY [[PHI]](<2 x p0>)929  ; CHECK-NEXT:   $q1 = COPY [[PHI1]](<2 x p0>)930  ; CHECK-NEXT:   RET_ReallyLR implicit $q0, implicit $q1931  bb.0:932    successors: %bb.1(0x50000000), %bb.2(0x30000000)933    liveins: $x0, $x1934 935    %ptr1:_(p0) = COPY $x1936    %ptr2:_(p0) = COPY $x0937    %cond:_(s1) = G_IMPLICIT_DEF938    %val_1:_(<4 x p0>) = G_LOAD %ptr1(p0) :: (load (<4 x p0>))939    G_BRCOND %cond(s1), %bb.2940    G_BR %bb.1941  bb.1:942    %val_2:_(<4 x p0>) = G_LOAD %ptr2(p0) :: (load (<4 x p0>))943  bb.2:944    %phi:_(<4 x p0>) = G_PHI %val_2(<4 x p0>), %bb.1, %val_1(<4 x p0>), %bb.0945    %unmerge_1:_(<2 x p0>), %unmerge_2:_(<2 x p0>) = G_UNMERGE_VALUES %phi(<4 x p0>)946    $q0 = COPY %unmerge_1(<2 x p0>)947    $q1 = COPY %unmerge_2(<2 x p0>)948    RET_ReallyLR implicit $q0, implicit $q1949