11cecfa40SNick Desaulniers# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 21cecfa40SNick Desaulniers# RUN: llc -start-before=if-converter -stop-after=if-converter -o - %s \ 3*07c7784dSNick Desaulniers# RUN: -verify-machineinstrs | FileCheck %s 41cecfa40SNick Desaulniers--- | 51cecfa40SNick Desaulniers ; ModuleID = 'reduced.ll' 61cecfa40SNick Desaulniers source_filename = "reduced.ll" 71cecfa40SNick Desaulniers target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64" 81cecfa40SNick Desaulniers target triple = "armv4t-unknown-linux-gnueabi" 91cecfa40SNick Desaulniers 101cecfa40SNick Desaulniers define void @tusb1210_chg_det_work(i1 %tobool.not) { 111cecfa40SNick Desaulniers entry: 121cecfa40SNick Desaulniers br i1 %tobool.not, label %if.else, label %if.then 131cecfa40SNick Desaulniers 141cecfa40SNick Desaulniers if.then: ; preds = %entry 151cecfa40SNick Desaulniers callbr void asm sideeffect ".word b, ${1:l}, ${0:c}\0A\09", "i,!i"(ptr null) 161cecfa40SNick Desaulniers to label %if.end [label %if.end.sink.split] 171cecfa40SNick Desaulniers 181cecfa40SNick Desaulniers if.else: ; preds = %entry 191cecfa40SNick Desaulniers callbr void asm sideeffect ".word b, ${1:l}, ${0:c}\0A\09", "i,!i"(ptr null) 201cecfa40SNick Desaulniers to label %if.end [label %if.end.sink.split] 211cecfa40SNick Desaulniers 221cecfa40SNick Desaulniers if.end.sink.split: ; preds = %if.else, %if.then 231cecfa40SNick Desaulniers %.sink = phi i32 [ 1, %if.then ], [ 0, %if.else ] 241cecfa40SNick Desaulniers store i32 %.sink, ptr null, align 4 251cecfa40SNick Desaulniers br label %if.end 261cecfa40SNick Desaulniers 271cecfa40SNick Desaulniers if.end: ; preds = %if.end.sink.split, %if.else, %if.then 281cecfa40SNick Desaulniers ret void 291cecfa40SNick Desaulniers } 301cecfa40SNick Desaulniers 311cecfa40SNick Desaulniers... 321cecfa40SNick Desaulniers--- 331cecfa40SNick Desaulniersname: tusb1210_chg_det_work 341cecfa40SNick Desaulniersalignment: 4 351cecfa40SNick DesaulniersexposesReturnsTwice: false 361cecfa40SNick Desaulnierslegalized: false 371cecfa40SNick DesaulniersregBankSelected: false 381cecfa40SNick Desaulniersselected: false 391cecfa40SNick DesaulniersfailedISel: false 401cecfa40SNick DesaulnierstracksRegLiveness: true 411cecfa40SNick DesaulniershasWinCFI: false 421cecfa40SNick DesaulnierscallsEHReturn: false 431cecfa40SNick DesaulnierscallsUnwindInit: false 441cecfa40SNick DesaulniershasEHCatchret: false 451cecfa40SNick DesaulniershasEHScopes: false 461cecfa40SNick DesaulniershasEHFunclets: false 471cecfa40SNick DesaulniersdebugInstrRef: false 481cecfa40SNick DesaulniersfailsVerification: false 491cecfa40SNick DesaulnierstracksDebugUserValues: true 501cecfa40SNick Desaulniersregisters: [] 511cecfa40SNick Desaulniersliveins: 521cecfa40SNick Desaulniers - { reg: '$r0', virtual-reg: '' } 531cecfa40SNick DesaulniersframeInfo: 541cecfa40SNick Desaulniers isFrameAddressTaken: false 551cecfa40SNick Desaulniers isReturnAddressTaken: false 561cecfa40SNick Desaulniers hasStackMap: false 571cecfa40SNick Desaulniers hasPatchPoint: false 581cecfa40SNick Desaulniers stackSize: 0 591cecfa40SNick Desaulniers offsetAdjustment: 0 601cecfa40SNick Desaulniers maxAlignment: 1 611cecfa40SNick Desaulniers adjustsStack: false 621cecfa40SNick Desaulniers hasCalls: false 631cecfa40SNick Desaulniers stackProtector: '' 641cecfa40SNick Desaulniers functionContext: '' 651cecfa40SNick Desaulniers maxCallFrameSize: 0 661cecfa40SNick Desaulniers cvBytesOfCalleeSavedRegisters: 0 671cecfa40SNick Desaulniers hasOpaqueSPAdjustment: false 681cecfa40SNick Desaulniers hasVAStart: false 691cecfa40SNick Desaulniers hasMustTailInVarArgFunc: false 701cecfa40SNick Desaulniers hasTailCall: false 711cecfa40SNick Desaulniers localFrameSize: 0 721cecfa40SNick Desaulniers savePoint: '' 731cecfa40SNick Desaulniers restorePoint: '' 741cecfa40SNick DesaulniersfixedStack: [] 751cecfa40SNick Desaulniersstack: [] 761cecfa40SNick DesaulnierscallSites: [] 771cecfa40SNick DesaulniersdebugValueSubstitutions: [] 781cecfa40SNick Desaulniersconstants: [] 791cecfa40SNick DesaulniersmachineFunctionInfo: {} 801cecfa40SNick Desaulniersbody: | 811cecfa40SNick Desaulniers ; CHECK-LABEL: name: tusb1210_chg_det_work 821cecfa40SNick Desaulniers ; CHECK: bb.0.entry: 83*07c7784dSNick Desaulniers ; CHECK-NEXT: successors: %bb.1(0x80000000), %bb.2(0x80000000) 841cecfa40SNick Desaulniers ; CHECK-NEXT: liveins: $r0 851cecfa40SNick Desaulniers ; CHECK-NEXT: {{ $}} 861cecfa40SNick Desaulniers ; CHECK-NEXT: TSTri killed renamable $r0, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr 871cecfa40SNick Desaulniers ; CHECK-NEXT: renamable $r0 = MOVi 0, 1 /* CC::ne */, $cpsr, $noreg 88*07c7784dSNick Desaulniers ; CHECK-NEXT: renamable $r0 = MOVi 1, 0 /* CC::eq */, killed $cpsr, $noreg, implicit killed $r0 89*07c7784dSNick Desaulniers ; CHECK-NEXT: INLINEASM_BR &".word b, ${1:l}, ${0:c}\0A\09", 9 /* sideeffect mayload attdialect */, 13 /* imm */, 0, 13 /* imm */, %bb.1 90*07c7784dSNick Desaulniers ; CHECK-NEXT: B %bb.2 91*07c7784dSNick Desaulniers ; CHECK-NEXT: {{ $}} 92*07c7784dSNick Desaulniers ; CHECK-NEXT: bb.1.if.end.sink.split (machine-block-address-taken, inlineasm-br-indirect-target): 93*07c7784dSNick Desaulniers ; CHECK-NEXT: successors: %bb.2(0x80000000) 94*07c7784dSNick Desaulniers ; CHECK-NEXT: liveins: $r0 95*07c7784dSNick Desaulniers ; CHECK-NEXT: {{ $}} 96*07c7784dSNick Desaulniers ; CHECK-NEXT: renamable $r1 = MOVi 0, 14 /* CC::al */, $noreg, $noreg 97*07c7784dSNick Desaulniers ; CHECK-NEXT: STRi12 killed renamable $r0, killed renamable $r1, 0, 14 /* CC::al */, $noreg :: (store (s32) into `ptr null`) 98*07c7784dSNick Desaulniers ; CHECK-NEXT: {{ $}} 99*07c7784dSNick Desaulniers ; CHECK-NEXT: bb.2.if.end: 1001cecfa40SNick Desaulniers ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg 1011cecfa40SNick Desaulniers bb.0.entry: 1021cecfa40SNick Desaulniers successors: %bb.4(0x40000000), %bb.1(0x40000000) 1031cecfa40SNick Desaulniers liveins: $r0 1041cecfa40SNick Desaulniers 1051cecfa40SNick Desaulniers TSTri killed renamable $r0, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr 1061cecfa40SNick Desaulniers Bcc %bb.4, 1 /* CC::ne */, killed $cpsr 1071cecfa40SNick Desaulniers 1081cecfa40SNick Desaulniers bb.1.if.then: 1091cecfa40SNick Desaulniers successors: %bb.3(0x80000000), %bb.2(0x00000000) 1101cecfa40SNick Desaulniers 1111cecfa40SNick Desaulniers renamable $r0 = MOVi 1, 14 /* CC::al */, $noreg, $noreg 1121cecfa40SNick Desaulniers INLINEASM_BR &".word b, ${1:l}, ${0:c}\0A\09", 9 /* sideeffect mayload attdialect */, 13 /* imm */, 0, 13 /* imm */, %bb.2 1131cecfa40SNick Desaulniers B %bb.3 1141cecfa40SNick Desaulniers 1151cecfa40SNick Desaulniers bb.2.if.end.sink.split (machine-block-address-taken, inlineasm-br-indirect-target): 1161cecfa40SNick Desaulniers successors: %bb.3(0x80000000) 1171cecfa40SNick Desaulniers liveins: $r0 1181cecfa40SNick Desaulniers 1191cecfa40SNick Desaulniers renamable $r1 = MOVi 0, 14 /* CC::al */, $noreg, $noreg 1201cecfa40SNick Desaulniers STRi12 killed renamable $r0, killed renamable $r1, 0, 14 /* CC::al */, $noreg :: (store (s32) into `ptr null`) 1211cecfa40SNick Desaulniers 1221cecfa40SNick Desaulniers bb.3.if.end: 1231cecfa40SNick Desaulniers BX_RET 14 /* CC::al */, $noreg 1241cecfa40SNick Desaulniers 1251cecfa40SNick Desaulniers bb.4.if.else: 1261cecfa40SNick Desaulniers successors: %bb.3(0x80000000), %bb.2(0x00000000) 1271cecfa40SNick Desaulniers 1281cecfa40SNick Desaulniers renamable $r0 = MOVi 0, 14 /* CC::al */, $noreg, $noreg 1291cecfa40SNick Desaulniers INLINEASM_BR &".word b, ${1:l}, ${0:c}\0A\09", 9 /* sideeffect mayload attdialect */, 13 /* imm */, 0, 13 /* imm */, %bb.2 1301cecfa40SNick Desaulniers B %bb.3 1311cecfa40SNick Desaulniers 1321cecfa40SNick Desaulniers... 133