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