blob: 8d9a2772afa08308e13bc8cd27ca297961b09c06 [file] [log] [blame]
# RUN: llc -mtriple=aarch64-none-linux-gnu -run-pass none -o - %s | FileCheck %s
# This test ensures that the MIR parser parses the cfi directives correctly.
--- |
declare void @foo()
define void @trivial_fp_func() {
entry:
call void @foo()
ret void
}
define void @trivial_fp_func_restore() {
entry:
call void @foo()
ret void
}
...
---
name: trivial_fp_func
# CHECK-LABEL: name: trivial_fp_func
body: |
bb.0.entry:
liveins: %lr, %fp, %lr, %fp
%sp = frame-setup STPXpre killed %fp, killed %lr, %sp, -2
%fp = frame-setup ADDXri %sp, 0, 0
; CHECK: CFI_INSTRUCTION def_cfa %w29, 16
frame-setup CFI_INSTRUCTION def_cfa %w29, 16
frame-setup CFI_INSTRUCTION offset %w30, -8
frame-setup CFI_INSTRUCTION offset %w29, -16
BL @foo, csr_aarch64_aapcs, implicit-def dead %lr, implicit %sp, implicit-def %sp
%sp, %fp, %lr = LDPXpost %sp, 2
RET_ReallyLR
...
---
name: trivial_fp_func_restore
# CHECK-LABEL: name: trivial_fp_func_restore
body: |
bb.0.entry:
liveins: %lr, %fp
%sp = frame-setup STPXpre killed %fp, killed %lr, %sp, -2
%fp = frame-setup ADDXri %sp, 0, 0
frame-setup CFI_INSTRUCTION def_cfa %w29, 16
frame-setup CFI_INSTRUCTION offset %w30, -8
; CHECK: CFI_INSTRUCTION offset %w30, -8
frame-setup CFI_INSTRUCTION offset %w29, -16
; CHECK: CFI_INSTRUCTION offset %w29, -16
BL @foo, csr_aarch64_aapcs, implicit-def dead %lr, implicit %sp, implicit-def %sp
%sp, %fp, %lr = LDPXpost %sp, 2
CFI_INSTRUCTION restore %w30
; CHECK: CFI_INSTRUCTION restore %w30
CFI_INSTRUCTION restore %w29
; CHECK: CFI_INSTRUCTION restore %w29
RET_ReallyLR
...