llvm-project/llvm/test/CodeGen/AArch64/sme-shared-za-interface.ll

21 lines
880 B
LLVM

; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sme -verify-machineinstrs < %s | FileCheck %s
declare void @private_za_callee()
; Ensure that we don't use tail call optimization when a lazy-save is required.
;
; FIXME: The code below if obviously not yet correct, because it should set up
; a lazy-save buffer before doing the call, and (conditionally) restore it after
; the call. But this functionality will follow in a future patch.
define void @disable_tailcallopt() "aarch64_pstate_za_shared" nounwind {
; CHECK-LABEL: disable_tailcallopt:
; CHECK: // %bb.0:
; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
; CHECK-NEXT: bl private_za_callee
; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
; CHECK-NEXT: ret
tail call void @private_za_callee()
ret void
}