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