brintos

brintos / llvm-project-archived public Read only

0
0
Text · 29.1 KiB · b242c68 Raw
866 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -verify-machineinstrs -mtriple arm64-apple-ios -global-isel -run-pass=aarch64-prelegalizer-combiner -o - %s | FileCheck %s3 4...5---6name:            can_fold_i87tracksRegLiveness: true8body:             |9  ; CHECK-LABEL: name: can_fold_i810  ; CHECK: bb.0.entry:11  ; CHECK-NEXT:   successors: %bb.1(0x00000800), %bb.2(0x7ffff800)12  ; CHECK-NEXT:   liveins: $w0, $w113  ; CHECK-NEXT: {{  $}}14  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w015  ; CHECK-NEXT:   [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY]], 816  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $w117  ; CHECK-NEXT:   [[ASSERT_ZEXT1:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY1]], 818  ; CHECK-NEXT:   [[ADD:%[0-9]+]]:_(s32) = G_ADD [[ASSERT_ZEXT]], [[ASSERT_ZEXT1]]19  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 25620  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s32) = G_AND [[ADD]], [[C]]21  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 022  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[AND]](s32), [[C1]]23  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.224  ; CHECK-NEXT:   G_BR %bb.125  ; CHECK-NEXT: {{  $}}26  ; CHECK-NEXT: bb.1:27  ; CHECK-NEXT:   successors:28  ; CHECK-NEXT: {{  $}}29  ; CHECK-NEXT:   G_TRAP30  ; CHECK-NEXT: {{  $}}31  ; CHECK-NEXT: bb.2:32  ; CHECK-NEXT:   $w0 = COPY [[ADD]](s32)33  ; CHECK-NEXT:   RET_ReallyLR implicit $w034  bb.1.entry:35    successors: %bb.2(0x00000800), %bb.3(0x7ffff800)36    liveins: $w0, $w137 38    %2:_(s32) = COPY $w039    %3:_(s32) = G_ASSERT_ZEXT %2, 840    %0:_(s8) = G_TRUNC %3(s32)41    %4:_(s32) = COPY $w142    %5:_(s32) = G_ASSERT_ZEXT %4, 843    %1:_(s8) = G_TRUNC %5(s32)44    %6:_(s8), %7:_(s1) = G_UADDO %0, %145    G_BRCOND %7(s1), %bb.246    G_BR %bb.347 48  bb.2:49    successors:50 51    G_TRAP52 53  bb.3:54    %8:_(s32) = G_ZEXT %6(s8)55    $w0 = COPY %8(s32)56    RET_ReallyLR implicit $w057 58...59---60name:            can_fold_i16_1_result_used_by_zext61tracksRegLiveness: true62body:             |63  ; CHECK-LABEL: name: can_fold_i16_1_result_used_by_zext64  ; CHECK: bb.0:65  ; CHECK-NEXT:   successors: %bb.1(0x00000800), %bb.2(0x7ffff800)66  ; CHECK-NEXT:   liveins: $w0, $w167  ; CHECK-NEXT: {{  $}}68  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w069  ; CHECK-NEXT:   [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY]], 1670  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $w171  ; CHECK-NEXT:   [[ASSERT_ZEXT1:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY1]], 1672  ; CHECK-NEXT:   [[ADD:%[0-9]+]]:_(s32) = G_ADD [[ASSERT_ZEXT]], [[ASSERT_ZEXT1]]73  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 6553674  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s32) = G_AND [[ADD]], [[C]]75  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 076  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[AND]](s32), [[C1]]77  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.278  ; CHECK-NEXT:   G_BR %bb.179  ; CHECK-NEXT: {{  $}}80  ; CHECK-NEXT: bb.1:81  ; CHECK-NEXT:   successors:82  ; CHECK-NEXT: {{  $}}83  ; CHECK-NEXT:   G_TRAP84  ; CHECK-NEXT: {{  $}}85  ; CHECK-NEXT: bb.2:86  ; CHECK-NEXT:   $w0 = COPY [[ADD]](s32)87  ; CHECK-NEXT:   RET_ReallyLR implicit $w088  bb.1:89    successors: %bb.2(0x00000800), %bb.3(0x7ffff800)90    liveins: $w0, $w191 92    %2:_(s32) = COPY $w093    %3:_(s32) = G_ASSERT_ZEXT %2, 1694    %0:_(s16) = G_TRUNC %3(s32)95    %4:_(s32) = COPY $w196    %5:_(s32) = G_ASSERT_ZEXT %4, 1697    %1:_(s16) = G_TRUNC %5(s32)98    %6:_(s16), %7:_(s1) = G_UADDO %0, %199    G_BRCOND %7(s1), %bb.2100    G_BR %bb.3101 102  bb.2:103    successors:104 105    G_TRAP106 107  bb.3:108    %8:_(s32) = G_ZEXT %6(s16)109    $w0 = COPY %8(s32)110    RET_ReallyLR implicit $w0111 112...113---114name:            can_fold_i16_2_result_used_by_multiple_calls115tracksRegLiveness: true116body:             |117  ; CHECK-LABEL: name: can_fold_i16_2_result_used_by_multiple_calls118  ; CHECK: bb.0:119  ; CHECK-NEXT:   successors: %bb.1(0x00000800), %bb.2(0x7ffff800)120  ; CHECK-NEXT:   liveins: $w0, $w1, $x2121  ; CHECK-NEXT: {{  $}}122  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w0123  ; CHECK-NEXT:   [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY]], 16124  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $w1125  ; CHECK-NEXT:   [[ASSERT_ZEXT1:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY1]], 16126  ; CHECK-NEXT:   [[ADD:%[0-9]+]]:_(s32) = G_ADD [[ASSERT_ZEXT]], [[ASSERT_ZEXT1]]127  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65536128  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s32) = G_AND [[ADD]], [[C]]129  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0130  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[AND]](s32), [[C1]]131  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.2132  ; CHECK-NEXT:   G_BR %bb.1133  ; CHECK-NEXT: {{  $}}134  ; CHECK-NEXT: bb.1:135  ; CHECK-NEXT:   successors:136  ; CHECK-NEXT: {{  $}}137  ; CHECK-NEXT:   G_TRAP138  ; CHECK-NEXT: {{  $}}139  ; CHECK-NEXT: bb.2:140  ; CHECK-NEXT:   liveins: $x2141  ; CHECK-NEXT: {{  $}}142  ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp143  ; CHECK-NEXT:   $w0 = COPY [[ADD]](s32)144  ; CHECK-NEXT:   BLR renamable $x2, implicit-def dead $lr, implicit $sp, implicit $w0145  ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp146  ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp147  ; CHECK-NEXT:   $w0 = COPY [[ADD]](s32)148  ; CHECK-NEXT:   BLR killed renamable $x2, implicit-def dead $lr, implicit $sp, implicit $w0149  ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp150  ; CHECK-NEXT:   RET_ReallyLR151  bb.1:152    successors: %bb.2(0x00000800), %bb.3(0x7ffff800)153    liveins: $w0, $w1, $x2154 155    %2:_(s32) = COPY $w0156    %3:_(s32) = G_ASSERT_ZEXT %2, 16157    %0:_(s16) = G_TRUNC %3(s32)158    %4:_(s32) = COPY $w1159    %5:_(s32) = G_ASSERT_ZEXT %4, 16160    %1:_(s16) = G_TRUNC %5(s32)161    %6:_(s16), %7:_(s1) = G_UADDO %0, %1162    G_BRCOND %7(s1), %bb.2163    G_BR %bb.3164 165  bb.2:166    successors:167 168    G_TRAP169 170  bb.3:171    liveins: $x2172 173    ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp174    %8:_(s32) = G_ANYEXT %6(s16)175    $w0 = COPY %8(s32)176    BLR renamable $x2, implicit-def dead $lr, implicit $sp, implicit $w0177    ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp178    ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp179    $w0 = COPY %8(s32)180    BLR killed renamable $x2, implicit-def dead $lr, implicit $sp, implicit $w0181    ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp182    RET_ReallyLR183 184...185---186name:            can_fold_i16_3_result_used_by_anyext187tracksRegLiveness: true188body:             |189  ; CHECK-LABEL: name: can_fold_i16_3_result_used_by_anyext190  ; CHECK: bb.0:191  ; CHECK-NEXT:   successors: %bb.1(0x00000800), %bb.2(0x7ffff800)192  ; CHECK-NEXT:   liveins: $w0, $w1193  ; CHECK-NEXT: {{  $}}194  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w0195  ; CHECK-NEXT:   [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY]], 16196  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $w1197  ; CHECK-NEXT:   [[ASSERT_ZEXT1:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY1]], 16198  ; CHECK-NEXT:   [[ADD:%[0-9]+]]:_(s32) = G_ADD [[ASSERT_ZEXT]], [[ASSERT_ZEXT1]]199  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65536200  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s32) = G_AND [[ADD]], [[C]]201  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0202  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[AND]](s32), [[C1]]203  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.2204  ; CHECK-NEXT:   G_BR %bb.1205  ; CHECK-NEXT: {{  $}}206  ; CHECK-NEXT: bb.1:207  ; CHECK-NEXT:   successors:208  ; CHECK-NEXT: {{  $}}209  ; CHECK-NEXT:   G_TRAP210  ; CHECK-NEXT: {{  $}}211  ; CHECK-NEXT: bb.2:212  ; CHECK-NEXT:   $w0 = COPY [[ADD]](s32)213  ; CHECK-NEXT:   RET_ReallyLR implicit $w0214  bb.1:215    successors: %bb.2(0x00000800), %bb.3(0x7ffff800)216    liveins: $w0, $w1217 218    %2:_(s32) = COPY $w0219    %3:_(s32) = G_ASSERT_ZEXT %2, 16220    %0:_(s16) = G_TRUNC %3(s32)221    %4:_(s32) = COPY $w1222    %5:_(s32) = G_ASSERT_ZEXT %4, 16223    %1:_(s16) = G_TRUNC %5(s32)224    %6:_(s16), %7:_(s1) = G_UADDO %0, %1225    G_BRCOND %7(s1), %bb.2226    G_BR %bb.3227 228  bb.2:229    successors:230 231    G_TRAP232 233  bb.3:234    %8:_(s32) = G_ANYEXT %6(s16)235    $w0 = COPY %8(s32)236    RET_ReallyLR implicit $w0237 238...239---240name:            can_fold_i16_4_cond_dbg_user241tracksRegLiveness: true242body:             |243  ; CHECK-LABEL: name: can_fold_i16_4_cond_dbg_user244  ; CHECK: bb.0:245  ; CHECK-NEXT:   successors: %bb.1(0x00000800), %bb.2(0x7ffff800)246  ; CHECK-NEXT:   liveins: $w0, $w1247  ; CHECK-NEXT: {{  $}}248  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w0249  ; CHECK-NEXT:   [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY]], 16250  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $w1251  ; CHECK-NEXT:   [[ASSERT_ZEXT1:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY1]], 16252  ; CHECK-NEXT:   [[ADD:%[0-9]+]]:_(s32) = G_ADD [[ASSERT_ZEXT]], [[ASSERT_ZEXT1]]253  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65536254  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s32) = G_AND [[ADD]], [[C]]255  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0256  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[AND]](s32), [[C1]]257  ; CHECK-NEXT:   DBG_VALUE [[ICMP]](s1)258  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.2259  ; CHECK-NEXT:   G_BR %bb.1260  ; CHECK-NEXT: {{  $}}261  ; CHECK-NEXT: bb.1:262  ; CHECK-NEXT:   successors:263  ; CHECK-NEXT: {{  $}}264  ; CHECK-NEXT:   G_TRAP265  ; CHECK-NEXT: {{  $}}266  ; CHECK-NEXT: bb.2:267  ; CHECK-NEXT:   $w0 = COPY [[ADD]](s32)268  ; CHECK-NEXT:   RET_ReallyLR implicit $w0269  bb.1:270    successors: %bb.2(0x00000800), %bb.3(0x7ffff800)271    liveins: $w0, $w1272 273    %2:_(s32) = COPY $w0274    %3:_(s32) = G_ASSERT_ZEXT %2, 16275    %0:_(s16) = G_TRUNC %3(s32)276    %4:_(s32) = COPY $w1277    %5:_(s32) = G_ASSERT_ZEXT %4, 16278    %1:_(s16) = G_TRUNC %5(s32)279    %6:_(s16), %7:_(s1) = G_UADDO %0, %1280    DBG_VALUE %7(s1)281    G_BRCOND %7(s1), %bb.2282    G_BR %bb.3283 284  bb.2:285    successors:286 287    G_TRAP288 289  bb.3:290    %8:_(s32) = G_ZEXT %6(s16)291    $w0 = COPY %8(s32)292    RET_ReallyLR implicit $w0293 294...295---296name:            can_fold_i16_5_result_dbg_user297tracksRegLiveness: true298body:             |299  ; CHECK-LABEL: name: can_fold_i16_5_result_dbg_user300  ; CHECK: bb.0:301  ; CHECK-NEXT:   successors: %bb.1(0x00000800), %bb.2(0x7ffff800)302  ; CHECK-NEXT:   liveins: $w0, $w1303  ; CHECK-NEXT: {{  $}}304  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w0305  ; CHECK-NEXT:   [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY]], 16306  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $w1307  ; CHECK-NEXT:   [[ASSERT_ZEXT1:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY1]], 16308  ; CHECK-NEXT:   [[ADD:%[0-9]+]]:_(s32) = G_ADD [[ASSERT_ZEXT]], [[ASSERT_ZEXT1]]309  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65536310  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s32) = G_AND [[ADD]], [[C]]311  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0312  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[AND]](s32), [[C1]]313  ; CHECK-NEXT:   DBG_VALUE %6:_(s16)314  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.2315  ; CHECK-NEXT:   G_BR %bb.1316  ; CHECK-NEXT: {{  $}}317  ; CHECK-NEXT: bb.1:318  ; CHECK-NEXT:   successors:319  ; CHECK-NEXT: {{  $}}320  ; CHECK-NEXT:   G_TRAP321  ; CHECK-NEXT: {{  $}}322  ; CHECK-NEXT: bb.2:323  ; CHECK-NEXT:   $w0 = COPY [[ADD]](s32)324  ; CHECK-NEXT:   RET_ReallyLR implicit $w0325  bb.1:326    successors: %bb.2(0x00000800), %bb.3(0x7ffff800)327    liveins: $w0, $w1328 329    %2:_(s32) = COPY $w0330    %3:_(s32) = G_ASSERT_ZEXT %2, 16331    %0:_(s16) = G_TRUNC %3(s32)332    %4:_(s32) = COPY $w1333    %5:_(s32) = G_ASSERT_ZEXT %4, 16334    %1:_(s16) = G_TRUNC %5(s32)335    %6:_(s16), %7:_(s1) = G_UADDO %0, %1336    DBG_VALUE %6(s16)337    G_BRCOND %7(s1), %bb.2338    G_BR %bb.3339 340  bb.2:341    successors:342 343    G_TRAP344 345  bb.3:346    %8:_(s32) = G_ZEXT %6(s16)347    $w0 = COPY %8(s32)348    RET_ReallyLR implicit $w0349 350...351---352name:            cannot_fold_1_result_used_before_branch353tracksRegLiveness: true354body:             |355  ; CHECK-LABEL: name: cannot_fold_1_result_used_before_branch356  ; CHECK: bb.0:357  ; CHECK-NEXT:   successors: %bb.1(0x00000800), %bb.2(0x7ffff800)358  ; CHECK-NEXT:   liveins: $w0, $w1, $x2359  ; CHECK-NEXT: {{  $}}360  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w0361  ; CHECK-NEXT:   [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY]], 16362  ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_ZEXT]](s32)363  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $w1364  ; CHECK-NEXT:   [[ASSERT_ZEXT1:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY1]], 16365  ; CHECK-NEXT:   [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_ZEXT1]](s32)366  ; CHECK-NEXT:   [[UADDO:%[0-9]+]]:_(s16), [[UADDO1:%[0-9]+]]:_(s1) = G_UADDO [[TRUNC]], [[TRUNC1]]367  ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp368  ; CHECK-NEXT:   [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[UADDO]](s16)369  ; CHECK-NEXT:   $w0 = COPY [[ANYEXT]](s32)370  ; CHECK-NEXT:   BLR renamable $x2, implicit-def dead $lr, implicit $sp, implicit $w0371  ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp372  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 true373  ; CHECK-NEXT:   [[XOR:%[0-9]+]]:_(s1) = G_XOR [[UADDO1]], [[C]]374  ; CHECK-NEXT:   G_BRCOND [[XOR]](s1), %bb.2375  ; CHECK-NEXT:   G_BR %bb.1376  ; CHECK-NEXT: {{  $}}377  ; CHECK-NEXT: bb.1:378  ; CHECK-NEXT:   successors:379  ; CHECK-NEXT: {{  $}}380  ; CHECK-NEXT:   G_TRAP381  ; CHECK-NEXT: {{  $}}382  ; CHECK-NEXT: bb.2:383  ; CHECK-NEXT:   liveins: $x2384  ; CHECK-NEXT: {{  $}}385  ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp386  ; CHECK-NEXT:   [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[UADDO]](s16)387  ; CHECK-NEXT:   $w0 = COPY [[ANYEXT1]](s32)388  ; CHECK-NEXT:   BLR renamable $x2, implicit-def dead $lr, implicit $sp, implicit $w0389  ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp390  ; CHECK-NEXT:   RET_ReallyLR391  bb.1:392    successors: %bb.2(0x00000800), %bb.3(0x7ffff800)393    liveins: $w0, $w1, $x2394 395    %2:_(s32) = COPY $w0396    %3:_(s32) = G_ASSERT_ZEXT %2, 16397    %0:_(s16) = G_TRUNC %3(s32)398    %4:_(s32) = COPY $w1399    %5:_(s32) = G_ASSERT_ZEXT %4, 16400    %1:_(s16) = G_TRUNC %5(s32)401    %6:_(s16), %7:_(s1) = G_UADDO %0, %1402    ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp403    %8:_(s32) = G_ANYEXT %6(s16)404    $w0 = COPY %8(s32)405    BLR renamable $x2, implicit-def dead $lr, implicit $sp, implicit $w0406    ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp407    G_BRCOND %7(s1), %bb.2408    G_BR %bb.3409 410  bb.2:411    successors:412 413    G_TRAP414 415  bb.3:416    liveins: $x2417 418    ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp419    %9:_(s32) = G_ANYEXT %6(s16)420    $w0 = COPY %9(s32)421    BLR renamable $x2, implicit-def dead $lr, implicit $sp, implicit $w0422    ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp423    RET_ReallyLR424 425...426---427name:            cannot_fold_2_result_used_in_fail_block428tracksRegLiveness: true429body:             |430  ; CHECK-LABEL: name: cannot_fold_2_result_used_in_fail_block431  ; CHECK: bb.0:432  ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)433  ; CHECK-NEXT:   liveins: $w0, $w1434  ; CHECK-NEXT: {{  $}}435  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w0436  ; CHECK-NEXT:   [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY]], 16437  ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_ZEXT]](s32)438  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $w1439  ; CHECK-NEXT:   [[ASSERT_ZEXT1:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY1]], 16440  ; CHECK-NEXT:   [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_ZEXT1]](s32)441  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 10442  ; CHECK-NEXT:   [[UADDO:%[0-9]+]]:_(s16), [[UADDO1:%[0-9]+]]:_(s1) = G_UADDO [[TRUNC]], [[TRUNC1]]443  ; CHECK-NEXT:   [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[UADDO]](s16)444  ; CHECK-NEXT:   G_BRCOND [[UADDO1]](s1), %bb.2445  ; CHECK-NEXT:   G_BR %bb.1446  ; CHECK-NEXT: {{  $}}447  ; CHECK-NEXT: bb.1:448  ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(s32) = G_PHI [[C]](s32), %bb.2, [[ANYEXT]](s32), %bb.0449  ; CHECK-NEXT:   $w0 = COPY [[PHI]](s32)450  ; CHECK-NEXT:   RET_ReallyLR implicit $w0451  ; CHECK-NEXT: {{  $}}452  ; CHECK-NEXT: bb.2:453  ; CHECK-NEXT:   successors: %bb.1(0x80000000)454  ; CHECK-NEXT: {{  $}}455  ; CHECK-NEXT:   [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[UADDO]](s16)456  ; CHECK-NEXT:   $w0 = COPY [[ANYEXT1]](s32)457  ; CHECK-NEXT:   G_BR %bb.1458  bb.1:459    liveins: $w0, $w1460 461    %2:_(s32) = COPY $w0462    %3:_(s32) = G_ASSERT_ZEXT %2, 16463    %0:_(s16) = G_TRUNC %3(s32)464    %4:_(s32) = COPY $w1465    %5:_(s32) = G_ASSERT_ZEXT %4, 16466    %1:_(s16) = G_TRUNC %5(s32)467    %11:_(s16) = G_CONSTANT i16 10468    %6:_(s16), %7:_(s1) = G_UADDO %0, %1469    G_BRCOND %7(s1), %bb.3470    G_BR %bb.2471 472  bb.2:473    %9:_(s16) = G_PHI %11(s16), %bb.3, %6(s16), %bb.1474    %10:_(s32) = G_ANYEXT %9(s16)475    $w0 = COPY %10(s32)476    RET_ReallyLR implicit $w0477 478  bb.3:479    %8:_(s32) = G_ANYEXT %6(s16)480    $w0 = COPY %8(s32)481    G_BR %bb.2482 483...484---485name:            cannot_fold_3_result_used_in_successor_before_fail_block486tracksRegLiveness: true487body:             |488  ; CHECK-LABEL: name: cannot_fold_3_result_used_in_successor_before_fail_block489  ; CHECK: bb.0:490  ; CHECK-NEXT:   successors: %bb.2(0x00000800), %bb.3(0x7ffff800)491  ; CHECK-NEXT:   liveins: $w0, $w1, $x2492  ; CHECK-NEXT: {{  $}}493  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w0494  ; CHECK-NEXT:   [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY]], 16495  ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_ZEXT]](s32)496  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $w1497  ; CHECK-NEXT:   [[ASSERT_ZEXT1:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY1]], 16498  ; CHECK-NEXT:   [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_ZEXT1]](s32)499  ; CHECK-NEXT:   [[UADDO:%[0-9]+]]:_(s16), [[UADDO1:%[0-9]+]]:_(s1) = G_UADDO [[TRUNC]], [[TRUNC1]]500  ; CHECK-NEXT:   G_BR %bb.1501  ; CHECK-NEXT: {{  $}}502  ; CHECK-NEXT: bb.1:503  ; CHECK-NEXT:   successors: %bb.2(0x00000800), %bb.3(0x7ffff800)504  ; CHECK-NEXT:   liveins: $x2505  ; CHECK-NEXT: {{  $}}506  ; CHECK-NEXT:   [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[UADDO]](s16)507  ; CHECK-NEXT:   $w0 = COPY [[ANYEXT]](s32)508  ; CHECK-NEXT:   BLR renamable $x2, implicit-def dead $lr, implicit $sp, implicit $w0509  ; CHECK-NEXT:   G_BRCOND [[UADDO1]](s1), %bb.2510  ; CHECK-NEXT:   G_BR %bb.3511  ; CHECK-NEXT: {{  $}}512  ; CHECK-NEXT: bb.2:513  ; CHECK-NEXT:   successors:514  ; CHECK-NEXT: {{  $}}515  ; CHECK-NEXT:   G_TRAP516  ; CHECK-NEXT: {{  $}}517  ; CHECK-NEXT: bb.3:518  ; CHECK-NEXT:   [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[UADDO]](s16)519  ; CHECK-NEXT:   $w0 = COPY [[ZEXT]](s32)520  ; CHECK-NEXT:   RET_ReallyLR implicit $w0521  bb.1:522    successors: %bb.2(0x00000800), %bb.3(0x7ffff800)523    liveins: $w0, $w1, $x2524 525    %2:_(s32) = COPY $w0526    %3:_(s32) = G_ASSERT_ZEXT %2, 16527    %0:_(s16) = G_TRUNC %3(s32)528    %4:_(s32) = COPY $w1529    %5:_(s32) = G_ASSERT_ZEXT %4, 16530    %1:_(s16) = G_TRUNC %5(s32)531    %6:_(s16), %7:_(s1) = G_UADDO %0, %1532    G_BR %bb.4533 534  bb.4:535    liveins: $x2536    successors: %bb.2(0x00000800), %bb.3(0x7ffff800)537 538    %8:_(s32) = G_ANYEXT %6(s16)539    $w0 = COPY %8(s32)540    BLR renamable $x2, implicit-def dead $lr, implicit $sp, implicit $w0541    G_BRCOND %7(s1), %bb.2542    G_BR %bb.3543 544  bb.2:545    successors:546 547    G_TRAP548 549  bb.3:550    %9:_(s32) = G_ZEXT %6(s16)551    $w0 = COPY %9(s32)552    RET_ReallyLR implicit $w0553 554...555---556name:            cannot_fold_i8_trunc_i557tracksRegLiveness: true558body:             |559  ; CHECK-LABEL: name: cannot_fold_i8_trunc_i560  ; CHECK: bb.0:561  ; CHECK-NEXT:   successors: %bb.1(0x00000800), %bb.2(0x7ffff800)562  ; CHECK-NEXT:   liveins: $w0, $w1563  ; CHECK-NEXT: {{  $}}564  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w0565  ; CHECK-NEXT:   [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY]], 16566  ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_ZEXT]](s32)567  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $w1568  ; CHECK-NEXT:   [[ASSERT_ZEXT1:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY1]], 8569  ; CHECK-NEXT:   [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[ASSERT_ZEXT1]](s32)570  ; CHECK-NEXT:   [[TRUNC2:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC]](s16)571  ; CHECK-NEXT:   [[UADDO:%[0-9]+]]:_(s8), [[UADDO1:%[0-9]+]]:_(s1) = G_UADDO [[TRUNC2]], [[TRUNC1]]572  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 true573  ; CHECK-NEXT:   [[XOR:%[0-9]+]]:_(s1) = G_XOR [[UADDO1]], [[C]]574  ; CHECK-NEXT:   G_BRCOND [[XOR]](s1), %bb.2575  ; CHECK-NEXT:   G_BR %bb.1576  ; CHECK-NEXT: {{  $}}577  ; CHECK-NEXT: bb.1:578  ; CHECK-NEXT:   successors:579  ; CHECK-NEXT: {{  $}}580  ; CHECK-NEXT:   G_TRAP581  ; CHECK-NEXT: {{  $}}582  ; CHECK-NEXT: bb.2:583  ; CHECK-NEXT:   [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[UADDO]](s8)584  ; CHECK-NEXT:   $w0 = COPY [[ZEXT]](s32)585  ; CHECK-NEXT:   RET_ReallyLR implicit $w0586  bb.1:587    successors: %bb.2(0x00000800), %bb.3(0x7ffff800)588    liveins: $w0, $w1589 590    %2:_(s32) = COPY $w0591    %3:_(s32) = G_ASSERT_ZEXT %2, 16592    %0:_(s16) = G_TRUNC %3(s32)593    %4:_(s32) = COPY $w1594    %5:_(s32) = G_ASSERT_ZEXT %4, 8595    %1:_(s8) = G_TRUNC %5(s32)596    %6:_(s8) = G_TRUNC %0(s16)597    %7:_(s8), %8:_(s1) = G_UADDO %6, %1598    G_BRCOND %8(s1), %bb.2599    G_BR %bb.3600 601  bb.2:602    successors:603 604    G_TRAP605 606  bb.3:607    %9:_(s32) = G_ZEXT %7(s8)608    $w0 = COPY %9(s32)609    RET_ReallyLR implicit $w0610 611...612---613name:            cannot_fold_i8_trunc_b614tracksRegLiveness: true615body:             |616  ; CHECK-LABEL: name: cannot_fold_i8_trunc_b617  ; CHECK: bb.0:618  ; CHECK-NEXT:   successors: %bb.1(0x00000800), %bb.2(0x7ffff800)619  ; CHECK-NEXT:   liveins: $w0, $w1620  ; CHECK-NEXT: {{  $}}621  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w0622  ; CHECK-NEXT:   [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY]], 8623  ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[ASSERT_ZEXT]](s32)624  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $w1625  ; CHECK-NEXT:   [[ASSERT_ZEXT1:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY1]], 16626  ; CHECK-NEXT:   [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_ZEXT1]](s32)627  ; CHECK-NEXT:   [[TRUNC2:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC1]](s16)628  ; CHECK-NEXT:   [[UADDO:%[0-9]+]]:_(s8), [[UADDO1:%[0-9]+]]:_(s1) = G_UADDO [[TRUNC]], [[TRUNC2]]629  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 true630  ; CHECK-NEXT:   [[XOR:%[0-9]+]]:_(s1) = G_XOR [[UADDO1]], [[C]]631  ; CHECK-NEXT:   G_BRCOND [[XOR]](s1), %bb.2632  ; CHECK-NEXT:   G_BR %bb.1633  ; CHECK-NEXT: {{  $}}634  ; CHECK-NEXT: bb.1:635  ; CHECK-NEXT:   successors:636  ; CHECK-NEXT: {{  $}}637  ; CHECK-NEXT:   G_TRAP638  ; CHECK-NEXT: {{  $}}639  ; CHECK-NEXT: bb.2:640  ; CHECK-NEXT:   [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[UADDO]](s8)641  ; CHECK-NEXT:   $w0 = COPY [[ZEXT]](s32)642  ; CHECK-NEXT:   RET_ReallyLR implicit $w0643  bb.1:644    successors: %bb.2(0x00000800), %bb.3(0x7ffff800)645    liveins: $w0, $w1646 647    %2:_(s32) = COPY $w0648    %3:_(s32) = G_ASSERT_ZEXT %2, 8649    %0:_(s8) = G_TRUNC %3(s32)650    %4:_(s32) = COPY $w1651    %5:_(s32) = G_ASSERT_ZEXT %4, 16652    %1:_(s16) = G_TRUNC %5(s32)653    %6:_(s8) = G_TRUNC %1(s16)654    %7:_(s8), %8:_(s1) = G_UADDO %0, %6655    G_BRCOND %8(s1), %bb.2656    G_BR %bb.3657 658  bb.2:659    successors:660 661    G_TRAP662 663  bb.3:664    %9:_(s32) = G_ZEXT %7(s8)665    $w0 = COPY %9(s32)666    RET_ReallyLR implicit $w0667 668...669---670name:            cannot_fold_i8_trunc_both671tracksRegLiveness: true672body:             |673  ; CHECK-LABEL: name: cannot_fold_i8_trunc_both674  ; CHECK: bb.0:675  ; CHECK-NEXT:   successors: %bb.1(0x00000800), %bb.2(0x7ffff800)676  ; CHECK-NEXT:   liveins: $w0, $w1677  ; CHECK-NEXT: {{  $}}678  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w0679  ; CHECK-NEXT:   [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY]], 16680  ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_ZEXT]](s32)681  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $w1682  ; CHECK-NEXT:   [[ASSERT_ZEXT1:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY1]], 16683  ; CHECK-NEXT:   [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_ZEXT1]](s32)684  ; CHECK-NEXT:   [[TRUNC2:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC]](s16)685  ; CHECK-NEXT:   [[TRUNC3:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC1]](s16)686  ; CHECK-NEXT:   [[UADDO:%[0-9]+]]:_(s8), [[UADDO1:%[0-9]+]]:_(s1) = G_UADDO [[TRUNC2]], [[TRUNC3]]687  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 true688  ; CHECK-NEXT:   [[XOR:%[0-9]+]]:_(s1) = G_XOR [[UADDO1]], [[C]]689  ; CHECK-NEXT:   G_BRCOND [[XOR]](s1), %bb.2690  ; CHECK-NEXT:   G_BR %bb.1691  ; CHECK-NEXT: {{  $}}692  ; CHECK-NEXT: bb.1:693  ; CHECK-NEXT:   successors:694  ; CHECK-NEXT: {{  $}}695  ; CHECK-NEXT:   G_TRAP696  ; CHECK-NEXT: {{  $}}697  ; CHECK-NEXT: bb.2:698  ; CHECK-NEXT:   [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[UADDO]](s8)699  ; CHECK-NEXT:   $w0 = COPY [[ZEXT]](s32)700  ; CHECK-NEXT:   RET_ReallyLR implicit $w0701  bb.1:702    successors: %bb.2(0x00000800), %bb.3(0x7ffff800)703    liveins: $w0, $w1704 705    %2:_(s32) = COPY $w0706    %3:_(s32) = G_ASSERT_ZEXT %2, 16707    %0:_(s16) = G_TRUNC %3(s32)708    %4:_(s32) = COPY $w1709    %5:_(s32) = G_ASSERT_ZEXT %4, 16710    %1:_(s16) = G_TRUNC %5(s32)711    %6:_(s8) = G_TRUNC %0(s16)712    %7:_(s8) = G_TRUNC %1(s16)713    %8:_(s8), %9:_(s1) = G_UADDO %6, %7714    G_BRCOND %9(s1), %bb.2715    G_BR %bb.3716 717  bb.2:718    successors:719 720    G_TRAP721 722  bb.3:723    %10:_(s32) = G_ZEXT %8(s8)724    $w0 = COPY %10(s32)725    RET_ReallyLR implicit $w0726 727...728---729name:            cannot_fold_overflow_status_used_in_select730tracksRegLiveness: true731body:             |732  bb.1:733    liveins: $w0, $w1734 735    ; CHECK-LABEL: name: cannot_fold_overflow_status_used_in_select736    ; CHECK: liveins: $w0, $w1737    ; CHECK-NEXT: {{  $}}738    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0739    ; CHECK-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY]], 16740    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_ZEXT]](s32)741    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1742    ; CHECK-NEXT: [[ASSERT_ZEXT1:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY1]], 16743    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_ZEXT1]](s32)744    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 10745    ; CHECK-NEXT: [[UADDO:%[0-9]+]]:_(s16), [[UADDO1:%[0-9]+]]:_(s1) = G_UADDO [[TRUNC]], [[TRUNC1]]746    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[UADDO1]](s1), [[C]], [[UADDO]]747    ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[SELECT]](s16)748    ; CHECK-NEXT: $w0 = COPY [[ZEXT]](s32)749    ; CHECK-NEXT: RET_ReallyLR implicit $w0750    %2:_(s32) = COPY $w0751    %3:_(s32) = G_ASSERT_ZEXT %2, 16752    %0:_(s16) = G_TRUNC %3(s32)753    %4:_(s32) = COPY $w1754    %5:_(s32) = G_ASSERT_ZEXT %4, 16755    %1:_(s16) = G_TRUNC %5(s32)756    %9:_(s16) = G_CONSTANT i16 10757    %6:_(s16), %7:_(s1) = G_UADDO %0, %1758    %8:_(s16) = G_SELECT %7(s1), %9, %6759    %10:_(s32) = G_ZEXT %8(s16)760    $w0 = COPY %10(s32)761    RET_ReallyLR implicit $w0762 763...764---765name:            cannot_fold_i16_inputs_not_assert_zext766tracksRegLiveness: true767body:             |768  ; CHECK-LABEL: name: cannot_fold_i16_inputs_not_assert_zext769  ; CHECK: bb.0:770  ; CHECK-NEXT:   successors: %bb.1(0x00000800), %bb.2(0x7ffff800)771  ; CHECK-NEXT:   liveins: $w0, $w1772  ; CHECK-NEXT: {{  $}}773  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w0774  ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)775  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $w1776  ; CHECK-NEXT:   [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)777  ; CHECK-NEXT:   [[UADDO:%[0-9]+]]:_(s16), [[UADDO1:%[0-9]+]]:_(s1) = G_UADDO [[TRUNC]], [[TRUNC1]]778  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 true779  ; CHECK-NEXT:   [[XOR:%[0-9]+]]:_(s1) = G_XOR [[UADDO1]], [[C]]780  ; CHECK-NEXT:   G_BRCOND [[XOR]](s1), %bb.2781  ; CHECK-NEXT:   G_BR %bb.1782  ; CHECK-NEXT: {{  $}}783  ; CHECK-NEXT: bb.1:784  ; CHECK-NEXT:   successors:785  ; CHECK-NEXT: {{  $}}786  ; CHECK-NEXT:   G_TRAP787  ; CHECK-NEXT: {{  $}}788  ; CHECK-NEXT: bb.2:789  ; CHECK-NEXT:   [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[UADDO]](s16)790  ; CHECK-NEXT:   $w0 = COPY [[ANYEXT]](s32)791  ; CHECK-NEXT:   RET_ReallyLR implicit $w0792  bb.1:793    successors: %bb.2(0x00000800), %bb.3(0x7ffff800)794    liveins: $w0, $w1795 796    %2:_(s32) = COPY $w0797    %0:_(s16) = G_TRUNC %2(s32)798    %3:_(s32) = COPY $w1799    %1:_(s16) = G_TRUNC %3(s32)800    %4:_(s16), %5:_(s1) = G_UADDO %0, %1801    G_BRCOND %5(s1), %bb.2802    G_BR %bb.3803 804  bb.2:805    successors:806 807    G_TRAP808 809  bb.3:810    %6:_(s32) = G_ANYEXT %4(s16)811    $w0 = COPY %6(s32)812    RET_ReallyLR implicit $w0813 814...815---816name:            cannot_fold_branch_to_use_on_overflow817tracksRegLiveness: true818body:             |819  ; CHECK-LABEL: name: cannot_fold_branch_to_use_on_overflow820  ; CHECK: bb.0:821  ; CHECK-NEXT:   successors: %bb.1(0x7ffff800), %bb.2(0x00000800)822  ; CHECK-NEXT:   liveins: $w0, $w1823  ; CHECK-NEXT: {{  $}}824  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w0825  ; CHECK-NEXT:   [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY]], 16826  ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_ZEXT]](s32)827  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $w1828  ; CHECK-NEXT:   [[ASSERT_ZEXT1:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY1]], 16829  ; CHECK-NEXT:   [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_ZEXT1]](s32)830  ; CHECK-NEXT:   [[UADDO:%[0-9]+]]:_(s16), [[UADDO1:%[0-9]+]]:_(s1) = G_UADDO [[TRUNC]], [[TRUNC1]]831  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 true832  ; CHECK-NEXT:   [[XOR:%[0-9]+]]:_(s1) = G_XOR [[UADDO1]], [[C]]833  ; CHECK-NEXT:   G_BRCOND [[XOR]](s1), %bb.2834  ; CHECK-NEXT:   G_BR %bb.1835  ; CHECK-NEXT: {{  $}}836  ; CHECK-NEXT: bb.1:837  ; CHECK-NEXT:   [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[UADDO]](s16)838  ; CHECK-NEXT:   $w0 = COPY [[ZEXT]](s32)839  ; CHECK-NEXT:   RET_ReallyLR implicit $w0840  ; CHECK-NEXT: {{  $}}841  ; CHECK-NEXT: bb.2:842  ; CHECK-NEXT:   G_TRAP843  bb.1:844    successors: %bb.2(0x7ffff800), %bb.3(0x00000800)845    liveins: $w0, $w1846 847    %2:_(s32) = COPY $w0848    %3:_(s32) = G_ASSERT_ZEXT %2, 16849    %0:_(s16) = G_TRUNC %3(s32)850    %4:_(s32) = COPY $w1851    %5:_(s32) = G_ASSERT_ZEXT %4, 16852    %1:_(s16) = G_TRUNC %5(s32)853    %6:_(s16), %7:_(s1) = G_UADDO %0, %1854    G_BRCOND %7(s1), %bb.2855    G_BR %bb.3856 857  bb.2:858    %8:_(s32) = G_ZEXT %6(s16)859    $w0 = COPY %8(s32)860    RET_ReallyLR implicit $w0861 862  bb.3:863    G_TRAP864 865...866