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