[all-commits] [llvm/llvm-project] 54492a: [AArch64][SVE] Don't support fixedStack for SVE ob...

sdesmalen-arm via All-commits all-commits at lists.llvm.org
Tue Jul 28 07:48:17 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 54492a5843a34684ce21ae201dd8ca3e509288fd
      https://github.com/llvm/llvm-project/commit/54492a5843a34684ce21ae201dd8ca3e509288fd
  Author: Sander de Smalen <sander.desmalen at arm.com>
  Date:   2020-07-28 (Tue, 28 Jul 2020)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64FrameLowering.cpp
    M llvm/test/CodeGen/AArch64/framelayout-sve.mir

  Log Message:
  -----------
  [AArch64][SVE] Don't support fixedStack for SVE objects.

Fixed stack objects are preallocated and defined to be allocated before
any of the regular stack objects. These are normally used to model stack
arguments.

The AAPCS does not support passing SVE registers on the stack by value
(only by reference). The current layout also doesn't place them before
all stack objects, but rather before all SVE objects. Removing this
simplifies the code that emits the allocation/deallocation
around callee-saved registers (D84042).

This patch also removes all uses of fixedStack from from
framelayout-sve.mir, where this was used purely for testing purposes.

Reviewers: paulwalker-arm, efriedma, rengolin

Reviewed By: paulwalker-arm

Differential Revision: https://reviews.llvm.org/D84538


  Commit: 26b4ef3694973ea2fa656d3d3a7f67f16f135654
      https://github.com/llvm/llvm-project/commit/26b4ef3694973ea2fa656d3d3a7f67f16f135654
  Author: Sander de Smalen <sander.desmalen at arm.com>
  Date:   2020-07-28 (Tue, 28 Jul 2020)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64FrameLowering.cpp
    M llvm/test/CodeGen/AArch64/framelayout-sve.mir
    M llvm/test/CodeGen/AArch64/sve-trunc.ll

  Log Message:
  -----------
  [AArch64][SVE] Don't align the last SVE callee save.

Instead of aligning the last callee-saved-register slot to the stack
alignment (16 bytes), just align the SVE callee-saved block. This also
simplifies the code that allocates space for the callee-saves.

This change is needed to make sure the offset to which the callee-saved
register is spilled, corresponds to the offset used for e.g. unwind call
frame instructions.

Reviewers: efriedma, paulwalker-arm, david-arm, rengolin

Reviewed By: efriedma

Differential Revision: https://reviews.llvm.org/D84042


  Commit: cda2eb3ad2bbe923e74d6eb083af196a0622d800
      https://github.com/llvm/llvm-project/commit/cda2eb3ad2bbe923e74d6eb083af196a0622d800
  Author: Sander de Smalen <sander.desmalen at arm.com>
  Date:   2020-07-28 (Tue, 28 Jul 2020)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64FrameLowering.cpp
    M llvm/test/CodeGen/AArch64/framelayout-sve.mir

  Log Message:
  -----------
  [AArch64][SVE] Fix epilogue for SVE when the stack is realigned.

While deallocating the stackframe, the offset used to reload the
callee-saved registers was not pointing to the SVE callee-saves,
but rather to the whole SVE area.

   +--------------+
   | GRP callee   |
   |     saves    |
   +--------------+ <- FP
   | SVE callee   |
   |     saves    |
   +--------------+ <- Should restore SVE callee saves from here
   |  SVE Spills  |
   |  and Locals  |
   +--------------+ <- instead of from here.
   |              |
   :              :
   |              |
   +--------------+ <- SP

Reviewed By: paulwalker-arm

Differential Revision: https://reviews.llvm.org/D84539


Compare: https://github.com/llvm/llvm-project/compare/984cf99055a2...cda2eb3ad2bb


More information about the All-commits mailing list