[all-commits] [llvm/llvm-project] bef56f: [AArch64][SVE] Correctly allocate scavenging slot ...

sdesmalen-arm via All-commits all-commits at lists.llvm.org
Wed Jul 22 02:52:35 PDT 2020


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

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64RegisterInfo.cpp
    A llvm/test/CodeGen/AArch64/framelayout-scavengingslot.mir
    A llvm/test/CodeGen/AArch64/framelayout-sve-basepointer.mir
    A llvm/test/CodeGen/AArch64/framelayout-sve-scavengingslot.mir
    M llvm/test/CodeGen/AArch64/framelayout-sve.mir

  Log Message:
  -----------
  [AArch64][SVE] Correctly allocate scavenging slot in presence of SVE.

This patch addresses two issues:

* Forces the availability of the base-pointer (x19) when the frame has
  both scalable vectors and variable-length arrays. Otherwise it will
  be expensive to access non-SVE locals.

* In presence of SVE stack objects, it will allocate the emergency
  scavenging slot close to the SP, so that they can be accessed from
  the SP or BP if available. If accessed from the frame-pointer, it will
  otherwise need an extra register to access the scavenging slot because
  of mixed scalable/non-scalable addressing modes.

Reviewers: efriedma, ostannard, cameron.mcinally, rengolin, david-arm

Reviewed By: efriedma

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




More information about the All-commits mailing list