llvm-project/llvm
Sander de Smalen 84a0c8e3ae [AArch64][SVE] Spilling/filling of SVE callee-saves.
Implement the spills/fills of callee-saved SVE registers using STR and LDR
instructions.

Also adds the `aarch64_sve_vector_pcs` attribute to specify the
callee-saved registers to be used for functions that return SVE vectors or
take SVE vectors as arguments. The callee-saved registers are vector
registers z8-z23 and predicate registers p4-p15.

The overal frame-layout with SVE will be as follows:

   +-------------+
   | stack args  |
   +-------------+
   | Callee Saves|
   |   X29, X30  |
   |-------------| <- FP
   | SVE Callee  | < //////////////
   | saved regs  | < //////////////
   |    z23      | < //////////////
   |     :       | < // SCALABLE //
   |    z8       | < //////////////
   |    p15      | < /// STACK ////
   |     :       | < //////////////
   |    p4       | < //// AREA ////
   +-------------+ < //////////////
   |     :       | < //////////////
   |  SVE locals | < //////////////
   |     :       | < //////////////
   +-------------+
   |/////////////| alignment gap.
   |     :       |
   | Stack objs  |
   |     :       |
   +-------------+ <- SP after call and frame-setup

Reviewers: cameron.mcinally, efriedma, greened, thegameg, ostannard, rengolin

Reviewed By: ostannard

Differential Revision: https://reviews.llvm.org/D68996
2019-11-11 09:03:19 +00:00
..
benchmarks
bindings Update version number in llvm python bindings 2019-10-25 17:14:11 -04:00
cmake [cmake] Remove SVN support from VersionFromVCS.cmake 2019-11-08 09:59:42 -08:00
docs Docs: Updates Sphinx Quickstart template for new contributors 2019-11-10 09:27:32 -07:00
examples Break out OrcError and RPC 2019-10-29 17:31:28 -07:00
include [yaml2obj] - Add a way to describe the custom data that is not part of an output section. 2019-11-11 11:48:23 +03:00
lib [AArch64][SVE] Spilling/filling of SVE callee-saves. 2019-11-11 09:03:19 +00:00
projects Add few docs and implementation of strcpy and strcat. 2019-10-04 17:30:54 +00:00
resources
runtimes
test [AArch64][SVE] Spilling/filling of SVE callee-saves. 2019-11-11 09:03:19 +00:00
tools [yaml2obj] - Add a way to describe the custom data that is not part of an output section. 2019-11-11 11:48:23 +03:00
unittests [LV] Apply sink-after & interleave-groups as VPlan transformations (NFCI) 2019-11-09 20:52:25 +02:00
utils CodeGenRegBank - make functions const to fix cppcheck warnings. 2019-11-10 11:14:58 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt [cmake] Remove LLVM_{BUILD,LINK}_LLVM_DYLIB options on Windows 2019-11-08 10:37:16 -08:00
CODE_OWNERS.TXT
CREDITS.TXT
LICENSE.TXT
LLVMBuild.txt
README.txt
RELEASE_TESTERS.TXT
configure
llvm.spec.in

README.txt

The LLVM Compiler Infrastructure
================================

This directory and its subdirectories contain source code for LLVM,
a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

If you are writing a package for LLVM, see docs/Packaging.rst for our
suggestions.