LLVM backend for 6502
Go to file
Tim Northover 44697f3fc1 X86 CodeGenPrep: sink shufflevectors before shifts
On x86, shifting a vector by a scalar is significantly cheaper than shifting a
vector by another fully general vector. Unfortunately, because SelectionDAG
operates on just one basic block at a time, the shufflevector instruction that
reveals whether the right-hand side of a shift *is* really a scalar is often
not visible to CodeGen when it's needed.

This adds another handler to CodeGenPrepare, to sink any useful shufflevector
instructions down to the basic block where they're used, predicated on a target
hook (since on other architectures, doing so will often just introduce extra
real work).

rdar://problem/16063505

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@201655 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-19 10:02:43 +00:00
autoconf Add version, arch, system libs, and targets to Makefile.config 2014-02-09 16:36:42 +00:00
bindings Makefile.ocaml: Tweak to use --system-libs. 2013-12-20 00:36:59 +00:00
cmake Build PIE binaries when cross-compiling to Android. 2014-02-19 09:51:22 +00:00
docs [docs] Clean up some more llvm-gcc stuff 2014-02-19 00:12:34 +00:00
examples Use PrivateLinkage now that it is safe. 2014-02-19 01:46:57 +00:00
include X86 CodeGenPrep: sink shufflevectors before shifts 2014-02-19 10:02:43 +00:00
lib X86 CodeGenPrep: sink shufflevectors before shifts 2014-02-19 10:02:43 +00:00
projects Remove dead code, we already require cmake 2.8.8. 2014-02-16 14:36:26 +00:00
test X86 CodeGenPrep: sink shufflevectors before shifts 2014-02-19 10:02:43 +00:00
tools llvm-objdump/COFF: Print load configuration table. 2014-02-19 03:53:11 +00:00
unittests Remove tautological test line (unsigneds are always >=0). 2014-02-15 00:45:14 +00:00
utils Remove special FP opcode maps and instead add enough MRM_XX formats to handle all the FP operations. This increases format by 1 bit, but decreases opcode map by 1 bit so the TSFlags size doesn't change. 2014-02-19 08:25:02 +00:00
.arcconfig
.clang-format
.gitignore Added .DS_Store entry in .gitignore for ignoring .DS_Store files in the source 2014-01-25 15:15:16 +00:00
CMakeLists.txt Fix LLVM install rules to not set permissions on include/ 2014-02-10 10:50:55 +00:00
CODE_OWNERS.TXT Add myself as owner for libc++ 2014-02-18 14:03:17 +00:00
configure Add version, arch, system libs, and targets to Makefile.config 2014-02-09 16:36:42 +00:00
CREDITS.TXT Fix documentation typos 2013-12-20 00:33:39 +00:00
LICENSE.TXT Update the copyright credits -- Happy new year 2014! 2014-01-01 08:27:31 +00:00
llvm.spec.in
LLVMBuild.txt Remove the very substantial, largely unmaintained legacy PGO 2013-10-02 15:42:23 +00:00
Makefile Provide CMake package modules in install tree 2014-02-09 16:37:02 +00:00
Makefile.common
Makefile.config.in Add version, arch, system libs, and targets to Makefile.config 2014-02-09 16:36:42 +00:00
Makefile.rules Provide CMake package modules in install tree 2014-02-09 16:37:02 +00:00
README.txt Revert "Test commit to check e-mail address. Please discard this." 2013-10-04 10:59:13 +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 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're writing a package for LLVM, see docs/Packaging.rst for our
suggestions.