| # RUN: llc -mtriple=aarch64-unknown-unknown -run-pass=machine-outliner \ |
| # RUN: -verify-machineinstrs %s -o - | FileCheck %s |
| |
| # Ensure that outlined function names appear as expected. Currently, they are |
| # output in order of benefit. |
| |
| --- | |
| define void @should_have_fn2() #0 { ret void } |
| define void @should_have_fn0() #0 { ret void } |
| define void @should_have_fn1() #0 { ret void } |
| attributes #0 = { noredzone optsize minsize } |
| ... |
| --- |
| |
| name: should_have_fn2 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: should_have_fn2 |
| ; CHECK-NOT: OUTLINED_FUNCTION_1 |
| ; CHECK-NOT: OUTLINED_FUNCTION_0 |
| ; CHECK: OUTLINED_FUNCTION_2 |
| $w0 = ORRWri $wzr, 1 |
| $w0 = ORRWri $wzr, 1 |
| $w0 = ORRWri $wzr, 1 |
| bb.1: |
| ; CHECK-DAG: OUTLINED_FUNCTION_2 |
| $w0 = ORRWri $wzr, 1 |
| $w0 = ORRWri $wzr, 1 |
| $w0 = ORRWri $wzr, 1 |
| bb.2: |
| ; CHECK-DAG: OUTLINED_FUNCTION_2 |
| $w0 = ORRWri $wzr, 1 |
| $w0 = ORRWri $wzr, 1 |
| $w0 = ORRWri $wzr, 1 |
| bb.3: |
| ; CHECK-DAG: OUTLINED_FUNCTION_2 |
| $w0 = ORRWri $wzr, 1 |
| $w0 = ORRWri $wzr, 1 |
| $w0 = ORRWri $wzr, 1 |
| bb.4: |
| RET undef $lr |
| |
| ... |
| --- |
| |
| name: should_have_fn0 |
| |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: should_have_fn0 |
| ; CHECK-NOT: OUTLINED_FUNCTION_1 |
| ; CHECK-NOT: OUTLINED_FUNCTION_2 |
| ; CHECK: OUTLINED_FUNCTION_0 |
| $w1 = ORRWri $wzr, 1 |
| $w1 = ORRWri $wzr, 1 |
| $w1 = ORRWri $wzr, 1 |
| $w1 = ORRWri $wzr, 1 |
| $w1 = ORRWri $wzr, 1 |
| bb.1: |
| ; CHECK-DAG: OUTLINED_FUNCTION_0 |
| $w1 = ORRWri $wzr, 1 |
| $w1 = ORRWri $wzr, 1 |
| $w1 = ORRWri $wzr, 1 |
| $w1 = ORRWri $wzr, 1 |
| $w1 = ORRWri $wzr, 1 |
| bb.3: |
| ; CHECK-DAG: OUTLINED_FUNCTION_0 |
| $w1 = ORRWri $wzr, 1 |
| $w1 = ORRWri $wzr, 1 |
| $w1 = ORRWri $wzr, 1 |
| $w1 = ORRWri $wzr, 1 |
| $w1 = ORRWri $wzr, 1 |
| bb.4: |
| RET undef $lr |
| |
| ... |
| --- |
| |
| name: should_have_fn1 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: should_have_fn1 |
| ; CHECK-NOT: OUTLINED_FUNCTION_0 |
| ; CHECK-NOT: OUTLINED_FUNCTION_2 |
| ; CHECK: OUTLINED_FUNCTION_1 |
| $w2 = ORRWri $wzr, 1 |
| $w2 = ORRWri $wzr, 1 |
| $w2 = ORRWri $wzr, 1 |
| $w2 = ORRWri $wzr, 1 |
| bb.1: |
| ; CHECK-DAG: OUTLINED_FUNCTION_1 |
| $w2 = ORRWri $wzr, 1 |
| $w2 = ORRWri $wzr, 1 |
| $w2 = ORRWri $wzr, 1 |
| $w2 = ORRWri $wzr, 1 |
| bb.3: |
| ; CHECK-DAG: OUTLINED_FUNCTION_1 |
| $w2 = ORRWri $wzr, 1 |
| $w2 = ORRWri $wzr, 1 |
| $w2 = ORRWri $wzr, 1 |
| $w2 = ORRWri $wzr, 1 |
| bb.4: |
| RET undef $lr |