1# The content of this test is modfied upon the output obtained from running 2# `bin/llc -O2 -stop-before=machine-outliner <path_to_llvm_project>/llvm/test/CodeGen/AArch64/machine-outliner-sort-per-priority.ll -o -` 3# RUN: llc -mtriple=aarch64 -run-pass=machine-outliner -verify-machineinstrs %s -o - | FileCheck %s 4 5--- | 6 declare i32 @foo() 7 8 define void @f1() #0 { ret void } 9 define void @f2() #0 { ret void } 10 define void @f3() #0 { ret void } 11 define void @f4() #0 { ret void } 12 define void @f5() #0 { ret void } 13 define void @f6() #0 { ret void } 14 15 attributes #0 = { minsize } 16... 17--- 18# CHECK-LABEL: name: f1 19# CHECK-LABEL: bb.0: 20# CHECK-NEXT: liveins: $lr 21# CHECK-NEXT: {{ $}} 22# CHECK-NEXT: $x5 = ORRXrs $xzr, $lr, 0 23# CHECK-NEXT: BL @OUTLINED_FUNCTION_1 24# CHECK-NEXT: $lr = ORRXrs $xzr, $x5, 0 25# CHECK-NEXT: $w5 = MOVZWi 11, 0 26# CHECK-NEXT: TCRETURNdi @OUTLINED_FUNCTION_0 27name: f1 28tracksRegLiveness: true 29frameInfo: 30 isCalleeSavedInfoValid: true 31machineFunctionInfo: 32 hasRedZone: false 33body: | 34 bb.0: 35 $w0 = MOVZWi 1, 0 36 $w1 = MOVZWi 2, 0 37 $w2 = MOVZWi 3, 0 38 $w3 = MOVZWi 4, 0 39 $w4 = MOVZWi 5, 0 40 $w5 = MOVZWi 11, 0 41 $w6 = MOVZWi 6, 0 42 $w7 = MOVZWi 7, 0 43 TCRETURNdi @foo, 0, csr_darwin_aarch64_aapcs, implicit $sp, implicit killed $w0, implicit killed $w1, implicit killed $w2, implicit killed $w3, implicit killed $w4, implicit killed $w5, implicit killed $w6, implicit killed $w7 44 45... 46--- 47# CHECK-LABEL: name: f2 48# CHECK-LABEL: bb.0: 49# CHECK-NEXT: liveins: $lr 50# CHECK-NEXT: {{ $}} 51# CHECK-NEXT: $x5 = ORRXrs $xzr, $lr, 0 52# CHECK-NEXT: BL @OUTLINED_FUNCTION_1 53# CHECK-NEXT: $lr = ORRXrs $xzr, $x5, 0 54# CHECK-NEXT: $w5 = MOVZWi 12, 0 55# CHECK-NEXT: TCRETURNdi @OUTLINED_FUNCTION_0 56name: f2 57tracksRegLiveness: true 58frameInfo: 59 isCalleeSavedInfoValid: true 60machineFunctionInfo: 61 hasRedZone: false 62body: | 63 bb.0: 64 $w0 = MOVZWi 1, 0 65 $w1 = MOVZWi 2, 0 66 $w2 = MOVZWi 3, 0 67 $w3 = MOVZWi 4, 0 68 $w4 = MOVZWi 5, 0 69 $w5 = MOVZWi 12, 0 70 $w6 = MOVZWi 6, 0 71 $w7 = MOVZWi 7, 0 72 TCRETURNdi @foo, 0, csr_darwin_aarch64_aapcs, implicit $sp, implicit killed $w0, implicit killed $w1, implicit killed $w2, implicit killed $w3, implicit killed $w4, implicit killed $w5, implicit killed $w6, implicit killed $w7 73 74... 75--- 76# CHECK-LABEL: name: f3 77# CHECK-LABEL: bb.0: 78# CHECK-NEXT: liveins: $lr 79# CHECK-NEXT: {{ $}} 80# CHECK-NEXT: $x5 = ORRXrs $xzr, $lr, 0 81# CHECK-NEXT: BL @OUTLINED_FUNCTION_1 82# CHECK-NEXT: $lr = ORRXrs $xzr, $x5, 0 83# CHECK-NEXT: $w5 = MOVZWi 13, 0 84# CHECK-NEXT: TCRETURNdi @OUTLINED_FUNCTION_0 85name: f3 86tracksRegLiveness: true 87frameInfo: 88 isCalleeSavedInfoValid: true 89machineFunctionInfo: 90 hasRedZone: false 91body: | 92 bb.0: 93 $w0 = MOVZWi 1, 0 94 $w1 = MOVZWi 2, 0 95 $w2 = MOVZWi 3, 0 96 $w3 = MOVZWi 4, 0 97 $w4 = MOVZWi 5, 0 98 $w5 = MOVZWi 13, 0 99 $w6 = MOVZWi 6, 0 100 $w7 = MOVZWi 7, 0 101 TCRETURNdi @foo, 0, csr_darwin_aarch64_aapcs, implicit $sp, implicit killed $w0, implicit killed $w1, implicit killed $w2, implicit killed $w3, implicit killed $w4, implicit killed $w5, implicit killed $w6, implicit killed $w7 102 103... 104--- 105# CHECK-LABEL: name: f4 106# CHECK-LABEL: bb.0: 107# CHECK-NEXT: liveins: $lr 108# CHECK-NEXT: {{ $}} 109# CHECK-NEXT: $x5 = ORRXrs $xzr, $lr, 0 110# CHECK-NEXT: BL @OUTLINED_FUNCTION_1 111# CHECK-NEXT: $lr = ORRXrs $xzr, $x5, 0 112# CHECK-NEXT: $w5 = MOVZWi 14, 0 113# CHECK-NEXT: TCRETURNdi @OUTLINED_FUNCTION_0 114name: f4 115tracksRegLiveness: true 116frameInfo: 117 isCalleeSavedInfoValid: true 118machineFunctionInfo: 119 hasRedZone: false 120body: | 121 bb.0: 122 $w0 = MOVZWi 1, 0 123 $w1 = MOVZWi 2, 0 124 $w2 = MOVZWi 3, 0 125 $w3 = MOVZWi 4, 0 126 $w4 = MOVZWi 5, 0 127 $w5 = MOVZWi 14, 0 128 $w6 = MOVZWi 6, 0 129 $w7 = MOVZWi 7, 0 130 TCRETURNdi @foo, 0, csr_darwin_aarch64_aapcs, implicit $sp, implicit killed $w0, implicit killed $w1, implicit killed $w2, implicit killed $w3, implicit killed $w4, implicit killed $w5, implicit killed $w6, implicit killed $w7 131 132... 133--- 134# CHECK-LABEL: name: f5 135# CHECK-LABEL: bb.0: 136# CHECK-NEXT: liveins: $lr 137# CHECK-NEXT: {{ $}} 138# CHECK-NEXT: $x5 = ORRXrs $xzr, $lr, 0 139# CHECK-NEXT: BL @OUTLINED_FUNCTION_1 140# CHECK-NEXT: $lr = ORRXrs $xzr, $x5, 0 141# CHECK-NOT: @OUTLINED_FUNCTION_0 142name: f5 143tracksRegLiveness: true 144frameInfo: 145 isCalleeSavedInfoValid: true 146machineFunctionInfo: 147 hasRedZone: false 148body: | 149 bb.0: 150 $w0 = MOVZWi 1, 0 151 $w1 = MOVZWi 2, 0 152 $w2 = MOVZWi 3, 0 153 $w3 = MOVZWi 4, 0 154 $w4 = MOVZWi 5, 0 155 $w5 = MOVZWi 15, 0 156 $w6 = MOVZWi 8, 0 157 $w7 = MOVZWi 9, 0 158 TCRETURNdi @foo, 0, csr_darwin_aarch64_aapcs, implicit $sp, implicit killed $w0, implicit killed $w1, implicit killed $w2, implicit killed $w3, implicit killed $w4, implicit killed $w5, implicit killed $w6, implicit killed $w7 159 160... 161--- 162# CHECK-LABEL: name: f6 163# CHECK-LABEL: bb.0: 164# CHECK-NEXT: liveins: $lr 165# CHECK-NEXT: {{ $}} 166# CHECK-NEXT: $x5 = ORRXrs $xzr, $lr, 0 167# CHECK-NEXT: BL @OUTLINED_FUNCTION_1 168# CHECK-NEXT: $lr = ORRXrs $xzr, $x5, 0 169# CHECK-NOT: @OUTLINED_FUNCTION_0 170name: f6 171tracksRegLiveness: true 172frameInfo: 173 isCalleeSavedInfoValid: true 174machineFunctionInfo: 175 hasRedZone: false 176body: | 177 bb.0: 178 $w0 = MOVZWi 1, 0 179 $w1 = MOVZWi 2, 0 180 $w2 = MOVZWi 3, 0 181 $w3 = MOVZWi 4, 0 182 $w4 = MOVZWi 5, 0 183 $w5 = MOVZWi 16, 0 184 $w6 = MOVZWi 9, 0 185 $w7 = MOVZWi 8, 0 186 TCRETURNdi @foo, 0, csr_darwin_aarch64_aapcs, implicit $sp, implicit killed $w0, implicit killed $w1, implicit killed $w2, implicit killed $w3, implicit killed $w4, implicit killed $w5, implicit killed $w6, implicit killed $w7 187 188... 189 190# CHECK-LABEL: name: OUTLINED_FUNCTION_0 191# CHECK-LABEL: bb.0: 192# CHECK-NEXT: liveins: $x19, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $lr, $d8, $d9, $d10, $d11, $d12, $d13, $d14, $d15, $w0, $w1, $w2, $w3, $w4, $w5 193# CHECK-NEXT: {{ $}} 194# CHECK-NEXT: $w6 = MOVZWi 6, 0 195# CHECK-NEXT: $w7 = MOVZWi 7, 0 196 197# CHECK-LABEL: name: OUTLINED_FUNCTION_1 198# CHECK-LABEL: bb.0: 199# CHECK-NEXT: liveins: $x19, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $lr, $d8, $d9, $d10, $d11, $d12, $d13, $d14, $d15 200# CHECK-NEXT: {{ $}} 201# CHECK-NEXT: $w0 = MOVZWi 1, 0 202# CHECK-NEXT: $w1 = MOVZWi 2, 0 203# CHECK-NEXT: $w2 = MOVZWi 3, 0 204# CHECK-NEXT: $w3 = MOVZWi 4, 0 205# CHECK-NEXT: $w4 = MOVZWi 5, 0 206# CHECK-NEXT: RET $lr 207