[PATCH] D84044: [AArch64][SVE] Add missing unwind info for SVE registers.

Sander de Smalen via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 21 04:48:17 PDT 2020


sdesmalen added a comment.

In D84044#2163137 <https://reviews.llvm.org/D84044#2163137>, @efriedma wrote:

> I'm confused by the stack layout involved here.  SVE registers should never be callee-save.  The ABI says we're only supposed to save the low 64 bits.


Just in case you were looking at the wrong version of the spec, https://github.com/ARM-software/abi-aa/blob/master/aapcs64/aapcs64.rst#scalable-vector-registers contains the sections for SVE.

>From 6.1.3:

> If a subroutine takes at least one argument in scalable vector registers or scalable predicate registers, or if it is a function that returns results in such registers, it must ensure that the entire contents of z8-z23 are preserved across the call

The tests above have the `aarch64_sve_vector_pcs` calling convention annotation to enforce the SVE ABI for these functions, because they otherwise don't take or return any values. e.g.

  define aarch64_sve_vector_pcs void @save_restore_pregs_sve() { entry: unreachable }


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D84044/new/

https://reviews.llvm.org/D84044





More information about the llvm-commits mailing list