summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2012-02-02 22:45:32 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2012-02-02 22:45:32 +0000
commitcaed1c9370dd492894c655cf7eb7567a6f1887d0 (patch)
treef38fe467d4d74ae9a943b8d03bb554410f292e1a /clang/lib/Frontend/CompilerInvocation.cpp
parent57539cf8c808c87a69afb010f47c0a62857797f4 (diff)
downloadbcm5719-llvm-caed1c9370dd492894c655cf7eb7567a6f1887d0.tar.gz
bcm5719-llvm-caed1c9370dd492894c655cf7eb7567a6f1887d0.zip
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
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud