[AArch64][SME] Disable tail-call optimization when streaming mode change or lazy...
authorSander de Smalen <sander.desmalen@arm.com>
Sat, 17 Sep 2022 15:38:50 +0000 (15:38 +0000)
committerSander de Smalen <sander.desmalen@arm.com>
Sat, 17 Sep 2022 16:15:07 +0000 (16:15 +0000)
commit5fae000f36107a64f7f5b0ac5233803ab2bd82cd
treebc5b49af84e8459dcf202a8c637d8dfeb07edaa1
parent87abc5013ac05a8b7ef86ee98ffcabdd8908802c
[AArch64][SME] Disable tail-call optimization when streaming mode change or lazy-save may be required.

When a streaming mode change is (or may be) required for a call, it will
need to restore the original mode after the call, which prevents the use of
tail-call optimization. The same holds true for a call that requires the lazy-save
mechanism to be set up before the call, and possibly restored after.

More details about the SME attributes and design can be found
in D131562.

Reviewed By: aemerson

Differential Revision: https://reviews.llvm.org/D131579
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
llvm/test/CodeGen/AArch64/sme-shared-za-interface.ll [new file with mode: 0644]
llvm/test/CodeGen/AArch64/sme-streaming-compatible-interface.ll
llvm/test/CodeGen/AArch64/sme-streaming-interface.ll