xref: /llvm-project/llvm/test/CodeGen/ARM/machine-outliner-default.mir (revision 3b16630c26505060a876f578e4b2ba701c780e9a)
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=arm-- -run-pass=machine-outliner -verify-machineinstrs \
3# RUN: %s -o - | FileCheck %s
4
5--- |
6  define void @outline_default_arm() #0 { ret void }
7  define void @outline_default_thumb() #1 { ret void }
8  declare void @bar()
9
10  attributes #0 = { minsize optsize }
11  attributes #1 = { minsize optsize "target-features"="+armv7-a,+thumb-mode" }
12...
13---
14
15name:           outline_default_arm
16tracksRegLiveness: true
17body:             |
18  ; CHECK-LABEL: name: outline_default_arm
19  ; CHECK: bb.0:
20  ; CHECK:   liveins: $lr
21  ; CHECK:   early-clobber $sp = frame-setup STR_PRE_IMM killed $lr, $sp, -8, 14 /* CC::al */, $noreg
22  ; CHECK:   BL @OUTLINED_FUNCTION_1
23  ; CHECK:   $lr, $sp = frame-destroy LDR_POST_IMM $sp, $noreg, 8, 14 /* CC::al */, $noreg
24  ; CHECK: bb.1:
25  ; CHECK:   liveins: $lr, $r6, $r7, $r8, $r9, $r10, $r11
26  ; CHECK:   early-clobber $sp = frame-setup STR_PRE_IMM killed $lr, $sp, -8, 14 /* CC::al */, $noreg
27  ; CHECK:   BL @OUTLINED_FUNCTION_1
28  ; CHECK:   $lr, $sp = frame-destroy LDR_POST_IMM $sp, $noreg, 8, 14 /* CC::al */, $noreg
29  ; CHECK: bb.2:
30  ; CHECK:   liveins: $lr, $r6, $r7, $r8, $r9, $r10, $r11
31  ; CHECK:   early-clobber $sp = frame-setup STR_PRE_IMM killed $lr, $sp, -8, 14 /* CC::al */, $noreg
32  ; CHECK:   BL @OUTLINED_FUNCTION_1
33  ; CHECK:   $lr, $sp = frame-destroy LDR_POST_IMM $sp, $noreg, 8, 14 /* CC::al */, $noreg
34  ; CHECK: bb.3:
35  ; CHECK:   liveins: $lr, $r6, $r7, $r8, $r9, $r10, $r11
36  ; CHECK:   $r2 = MOVr $lr, 14 /* CC::al */, $noreg, $noreg
37  ; CHECK:   BX_RET 14 /* CC::al */, $noreg
38  bb.0:
39    liveins: $lr
40    $r0 = MOVi 1, 14, $noreg, $noreg
41    $r1 = MOVi 1, 14, $noreg, $noreg
42    $r2 = MOVi 1, 14, $noreg, $noreg
43    $r3 = MOVi 1, 14, $noreg, $noreg
44    $r4 = MOVi 1, 14, $noreg, $noreg
45    $r5 = MOVi 1, 14, $noreg, $noreg
46  bb.1:
47    liveins: $lr, $r6, $r7, $r8, $r9, $r10, $r11
48    $r0 = MOVi 1, 14, $noreg, $noreg
49    $r1 = MOVi 1, 14, $noreg, $noreg
50    $r2 = MOVi 1, 14, $noreg, $noreg
51    $r3 = MOVi 1, 14, $noreg, $noreg
52    $r4 = MOVi 1, 14, $noreg, $noreg
53    $r5 = MOVi 1, 14, $noreg, $noreg
54  bb.2:
55    liveins: $lr, $r6, $r7, $r8, $r9, $r10, $r11
56    $r0 = MOVi 1, 14, $noreg, $noreg
57    $r1 = MOVi 1, 14, $noreg, $noreg
58    $r2 = MOVi 1, 14, $noreg, $noreg
59    $r3 = MOVi 1, 14, $noreg, $noreg
60    $r4 = MOVi 1, 14, $noreg, $noreg
61    $r5 = MOVi 1, 14, $noreg, $noreg
62  bb.3:
63    liveins: $lr, $r6, $r7, $r8, $r9, $r10, $r11
64    $r2 = MOVr $lr, 14, $noreg, $noreg
65    BX_RET 14, $noreg
66...
67---
68
69name:           outline_default_thumb
70tracksRegLiveness: true
71body:             |
72  ; CHECK-LABEL: name: outline_default_thumb
73  ; CHECK: bb.0:
74  ; CHECK:   liveins: $lr
75  ; CHECK:   early-clobber $sp = frame-setup t2STR_PRE killed $lr, $sp, -8, 14 /* CC::al */, $noreg
76  ; CHECK:   tBL 14 /* CC::al */, $noreg, @OUTLINED_FUNCTION_0
77  ; CHECK:   $lr, $sp = frame-destroy t2LDR_POST $sp, 8, 14 /* CC::al */, $noreg
78  ; CHECK: bb.1:
79  ; CHECK:   liveins: $lr, $r4, $r5, $r6, $r7, $r8, $r9, $r10, $r11
80  ; CHECK:   early-clobber $sp = frame-setup t2STR_PRE killed $lr, $sp, -8, 14 /* CC::al */, $noreg
81  ; CHECK:   tBL 14 /* CC::al */, $noreg, @OUTLINED_FUNCTION_0
82  ; CHECK:   $lr, $sp = frame-destroy t2LDR_POST $sp, 8, 14 /* CC::al */, $noreg
83  ; CHECK: bb.2:
84  ; CHECK:   liveins: $lr, $r4, $r5, $r6, $r7, $r8, $r9, $r10, $r11
85  ; CHECK:   early-clobber $sp = frame-setup t2STR_PRE killed $lr, $sp, -8, 14 /* CC::al */, $noreg
86  ; CHECK:   tBL 14 /* CC::al */, $noreg, @OUTLINED_FUNCTION_0
87  ; CHECK:   $lr, $sp = frame-destroy t2LDR_POST $sp, 8, 14 /* CC::al */, $noreg
88  ; CHECK: bb.3:
89  ; CHECK:   liveins: $lr, $r4, $r5, $r6, $r7, $r8, $r9, $r10, $r11
90  ; CHECK:   $r2 = tMOVr $lr, 14 /* CC::al */, $noreg
91  ; CHECK:   tBX_RET 14 /* CC::al */, $noreg
92  bb.0:
93    liveins: $lr
94    $r0 = t2MOVi 1, 14, $noreg, $noreg
95    $r1 = t2MOVi 1, 14, $noreg, $noreg
96    $r2 = t2MOVi 1, 14, $noreg, $noreg
97    $r3 = t2MOVi 1, 14, $noreg, $noreg
98  bb.1:
99    liveins: $lr, $r4, $r5, $r6, $r7, $r8, $r9, $r10, $r11
100    $r0 = t2MOVi 1, 14, $noreg, $noreg
101    $r1 = t2MOVi 1, 14, $noreg, $noreg
102    $r2 = t2MOVi 1, 14, $noreg, $noreg
103    $r3 = t2MOVi 1, 14, $noreg, $noreg
104  bb.2:
105    liveins: $lr, $r4, $r5, $r6, $r7, $r8, $r9, $r10, $r11
106    $r0 = t2MOVi 1, 14, $noreg, $noreg
107    $r1 = t2MOVi 1, 14, $noreg, $noreg
108    $r2 = t2MOVi 1, 14, $noreg, $noreg
109    $r3 = t2MOVi 1, 14, $noreg, $noreg
110  bb.3:
111    liveins: $lr, $r4, $r5, $r6, $r7, $r8, $r9, $r10, $r11
112    $r2 = tMOVr $lr, 14, $noreg
113    tBX_RET 14, $noreg
114
115  ; CHECK-LABEL: name: OUTLINED_FUNCTION_0
116  ; CHECK: bb.0:
117  ; CHECK:   liveins: $lr, $r4, $r5, $r6, $r7, $r8, $r9, $r10, $r11
118  ; CHECK:   $r0 = t2MOVi 1, 14 /* CC::al */, $noreg, $noreg
119  ; CHECK:   $r1 = t2MOVi 1, 14 /* CC::al */, $noreg, $noreg
120  ; CHECK:   $r2 = t2MOVi 1, 14 /* CC::al */, $noreg, $noreg
121  ; CHECK:   $r3 = t2MOVi 1, 14 /* CC::al */, $noreg, $noreg
122  ; CHECK:   tBX_RET 14 /* CC::al */, $noreg
123
124  ; CHECK-LABEL: name: OUTLINED_FUNCTION_1
125  ; CHECK: bb.0:
126  ; CHECK:   liveins: $lr, $r6, $r7, $r8, $r9, $r10, $r11
127  ; CHECK:   $r0 = MOVi 1, 14 /* CC::al */, $noreg, $noreg
128  ; CHECK:   $r1 = MOVi 1, 14 /* CC::al */, $noreg, $noreg
129  ; CHECK:   $r2 = MOVi 1, 14 /* CC::al */, $noreg, $noreg
130  ; CHECK:   $r3 = MOVi 1, 14 /* CC::al */, $noreg, $noreg
131  ; CHECK:   $r4 = MOVi 1, 14 /* CC::al */, $noreg, $noreg
132  ; CHECK:   $r5 = MOVi 1, 14 /* CC::al */, $noreg, $noreg
133  ; CHECK:   MOVPCLR 14 /* CC::al */, $noreg
134