Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / MIR / ARM / bundled-instructions.mir
blobb7147d42161b5a7baeaccbabdc554f3fd64a173a
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple thumbv7-apple-ios -run-pass none -o - %s | FileCheck %s
3 # This test ensures that the MIR parser parses the bundled machine instructions
4 # and 'internal' register flags correctly.
6 --- |
8   define i32 @test1(i32 %a) {
9   entry:
10     %cmp = icmp sgt i32 %a, -78
11     %. = zext i1 %cmp to i32
12     ret i32 %.
13   }
15   define i32 @test2(i32 %a) {
16   entry:
17     %cmp = icmp sgt i32 %a, -78
18     %. = zext i1 %cmp to i32
19     ret i32 %.
20   }
22 ...
23 ---
24 name:            test1
25 tracksRegLiveness: true
26 liveins:
27   - { reg: '$r0' }
28 body: |
29   bb.0.entry:
30     liveins: $r0
31     ; CHECK-LABEL: name: test1
32     ; CHECK: liveins: $r0
33     ; CHECK: $r1 = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
34     ; CHECK: t2CMNri killed $r0, 78, 14 /* CC::al */, $noreg, implicit-def $cpsr
35     ; CHECK: BUNDLE implicit-def dead $itstate, implicit-def $r1, implicit killed $cpsr {
36     ; CHECK:   t2IT 12, 8, implicit-def $itstate
37     ; CHECK:   $r1 = t2MOVi 1, 12 /* CC::gt */, killed $cpsr, $noreg, implicit internal killed $itstate
38     ; CHECK: }
39     ; CHECK: $r0 = tMOVr killed $r1, 14 /* CC::al */, $noreg
40     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit killed $r0
41     $r1 = t2MOVi 0, 14, _, _
42     t2CMNri killed $r0, 78, 14, _, implicit-def $cpsr
43     BUNDLE implicit-def dead $itstate, implicit-def $r1, implicit killed $cpsr {
44       t2IT 12, 8, implicit-def $itstate
45       $r1 = t2MOVi 1, 12, killed $cpsr, _, implicit internal killed $itstate
46     }
47     $r0 = tMOVr killed $r1, 14, _
48     tBX_RET 14, _, implicit killed $r0
49 ...
50 ---
51 name:            test2
52 tracksRegLiveness: true
53 liveins:
54   - { reg: '$r0' }
55 body: |
56   bb.0.entry:
57     liveins: $r0
59     ; Verify that the next machine instruction can be on the same line as
60     ; '{' or '}'.
62     ; CHECK-LABEL: name: test2
63     ; CHECK: liveins: $r0
64     ; CHECK: $r1 = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
65     ; CHECK: t2CMNri killed $r0, 78, 14 /* CC::al */, $noreg, implicit-def $cpsr
66     ; CHECK: BUNDLE implicit-def dead $itstate, implicit-def $r1, implicit killed $cpsr {
67     ; CHECK:   t2IT 12, 8, implicit-def $itstate
68     ; CHECK:   $r1 = t2MOVi 1, 12 /* CC::gt */, killed $cpsr, $noreg, implicit internal killed $itstate
69     ; CHECK: }
70     ; CHECK: $r0 = tMOVr killed $r1, 14 /* CC::al */, $noreg
71     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit killed $r0
72     $r1 = t2MOVi 0, 14, _, _
73     t2CMNri killed $r0, 78, 14, _, implicit-def $cpsr
74     BUNDLE implicit-def dead $itstate, implicit-def $r1, implicit killed $cpsr { t2IT 12, 8, implicit-def $itstate
75       $r1 = t2MOVi 1, 12, killed $cpsr, _, internal implicit killed $itstate
76     } $r0 = tMOVr killed $r1, 14, _
77     tBX_RET 14, _, implicit killed $r0
78 ...