1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=x86_64-linux -run-pass=block-placement -o - %s | FileCheck %s 3 4--- 5# check loop bb.7 is not merged with bb.10, bb.13 6# check loop bb.9 is not merged with bb.12 7 8name: foo 9body: | 10 ; CHECK-LABEL: name: foo 11 ; CHECK: bb.0: 12 ; CHECK: successors: %bb.1(0x40000000), %bb.2(0x40000000) 13 ; CHECK: TEST8ri $dl, 1, implicit-def $eflags, implicit killed $edx 14 ; CHECK: JCC_1 %bb.1, 5, implicit $eflags 15 ; CHECK: bb.2: 16 ; CHECK: successors: %bb.1(0x30000000), %bb.3(0x50000000) 17 ; CHECK: $rax = MOV64rm $r14, 1, $noreg, 0, $noreg :: (load (s64)) 18 ; CHECK: TEST64rr $rax, $rax, implicit-def $eflags 19 ; CHECK: JCC_1 %bb.1, 4, implicit $eflags 20 ; CHECK: bb.3: 21 ; CHECK: successors: %bb.6(0x30000000), %bb.4(0x50000000) 22 ; CHECK: CMP64mi32 killed $rax, 1, $noreg, 8, $noreg, 0, implicit-def $eflags :: (load (s64)) 23 ; CHECK: JCC_1 %bb.6, 4, implicit $eflags 24 ; CHECK: bb.4: 25 ; CHECK: $ebp = XOR32rr undef $ebp, undef $ebp, implicit-def dead $eflags 26 ; CHECK: dead $eax = XOR32rr undef $eax, undef $eax, implicit-def dead $eflags, implicit-def $al 27 ; CHECK: RET64 $eax 28 ; CHECK: bb.6: 29 ; CHECK: successors: %bb.1(0x30000000), %bb.7(0x50000000) 30 ; CHECK: $rax = MOV64rm $r14, 1, $noreg, 0, $noreg :: (load (s64)) 31 ; CHECK: TEST64rr $rax, $rax, implicit-def $eflags 32 ; CHECK: JCC_1 %bb.1, 4, implicit $eflags 33 ; CHECK: bb.7 (align 16): 34 ; CHECK: successors: %bb.8(0x71555555), %bb.4(0x0eaaaaab) 35 ; CHECK: CMP64mi32 killed $rax, 1, $noreg, 8, $noreg, 0, implicit-def $eflags :: (load (s64)), (load (s64)) 36 ; CHECK: JCC_1 %bb.4, 5, implicit $eflags 37 ; CHECK: bb.8: 38 ; CHECK: successors: %bb.1(0x04000000), %bb.7(0x7c000000) 39 ; CHECK: $rax = MOV64rm $r14, 1, $noreg, 0, $noreg :: (load (s64)) 40 ; CHECK: TEST64rr $rax, $rax, implicit-def $eflags 41 ; CHECK: JCC_1 %bb.7, 5, implicit $eflags 42 ; CHECK: bb.1: 43 ; CHECK: $ebp = XOR32rr undef $ebp, undef $ebp, implicit-def dead $eflags 44 ; CHECK: RET64 $eax 45 bb.0: 46 successors: %bb.1(0x40000000), %bb.7(0x40000000) 47 48 TEST8ri $dl, 1, implicit-def $eflags, implicit killed $edx 49 JCC_1 %bb.7, 4, implicit $eflags 50 51 bb.1: 52 successors: %bb.16(0x80000000) 53 54 $ebp = XOR32rr undef $ebp, undef $ebp, implicit-def dead $eflags 55 JMP_1 %bb.16 56 57 bb.7: 58 successors: %bb.8(0x30000000), %bb.9(0x50000000) 59 60 $rax = MOV64rm $r14, 1, $noreg, 0, $noreg :: (load (s64)) 61 TEST64rr $rax, $rax, implicit-def $eflags 62 JCC_1 %bb.9, 5, implicit killed $eflags 63 64 bb.8: 65 successors: %bb.16(0x80000000) 66 67 $ebp = XOR32rr undef $ebp, undef $ebp, implicit-def dead $eflags 68 JMP_1 %bb.16 69 70 bb.9: 71 successors: %bb.10(0x30000000), %bb.15(0x50000000) 72 73 CMP64mi32 killed $rax, 1, $noreg, 8, $noreg, 0, implicit-def $eflags :: (load (s64)) 74 JCC_1 %bb.15, 5, implicit $eflags 75 76 bb.10: 77 successors: %bb.11(0x30000000), %bb.12(0x50000000) 78 79 $rax = MOV64rm $r14, 1, $noreg, 0, $noreg :: (load (s64)) 80 TEST64rr $rax, $rax, implicit-def $eflags 81 JCC_1 %bb.12, 5, implicit $eflags 82 83 bb.11: 84 successors: %bb.16(0x80000000) 85 86 $ebp = XOR32rr undef $ebp, undef $ebp, implicit-def dead $eflags 87 JMP_1 %bb.16 88 89 bb.12: 90 successors: %bb.13(0x71555555), %bb.15(0x0eaaaaab) 91 92 CMP64mi32 killed $rax, 1, $noreg, 8, $noreg, 0, implicit-def $eflags :: (load (s64)), (load (s64)) 93 JCC_1 %bb.15, 5, implicit $eflags 94 95 bb.13: 96 successors: %bb.14(0x04000000), %bb.12(0x7c000000) 97 98 $rax = MOV64rm $r14, 1, $noreg, 0, $noreg :: (load (s64)) 99 TEST64rr $rax, $rax, implicit-def $eflags 100 JCC_1 %bb.12, 5, implicit $eflags 101 102 bb.14: 103 successors: %bb.16(0x80000000) 104 105 $ebp = XOR32rr undef $ebp, undef $ebp, implicit-def dead $eflags 106 JMP_1 %bb.16 107 108 bb.15: 109 successors: %bb.16(0x80000000) 110 111 $ebp = XOR32rr undef $ebp, undef $ebp, implicit-def dead $eflags 112 dead $eax = XOR32rr undef $eax, undef $eax, implicit-def dead $eflags, implicit-def $al 113 114 bb.16: 115 116 RET64 $eax 117 118... 119