Home | History | Annotate | Download | only in X86
      1 # RUN: llc -march=x86-64 -start-after branch-folder -stop-after branch-folder -o /dev/null %s | FileCheck %s
      2 
      3 --- |
      4 
      5   define i32 @foo(i32 %a) {
      6   entry:
      7     %0 = icmp sle i32 %a, 10
      8     br i1 %0, label %less, label %exit
      9 
     10   less:
     11     ret i32 0
     12 
     13   exit:
     14     ret i32 %a
     15   }
     16 
     17   define i32 @bar(i32 %a) {
     18   entry:
     19     %0 = icmp sle i32 %a, 10
     20     br i1 %0, label %less, label %exit
     21 
     22   less:
     23     ret i32 0
     24 
     25   exit:
     26     ret i32 %a
     27   }
     28 
     29 ...
     30 ---
     31 name:            foo
     32 tracksRegLiveness: true
     33 liveins:
     34   - { reg: '%edi' }
     35 # CHECK-LABEL: name: foo
     36 # CHECK: body: |
     37 # CHECK-NEXT: bb.0.entry:
     38 # CHECK-NEXT: successors: %bb.1.less(0x40000000 / 0x80000000 = 50.00%), %bb.2.exit(0x40000000 / 0x80000000 = 50.00%)
     39 # CHECK-NEXT: liveins: %edi
     40 # CHECK:      CMP32ri8 %edi, 10, implicit-def %eflags
     41 # CHECK-NEXT: JG_1 %bb.2.exit, implicit killed %eflags
     42 
     43 # CHECK:      bb.1.less:
     44 # CHECK-NEXT: %eax = MOV32r0 implicit-def dead %eflags
     45 # CHECK-NEXT: RETQ killed %eax
     46 
     47 # CHECK:      bb.2.exit:
     48 # CHECK-NEXT: liveins: %edi
     49 # CHECK:      %eax = COPY killed %edi
     50 # CHECK-NEXT: RETQ killed %eax
     51 body: |
     52   bb.0.entry:
     53     successors: %bb.1.less, %bb.2.exit
     54 
     55     liveins: %edi
     56 
     57     CMP32ri8 %edi, 10, implicit-def %eflags
     58 
     59     JG_1 %bb.2.exit, implicit killed %eflags
     60 
     61   bb.1.less:
     62 
     63 
     64     %eax = MOV32r0 implicit-def dead %eflags
     65     RETQ killed %eax
     66   bb.2.exit:
     67 
     68 
     69     liveins: %edi
     70     %eax = COPY killed %edi
     71     RETQ killed %eax
     72 
     73 ...
     74 ---
     75 name:            bar
     76 tracksRegLiveness: true
     77 liveins:
     78   - { reg: '%edi' }
     79 # CHECK-LABEL: name: bar
     80 # CHECK: body: |
     81 # CHECK-NEXT: bb.0.entry:
     82 # CHECK-NEXT: successors: %bb.1.less(0x40000000 / 0x80000000 = 50.00%), %bb.2.exit(0x40000000 / 0x80000000 = 50.00%)
     83 # CHECK-NEXT: liveins: %edi
     84 # CHECK:      CMP32ri8 %edi, 10, implicit-def %eflags
     85 # CHECK-NEXT: JG_1 %bb.2.exit, implicit killed %eflags
     86 
     87 # CHECK:      bb.1.less:
     88 # CHECK-NEXT: %eax = MOV32r0 implicit-def dead %eflags
     89 # CHECK-NEXT: RETQ killed %eax
     90 
     91 # CHECK:      bb.2.exit:
     92 # CHECK-NEXT: liveins: %edi
     93 # CHECK:      %eax = COPY killed %edi
     94 # CHECK-NEXT: RETQ killed %eax
     95 body: |
     96 
     97   bb.0.entry:
     98     successors: %bb.1.less, %bb.2.exit
     99     liveins: %edi
    100     CMP32ri8 %edi, 10, implicit-def %eflags
    101     JG_1 %bb.2.exit, implicit killed %eflags
    102   bb.1.less:  %eax = MOV32r0 implicit-def dead %eflags
    103               RETQ killed %eax
    104 
    105   bb.2.exit:  liveins: %edi
    106     %eax = COPY killed %edi
    107     RETQ killed %eax
    108 
    109 ...
    110