xref: /llvm-project/llvm/test/CodeGen/ARM/inlineasmbr-if-cvt.mir (revision 07c7784d7bf69b9944b92ecc283cac823bcfce16)
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