1*9880d681SAndroid Build Coastguard Worker# RUN: llc -run-pass=peephole-opt %s -o - | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker# Test the compare fold peephole. 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker# CHECK-LABEL: name: test0a 6*9880d681SAndroid Build Coastguard Worker# TODO: Enhance combiner to handle this case. This expands into: 7*9880d681SAndroid Build Coastguard Worker# sub %r7, %r6, %r3 8*9880d681SAndroid Build Coastguard Worker# sub.f %r7, %r6, %r0 9*9880d681SAndroid Build Coastguard Worker# sel.eq %r18, %r3, %rv 10*9880d681SAndroid Build Coastguard Worker# This is different from the pattern currently matched. If the lowered form had 11*9880d681SAndroid Build Coastguard Worker# been sub.f %r3, 0, %r0 then it would have matched. 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker# CHECK-LABEL: name: test1a 14*9880d681SAndroid Build Coastguard Worker# CHECK: [[IN1:%.*]] = COPY %r7 15*9880d681SAndroid Build Coastguard Worker# CHECK: [[IN2:%.*]] = COPY %r6 16*9880d681SAndroid Build Coastguard Worker# CHECK: SUB_F_R [[IN1]], [[IN2]], 0, implicit-def %sr 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Worker# CHECK-LABEL: name: test1b 19*9880d681SAndroid Build Coastguard Worker# CHECK: [[IN1:%.*]] = COPY %r7 20*9880d681SAndroid Build Coastguard Worker# CHECK: [[IN2:%.*]] = COPY %r6 21*9880d681SAndroid Build Coastguard Worker# CHECK: SUB_F_R [[IN1]], [[IN2]], 0, implicit-def %sr 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Worker# CHECK-LABEL: name: test2a 24*9880d681SAndroid Build Coastguard Worker# CHECK: [[IN1:%.*]] = COPY %r7 25*9880d681SAndroid Build Coastguard Worker# CHECK: [[IN2:%.*]] = COPY %r6 26*9880d681SAndroid Build Coastguard Worker# CHECK: SUB_F_R [[IN1]], [[IN2]], 0, implicit-def %sr 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker# CHECK-LABEL: name: test2b 29*9880d681SAndroid Build Coastguard Worker# CHECK: [[IN1:%.*]] = COPY %r7 30*9880d681SAndroid Build Coastguard Worker# CHECK: [[IN2:%.*]] = COPY %r6 31*9880d681SAndroid Build Coastguard Worker# CHECK: SUB_F_R [[IN1]], [[IN2]], 0, implicit-def %sr 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker# CHECK-LABEL: name: test3 34*9880d681SAndroid Build Coastguard Worker# CHECK: AND_F_R 35*9880d681SAndroid Build Coastguard Worker# CHECK: AND_F_R 36*9880d681SAndroid Build Coastguard Worker# CHECK: AND_F_R 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Worker--- | 39*9880d681SAndroid Build Coastguard Worker target datalayout = "E-m:e-p:32:32-i64:64-a:0:32-n32-S64" 40*9880d681SAndroid Build Coastguard Worker target triple = "lanai-unknown-unknown" 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker @a = global i32 -1, align 4 43*9880d681SAndroid Build Coastguard Worker @b = global i32 0, align 4 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Worker define i32 @test0a(i32 inreg %a, i32 inreg %b, i32 inreg %c, i32 inreg %d) { 46*9880d681SAndroid Build Coastguard Worker entry: 47*9880d681SAndroid Build Coastguard Worker %sub = sub i32 %b, %a 48*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq i32 %sub, 0 49*9880d681SAndroid Build Coastguard Worker %cond = select i1 %cmp, i32 %c, i32 %sub 50*9880d681SAndroid Build Coastguard Worker ret i32 %cond 51*9880d681SAndroid Build Coastguard Worker } 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Worker define i32 @test0b(i32 inreg %a, i32 inreg %b, i32 inreg %c, i32 inreg %d) { 54*9880d681SAndroid Build Coastguard Worker entry: 55*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq i32 %b, %a 56*9880d681SAndroid Build Coastguard Worker %cond = select i1 %cmp, i32 %c, i32 %b 57*9880d681SAndroid Build Coastguard Worker ret i32 %cond 58*9880d681SAndroid Build Coastguard Worker } 59*9880d681SAndroid Build Coastguard Worker 60*9880d681SAndroid Build Coastguard Worker define i32 @test1a(i32 inreg %a, i32 inreg %b, i32 inreg %c, i32 inreg %d) { 61*9880d681SAndroid Build Coastguard Worker entry: 62*9880d681SAndroid Build Coastguard Worker %sub = sub i32 %b, %a 63*9880d681SAndroid Build Coastguard Worker %cmp = icmp slt i32 %sub, 0 64*9880d681SAndroid Build Coastguard Worker %cond = select i1 %cmp, i32 %c, i32 %d 65*9880d681SAndroid Build Coastguard Worker ret i32 %cond 66*9880d681SAndroid Build Coastguard Worker } 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Worker define i32 @test1b(i32 inreg %a, i32 inreg %b, i32 inreg %c, i32 inreg %d) { 69*9880d681SAndroid Build Coastguard Worker entry: 70*9880d681SAndroid Build Coastguard Worker %sub = sub i32 %b, %a 71*9880d681SAndroid Build Coastguard Worker %cmp = icmp slt i32 %sub, 0 72*9880d681SAndroid Build Coastguard Worker %cond = select i1 %cmp, i32 %c, i32 %d 73*9880d681SAndroid Build Coastguard Worker ret i32 %cond 74*9880d681SAndroid Build Coastguard Worker } 75*9880d681SAndroid Build Coastguard Worker 76*9880d681SAndroid Build Coastguard Worker define i32 @test2a(i32 inreg %a, i32 inreg %b, i32 inreg %c, i32 inreg %d) { 77*9880d681SAndroid Build Coastguard Worker entry: 78*9880d681SAndroid Build Coastguard Worker %sub = sub i32 %b, %a 79*9880d681SAndroid Build Coastguard Worker %cmp = icmp sgt i32 %sub, -1 80*9880d681SAndroid Build Coastguard Worker %cond = select i1 %cmp, i32 %c, i32 %d 81*9880d681SAndroid Build Coastguard Worker ret i32 %cond 82*9880d681SAndroid Build Coastguard Worker } 83*9880d681SAndroid Build Coastguard Worker 84*9880d681SAndroid Build Coastguard Worker define i32 @test2b(i32 inreg %a, i32 inreg %b, i32 inreg %c, i32 inreg %d) { 85*9880d681SAndroid Build Coastguard Worker entry: 86*9880d681SAndroid Build Coastguard Worker %sub = sub i32 %b, %a 87*9880d681SAndroid Build Coastguard Worker %cmp = icmp sgt i32 %sub, -1 88*9880d681SAndroid Build Coastguard Worker %cond = select i1 %cmp, i32 %c, i32 %d 89*9880d681SAndroid Build Coastguard Worker ret i32 %cond 90*9880d681SAndroid Build Coastguard Worker } 91*9880d681SAndroid Build Coastguard Worker 92*9880d681SAndroid Build Coastguard Worker define i32 @test3(i32 inreg %a, i32 inreg %b, i32 inreg %c, i32 inreg %d) { 93*9880d681SAndroid Build Coastguard Worker entry: 94*9880d681SAndroid Build Coastguard Worker %sub = sub i32 %b, %a 95*9880d681SAndroid Build Coastguard Worker %cmp = icmp slt i32 %sub, 1 96*9880d681SAndroid Build Coastguard Worker %cond = select i1 %cmp, i32 %c, i32 %d 97*9880d681SAndroid Build Coastguard Worker ret i32 %cond 98*9880d681SAndroid Build Coastguard Worker } 99*9880d681SAndroid Build Coastguard Worker 100*9880d681SAndroid Build Coastguard Worker define i32 @test4(i32 inreg %a, i32 inreg %b, i32 inreg %c, i32 inreg %d) { 101*9880d681SAndroid Build Coastguard Worker entry: 102*9880d681SAndroid Build Coastguard Worker %cmp = icmp ne i32 %a, 0 103*9880d681SAndroid Build Coastguard Worker %cmp1 = icmp ult i32 %a, %b 104*9880d681SAndroid Build Coastguard Worker %or.cond = and i1 %cmp, %cmp1 105*9880d681SAndroid Build Coastguard Worker br i1 %or.cond, label %return, label %if.end 106*9880d681SAndroid Build Coastguard Worker 107*9880d681SAndroid Build Coastguard Worker if.end: ; preds = %entry 108*9880d681SAndroid Build Coastguard Worker %cmp2 = icmp ne i32 %b, 0 109*9880d681SAndroid Build Coastguard Worker %cmp4 = icmp ult i32 %b, %c 110*9880d681SAndroid Build Coastguard Worker %or.cond29 = and i1 %cmp2, %cmp4 111*9880d681SAndroid Build Coastguard Worker br i1 %or.cond29, label %return, label %if.end6 112*9880d681SAndroid Build Coastguard Worker 113*9880d681SAndroid Build Coastguard Worker if.end6: ; preds = %if.end 114*9880d681SAndroid Build Coastguard Worker %cmp7 = icmp ne i32 %c, 0 115*9880d681SAndroid Build Coastguard Worker %cmp9 = icmp ult i32 %c, %d 116*9880d681SAndroid Build Coastguard Worker %or.cond30 = and i1 %cmp7, %cmp9 117*9880d681SAndroid Build Coastguard Worker br i1 %or.cond30, label %return, label %if.end11 118*9880d681SAndroid Build Coastguard Worker 119*9880d681SAndroid Build Coastguard Worker if.end11: ; preds = %if.end6 120*9880d681SAndroid Build Coastguard Worker %cmp12 = icmp ne i32 %d, 0 121*9880d681SAndroid Build Coastguard Worker %cmp14 = icmp ult i32 %d, %a 122*9880d681SAndroid Build Coastguard Worker %or.cond31 = and i1 %cmp12, %cmp14 123*9880d681SAndroid Build Coastguard Worker %b. = select i1 %or.cond31, i32 %b, i32 21 124*9880d681SAndroid Build Coastguard Worker ret i32 %b. 125*9880d681SAndroid Build Coastguard Worker 126*9880d681SAndroid Build Coastguard Worker return: ; preds = %if.end6, %if.end, %entry 127*9880d681SAndroid Build Coastguard Worker %retval.0 = phi i32 [ %c, %entry ], [ %d, %if.end ], [ %a, %if.end6 ] 128*9880d681SAndroid Build Coastguard Worker ret i32 %retval.0 129*9880d681SAndroid Build Coastguard Worker } 130*9880d681SAndroid Build Coastguard Worker 131*9880d681SAndroid Build Coastguard Worker define void @testBB() { 132*9880d681SAndroid Build Coastguard Worker entry: 133*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* @a, align 4, !tbaa !0 134*9880d681SAndroid Build Coastguard Worker %1 = load i32, i32* @b, align 4, !tbaa !0 135*9880d681SAndroid Build Coastguard Worker %sub.i = sub i32 %1, %0 136*9880d681SAndroid Build Coastguard Worker %tobool = icmp sgt i32 %sub.i, -1 137*9880d681SAndroid Build Coastguard Worker br i1 %tobool, label %if.end, label %if.then 138*9880d681SAndroid Build Coastguard Worker 139*9880d681SAndroid Build Coastguard Worker if.then: ; preds = %entry 140*9880d681SAndroid Build Coastguard Worker %call1 = tail call i32 bitcast (i32 (...)* @g to i32 ()*)() 141*9880d681SAndroid Build Coastguard Worker br label %while.body 142*9880d681SAndroid Build Coastguard Worker 143*9880d681SAndroid Build Coastguard Worker while.body: ; preds = %while.body, %if.then 144*9880d681SAndroid Build Coastguard Worker br label %while.body 145*9880d681SAndroid Build Coastguard Worker 146*9880d681SAndroid Build Coastguard Worker if.end: ; preds = %entry 147*9880d681SAndroid Build Coastguard Worker %cmp.i = icmp slt i32 %sub.i, 1 148*9880d681SAndroid Build Coastguard Worker br i1 %cmp.i, label %if.then4, label %if.end7 149*9880d681SAndroid Build Coastguard Worker 150*9880d681SAndroid Build Coastguard Worker if.then4: ; preds = %if.end 151*9880d681SAndroid Build Coastguard Worker %call5 = tail call i32 bitcast (i32 (...)* @g to i32 ()*)() 152*9880d681SAndroid Build Coastguard Worker br label %while.body6 153*9880d681SAndroid Build Coastguard Worker 154*9880d681SAndroid Build Coastguard Worker while.body6: ; preds = %while.body6, %if.then4 155*9880d681SAndroid Build Coastguard Worker br label %while.body6 156*9880d681SAndroid Build Coastguard Worker 157*9880d681SAndroid Build Coastguard Worker if.end7: ; preds = %if.end 158*9880d681SAndroid Build Coastguard Worker ret void 159*9880d681SAndroid Build Coastguard Worker } 160*9880d681SAndroid Build Coastguard Worker 161*9880d681SAndroid Build Coastguard Worker declare i32 @g(...) 162*9880d681SAndroid Build Coastguard Worker 163*9880d681SAndroid Build Coastguard Worker ; Function Attrs: nounwind 164*9880d681SAndroid Build Coastguard Worker declare void @llvm.stackprotector(i8*, i8**) #0 165*9880d681SAndroid Build Coastguard Worker 166*9880d681SAndroid Build Coastguard Worker attributes #0 = { nounwind } 167*9880d681SAndroid Build Coastguard Worker 168*9880d681SAndroid Build Coastguard Worker !0 = !{!1, !1, i64 0} 169*9880d681SAndroid Build Coastguard Worker !1 = !{!"int", !2, i64 0} 170*9880d681SAndroid Build Coastguard Worker !2 = !{!"omnipotent char", !3, i64 0} 171*9880d681SAndroid Build Coastguard Worker !3 = !{!"Simple C/C++ TBAA"} 172*9880d681SAndroid Build Coastguard Worker 173*9880d681SAndroid Build Coastguard Worker... 174*9880d681SAndroid Build Coastguard Worker--- 175*9880d681SAndroid Build Coastguard Workername: test0a 176*9880d681SAndroid Build Coastguard Workeralignment: 2 177*9880d681SAndroid Build Coastguard WorkerexposesReturnsTwice: false 178*9880d681SAndroid Build Coastguard WorkerhasInlineAsm: false 179*9880d681SAndroid Build Coastguard WorkerallVRegsAllocated: false 180*9880d681SAndroid Build Coastguard WorkerisSSA: true 181*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true 182*9880d681SAndroid Build Coastguard WorkertracksSubRegLiveness: false 183*9880d681SAndroid Build Coastguard Workerregisters: 184*9880d681SAndroid Build Coastguard Worker - { id: 0, class: gpr } 185*9880d681SAndroid Build Coastguard Worker - { id: 1, class: gpr } 186*9880d681SAndroid Build Coastguard Worker - { id: 2, class: gpr } 187*9880d681SAndroid Build Coastguard Worker - { id: 3, class: gpr } 188*9880d681SAndroid Build Coastguard Worker - { id: 4, class: gpr } 189*9880d681SAndroid Build Coastguard Worker - { id: 5, class: gpr } 190*9880d681SAndroid Build Coastguard Workerliveins: 191*9880d681SAndroid Build Coastguard Worker - { reg: '%r6', virtual-reg: '%0' } 192*9880d681SAndroid Build Coastguard Worker - { reg: '%r7', virtual-reg: '%1' } 193*9880d681SAndroid Build Coastguard Worker - { reg: '%r18', virtual-reg: '%2' } 194*9880d681SAndroid Build Coastguard WorkerframeInfo: 195*9880d681SAndroid Build Coastguard Worker isFrameAddressTaken: false 196*9880d681SAndroid Build Coastguard Worker isReturnAddressTaken: false 197*9880d681SAndroid Build Coastguard Worker hasStackMap: false 198*9880d681SAndroid Build Coastguard Worker hasPatchPoint: false 199*9880d681SAndroid Build Coastguard Worker stackSize: 0 200*9880d681SAndroid Build Coastguard Worker offsetAdjustment: 0 201*9880d681SAndroid Build Coastguard Worker maxAlignment: 0 202*9880d681SAndroid Build Coastguard Worker adjustsStack: false 203*9880d681SAndroid Build Coastguard Worker hasCalls: false 204*9880d681SAndroid Build Coastguard Worker maxCallFrameSize: 0 205*9880d681SAndroid Build Coastguard Worker hasOpaqueSPAdjustment: false 206*9880d681SAndroid Build Coastguard Worker hasVAStart: false 207*9880d681SAndroid Build Coastguard Worker hasMustTailInVarArgFunc: false 208*9880d681SAndroid Build Coastguard Workerbody: | 209*9880d681SAndroid Build Coastguard Worker bb.0.entry: 210*9880d681SAndroid Build Coastguard Worker liveins: %r6, %r7, %r18 211*9880d681SAndroid Build Coastguard Worker 212*9880d681SAndroid Build Coastguard Worker %2 = COPY %r18 213*9880d681SAndroid Build Coastguard Worker %1 = COPY %r7 214*9880d681SAndroid Build Coastguard Worker %0 = COPY %r6 215*9880d681SAndroid Build Coastguard Worker %4 = SUB_R %1, %0, 0 216*9880d681SAndroid Build Coastguard Worker SFSUB_F_RI_LO %4, 0, implicit-def %sr 217*9880d681SAndroid Build Coastguard Worker %5 = SELECT %2, %4, 7, implicit %sr 218*9880d681SAndroid Build Coastguard Worker %rv = COPY %5 219*9880d681SAndroid Build Coastguard Worker RET implicit %rca, implicit %rv 220*9880d681SAndroid Build Coastguard Worker 221*9880d681SAndroid Build Coastguard Worker... 222*9880d681SAndroid Build Coastguard Worker--- 223*9880d681SAndroid Build Coastguard Workername: test0b 224*9880d681SAndroid Build Coastguard Workeralignment: 2 225*9880d681SAndroid Build Coastguard WorkerexposesReturnsTwice: false 226*9880d681SAndroid Build Coastguard WorkerhasInlineAsm: false 227*9880d681SAndroid Build Coastguard WorkerallVRegsAllocated: false 228*9880d681SAndroid Build Coastguard WorkerisSSA: true 229*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true 230*9880d681SAndroid Build Coastguard WorkertracksSubRegLiveness: false 231*9880d681SAndroid Build Coastguard Workerregisters: 232*9880d681SAndroid Build Coastguard Worker - { id: 0, class: gpr } 233*9880d681SAndroid Build Coastguard Worker - { id: 1, class: gpr } 234*9880d681SAndroid Build Coastguard Worker - { id: 2, class: gpr } 235*9880d681SAndroid Build Coastguard Worker - { id: 3, class: gpr } 236*9880d681SAndroid Build Coastguard Worker - { id: 4, class: gpr } 237*9880d681SAndroid Build Coastguard Workerliveins: 238*9880d681SAndroid Build Coastguard Worker - { reg: '%r6', virtual-reg: '%0' } 239*9880d681SAndroid Build Coastguard Worker - { reg: '%r7', virtual-reg: '%1' } 240*9880d681SAndroid Build Coastguard Worker - { reg: '%r18', virtual-reg: '%2' } 241*9880d681SAndroid Build Coastguard WorkerframeInfo: 242*9880d681SAndroid Build Coastguard Worker isFrameAddressTaken: false 243*9880d681SAndroid Build Coastguard Worker isReturnAddressTaken: false 244*9880d681SAndroid Build Coastguard Worker hasStackMap: false 245*9880d681SAndroid Build Coastguard Worker hasPatchPoint: false 246*9880d681SAndroid Build Coastguard Worker stackSize: 0 247*9880d681SAndroid Build Coastguard Worker offsetAdjustment: 0 248*9880d681SAndroid Build Coastguard Worker maxAlignment: 0 249*9880d681SAndroid Build Coastguard Worker adjustsStack: false 250*9880d681SAndroid Build Coastguard Worker hasCalls: false 251*9880d681SAndroid Build Coastguard Worker maxCallFrameSize: 0 252*9880d681SAndroid Build Coastguard Worker hasOpaqueSPAdjustment: false 253*9880d681SAndroid Build Coastguard Worker hasVAStart: false 254*9880d681SAndroid Build Coastguard Worker hasMustTailInVarArgFunc: false 255*9880d681SAndroid Build Coastguard Workerbody: | 256*9880d681SAndroid Build Coastguard Worker bb.0.entry: 257*9880d681SAndroid Build Coastguard Worker liveins: %r6, %r7, %r18 258*9880d681SAndroid Build Coastguard Worker 259*9880d681SAndroid Build Coastguard Worker %2 = COPY %r18 260*9880d681SAndroid Build Coastguard Worker %1 = COPY %r7 261*9880d681SAndroid Build Coastguard Worker %0 = COPY %r6 262*9880d681SAndroid Build Coastguard Worker SFSUB_F_RR %1, %0, implicit-def %sr 263*9880d681SAndroid Build Coastguard Worker %4 = SELECT %2, %1, 7, implicit %sr 264*9880d681SAndroid Build Coastguard Worker %rv = COPY %4 265*9880d681SAndroid Build Coastguard Worker RET implicit %rca, implicit %rv 266*9880d681SAndroid Build Coastguard Worker 267*9880d681SAndroid Build Coastguard Worker... 268*9880d681SAndroid Build Coastguard Worker--- 269*9880d681SAndroid Build Coastguard Workername: test1a 270*9880d681SAndroid Build Coastguard Workeralignment: 2 271*9880d681SAndroid Build Coastguard WorkerexposesReturnsTwice: false 272*9880d681SAndroid Build Coastguard WorkerhasInlineAsm: false 273*9880d681SAndroid Build Coastguard WorkerallVRegsAllocated: false 274*9880d681SAndroid Build Coastguard WorkerisSSA: true 275*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true 276*9880d681SAndroid Build Coastguard WorkertracksSubRegLiveness: false 277*9880d681SAndroid Build Coastguard Workerregisters: 278*9880d681SAndroid Build Coastguard Worker - { id: 0, class: gpr } 279*9880d681SAndroid Build Coastguard Worker - { id: 1, class: gpr } 280*9880d681SAndroid Build Coastguard Worker - { id: 2, class: gpr } 281*9880d681SAndroid Build Coastguard Worker - { id: 3, class: gpr } 282*9880d681SAndroid Build Coastguard Worker - { id: 4, class: gpr } 283*9880d681SAndroid Build Coastguard Worker - { id: 5, class: gpr } 284*9880d681SAndroid Build Coastguard Workerliveins: 285*9880d681SAndroid Build Coastguard Worker - { reg: '%r6', virtual-reg: '%0' } 286*9880d681SAndroid Build Coastguard Worker - { reg: '%r7', virtual-reg: '%1' } 287*9880d681SAndroid Build Coastguard Worker - { reg: '%r18', virtual-reg: '%2' } 288*9880d681SAndroid Build Coastguard Worker - { reg: '%r19', virtual-reg: '%3' } 289*9880d681SAndroid Build Coastguard WorkerframeInfo: 290*9880d681SAndroid Build Coastguard Worker isFrameAddressTaken: false 291*9880d681SAndroid Build Coastguard Worker isReturnAddressTaken: false 292*9880d681SAndroid Build Coastguard Worker hasStackMap: false 293*9880d681SAndroid Build Coastguard Worker hasPatchPoint: false 294*9880d681SAndroid Build Coastguard Worker stackSize: 0 295*9880d681SAndroid Build Coastguard Worker offsetAdjustment: 0 296*9880d681SAndroid Build Coastguard Worker maxAlignment: 0 297*9880d681SAndroid Build Coastguard Worker adjustsStack: false 298*9880d681SAndroid Build Coastguard Worker hasCalls: false 299*9880d681SAndroid Build Coastguard Worker maxCallFrameSize: 0 300*9880d681SAndroid Build Coastguard Worker hasOpaqueSPAdjustment: false 301*9880d681SAndroid Build Coastguard Worker hasVAStart: false 302*9880d681SAndroid Build Coastguard Worker hasMustTailInVarArgFunc: false 303*9880d681SAndroid Build Coastguard Workerbody: | 304*9880d681SAndroid Build Coastguard Worker bb.0.entry: 305*9880d681SAndroid Build Coastguard Worker liveins: %r6, %r7, %r18, %r19 306*9880d681SAndroid Build Coastguard Worker 307*9880d681SAndroid Build Coastguard Worker %3 = COPY %r19 308*9880d681SAndroid Build Coastguard Worker %2 = COPY %r18 309*9880d681SAndroid Build Coastguard Worker %1 = COPY %r7 310*9880d681SAndroid Build Coastguard Worker %0 = COPY %r6 311*9880d681SAndroid Build Coastguard Worker %4 = SUB_R %1, %0, 0 312*9880d681SAndroid Build Coastguard Worker SFSUB_F_RI_LO killed %4, 0, implicit-def %sr 313*9880d681SAndroid Build Coastguard Worker %5 = SELECT %2, %3, 11, implicit %sr 314*9880d681SAndroid Build Coastguard Worker %rv = COPY %5 315*9880d681SAndroid Build Coastguard Worker RET implicit %rca, implicit %rv 316*9880d681SAndroid Build Coastguard Worker 317*9880d681SAndroid Build Coastguard Worker... 318*9880d681SAndroid Build Coastguard Worker--- 319*9880d681SAndroid Build Coastguard Workername: test1b 320*9880d681SAndroid Build Coastguard Workeralignment: 2 321*9880d681SAndroid Build Coastguard WorkerexposesReturnsTwice: false 322*9880d681SAndroid Build Coastguard WorkerhasInlineAsm: false 323*9880d681SAndroid Build Coastguard WorkerallVRegsAllocated: false 324*9880d681SAndroid Build Coastguard WorkerisSSA: true 325*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true 326*9880d681SAndroid Build Coastguard WorkertracksSubRegLiveness: false 327*9880d681SAndroid Build Coastguard Workerregisters: 328*9880d681SAndroid Build Coastguard Worker - { id: 0, class: gpr } 329*9880d681SAndroid Build Coastguard Worker - { id: 1, class: gpr } 330*9880d681SAndroid Build Coastguard Worker - { id: 2, class: gpr } 331*9880d681SAndroid Build Coastguard Worker - { id: 3, class: gpr } 332*9880d681SAndroid Build Coastguard Worker - { id: 4, class: gpr } 333*9880d681SAndroid Build Coastguard Worker - { id: 5, class: gpr } 334*9880d681SAndroid Build Coastguard Workerliveins: 335*9880d681SAndroid Build Coastguard Worker - { reg: '%r6', virtual-reg: '%0' } 336*9880d681SAndroid Build Coastguard Worker - { reg: '%r7', virtual-reg: '%1' } 337*9880d681SAndroid Build Coastguard Worker - { reg: '%r18', virtual-reg: '%2' } 338*9880d681SAndroid Build Coastguard Worker - { reg: '%r19', virtual-reg: '%3' } 339*9880d681SAndroid Build Coastguard WorkerframeInfo: 340*9880d681SAndroid Build Coastguard Worker isFrameAddressTaken: false 341*9880d681SAndroid Build Coastguard Worker isReturnAddressTaken: false 342*9880d681SAndroid Build Coastguard Worker hasStackMap: false 343*9880d681SAndroid Build Coastguard Worker hasPatchPoint: false 344*9880d681SAndroid Build Coastguard Worker stackSize: 0 345*9880d681SAndroid Build Coastguard Worker offsetAdjustment: 0 346*9880d681SAndroid Build Coastguard Worker maxAlignment: 0 347*9880d681SAndroid Build Coastguard Worker adjustsStack: false 348*9880d681SAndroid Build Coastguard Worker hasCalls: false 349*9880d681SAndroid Build Coastguard Worker maxCallFrameSize: 0 350*9880d681SAndroid Build Coastguard Worker hasOpaqueSPAdjustment: false 351*9880d681SAndroid Build Coastguard Worker hasVAStart: false 352*9880d681SAndroid Build Coastguard Worker hasMustTailInVarArgFunc: false 353*9880d681SAndroid Build Coastguard Workerbody: | 354*9880d681SAndroid Build Coastguard Worker bb.0.entry: 355*9880d681SAndroid Build Coastguard Worker liveins: %r6, %r7, %r18, %r19 356*9880d681SAndroid Build Coastguard Worker 357*9880d681SAndroid Build Coastguard Worker %3 = COPY %r19 358*9880d681SAndroid Build Coastguard Worker %2 = COPY %r18 359*9880d681SAndroid Build Coastguard Worker %1 = COPY %r7 360*9880d681SAndroid Build Coastguard Worker %0 = COPY %r6 361*9880d681SAndroid Build Coastguard Worker %4 = SUB_R %1, %0, 0 362*9880d681SAndroid Build Coastguard Worker SFSUB_F_RI_LO killed %4, 0, implicit-def %sr 363*9880d681SAndroid Build Coastguard Worker %5 = SELECT %2, %3, 11, implicit %sr 364*9880d681SAndroid Build Coastguard Worker %rv = COPY %5 365*9880d681SAndroid Build Coastguard Worker RET implicit %rca, implicit %rv 366*9880d681SAndroid Build Coastguard Worker 367*9880d681SAndroid Build Coastguard Worker... 368*9880d681SAndroid Build Coastguard Worker--- 369*9880d681SAndroid Build Coastguard Workername: test2a 370*9880d681SAndroid Build Coastguard Workeralignment: 2 371*9880d681SAndroid Build Coastguard WorkerexposesReturnsTwice: false 372*9880d681SAndroid Build Coastguard WorkerhasInlineAsm: false 373*9880d681SAndroid Build Coastguard WorkerallVRegsAllocated: false 374*9880d681SAndroid Build Coastguard WorkerisSSA: true 375*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true 376*9880d681SAndroid Build Coastguard WorkertracksSubRegLiveness: false 377*9880d681SAndroid Build Coastguard Workerregisters: 378*9880d681SAndroid Build Coastguard Worker - { id: 0, class: gpr } 379*9880d681SAndroid Build Coastguard Worker - { id: 1, class: gpr } 380*9880d681SAndroid Build Coastguard Worker - { id: 2, class: gpr } 381*9880d681SAndroid Build Coastguard Worker - { id: 3, class: gpr } 382*9880d681SAndroid Build Coastguard Worker - { id: 4, class: gpr } 383*9880d681SAndroid Build Coastguard Worker - { id: 5, class: gpr } 384*9880d681SAndroid Build Coastguard Workerliveins: 385*9880d681SAndroid Build Coastguard Worker - { reg: '%r6', virtual-reg: '%0' } 386*9880d681SAndroid Build Coastguard Worker - { reg: '%r7', virtual-reg: '%1' } 387*9880d681SAndroid Build Coastguard Worker - { reg: '%r18', virtual-reg: '%2' } 388*9880d681SAndroid Build Coastguard Worker - { reg: '%r19', virtual-reg: '%3' } 389*9880d681SAndroid Build Coastguard WorkerframeInfo: 390*9880d681SAndroid Build Coastguard Worker isFrameAddressTaken: false 391*9880d681SAndroid Build Coastguard Worker isReturnAddressTaken: false 392*9880d681SAndroid Build Coastguard Worker hasStackMap: false 393*9880d681SAndroid Build Coastguard Worker hasPatchPoint: false 394*9880d681SAndroid Build Coastguard Worker stackSize: 0 395*9880d681SAndroid Build Coastguard Worker offsetAdjustment: 0 396*9880d681SAndroid Build Coastguard Worker maxAlignment: 0 397*9880d681SAndroid Build Coastguard Worker adjustsStack: false 398*9880d681SAndroid Build Coastguard Worker hasCalls: false 399*9880d681SAndroid Build Coastguard Worker maxCallFrameSize: 0 400*9880d681SAndroid Build Coastguard Worker hasOpaqueSPAdjustment: false 401*9880d681SAndroid Build Coastguard Worker hasVAStart: false 402*9880d681SAndroid Build Coastguard Worker hasMustTailInVarArgFunc: false 403*9880d681SAndroid Build Coastguard Workerbody: | 404*9880d681SAndroid Build Coastguard Worker bb.0.entry: 405*9880d681SAndroid Build Coastguard Worker liveins: %r6, %r7, %r18, %r19 406*9880d681SAndroid Build Coastguard Worker 407*9880d681SAndroid Build Coastguard Worker %3 = COPY %r19 408*9880d681SAndroid Build Coastguard Worker %2 = COPY %r18 409*9880d681SAndroid Build Coastguard Worker %1 = COPY %r7 410*9880d681SAndroid Build Coastguard Worker %0 = COPY %r6 411*9880d681SAndroid Build Coastguard Worker %4 = SUB_R %1, %0, 0 412*9880d681SAndroid Build Coastguard Worker SFSUB_F_RI_LO killed %4, 0, implicit-def %sr 413*9880d681SAndroid Build Coastguard Worker %5 = SELECT %2, %3, 10, implicit %sr 414*9880d681SAndroid Build Coastguard Worker %rv = COPY %5 415*9880d681SAndroid Build Coastguard Worker RET implicit %rca, implicit %rv 416*9880d681SAndroid Build Coastguard Worker 417*9880d681SAndroid Build Coastguard Worker... 418*9880d681SAndroid Build Coastguard Worker--- 419*9880d681SAndroid Build Coastguard Workername: test2b 420*9880d681SAndroid Build Coastguard Workeralignment: 2 421*9880d681SAndroid Build Coastguard WorkerexposesReturnsTwice: false 422*9880d681SAndroid Build Coastguard WorkerhasInlineAsm: false 423*9880d681SAndroid Build Coastguard WorkerallVRegsAllocated: false 424*9880d681SAndroid Build Coastguard WorkerisSSA: true 425*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true 426*9880d681SAndroid Build Coastguard WorkertracksSubRegLiveness: false 427*9880d681SAndroid Build Coastguard Workerregisters: 428*9880d681SAndroid Build Coastguard Worker - { id: 0, class: gpr } 429*9880d681SAndroid Build Coastguard Worker - { id: 1, class: gpr } 430*9880d681SAndroid Build Coastguard Worker - { id: 2, class: gpr } 431*9880d681SAndroid Build Coastguard Worker - { id: 3, class: gpr } 432*9880d681SAndroid Build Coastguard Worker - { id: 4, class: gpr } 433*9880d681SAndroid Build Coastguard Worker - { id: 5, class: gpr } 434*9880d681SAndroid Build Coastguard Workerliveins: 435*9880d681SAndroid Build Coastguard Worker - { reg: '%r6', virtual-reg: '%0' } 436*9880d681SAndroid Build Coastguard Worker - { reg: '%r7', virtual-reg: '%1' } 437*9880d681SAndroid Build Coastguard Worker - { reg: '%r18', virtual-reg: '%2' } 438*9880d681SAndroid Build Coastguard Worker - { reg: '%r19', virtual-reg: '%3' } 439*9880d681SAndroid Build Coastguard WorkerframeInfo: 440*9880d681SAndroid Build Coastguard Worker isFrameAddressTaken: false 441*9880d681SAndroid Build Coastguard Worker isReturnAddressTaken: false 442*9880d681SAndroid Build Coastguard Worker hasStackMap: false 443*9880d681SAndroid Build Coastguard Worker hasPatchPoint: false 444*9880d681SAndroid Build Coastguard Worker stackSize: 0 445*9880d681SAndroid Build Coastguard Worker offsetAdjustment: 0 446*9880d681SAndroid Build Coastguard Worker maxAlignment: 0 447*9880d681SAndroid Build Coastguard Worker adjustsStack: false 448*9880d681SAndroid Build Coastguard Worker hasCalls: false 449*9880d681SAndroid Build Coastguard Worker maxCallFrameSize: 0 450*9880d681SAndroid Build Coastguard Worker hasOpaqueSPAdjustment: false 451*9880d681SAndroid Build Coastguard Worker hasVAStart: false 452*9880d681SAndroid Build Coastguard Worker hasMustTailInVarArgFunc: false 453*9880d681SAndroid Build Coastguard Workerbody: | 454*9880d681SAndroid Build Coastguard Worker bb.0.entry: 455*9880d681SAndroid Build Coastguard Worker liveins: %r6, %r7, %r18, %r19 456*9880d681SAndroid Build Coastguard Worker 457*9880d681SAndroid Build Coastguard Worker %3 = COPY %r19 458*9880d681SAndroid Build Coastguard Worker %2 = COPY %r18 459*9880d681SAndroid Build Coastguard Worker %1 = COPY %r7 460*9880d681SAndroid Build Coastguard Worker %0 = COPY %r6 461*9880d681SAndroid Build Coastguard Worker %4 = SUB_R %1, %0, 0 462*9880d681SAndroid Build Coastguard Worker SFSUB_F_RI_LO killed %4, 0, implicit-def %sr 463*9880d681SAndroid Build Coastguard Worker %5 = SELECT %2, %3, 10, implicit %sr 464*9880d681SAndroid Build Coastguard Worker %rv = COPY %5 465*9880d681SAndroid Build Coastguard Worker RET implicit %rca, implicit %rv 466*9880d681SAndroid Build Coastguard Worker 467*9880d681SAndroid Build Coastguard Worker... 468*9880d681SAndroid Build Coastguard Worker--- 469*9880d681SAndroid Build Coastguard Workername: test3 470*9880d681SAndroid Build Coastguard Workeralignment: 2 471*9880d681SAndroid Build Coastguard WorkerexposesReturnsTwice: false 472*9880d681SAndroid Build Coastguard WorkerhasInlineAsm: false 473*9880d681SAndroid Build Coastguard WorkerallVRegsAllocated: false 474*9880d681SAndroid Build Coastguard WorkerisSSA: true 475*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true 476*9880d681SAndroid Build Coastguard WorkertracksSubRegLiveness: false 477*9880d681SAndroid Build Coastguard Workerregisters: 478*9880d681SAndroid Build Coastguard Worker - { id: 0, class: gpr } 479*9880d681SAndroid Build Coastguard Worker - { id: 1, class: gpr } 480*9880d681SAndroid Build Coastguard Worker - { id: 2, class: gpr } 481*9880d681SAndroid Build Coastguard Worker - { id: 3, class: gpr } 482*9880d681SAndroid Build Coastguard Worker - { id: 4, class: gpr } 483*9880d681SAndroid Build Coastguard Worker - { id: 5, class: gpr } 484*9880d681SAndroid Build Coastguard Workerliveins: 485*9880d681SAndroid Build Coastguard Worker - { reg: '%r6', virtual-reg: '%0' } 486*9880d681SAndroid Build Coastguard Worker - { reg: '%r7', virtual-reg: '%1' } 487*9880d681SAndroid Build Coastguard Worker - { reg: '%r18', virtual-reg: '%2' } 488*9880d681SAndroid Build Coastguard Worker - { reg: '%r19', virtual-reg: '%3' } 489*9880d681SAndroid Build Coastguard WorkerframeInfo: 490*9880d681SAndroid Build Coastguard Worker isFrameAddressTaken: false 491*9880d681SAndroid Build Coastguard Worker isReturnAddressTaken: false 492*9880d681SAndroid Build Coastguard Worker hasStackMap: false 493*9880d681SAndroid Build Coastguard Worker hasPatchPoint: false 494*9880d681SAndroid Build Coastguard Worker stackSize: 0 495*9880d681SAndroid Build Coastguard Worker offsetAdjustment: 0 496*9880d681SAndroid Build Coastguard Worker maxAlignment: 0 497*9880d681SAndroid Build Coastguard Worker adjustsStack: false 498*9880d681SAndroid Build Coastguard Worker hasCalls: false 499*9880d681SAndroid Build Coastguard Worker maxCallFrameSize: 0 500*9880d681SAndroid Build Coastguard Worker hasOpaqueSPAdjustment: false 501*9880d681SAndroid Build Coastguard Worker hasVAStart: false 502*9880d681SAndroid Build Coastguard Worker hasMustTailInVarArgFunc: false 503*9880d681SAndroid Build Coastguard Workerbody: | 504*9880d681SAndroid Build Coastguard Worker bb.0.entry: 505*9880d681SAndroid Build Coastguard Worker liveins: %r6, %r7, %r18, %r19 506*9880d681SAndroid Build Coastguard Worker 507*9880d681SAndroid Build Coastguard Worker %3 = COPY %r19 508*9880d681SAndroid Build Coastguard Worker %2 = COPY %r18 509*9880d681SAndroid Build Coastguard Worker %1 = COPY %r7 510*9880d681SAndroid Build Coastguard Worker %0 = COPY %r6 511*9880d681SAndroid Build Coastguard Worker %4 = SUB_R %1, %0, 0 512*9880d681SAndroid Build Coastguard Worker SFSUB_F_RI_LO killed %4, 1, implicit-def %sr 513*9880d681SAndroid Build Coastguard Worker %5 = SELECT %2, %3, 13, implicit %sr 514*9880d681SAndroid Build Coastguard Worker %rv = COPY %5 515*9880d681SAndroid Build Coastguard Worker RET implicit %rca, implicit %rv 516*9880d681SAndroid Build Coastguard Worker 517*9880d681SAndroid Build Coastguard Worker... 518*9880d681SAndroid Build Coastguard Worker--- 519*9880d681SAndroid Build Coastguard Workername: test4 520*9880d681SAndroid Build Coastguard Workeralignment: 2 521*9880d681SAndroid Build Coastguard WorkerexposesReturnsTwice: false 522*9880d681SAndroid Build Coastguard WorkerhasInlineAsm: false 523*9880d681SAndroid Build Coastguard WorkerallVRegsAllocated: false 524*9880d681SAndroid Build Coastguard WorkerisSSA: true 525*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true 526*9880d681SAndroid Build Coastguard WorkertracksSubRegLiveness: false 527*9880d681SAndroid Build Coastguard Workerregisters: 528*9880d681SAndroid Build Coastguard Worker - { id: 0, class: gpr } 529*9880d681SAndroid Build Coastguard Worker - { id: 1, class: gpr } 530*9880d681SAndroid Build Coastguard Worker - { id: 2, class: gpr } 531*9880d681SAndroid Build Coastguard Worker - { id: 3, class: gpr } 532*9880d681SAndroid Build Coastguard Worker - { id: 4, class: gpr } 533*9880d681SAndroid Build Coastguard Worker - { id: 5, class: gpr } 534*9880d681SAndroid Build Coastguard Worker - { id: 6, class: gpr } 535*9880d681SAndroid Build Coastguard Worker - { id: 7, class: gpr } 536*9880d681SAndroid Build Coastguard Worker - { id: 8, class: gpr } 537*9880d681SAndroid Build Coastguard Worker - { id: 9, class: gpr } 538*9880d681SAndroid Build Coastguard Worker - { id: 10, class: gpr } 539*9880d681SAndroid Build Coastguard Worker - { id: 11, class: gpr } 540*9880d681SAndroid Build Coastguard Worker - { id: 12, class: gpr } 541*9880d681SAndroid Build Coastguard Worker - { id: 13, class: gpr } 542*9880d681SAndroid Build Coastguard Worker - { id: 14, class: gpr } 543*9880d681SAndroid Build Coastguard Worker - { id: 15, class: gpr } 544*9880d681SAndroid Build Coastguard Worker - { id: 16, class: gpr } 545*9880d681SAndroid Build Coastguard Worker - { id: 17, class: gpr } 546*9880d681SAndroid Build Coastguard Worker - { id: 18, class: gpr } 547*9880d681SAndroid Build Coastguard Worker - { id: 19, class: gpr } 548*9880d681SAndroid Build Coastguard Worker - { id: 20, class: gpr } 549*9880d681SAndroid Build Coastguard Worker - { id: 21, class: gpr } 550*9880d681SAndroid Build Coastguard Worker - { id: 22, class: gpr } 551*9880d681SAndroid Build Coastguard Workerliveins: 552*9880d681SAndroid Build Coastguard Worker - { reg: '%r6', virtual-reg: '%1' } 553*9880d681SAndroid Build Coastguard Worker - { reg: '%r7', virtual-reg: '%2' } 554*9880d681SAndroid Build Coastguard Worker - { reg: '%r18', virtual-reg: '%3' } 555*9880d681SAndroid Build Coastguard Worker - { reg: '%r19', virtual-reg: '%4' } 556*9880d681SAndroid Build Coastguard WorkerframeInfo: 557*9880d681SAndroid Build Coastguard Worker isFrameAddressTaken: false 558*9880d681SAndroid Build Coastguard Worker isReturnAddressTaken: false 559*9880d681SAndroid Build Coastguard Worker hasStackMap: false 560*9880d681SAndroid Build Coastguard Worker hasPatchPoint: false 561*9880d681SAndroid Build Coastguard Worker stackSize: 0 562*9880d681SAndroid Build Coastguard Worker offsetAdjustment: 0 563*9880d681SAndroid Build Coastguard Worker maxAlignment: 0 564*9880d681SAndroid Build Coastguard Worker adjustsStack: false 565*9880d681SAndroid Build Coastguard Worker hasCalls: false 566*9880d681SAndroid Build Coastguard Worker maxCallFrameSize: 0 567*9880d681SAndroid Build Coastguard Worker hasOpaqueSPAdjustment: false 568*9880d681SAndroid Build Coastguard Worker hasVAStart: false 569*9880d681SAndroid Build Coastguard Worker hasMustTailInVarArgFunc: false 570*9880d681SAndroid Build Coastguard Workerbody: | 571*9880d681SAndroid Build Coastguard Worker bb.0.entry: 572*9880d681SAndroid Build Coastguard Worker successors: %bb.4.return, %bb.1.if.end 573*9880d681SAndroid Build Coastguard Worker liveins: %r6, %r7, %r18, %r19 574*9880d681SAndroid Build Coastguard Worker 575*9880d681SAndroid Build Coastguard Worker %4 = COPY %r19 576*9880d681SAndroid Build Coastguard Worker %3 = COPY %r18 577*9880d681SAndroid Build Coastguard Worker %2 = COPY %r7 578*9880d681SAndroid Build Coastguard Worker %1 = COPY %r6 579*9880d681SAndroid Build Coastguard Worker SFSUB_F_RI_LO %1, 0, implicit-def %sr 580*9880d681SAndroid Build Coastguard Worker %5 = SCC 6, implicit %sr 581*9880d681SAndroid Build Coastguard Worker SFSUB_F_RR %1, %2, implicit-def %sr 582*9880d681SAndroid Build Coastguard Worker %6 = SCC 4, implicit %sr 583*9880d681SAndroid Build Coastguard Worker %7 = AND_R killed %5, killed %6, 0 584*9880d681SAndroid Build Coastguard Worker %8 = SLI 1 585*9880d681SAndroid Build Coastguard Worker %9 = AND_R killed %7, %8, 0 586*9880d681SAndroid Build Coastguard Worker SFSUB_F_RI_LO killed %9, 0, implicit-def %sr 587*9880d681SAndroid Build Coastguard Worker BRCC %bb.4.return, 6, implicit %sr 588*9880d681SAndroid Build Coastguard Worker BT %bb.1.if.end 589*9880d681SAndroid Build Coastguard Worker 590*9880d681SAndroid Build Coastguard Worker bb.1.if.end: 591*9880d681SAndroid Build Coastguard Worker successors: %bb.4.return, %bb.2.if.end6 592*9880d681SAndroid Build Coastguard Worker 593*9880d681SAndroid Build Coastguard Worker SFSUB_F_RI_LO %2, 0, implicit-def %sr 594*9880d681SAndroid Build Coastguard Worker %10 = SCC 6, implicit %sr 595*9880d681SAndroid Build Coastguard Worker SFSUB_F_RR %2, %3, implicit-def %sr 596*9880d681SAndroid Build Coastguard Worker %11 = SCC 4, implicit %sr 597*9880d681SAndroid Build Coastguard Worker %12 = AND_R killed %10, killed %11, 0 598*9880d681SAndroid Build Coastguard Worker %14 = AND_R killed %12, %8, 0 599*9880d681SAndroid Build Coastguard Worker SFSUB_F_RI_LO killed %14, 0, implicit-def %sr 600*9880d681SAndroid Build Coastguard Worker BRCC %bb.4.return, 6, implicit %sr 601*9880d681SAndroid Build Coastguard Worker BT %bb.2.if.end6 602*9880d681SAndroid Build Coastguard Worker 603*9880d681SAndroid Build Coastguard Worker bb.2.if.end6: 604*9880d681SAndroid Build Coastguard Worker successors: %bb.4.return, %bb.3.if.end11 605*9880d681SAndroid Build Coastguard Worker 606*9880d681SAndroid Build Coastguard Worker SFSUB_F_RI_LO %3, 0, implicit-def %sr 607*9880d681SAndroid Build Coastguard Worker %15 = SCC 6, implicit %sr 608*9880d681SAndroid Build Coastguard Worker SFSUB_F_RR %3, %4, implicit-def %sr 609*9880d681SAndroid Build Coastguard Worker %16 = SCC 4, implicit %sr 610*9880d681SAndroid Build Coastguard Worker %17 = AND_R killed %15, killed %16, 0 611*9880d681SAndroid Build Coastguard Worker %18 = SLI 1 612*9880d681SAndroid Build Coastguard Worker %19 = AND_R killed %17, killed %18, 0 613*9880d681SAndroid Build Coastguard Worker SFSUB_F_RI_LO killed %19, 0, implicit-def %sr 614*9880d681SAndroid Build Coastguard Worker BRCC %bb.4.return, 6, implicit %sr 615*9880d681SAndroid Build Coastguard Worker BT %bb.3.if.end11 616*9880d681SAndroid Build Coastguard Worker 617*9880d681SAndroid Build Coastguard Worker bb.3.if.end11: 618*9880d681SAndroid Build Coastguard Worker %20 = SLI 21 619*9880d681SAndroid Build Coastguard Worker SFSUB_F_RR %4, %1, implicit-def %sr 620*9880d681SAndroid Build Coastguard Worker %21 = SELECT %2, %20, 4, implicit %sr 621*9880d681SAndroid Build Coastguard Worker SFSUB_F_RI_LO %4, 0, implicit-def %sr 622*9880d681SAndroid Build Coastguard Worker %22 = SELECT killed %21, %20, 6, implicit %sr 623*9880d681SAndroid Build Coastguard Worker %rv = COPY %22 624*9880d681SAndroid Build Coastguard Worker RET implicit %rca, implicit %rv 625*9880d681SAndroid Build Coastguard Worker 626*9880d681SAndroid Build Coastguard Worker bb.4.return: 627*9880d681SAndroid Build Coastguard Worker %0 = PHI %3, %bb.0.entry, %4, %bb.1.if.end, %1, %bb.2.if.end6 628*9880d681SAndroid Build Coastguard Worker %rv = COPY %0 629*9880d681SAndroid Build Coastguard Worker RET implicit %rca, implicit %rv 630*9880d681SAndroid Build Coastguard Worker 631*9880d681SAndroid Build Coastguard Worker... 632*9880d681SAndroid Build Coastguard Worker--- 633*9880d681SAndroid Build Coastguard Workername: testBB 634*9880d681SAndroid Build Coastguard Workeralignment: 2 635*9880d681SAndroid Build Coastguard WorkerexposesReturnsTwice: false 636*9880d681SAndroid Build Coastguard WorkerhasInlineAsm: false 637*9880d681SAndroid Build Coastguard WorkerallVRegsAllocated: false 638*9880d681SAndroid Build Coastguard WorkerisSSA: true 639*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true 640*9880d681SAndroid Build Coastguard WorkertracksSubRegLiveness: false 641*9880d681SAndroid Build Coastguard Workerregisters: 642*9880d681SAndroid Build Coastguard Worker - { id: 0, class: gpr } 643*9880d681SAndroid Build Coastguard Worker - { id: 1, class: gpr } 644*9880d681SAndroid Build Coastguard Worker - { id: 2, class: gpr } 645*9880d681SAndroid Build Coastguard Worker - { id: 3, class: gpr } 646*9880d681SAndroid Build Coastguard Worker - { id: 4, class: gpr } 647*9880d681SAndroid Build Coastguard Worker - { id: 5, class: gpr } 648*9880d681SAndroid Build Coastguard Worker - { id: 6, class: gpr } 649*9880d681SAndroid Build Coastguard Worker - { id: 7, class: gpr } 650*9880d681SAndroid Build Coastguard Worker - { id: 8, class: gpr } 651*9880d681SAndroid Build Coastguard WorkerframeInfo: 652*9880d681SAndroid Build Coastguard Worker isFrameAddressTaken: false 653*9880d681SAndroid Build Coastguard Worker isReturnAddressTaken: false 654*9880d681SAndroid Build Coastguard Worker hasStackMap: false 655*9880d681SAndroid Build Coastguard Worker hasPatchPoint: false 656*9880d681SAndroid Build Coastguard Worker stackSize: 0 657*9880d681SAndroid Build Coastguard Worker offsetAdjustment: 0 658*9880d681SAndroid Build Coastguard Worker maxAlignment: 0 659*9880d681SAndroid Build Coastguard Worker adjustsStack: false 660*9880d681SAndroid Build Coastguard Worker hasCalls: true 661*9880d681SAndroid Build Coastguard Worker maxCallFrameSize: 0 662*9880d681SAndroid Build Coastguard Worker hasOpaqueSPAdjustment: false 663*9880d681SAndroid Build Coastguard Worker hasVAStart: false 664*9880d681SAndroid Build Coastguard Worker hasMustTailInVarArgFunc: false 665*9880d681SAndroid Build Coastguard Workerbody: | 666*9880d681SAndroid Build Coastguard Worker bb.0.entry: 667*9880d681SAndroid Build Coastguard Worker successors: %bb.3.if.end, %bb.1.if.then 668*9880d681SAndroid Build Coastguard Worker 669*9880d681SAndroid Build Coastguard Worker %1 = MOVHI target-flags(lanai-hi) @a 670*9880d681SAndroid Build Coastguard Worker %2 = OR_I_LO killed %1, target-flags(lanai-lo) @a 671*9880d681SAndroid Build Coastguard Worker %3 = LDW_RI killed %2, 0, 0 :: (load 4 from @a, !tbaa !0) 672*9880d681SAndroid Build Coastguard Worker %4 = MOVHI target-flags(lanai-hi) @b 673*9880d681SAndroid Build Coastguard Worker %5 = OR_I_LO killed %4, target-flags(lanai-lo) @b 674*9880d681SAndroid Build Coastguard Worker %6 = LDW_RI killed %5, 0, 0 :: (load 4 from @b, !tbaa !0) 675*9880d681SAndroid Build Coastguard Worker %0 = SUB_R killed %6, killed %3, 0 676*9880d681SAndroid Build Coastguard Worker SFSUB_F_RI_LO %0, 0, implicit-def %sr 677*9880d681SAndroid Build Coastguard Worker BRCC %bb.3.if.end, 10, implicit %sr 678*9880d681SAndroid Build Coastguard Worker BT %bb.1.if.then 679*9880d681SAndroid Build Coastguard Worker 680*9880d681SAndroid Build Coastguard Worker bb.1.if.then: 681*9880d681SAndroid Build Coastguard Worker successors: %bb.2.while.body 682*9880d681SAndroid Build Coastguard Worker 683*9880d681SAndroid Build Coastguard Worker ADJCALLSTACKDOWN 0, implicit-def dead %sp, implicit %sp 684*9880d681SAndroid Build Coastguard Worker CALL @g, csr, implicit-def dead %rca, implicit %sp, implicit-def %sp, implicit-def %rv 685*9880d681SAndroid Build Coastguard Worker ADJCALLSTACKUP 0, 0, implicit-def dead %sp, implicit %sp 686*9880d681SAndroid Build Coastguard Worker 687*9880d681SAndroid Build Coastguard Worker bb.2.while.body: 688*9880d681SAndroid Build Coastguard Worker successors: %bb.2.while.body 689*9880d681SAndroid Build Coastguard Worker 690*9880d681SAndroid Build Coastguard Worker BT %bb.2.while.body 691*9880d681SAndroid Build Coastguard Worker 692*9880d681SAndroid Build Coastguard Worker bb.3.if.end: 693*9880d681SAndroid Build Coastguard Worker successors: %bb.4.if.then4, %bb.6.if.end7 694*9880d681SAndroid Build Coastguard Worker liveins: %sr 695*9880d681SAndroid Build Coastguard Worker 696*9880d681SAndroid Build Coastguard Worker BRCC %bb.6.if.end7, 14, implicit %sr 697*9880d681SAndroid Build Coastguard Worker BT %bb.4.if.then4 698*9880d681SAndroid Build Coastguard Worker 699*9880d681SAndroid Build Coastguard Worker bb.4.if.then4: 700*9880d681SAndroid Build Coastguard Worker successors: %bb.5.while.body6 701*9880d681SAndroid Build Coastguard Worker 702*9880d681SAndroid Build Coastguard Worker ADJCALLSTACKDOWN 0, implicit-def dead %sp, implicit %sp 703*9880d681SAndroid Build Coastguard Worker CALL @g, csr, implicit-def dead %rca, implicit %sp, implicit-def %sp, implicit-def %rv 704*9880d681SAndroid Build Coastguard Worker ADJCALLSTACKUP 0, 0, implicit-def dead %sp, implicit %sp 705*9880d681SAndroid Build Coastguard Worker 706*9880d681SAndroid Build Coastguard Worker bb.5.while.body6: 707*9880d681SAndroid Build Coastguard Worker successors: %bb.5.while.body6 708*9880d681SAndroid Build Coastguard Worker 709*9880d681SAndroid Build Coastguard Worker BT %bb.5.while.body6 710*9880d681SAndroid Build Coastguard Worker 711*9880d681SAndroid Build Coastguard Worker bb.6.if.end7: 712*9880d681SAndroid Build Coastguard Worker RET implicit %rca 713*9880d681SAndroid Build Coastguard Worker 714*9880d681SAndroid Build Coastguard Worker... 715