1 # RUN: llc -march=x86-64 -start-after branch-folder -stop-after branch-folder -o - %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