• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# RUN: llc -mtriple=aarch64-unknown-unknown -run-pass=machine-outliner \
2# RUN: -verify-machineinstrs %s -o - | FileCheck %s
3
4# Ensure that outlined function names appear as expected. Currently, they are
5# output in order of benefit.
6
7--- |
8  define void @should_have_fn2() #0 { ret void }
9  define void @should_have_fn0() #0 { ret void }
10  define void @should_have_fn1() #0 { ret void }
11  attributes #0 = { noredzone optsize minsize }
12...
13---
14
15name: should_have_fn2
16tracksRegLiveness: true
17body:             |
18    bb.0:
19        ; CHECK-LABEL: name:        should_have_fn2
20        ; CHECK-NOT: OUTLINED_FUNCTION_1
21        ; CHECK-NOT: OUTLINED_FUNCTION_0
22        ; CHECK: OUTLINED_FUNCTION_2
23        $w0 = ORRWri $wzr, 1
24        $w0 = ORRWri $wzr, 1
25        $w0 = ORRWri $wzr, 1
26    bb.1:
27        ; CHECK-DAG: OUTLINED_FUNCTION_2
28        $w0 = ORRWri $wzr, 1
29        $w0 = ORRWri $wzr, 1
30        $w0 = ORRWri $wzr, 1
31    bb.2:
32        ; CHECK-DAG: OUTLINED_FUNCTION_2
33        $w0 = ORRWri $wzr, 1
34        $w0 = ORRWri $wzr, 1
35        $w0 = ORRWri $wzr, 1
36    bb.3:
37        ; CHECK-DAG: OUTLINED_FUNCTION_2
38        $w0 = ORRWri $wzr, 1
39        $w0 = ORRWri $wzr, 1
40        $w0 = ORRWri $wzr, 1
41    bb.4:
42        RET undef $lr
43
44...
45---
46
47name: should_have_fn0
48
49tracksRegLiveness: true
50body:             |
51    bb.0:
52        ; CHECK-LABEL: name: should_have_fn0
53        ; CHECK-NOT: OUTLINED_FUNCTION_1
54        ; CHECK-NOT: OUTLINED_FUNCTION_2
55        ; CHECK: OUTLINED_FUNCTION_0
56        $w1 = ORRWri $wzr, 1
57        $w1 = ORRWri $wzr, 1
58        $w1 = ORRWri $wzr, 1
59        $w1 = ORRWri $wzr, 1
60        $w1 = ORRWri $wzr, 1
61    bb.1:
62        ; CHECK-DAG: OUTLINED_FUNCTION_0
63        $w1 = ORRWri $wzr, 1
64        $w1 = ORRWri $wzr, 1
65        $w1 = ORRWri $wzr, 1
66        $w1 = ORRWri $wzr, 1
67        $w1 = ORRWri $wzr, 1
68    bb.3:
69        ; CHECK-DAG: OUTLINED_FUNCTION_0
70        $w1 = ORRWri $wzr, 1
71        $w1 = ORRWri $wzr, 1
72        $w1 = ORRWri $wzr, 1
73        $w1 = ORRWri $wzr, 1
74        $w1 = ORRWri $wzr, 1
75    bb.4:
76        RET undef $lr
77
78...
79---
80
81name: should_have_fn1
82tracksRegLiveness: true
83body:             |
84    bb.0:
85        ; CHECK-LABEL: name: should_have_fn1
86        ; CHECK-NOT: OUTLINED_FUNCTION_0
87        ; CHECK-NOT: OUTLINED_FUNCTION_2
88        ; CHECK: OUTLINED_FUNCTION_1
89        $w2 = ORRWri $wzr, 1
90        $w2 = ORRWri $wzr, 1
91        $w2 = ORRWri $wzr, 1
92        $w2 = ORRWri $wzr, 1
93    bb.1:
94        ; CHECK-DAG: OUTLINED_FUNCTION_1
95        $w2 = ORRWri $wzr, 1
96        $w2 = ORRWri $wzr, 1
97        $w2 = ORRWri $wzr, 1
98        $w2 = ORRWri $wzr, 1
99    bb.3:
100        ; CHECK-DAG: OUTLINED_FUNCTION_1
101        $w2 = ORRWri $wzr, 1
102        $w2 = ORRWri $wzr, 1
103        $w2 = ORRWri $wzr, 1
104        $w2 = ORRWri $wzr, 1
105    bb.4:
106        RET undef $lr
107