# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple thumbv7-apple-ios -run-pass none -o - %s | FileCheck %s
# This test ensures that the MIR parser parses the bundled machine instructions
# and 'internal' register flags correctly.

--- |

  define i32 @test1(i32 %a) {
  entry:
    %cmp = icmp sgt i32 %a, -78
    %. = zext i1 %cmp to i32
    ret i32 %.
  }

  define i32 @test2(i32 %a) {
  entry:
    %cmp = icmp sgt i32 %a, -78
    %. = zext i1 %cmp to i32
    ret i32 %.
  }

...
---
name:            test1
tracksRegLiveness: true
liveins:
  - { reg: '$r0' }
body: |
  bb.0.entry:
    liveins: $r0
    ; CHECK-LABEL: name: test1
    ; CHECK: liveins: $r0
    ; CHECK: $r1 = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
    ; CHECK: t2CMNri killed $r0, 78, 14 /* CC::al */, $noreg, implicit-def $cpsr
    ; CHECK: BUNDLE implicit-def dead $itstate, implicit-def $r1, implicit killed $cpsr {
    ; CHECK:   t2IT 12, 8, implicit-def $itstate
    ; CHECK:   $r1 = t2MOVi 1, 12 /* CC::gt */, killed $cpsr, $noreg, implicit internal killed $itstate
    ; CHECK: }
    ; CHECK: $r0 = tMOVr killed $r1, 14 /* CC::al */, $noreg
    ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit killed $r0
    $r1 = t2MOVi 0, 14, _, _
    t2CMNri killed $r0, 78, 14, _, implicit-def $cpsr
    BUNDLE implicit-def dead $itstate, implicit-def $r1, implicit killed $cpsr {
      t2IT 12, 8, implicit-def $itstate
      $r1 = t2MOVi 1, 12, killed $cpsr, _, implicit internal killed $itstate
    }
    $r0 = tMOVr killed $r1, 14, _
    tBX_RET 14, _, implicit killed $r0
...
---
name:            test2
tracksRegLiveness: true
liveins:
  - { reg: '$r0' }
body: |
  bb.0.entry:
    liveins: $r0

    ; Verify that the next machine instruction can be on the same line as
    ; '{' or '}'.

    ; CHECK-LABEL: name: test2
    ; CHECK: liveins: $r0
    ; CHECK: $r1 = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
    ; CHECK: t2CMNri killed $r0, 78, 14 /* CC::al */, $noreg, implicit-def $cpsr
    ; CHECK: BUNDLE implicit-def dead $itstate, implicit-def $r1, implicit killed $cpsr {
    ; CHECK:   t2IT 12, 8, implicit-def $itstate
    ; CHECK:   $r1 = t2MOVi 1, 12 /* CC::gt */, killed $cpsr, $noreg, implicit internal killed $itstate
    ; CHECK: }
    ; CHECK: $r0 = tMOVr killed $r1, 14 /* CC::al */, $noreg
    ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit killed $r0
    $r1 = t2MOVi 0, 14, _, _
    t2CMNri killed $r0, 78, 14, _, implicit-def $cpsr
    BUNDLE implicit-def dead $itstate, implicit-def $r1, implicit killed $cpsr { t2IT 12, 8, implicit-def $itstate
      $r1 = t2MOVi 1, 12, killed $cpsr, _, internal implicit killed $itstate
    } $r0 = tMOVr killed $r1, 14, _
    tBX_RET 14, _, implicit killed $r0
...
