645 lines · plain
1# RUN: llc -mtriple=x86_64-unknown-linux-gnu -run-pass=print-machine-cycles -o - %s 2>&1 | FileCheck %s --check-prefixes=LEGACY,CHECK2 3# RUN: llc -mtriple=x86_64-unknown-linux-gnu -passes="machine-function(print,print<machine-cycles>)" -o - %s 2>&1 | FileCheck %s --check-prefixes=NPM,CHECK4 5...6---7# LEGACY-LABEL: MachineCycleInfo for function: empty8# NPM-LABEL: name: empty9name: empty10alignment: 1611tracksRegLiveness: true12frameInfo:13 maxAlignment: 114machineFunctionInfo: {}15body: |16 bb.0:17 RET6418 19...20---21# LEGACY-LABEL: MachineCycleInfo for function: simple22# NPM-LABEL: name: simple23# CHECK: depth=1: entries(bb.1)24name: simple25alignment: 1626tracksRegLiveness: true27registers:28 - { id: 0, class: gr8 }29frameInfo:30 maxAlignment: 131machineFunctionInfo: {}32body: |33 bb.0:34 JMP_1 %bb.135 36 bb.1:37 %0:gr8 = IMPLICIT_DEF38 TEST8ri %0, 1, implicit-def $eflags39 JCC_1 %bb.1, 5, implicit $eflags40 JMP_1 %bb.241 42 bb.2:43 RET6444 45...46---47# LEGACY-LABEL: MachineCycleInfo for function: two_latches48# NPM-LABEL: name: two_latches49# CHECK: depth=1: entries(bb.1) bb.250name: two_latches51alignment: 1652tracksRegLiveness: true53registers:54 - { id: 0, class: gr8 }55 - { id: 1, class: gr8 }56frameInfo:57 maxAlignment: 158machineFunctionInfo: {}59body: |60 bb.0:61 JMP_1 %bb.162 63 bb.1:64 %0:gr8 = IMPLICIT_DEF65 TEST8ri %0, 1, implicit-def $eflags66 JCC_1 %bb.1, 5, implicit $eflags67 JMP_1 %bb.268 69 bb.2:70 %1:gr8 = IMPLICIT_DEF71 TEST8ri %1, 1, implicit-def $eflags72 JCC_1 %bb.3, 5, implicit $eflags73 JMP_1 %bb.174 75 bb.3:76 RET6477 78...79---80# LEGACY-LABEL: MachineCycleInfo for function: nested_simple81# NPM-LABEL: name: nested_simple82# CHECK: depth=1: entries(bb.1) bb.3 bb.283# CHECK: depth=2: entries(bb.2)84name: nested_simple85alignment: 1686tracksRegLiveness: true87registers:88 - { id: 0, class: gr8 }89 - { id: 1, class: gr8 }90frameInfo:91 maxAlignment: 192machineFunctionInfo: {}93body: |94 bb.0:95 JMP_1 %bb.196 97 bb.1:98 JMP_1 %bb.299 100 bb.2:101 %0:gr8 = IMPLICIT_DEF102 TEST8ri %0, 1, implicit-def $eflags103 JCC_1 %bb.2, 5, implicit $eflags104 JMP_1 %bb.3105 106 bb.3:107 %1:gr8 = IMPLICIT_DEF108 TEST8ri %1, 1, implicit-def $eflags109 JCC_1 %bb.1, 5, implicit $eflags110 JMP_1 %bb.4111 112 bb.4:113 RET64114 115...116---117# LEGACY-LABEL: MachineCycleInfo for function: nested_outer_latch_in_inner_loop118# NPM-LABEL: name: nested_outer_latch_in_inner_loop119# CHECK: depth=1: entries(bb.1) bb.2 bb.3120# CHECK: depth=2: entries(bb.2) bb.3121name: nested_outer_latch_in_inner_loop122alignment: 16123tracksRegLiveness: true124registers:125 - { id: 0, class: gr8 }126 - { id: 1, class: gr8 }127frameInfo:128 maxAlignment: 1129machineFunctionInfo: {}130body: |131 bb.0:132 JMP_1 %bb.1133 134 bb.1:135 JMP_1 %bb.2136 137 bb.2:138 %0:gr8 = IMPLICIT_DEF139 TEST8ri %0, 1, implicit-def $eflags140 JCC_1 %bb.3, 5, implicit $eflags141 JMP_1 %bb.1142 143 bb.3:144 %1:gr8 = IMPLICIT_DEF145 TEST8ri %1, 1, implicit-def $eflags146 JCC_1 %bb.4, 5, implicit $eflags147 JMP_1 %bb.2148 149 bb.4:150 RET64151 152...153---154# LEGACY-LABEL: MachineCycleInfo for function: sibling_loops155# NPM-LABEL: name: sibling_loops156# CHECK: depth=1: entries(bb.1)157# CHECK: depth=1: entries(bb.2)158name: sibling_loops159alignment: 16160tracksRegLiveness: true161registers:162 - { id: 0, class: gr8 }163 - { id: 1, class: gr8 }164 - { id: 2, class: gr8 }165frameInfo:166 maxAlignment: 1167machineFunctionInfo: {}168body: |169 bb.0:170 %0:gr8 = IMPLICIT_DEF171 TEST8ri %0, 1, implicit-def $eflags172 JCC_1 %bb.1, 5, implicit $eflags173 JMP_1 %bb.2174 175 bb.1:176 %2:gr8 = IMPLICIT_DEF177 TEST8ri %2, 1, implicit-def $eflags178 JCC_1 %bb.1, 5, implicit $eflags179 JMP_1 %bb.3180 181 bb.2:182 %1:gr8 = IMPLICIT_DEF183 TEST8ri %1, 1, implicit-def $eflags184 JCC_1 %bb.2, 5, implicit $eflags185 JMP_1 %bb.3186 187 bb.3:188 RET64189 190...191---192# LEGACY-LABEL: MachineCycleInfo for function: serial_loops193# NPM-LABEL: name: serial_loops194# CHECK: depth=1: entries(bb.2)195# CHECK: depth=1: entries(bb.1)196name: serial_loops197alignment: 16198tracksRegLiveness: true199registers:200 - { id: 0, class: gr8 }201 - { id: 1, class: gr8 }202frameInfo:203 maxAlignment: 1204machineFunctionInfo: {}205body: |206 bb.0:207 JMP_1 %bb.1208 209 bb.1:210 %0:gr8 = IMPLICIT_DEF211 TEST8ri %0, 1, implicit-def $eflags212 JCC_1 %bb.1, 5, implicit $eflags213 JMP_1 %bb.2214 215 bb.2:216 %1:gr8 = IMPLICIT_DEF217 TEST8ri %1, 1, implicit-def $eflags218 JCC_1 %bb.2, 5, implicit $eflags219 JMP_1 %bb.3220 221 bb.3:222 RET64223 224...225---226# LEGACY-LABEL: MachineCycleInfo for function: nested_sibling_loops227# NPM-LABEL: name: nested_sibling_loops228# CHECK: depth=1: entries(bb.1) bb.4 bb.5 bb.3 bb.2229# CHECK: depth=2: entries(bb.4) bb.5230# CHECK: depth=2: entries(bb.2)231name: nested_sibling_loops232alignment: 16233tracksRegLiveness: true234registers:235 - { id: 0, class: gr8 }236 - { id: 1, class: gr32 }237 - { id: 2, class: gr8 }238 - { id: 3, class: gr32 }239 - { id: 4, class: gr8 }240 - { id: 5, class: gr32 }241 - { id: 6, class: gr8 }242 - { id: 7, class: gr32 }243 - { id: 8, class: gr8 }244frameInfo:245 maxAlignment: 1246machineFunctionInfo: {}247body: |248 bb.0:249 JMP_1 %bb.1250 251 bb.1:252 %0:gr8 = IMPLICIT_DEF253 TEST8ri %0, 1, implicit-def $eflags254 JCC_1 %bb.2, 5, implicit $eflags255 JMP_1 %bb.3256 257 bb.2:258 %5:gr32 = MOV32r0 implicit-def dead $eflags259 %6:gr8 = COPY %5.sub_8bit260 TEST8rr %6, %6, implicit-def $eflags261 JCC_1 %bb.2, 5, implicit $eflags262 JMP_1 %bb.6263 264 bb.6:265 %7:gr32 = MOV32r0 implicit-def dead $eflags266 %8:gr8 = COPY %7.sub_8bit267 TEST8rr %8, %8, implicit-def $eflags268 JCC_1 %bb.1, 5, implicit $eflags269 JMP_1 %bb.4270 271 bb.3:272 %1:gr32 = MOV32r0 implicit-def dead $eflags273 %2:gr8 = COPY %1.sub_8bit274 TEST8rr %2, %2, implicit-def $eflags275 JCC_1 %bb.4, 5, implicit $eflags276 JMP_1 %bb.5277 278 bb.5:279 %3:gr32 = MOV32r0 implicit-def dead $eflags280 %4:gr8 = COPY %3.sub_8bit281 TEST8rr %4, %4, implicit-def $eflags282 JCC_1 %bb.3, 5, implicit $eflags283 JMP_1 %bb.1284 285 bb.4:286 RET64287 288...289---290# LEGACY-LABEL: MachineCycleInfo for function: deeper_nest291# NPM-LABEL: name: deeper_nest292# CHECK: depth=1: entries(bb.1) bb.5 bb.2 bb.3 bb.4293# CHECK: depth=2: entries(bb.2) bb.3 bb.4294# CHECK: depth=3: entries(bb.3) bb.4295name: deeper_nest296alignment: 16297tracksRegLiveness: true298registers:299 - { id: 0, class: gr8 }300 - { id: 1, class: gr8 }301 - { id: 2, class: gr8 }302frameInfo:303 maxAlignment: 1304machineFunctionInfo: {}305body: |306 bb.0:307 JMP_1 %bb.1308 309 bb.1:310 JMP_1 %bb.2311 312 bb.2:313 JMP_1 %bb.3314 315 bb.3:316 %0:gr8 = IMPLICIT_DEF317 TEST8ri %0, 1, implicit-def $eflags318 JCC_1 %bb.2, 5, implicit $eflags319 JMP_1 %bb.4320 321 bb.4:322 %1:gr8 = IMPLICIT_DEF323 TEST8ri %1, 1, implicit-def $eflags324 JCC_1 %bb.3, 5, implicit $eflags325 JMP_1 %bb.5326 327 bb.5:328 %2:gr8 = IMPLICIT_DEF329 TEST8ri %2, 1, implicit-def $eflags330 JCC_1 %bb.1, 5, implicit $eflags331 JMP_1 %bb.6332 333 bb.6:334 RET64335 336...337---338# LEGACY-LABEL: MachineCycleInfo for function: irreducible_basic339# NPM-LABEL: name: irreducible_basic340# CHECK: depth=1: entries(bb.2 bb.1)341name: irreducible_basic342alignment: 16343tracksRegLiveness: true344registers:345 - { id: 0, class: gr8 }346 - { id: 1, class: gr8 }347 - { id: 2, class: gr8 }348frameInfo:349 maxAlignment: 1350machineFunctionInfo: {}351body: |352 bb.0:353 %0:gr8 = IMPLICIT_DEF354 TEST8ri %0, 1, implicit-def $eflags355 JCC_1 %bb.1, 5, implicit $eflags356 JMP_1 %bb.2357 358 bb.1:359 %1:gr8 = IMPLICIT_DEF360 TEST8ri %1, 1, implicit-def $eflags361 JCC_1 %bb.2, 5, implicit $eflags362 JMP_1 %bb.3363 364 bb.2:365 %2:gr8 = IMPLICIT_DEF366 TEST8ri %2, 1, implicit-def $eflags367 JCC_1 %bb.1, 5, implicit $eflags368 JMP_1 %bb.3369 370 bb.3:371 RET64372 373...374---375# LEGACY-LABEL: MachineCycleInfo for function: irreducible_mess376# NPM-LABEL: name: irreducible_mess377# CHECK: depth=1: entries(bb.2 bb.1) bb.6 bb.5 bb.3 bb.4378# CHECK: depth=2: entries(bb.5 bb.3 bb.1) bb.4379# CHECK: depth=3: entries(bb.3 bb.1) bb.4380name: irreducible_mess381alignment: 16382tracksRegLiveness: true383registers:384 - { id: 0, class: gr8 }385 - { id: 1, class: gr8 }386 - { id: 2, class: gr32 }387 - { id: 3, class: gr8 }388 - { id: 4, class: gr32 }389 - { id: 5, class: gr8 }390 - { id: 6, class: gr32 }391 - { id: 7, class: gr8 }392 - { id: 8, class: gr32 }393 - { id: 9, class: gr8 }394 - { id: 10, class: gr8 }395frameInfo:396 maxAlignment: 1397machineFunctionInfo: {}398body: |399 bb.0:400 %0:gr8 = IMPLICIT_DEF401 TEST8ri %0, 1, implicit-def $eflags402 JCC_1 %bb.1, 5, implicit $eflags403 JMP_1 %bb.2404 405 bb.1:406 %1:gr8 = IMPLICIT_DEF407 TEST8ri %1, 1, implicit-def $eflags408 JCC_1 %bb.3, 5, implicit $eflags409 JMP_1 %bb.4410 411 bb.2:412 %10:gr8 = IMPLICIT_DEF413 TEST8ri %10, 1, implicit-def $eflags414 JCC_1 %bb.3, 5, implicit $eflags415 JMP_1 %bb.4416 417 bb.3:418 %2:gr32 = MOV32r0 implicit-def dead $eflags419 %3:gr8 = COPY %2.sub_8bit420 TEST8rr %3, %3, implicit-def $eflags421 JCC_1 %bb.4, 5, implicit $eflags422 JMP_1 %bb.6423 424 bb.6:425 %4:gr32 = MOV32r0 implicit-def dead $eflags426 %5:gr8 = COPY %4.sub_8bit427 TEST8rr %5, %5, implicit-def $eflags428 JCC_1 %bb.5, 5, implicit $eflags429 JMP_1 %bb.1430 431 bb.4:432 %6:gr32 = MOV32r0 implicit-def dead $eflags433 %7:gr8 = COPY %6.sub_8bit434 TEST8rr %7, %7, implicit-def $eflags435 JCC_1 %bb.3, 5, implicit $eflags436 JMP_1 %bb.7437 438 bb.7:439 successors: %bb.5, %bb.2440 441 %8:gr32 = MOV32r0 implicit-def dead $eflags442 %9:gr8 = COPY %8.sub_8bit443 TEST8rr %9, %9, implicit-def $eflags444 JCC_1 %bb.2, 5, implicit $eflags445 JMP_1 %bb.5446 447 bb.5:448 RET64449 450...451---452# LEGACY-LABEL: MachineCycleInfo for function: irreducible_into_simple_cycle453# NPM-LABEL: name: irreducible_into_simple_cycle454# CHECK: depth=1: entries(bb.2 bb.7 bb.4) bb.6 bb.5 bb.3455name: irreducible_into_simple_cycle456alignment: 16457tracksRegLiveness: true458registers:459 - { id: 0, class: gr32 }460 - { id: 1, class: gr8 }461 - { id: 2, class: gr32 }462 - { id: 3, class: gr8 }463 - { id: 4, class: gr8 }464 - { id: 5, class: gr8 }465frameInfo:466 maxAlignment: 1467machineFunctionInfo: {}468body: |469 bb.0:470 %0:gr32 = MOV32r0 implicit-def dead $eflags471 %1:gr8 = COPY %0.sub_8bit472 TEST8rr %1, %1, implicit-def $eflags473 JCC_1 %bb.3, 5, implicit $eflags474 JMP_1 %bb.8475 476 bb.8:477 %2:gr32 = MOV32r0 implicit-def dead $eflags478 %3:gr8 = COPY %2.sub_8bit479 TEST8rr %3, %3, implicit-def $eflags480 JCC_1 %bb.6, 5, implicit $eflags481 JMP_1 %bb.1482 483 bb.1:484 JMP_1 %bb.2485 486 bb.2:487 JMP_1 %bb.3488 489 bb.3:490 JMP_1 %bb.4491 492 bb.4:493 %4:gr8 = IMPLICIT_DEF494 TEST8ri %4, 1, implicit-def $eflags495 JCC_1 %bb.5, 5, implicit $eflags496 JMP_1 %bb.7497 498 bb.5:499 JMP_1 %bb.6500 501 bb.6:502 %5:gr8 = IMPLICIT_DEF503 TEST8ri %5, 1, implicit-def $eflags504 JCC_1 %bb.1, 5, implicit $eflags505 JMP_1 %bb.7506 507 bb.7:508 RET64509 510...511---512# LEGACY-LABEL: MachineCycleInfo for function: irreducible_mountain_bug513# NPM-LABEL: name: irreducible_mountain_bug514# CHECK: depth=1: entries(bb.6) bb.11 bb.10 bb.8 bb.7 bb.9 bb.12515# CHECK: depth=2: entries(bb.10 bb.7) bb.8 bb.9516# CHECK: depth=3: entries(bb.8 bb.7) bb.9517name: irreducible_mountain_bug518alignment: 16519tracksRegLiveness: true520registers:521 - { id: 0, class: gr8 }522 - { id: 1, class: gr8 }523 - { id: 2, class: gr8 }524 - { id: 3, class: gr8 }525 - { id: 4, class: gr8 }526 - { id: 5, class: gr8 }527 - { id: 6, class: gr8 }528 - { id: 7, class: gr8 }529 - { id: 8, class: gr8 }530 - { id: 9, class: gr8 }531 - { id: 10, class: gr8 }532 - { id: 11, class: gr8 }533 - { id: 12, class: gr8 }534 - { id: 13, class: gr8 }535frameInfo:536 maxAlignment: 1537machineFunctionInfo: {}538body: |539 bb.0:540 %0:gr8 = IMPLICIT_DEF541 TEST8ri %0, 1, implicit-def $eflags542 JCC_1 %bb.1, 5, implicit $eflags543 JMP_1 %bb.17544 545 bb.1:546 %3:gr8 = IMPLICIT_DEF547 TEST8ri %3, 1, implicit-def $eflags548 JCC_1 %bb.2, 5, implicit $eflags549 JMP_1 %bb.3550 551 bb.2:552 JMP_1 %bb.4553 554 bb.3:555 JMP_1 %bb.4556 557 bb.4:558 %4:gr8 = IMPLICIT_DEF559 TEST8ri %4, 1, implicit-def $eflags560 JCC_1 %bb.5, 5, implicit $eflags561 JMP_1 %bb.14562 563 bb.5:564 JMP_1 %bb.6565 566 bb.6:567 %7:gr8 = IMPLICIT_DEF568 TEST8ri %7, 1, implicit-def $eflags569 JCC_1 %bb.7, 5, implicit $eflags570 JMP_1 %bb.12571 572 bb.7:573 %9:gr8 = IMPLICIT_DEF574 TEST8ri %9, 1, implicit-def $eflags575 JCC_1 %bb.11, 5, implicit $eflags576 JMP_1 %bb.8577 578 bb.8:579 %10:gr8 = IMPLICIT_DEF580 TEST8ri %10, 1, implicit-def $eflags581 JCC_1 %bb.20, 5, implicit $eflags582 JMP_1 %bb.9583 584 bb.9:585 %11:gr8 = IMPLICIT_DEF586 TEST8ri %11, 1, implicit-def $eflags587 JCC_1 %bb.7, 5, implicit $eflags588 JMP_1 %bb.10589 590 bb.10:591 %12:gr8 = IMPLICIT_DEF592 TEST8ri %12, 1, implicit-def $eflags593 JCC_1 %bb.8, 5, implicit $eflags594 JMP_1 %bb.6595 596 bb.11:597 %13:gr8 = IMPLICIT_DEF598 TEST8ri %13, 1, implicit-def $eflags599 JCC_1 %bb.20, 5, implicit $eflags600 JMP_1 %bb.6601 602 bb.12:603 %8:gr8 = IMPLICIT_DEF604 TEST8ri %8, 1, implicit-def $eflags605 JCC_1 %bb.10, 5, implicit $eflags606 JMP_1 %bb.13607 608 bb.13:609 JMP_1 %bb.20610 611 bb.14:612 %5:gr8 = IMPLICIT_DEF613 TEST8ri %5, 1, implicit-def $eflags614 JCC_1 %bb.20, 5, implicit $eflags615 JMP_1 %bb.15616 617 bb.15:618 %6:gr8 = IMPLICIT_DEF619 TEST8ri %6, 1, implicit-def $eflags620 JCC_1 %bb.20, 5, implicit $eflags621 JMP_1 %bb.16622 623 bb.16:624 JMP_1 %bb.20625 626 bb.17:627 %1:gr8 = IMPLICIT_DEF628 TEST8ri %1, 1, implicit-def $eflags629 JCC_1 %bb.20, 5, implicit $eflags630 JMP_1 %bb.18631 632 bb.18:633 %2:gr8 = IMPLICIT_DEF634 TEST8ri %2, 1, implicit-def $eflags635 JCC_1 %bb.20, 5, implicit $eflags636 JMP_1 %bb.19637 638 bb.19:639 JMP_1 %bb.20640 641 bb.20:642 RET64643 644...645