21 lines
880 B
LLVM
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
|
|
}
|