113 lines · plain
1# RUN: llc -mtriple=aarch64--- -run-pass=machine-outliner \2# RUN: -verify-machineinstrs %s -o - | FileCheck %s3 4# Show that, when instructions that use the stack are present, it's possible5# for us to outline everything as the default outlining type.6# It's possible for reg-save-possible to outline by storing LR to a register,7# but most candidates in this case require us to modify the stack. The outliner8# should see that it's more beneficial to fix up instructions and save LR to9# the stack in this case.10 11--- |12 define void @reg-save-possible() #0 { ret void }13 define void @stack-save1() #0 { ret void }14 define void @stack-save2() #0 { ret void }15 define void @stack-save3() #0 { ret void }16 attributes #0 = { minsize noinline noredzone "frame-pointer"="all" }17...18---19 20name: reg-save-possible21tracksRegLiveness: true22body: |23 bb.0:24 liveins: $lr25 $lr = ORRXri $xzr, 126 $x19 = ORRXri $xzr, 127 $x20 = ORRXri $xzr, 128 bb.1:29 liveins: $lr30 ; CHECK-LABEL: name: reg-save-possible31 ; CHECK: $sp = STRXpre $lr, $sp, -1632 ; CHECK-NEXT: BL [[FN:@OUTLINED_FUNCTION_[0-9]+]]33 ; CHECK-NEXT: $sp, $lr = LDRXpost $sp, 1634 $x20, $x19 = LDPXi $sp, 1035 $x20, $x19 = LDPXi $sp, 1036 $x20, $x19 = LDPXi $sp, 1037 $x20, $x19 = LDPXi $sp, 1038 $x20, $x19 = LDPXi $sp, 1039 bb.2:40 RET undef $lr41 42...43---44 45name: stack-save146tracksRegLiveness: true47body: |48 bb.0:49 liveins: $lr, $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x18, $x19, $x20, $x21, $x22, $x23, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $fp50 $lr = ORRXri $xzr, 151 bb.1:52 liveins: $lr, $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x18, $x19, $x20, $x21, $x22, $x23, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $fp53 ; CHECK-LABEL: name: stack-save154 ; CHECK: $sp = STRXpre $lr, $sp, -1655 ; CHECK-NEXT: BL [[FN]]56 ; CHECK-NEXT: $sp, $lr = LDRXpost $sp, 1657 $x20, $x19 = LDPXi $sp, 1058 $x20, $x19 = LDPXi $sp, 1059 $x20, $x19 = LDPXi $sp, 1060 $x20, $x19 = LDPXi $sp, 1061 $x20, $x19 = LDPXi $sp, 1062 bb.2:63 liveins: $lr, $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x18, $x19, $x20, $x21, $x22, $x23, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $fp64 RET undef $lr65 66...67---68 69name: stack-save270tracksRegLiveness: true71body: |72 bb.0:73 liveins: $lr, $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x18, $x19, $x20, $x21, $x22, $x23, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $fp74 $lr = ORRXri $xzr, 175 bb.1:76 liveins: $lr, $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x18, $x19, $x20, $x21, $x22, $x23, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $fp77 ; CHECK-LABEL: name: stack-save278 ; CHECK: $sp = STRXpre $lr, $sp, -1679 ; CHECK-NEXT: BL [[FN]]80 ; CHECK-NEXT: $sp, $lr = LDRXpost $sp, 1681 $x20, $x19 = LDPXi $sp, 1082 $x20, $x19 = LDPXi $sp, 1083 $x20, $x19 = LDPXi $sp, 1084 $x20, $x19 = LDPXi $sp, 1085 $x20, $x19 = LDPXi $sp, 1086 bb.2:87 liveins: $lr, $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x18, $x19, $x20, $x21, $x22, $x23, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $fp88 RET undef $lr89 90...91---92 93name: stack-save394tracksRegLiveness: true95body: |96 bb.0:97 liveins: $lr, $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x18, $x19, $x20, $x21, $x22, $x23, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $fp98 $lr = ORRXri $xzr, 199 bb.1:100 liveins: $lr, $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x18, $x19, $x20, $x21, $x22, $x23, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $fp101 ; CHECK-LABEL: name: stack-save3102 ; CHECK: $sp = STRXpre $lr, $sp, -16103 ; CHECK-NEXT: BL [[FN]]104 ; CHECK-NEXT: $sp, $lr = LDRXpost $sp, 16105 $x20, $x19 = LDPXi $sp, 10106 $x20, $x19 = LDPXi $sp, 10107 $x20, $x19 = LDPXi $sp, 10108 $x20, $x19 = LDPXi $sp, 10109 $x20, $x19 = LDPXi $sp, 10110 bb.2:111 liveins: $lr, $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x18, $x19, $x20, $x21, $x22, $x23, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $fp112 RET undef $lr113