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_no_save_ok_arm() #0 { ret void }
7  define void @outline_no_save_ok_thumb() #1 { ret void }
8
9  declare void @foo()
10
11  attributes #0 = { minsize optsize }
12  attributes #1 = { minsize optsize "target-features"="+armv7-a,+thumb-mode" }
13...
14---
15
16name:           outline_no_save_ok_arm
17tracksRegLiveness: true
18body:             |
19  ; CHECK-LABEL: name: outline_no_save_ok_arm
20  ; CHECK: bb.0:
21  ; CHECK:   BL @OUTLINED_FUNCTION_1
22  ; CHECK: bb.1:
23  ; CHECK:   BL @OUTLINED_FUNCTION_1
24  ; CHECK: bb.2:
25  ; CHECK:   BX_RET 14 /* CC::al */, $noreg
26  bb.0:
27    $r2 = MOVi 1, 14, $noreg, $noreg
28    $r2 = MOVi 1, 14, $noreg, $noreg
29    $r2 = MOVi 1, 14, $noreg, $noreg
30    $r2 = MOVi 1, 14, $noreg, $noreg
31    $r3 = LDRi12 $sp, 8, 14, $noreg
32  bb.1:
33    $r2 = MOVi 1, 14, $noreg, $noreg
34    $r2 = MOVi 1, 14, $noreg, $noreg
35    $r2 = MOVi 1, 14, $noreg, $noreg
36    $r2 = MOVi 1, 14, $noreg, $noreg
37    $r3 = LDRi12 $sp, 8, 14, $noreg
38  bb.2:
39    BX_RET 14, $noreg
40...
41---
42
43name:           outline_no_save_ok_thumb
44tracksRegLiveness: true
45body:             |
46  ; CHECK-LABEL: name: outline_no_save_ok_thumb
47  ; CHECK: bb.0:
48  ; CHECK:   tBL 14 /* CC::al */, $noreg, @OUTLINED_FUNCTION_0
49  ; CHECK: bb.1:
50  ; CHECK:   tBL 14 /* CC::al */, $noreg, @OUTLINED_FUNCTION_0
51  ; CHECK: bb.2:
52  ; CHECK:   tBX_RET 14 /* CC::al */, $noreg
53  bb.0:
54    $r2 = t2MOVi 1, 14, $noreg, $noreg
55    $r2 = t2MOVi 1, 14, $noreg, $noreg
56    $r2 = t2MOVi 1, 14, $noreg, $noreg
57    $r2 = t2MOVi 1, 14, $noreg, $noreg
58    t2STRi12 $r2, $sp, 0, 14, $noreg
59  bb.1:
60    $r2 = t2MOVi 1, 14, $noreg, $noreg
61    $r2 = t2MOVi 1, 14, $noreg, $noreg
62    $r2 = t2MOVi 1, 14, $noreg, $noreg
63    $r2 = t2MOVi 1, 14, $noreg, $noreg
64    t2STRi12 $r2, $sp, 0, 14, $noreg
65  bb.2:
66    tBX_RET 14, $noreg
67
68  ; CHECK-LABEL: name: OUTLINED_FUNCTION_0
69  ; CHECK: bb.0:
70  ; CHECK:   $r2 = t2MOVi 1, 14 /* CC::al */, $noreg, $noreg
71  ; CHECK:   $r2 = t2MOVi 1, 14 /* CC::al */, $noreg, $noreg
72  ; CHECK:   $r2 = t2MOVi 1, 14 /* CC::al */, $noreg, $noreg
73  ; CHECK:   $r2 = t2MOVi 1, 14 /* CC::al */, $noreg, $noreg
74  ; CHECK:   t2STRi12 $r2, $sp, 0, 14 /* CC::al */, $noreg
75  ; CHECK:   tBX_RET 14 /* CC::al */, $noreg
76
77  ; CHECK-LABEL: name: OUTLINED_FUNCTION_1
78  ; CHECK: bb.0:
79  ; CHECK:   $r2 = MOVi 1, 14 /* CC::al */, $noreg, $noreg
80  ; CHECK:   $r2 = MOVi 1, 14 /* CC::al */, $noreg, $noreg
81  ; CHECK:   $r2 = MOVi 1, 14 /* CC::al */, $noreg, $noreg
82  ; CHECK:   $r2 = MOVi 1, 14 /* CC::al */, $noreg, $noreg
83  ; CHECK:   $r3 = LDRi12 $sp, 8, 14 /* CC::al */, $noreg
84  ; CHECK:   MOVPCLR 14 /* CC::al */, $noreg
85