+# RUN: llc -mtriple thumbv7-apple-ios -start-after block-placement -stop-after block-placement -o /dev/null %s | FileCheck %s
+# This test ensures that the MIR parser parses the bundled machine instructions
+# 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: %r1 = t2MOVi 0, 14, _, _
+ ; CHECK-NEXT: t2CMNri killed %r0, 78, 14, _, implicit-def %cpsr
+ ; CHECK-NEXT: BUNDLE implicit-def dead %itstate, implicit-def %r1, implicit killed %cpsr {
+ ; CHECK-NEXT: t2IT 12, 8, implicit-def %itstate
+ ; CHECK-NEXT: %r1 = t2MOVi 1, 12, killed %cpsr, _
+ ; CHECK-NEXT: }
+ ; CHECK-NEXT: %r0 = tMOVr killed %r1, 14, _
+ ; CHECK-NEXT: tBX_RET 14, _, 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, _
+ }
+ %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: %r1 = t2MOVi 0, 14, _, _
+ ; CHECK-NEXT: t2CMNri killed %r0, 78, 14, _, implicit-def %cpsr
+ ; CHECK-NEXT: BUNDLE implicit-def dead %itstate, implicit-def %r1, implicit killed %cpsr {
+ ; CHECK-NEXT: t2IT 12, 8, implicit-def %itstate
+ ; CHECK-NEXT: %r1 = t2MOVi 1, 12, killed %cpsr, _
+ ; CHECK-NEXT: }
+ ; CHECK-NEXT: %r0 = tMOVr killed %r1, 14, _
+ ; CHECK-NEXT: tBX_RET 14, _, 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, _
+ } %r0 = tMOVr killed %r1, 14, _
+ tBX_RET 14, _, implicit killed %r0
+...