1# RUN: llc -mtriple=aarch64--- -run-pass=prologepilog -run-pass=machine-outliner -verify-machineinstrs %s -o - | FileCheck %s
2# RUN: llc -mtriple=aarch64-pc-windows-msvc -run-pass=prologepilog -run-pass=machine-outliner -verify-machineinstrs %s -o - | FileCheck %s -check-prefix=WINDOWS
3--- |
4  define void @baz() #0 {
5    ret void
6  }
7
8  define void @bar(i32 %a) #0 {
9    ret void
10  }
11
12  attributes #0 = { noredzone }
13...
14---
15
16name:            bar
17tracksRegLiveness: true
18body:             |
19  bb.0:
20    liveins: $w0, $lr, $w8
21    $sp = frame-setup SUBXri $sp, 32, 0
22    $fp = frame-setup ADDXri $sp, 16, 0
23
24  bb.1:
25    BL @baz, implicit-def dead $lr, implicit $sp
26    $w17 = ORRWri $wzr, 1
27    $w17 = ORRWri $wzr, 1
28    $w0 = ORRWri $wzr, 4
29
30    BL @baz, implicit-def dead $lr, implicit $sp
31    $w17 = ORRWri $wzr, 1
32    $w17 = ORRWri $wzr, 1
33    $w0 = ORRWri $wzr, 3
34
35    BL @baz, implicit-def dead $lr, implicit $sp
36    $w17 = ORRWri $wzr, 1
37    $w17 = ORRWri $wzr, 1
38    $w0 = ORRWri $wzr, 2
39
40    BL @baz, implicit-def dead $lr, implicit $sp
41    $w17 = ORRWri $wzr, 1
42    $w17 = ORRWri $wzr, 1
43    $w0 = ORRWri $wzr, 1
44
45
46  bb.2:
47    $fp, $lr = LDPXi $sp, 2
48    RET undef $lr
49...
50---
51name:            baz
52tracksRegLiveness: true
53body:             |
54  bb.0:
55    liveins: $w0, $lr, $w8
56    RET undef $lr
57
58# CHECK: name:            OUTLINED_FUNCTION_0
59# CHECK: bb.0:
60# CHECK: liveins: $x19, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $d15, $d8, $d9, $d10, $d11, $d12, $d13, $d14, $lr
61# CHECK-DAG: frame-setup CFI_INSTRUCTION def_cfa_offset 16
62# CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $w30, -16
63# CHECK-NEXT: early-clobber $sp = STRXpre $lr, $sp, -16
64# CHECK-NEXT: BL @baz, implicit-def dead $lr, implicit $sp
65# CHECK-NEXT: $w17 = ORRWri $wzr, 1
66# CHECK-NEXT: $w17 = ORRWri $wzr, 1
67# CHECK-NEXT: early-clobber $sp, $lr = LDRXpost $sp, 16
68# CHECK-NEXT: RET $lr
69# WINDOWS-NOT: OUTLINED
70