[AArch64][SVE] Add missing unwind info for SVE registers.
authorSander de Smalen <sander.desmalen@arm.com>
Tue, 4 Aug 2020 10:10:32 +0000 (11:10 +0100)
committerSander de Smalen <sander.desmalen@arm.com>
Tue, 4 Aug 2020 10:47:06 +0000 (11:47 +0100)
commitbb3344c7d8c2703c910dd481ada43ecaf11536a6
treeb8e0687428045e7db65411b3134d23c5987045d1
parentfd6584a22043b254a323635c142b28ce80ae5b5b
[AArch64][SVE] Add missing unwind info for SVE registers.

This patch adds a CFI entry for each SVE callee saved register
that needs unwind info at an offset from the CFA. The offset is
a DWARF expression because the offset is partly scalable.

The CFI entries only cover a subset of the SVE callee-saves and
only encodes the lower 64-bits, thus implementing the lowest
common denominator ABI. Existing unwinders may support VG but
only restore the lower 64-bits.

Reviewed By: efriedma

Differential Revision: https://reviews.llvm.org/D84044
llvm/lib/Target/AArch64/AArch64FrameLowering.cpp
llvm/lib/Target/AArch64/AArch64FrameLowering.h
llvm/lib/Target/AArch64/AArch64RegisterInfo.cpp
llvm/lib/Target/AArch64/AArch64RegisterInfo.h
llvm/test/CodeGen/AArch64/framelayout-sve.mir
llvm/test/CodeGen/AArch64/sve-trunc.ll