forked from OSchip/llvm-project
80 lines
1.8 KiB
YAML
80 lines
1.8 KiB
YAML
# RUN: llc -enable-machine-outliner -start-before=aarch64-expand-pseudo -mtriple=arm64-apple-ios -o - %s | FileCheck %s
|
|
#
|
|
# The calls to _cb1 & _cb2 should be followed by the marker instruction
|
|
# 'mov x29, x29'. The marker should not get outlined.
|
|
#
|
|
# CHECK-LABEL: _fn1:
|
|
# CHECK: bb.0:
|
|
# CHECK: bl _cb1
|
|
# CHECK-NEXT: mov x29, x29
|
|
# CHECK-NEXT: bl _OUTLINED_FUNCTION_0
|
|
#
|
|
# CHECK-LABEL: _fn2:
|
|
# CHECK: bb.0:
|
|
# CHECK: bl _cb2
|
|
# CHECK-NEXT: mov x29, x29
|
|
# CHECK-NEXT: bl _OUTLINED_FUNCTION_0
|
|
#
|
|
# CHECK-LABEL: _OUTLINED_FUNCTION_0:
|
|
# CHECK: bb.0:
|
|
# CHECK-NEXT: orr w12, wzr, #0x3
|
|
# CHECK-NEXT: orr w12, wzr, #0x3
|
|
# CHECK-NEXT: orr w12, wzr, #0x3
|
|
# CHECK-NEXT: orr w12, wzr, #0x3
|
|
# CHECK-NEXT: ret
|
|
|
|
--- |
|
|
target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
|
|
target triple = "arm64-apple-ios"
|
|
|
|
define void @fn1() {
|
|
ret void
|
|
}
|
|
|
|
define void @fn2() {
|
|
ret void
|
|
}
|
|
|
|
declare void @cb1()
|
|
|
|
declare void @cb2()
|
|
...
|
|
---
|
|
name: fn1
|
|
tracksRegLiveness: true
|
|
machineFunctionInfo:
|
|
hasRedZone: false
|
|
body: |
|
|
bb.0:
|
|
liveins: $lr
|
|
|
|
BLR_RVMARKER @cb1, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $x0
|
|
$w12 = ORRWri $wzr, 1
|
|
$w12 = ORRWri $wzr, 1
|
|
$w12 = ORRWri $wzr, 1
|
|
$w12 = ORRWri $wzr, 1
|
|
$w12 = ORRWri $wzr, 1
|
|
$lr = ORRXri $xzr, 1
|
|
|
|
RET undef $lr
|
|
...
|
|
---
|
|
name: fn2
|
|
tracksRegLiveness: true
|
|
machineFunctionInfo:
|
|
hasRedZone: false
|
|
body: |
|
|
bb.0:
|
|
liveins: $lr, $x19, $x20, $lr
|
|
|
|
BLR_RVMARKER @cb2, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $x0
|
|
$w12 = ORRWri $wzr, 1
|
|
$w12 = ORRWri $wzr, 1
|
|
$w12 = ORRWri $wzr, 1
|
|
$w12 = ORRWri $wzr, 1
|
|
$w12 = ORRWri $wzr, 1
|
|
$lr = ORRXri $xzr, 1
|
|
|
|
RET undef $lr
|
|
...
|