1# RUN: llc -mtriple=aarch64--- -run-pass=machine-outliner \ 2# RUN: -verify-machineinstrs %s -o - | FileCheck %s 3 4--- | 5 define void @no-save1() #0 { ret void } 6 define void @no-save2() #0 { ret void } 7 define void @reg-save() #0 { ret void } 8 define void @stack-save() #0 { ret void } 9 attributes #0 = { minsize noinline noredzone "frame-pointer"="all" } 10... 11--- 12 13name: no-save1 14tracksRegLiveness: true 15body: | 16 bb.0: 17 liveins: $lr 18 $lr = ORRXri $xzr, 1 19 bb.1: 20 ; CHECK-LABEL: name: no-save1 21 ; CHECK: BL [[FN:@OUTLINED_FUNCTION_[0-9]+]] 22 ; CHECK-NOT: STRXpre 23 ; CHECK-NOT: $lr = 24 ; CHECK-NOT: ORRXrs 25 $x12 = ADDXri $sp, 48, 0; 26 $x12 = ADDXri $sp, 48, 0; 27 $x12 = ADDXri $sp, 48, 0; 28 $x12 = ADDXri $sp, 48, 0; 29 $x12 = ADDXri $sp, 48, 0; 30 bb.2: 31 RET undef $lr 32 33... 34--- 35 36name: no-save2 37tracksRegLiveness: true 38body: | 39 bb.0: 40 liveins: $lr 41 $lr = ORRXri $xzr, 1 42 bb.1: 43 ; CHECK-LABEL: name: no-save2 44 ; CHECK: BL [[FN]] 45 ; CHECK-NOT: STRXpre 46 ; CHECK-NOT: $lr = 47 ; CHECK-NOT: ORRXrs 48 $x12 = ADDXri $sp, 48, 0; 49 $x12 = ADDXri $sp, 48, 0; 50 $x12 = ADDXri $sp, 48, 0; 51 $x12 = ADDXri $sp, 48, 0; 52 $x12 = ADDXri $sp, 48, 0; 53 bb.2: 54 RET undef $lr 55... 56--- 57 58name: reg-save 59tracksRegLiveness: true 60body: | 61 bb.0: 62 liveins: $lr 63 $lr = ORRXri $xzr, 1 64 bb.1: 65 liveins: $lr 66 ; CHECK-LABEL: name: reg-save 67 ; CHECK: $[[REG:x[0-9]+]] = ORRXrs $xzr, $lr, 0 68 ; CHECK-NEXT: BL [[FN]] 69 ; CHECK-NEXT: $lr = ORRXrs $xzr, $[[REG]], 0 70 $x12 = ADDXri $sp, 48, 0; 71 $x12 = ADDXri $sp, 48, 0; 72 $x12 = ADDXri $sp, 48, 0; 73 $x12 = ADDXri $sp, 48, 0; 74 $x12 = ADDXri $sp, 48, 0; 75 bb.2: 76 liveins: $lr 77 RET undef $lr 78 79... 80--- 81 82name: stack-save 83tracksRegLiveness: true 84body: | 85 bb.0: 86 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, $fp 87 $lr = ORRXri $xzr, 1 88 bb.1: 89 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, $fp 90 ; CHECK-LABEL: name: stack-save 91 ; CHECK-NOT: BL 92 $x12 = ADDXri $sp, 48, 0; 93 $x12 = ADDXri $sp, 48, 0; 94 $x12 = ADDXri $sp, 48, 0; 95 $x12 = ADDXri $sp, 48, 0; 96 $x12 = ADDXri $sp, 48, 0; 97 bb.2: 98 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, $fp 99 RET undef $lr 100