Home | History | Annotate | Download | only in X86
      1 # RUN: llc -mtriple=x86_64-linux -run-pass=block-placement -o - %s | FileCheck %s
      2 
      3 ---
      4 # check loop bb.7 is not merged with bb.10, bb.13
      5 # check loop bb.9 is not merged with bb.12
      6 # CHECK:  bb.2:
      7 # CHECK-NEXT:    successors: %bb.3(0x30000000), %bb.4(0x50000000)
      8 # CHECK:    $rax = MOV64rm $r14, 1, $noreg, 0, $noreg
      9 # CHECK-NEXT:    TEST64rr $rax, $rax
     10 # CHECK-NEXT:    JE_1 %bb.3
     11 # CHECK:  bb.4:
     12 # CHECK-NEXT:    successors: %bb.5(0x30000000), %bb.10(0x50000000)
     13 # CHECK:    CMP64mi8 killed $rax, 1, $noreg, 8, $noreg, 0
     14 # CHECK-NEXT:    JNE_1 %bb.10
     15 # CHECK:  bb.5:
     16 # CHECK-NEXT:    successors: %bb.6(0x30000000), %bb.7(0x50000000)
     17 # CHECK:    $rax = MOV64rm $r14, 1, $noreg, 0, $noreg
     18 # CHECK-NEXT:    TEST64rr $rax, $rax
     19 # CHECK-NEXT:    JE_1 %bb.6
     20 # CHECK:  bb.7
     21 # CHECK-NEXT:    successors: %bb.8(0x71555555), %bb.10(0x0eaaaaab)
     22 # CHECK:    CMP64mi8 killed $rax, 1, $noreg, 8, $noreg, 0
     23 # CHECK-NEXT:    JNE_1 %bb.10
     24 # CHECK:  bb.8:
     25 # CHECK-NEXT:    successors: %bb.9(0x04000000), %bb.7(0x7c000000)
     26 # CHECK:    $rax = MOV64rm $r14, 1, $noreg, 0, $noreg
     27 # CHECK-NEXT:    TEST64rr $rax, $rax
     28 # CHECK-NEXT:    JNE_1 %bb.7
     29 
     30 name:            foo
     31 body:             |
     32   bb.0:
     33     successors: %bb.1(0x40000000), %bb.7(0x40000000)
     34 
     35     TEST8ri $dl, 1, implicit-def $eflags, implicit killed $edx
     36     JE_1 %bb.7, implicit $eflags
     37 
     38   bb.1:
     39     successors: %bb.16(0x80000000)
     40 
     41     $ebp = XOR32rr undef $ebp, undef $ebp, implicit-def dead $eflags
     42     JMP_1 %bb.16
     43 
     44   bb.7:
     45     successors: %bb.8(0x30000000), %bb.9(0x50000000)
     46 
     47     $rax = MOV64rm $r14, 1, $noreg, 0, $noreg :: (load 8)
     48     TEST64rr $rax, $rax, implicit-def $eflags
     49     JNE_1 %bb.9, implicit killed $eflags
     50 
     51   bb.8:
     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.9:
     58     successors: %bb.10(0x30000000), %bb.15(0x50000000)
     59 
     60     CMP64mi8 killed $rax, 1, $noreg, 8, $noreg, 0, implicit-def $eflags :: (load 8)
     61     JNE_1 %bb.15, implicit $eflags
     62 
     63   bb.10:
     64     successors: %bb.11(0x30000000), %bb.12(0x50000000)
     65 
     66     $rax = MOV64rm $r14, 1, $noreg, 0, $noreg :: (load 8)
     67     TEST64rr $rax, $rax, implicit-def $eflags
     68     JNE_1 %bb.12, implicit $eflags
     69 
     70   bb.11:
     71     successors: %bb.16(0x80000000)
     72 
     73     $ebp = XOR32rr undef $ebp, undef $ebp, implicit-def dead $eflags
     74     JMP_1 %bb.16
     75 
     76   bb.12:
     77     successors: %bb.13(0x71555555), %bb.15(0x0eaaaaab)
     78 
     79     CMP64mi8 killed $rax, 1, $noreg, 8, $noreg, 0, implicit-def $eflags :: (load 8), (load 8)
     80     JNE_1 %bb.15, implicit $eflags
     81 
     82   bb.13:
     83     successors: %bb.14(0x04000000), %bb.12(0x7c000000)
     84 
     85     $rax = MOV64rm $r14, 1, $noreg, 0, $noreg :: (load 8)
     86     TEST64rr $rax, $rax, implicit-def $eflags
     87     JNE_1 %bb.12, implicit $eflags
     88 
     89   bb.14:
     90     successors: %bb.16(0x80000000)
     91 
     92     $ebp = XOR32rr undef $ebp, undef $ebp, implicit-def dead $eflags
     93     JMP_1 %bb.16
     94 
     95   bb.15:
     96     successors: %bb.16(0x80000000)
     97 
     98     $ebp = XOR32rr undef $ebp, undef $ebp, implicit-def dead $eflags
     99     dead $eax = XOR32rr undef $eax, undef $eax, implicit-def dead $eflags, implicit-def $al
    100 
    101   bb.16:
    102 
    103     RETQ $eax
    104 
    105 ...
    106