1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 19:52:54 +01:00
Go to file
Jakob Stoklund Olesen 5c71bf1b0e Add pseudo-registers for pairs, triples, and quads of D registers.
NEON loads and stores accept single and double spaced pairs, triples,
and quads of D registers.  This patch adds new register classes to
accurately model those constraints:

  Dn, Dn+1    Dn, Dn+2
  ----------------------
  DPair       DPairSpc
  DTriple     DTripleSpc
  DQuad       DQuadSpc

Also extend the existing QQ and QQQQ register classes to contains all Q
pairs and quads instead of just the aligned ones.

These new register classes will make it possible to accurately model
constraints on NEON loads and stores, and we can get rid of all the NEON
pseudo-instructions.  The late scheduler will be able to accurately
model instruction dependencies from the explicit operands.

This more than doubles the number of ARM registers, but the backend
passes are quite good at handling this. The llc -O0 compile time only
regresses by 1.5%.  Future work on register mask operands will recover
this regression.

llvm-svn: 149640
2012-02-02 22:45:32 +00:00
autoconf autoconf: fix build/src dir confusion 2012-02-02 00:54:18 +00:00
bindings
cmake
docs Add a basic-block autovectorization pass. 2012-02-01 03:51:43 +00:00
examples
include Specify SubRegIndex components on the index itself. 2012-02-01 23:16:41 +00:00
lib Add pseudo-registers for pairs, triples, and quads of D registers. 2012-02-02 22:45:32 +00:00
projects
runtime
test Unix line endings 2012-02-02 19:00:49 +00:00
tools SwitchInst refactoring. 2012-02-01 07:49:51 +00:00
unittests RefCountedBaseVPTR needs the IntrusiveRefCntPtrInfo as friend, 2012-01-31 19:58:34 +00:00
utils Specify SubRegIndex components on the index itself. 2012-02-01 23:16:41 +00:00
.gitignore
CMakeLists.txt cmake: make BUILD_SHARED_LIBS a visible option 2012-02-01 14:49:39 +00:00
configure Regen one last time. 2012-02-02 01:11:30 +00:00
CREDITS.TXT
LICENSE.TXT
llvm.spec.in
LLVMBuild.txt
Makefile
Makefile.common
Makefile.config.in
Makefile.rules
README.txt Revert test commit 2012-01-31 23:18:33 +00:00

Low Level Virtual Machine (LLVM)
================================

This directory and its subdirectories contain source code for the Low Level
Virtual Machine, 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 HTML documentation provided in docs/index.html for further
assistance with LLVM.

If you're writing a package for LLVM, see docs/Packaging.html for our
suggestions.