LLVM backend for 6502
Go to file
Andrea Di Biagio 9b6992ddc2 [X86] Add target combine rules for horizontal add/sub.
This patch adds new target specific combine rules to identify horizontal
add/sub idioms from BUILD_VECTOR dag nodes.

This patch also teaches the DAGCombiner how to canonicalize sequences of
insert_vector_elt dag nodes according to the following rule:

  (insert_vector_elt (insert_vector_elt A, I0), I1) ->
    (insert_vecto_elt (insert_vector_elt A, I1), I0)

This new canonicalization rule only triggers if the inner insert_vector
dag node has exactly one use; also, both indices must be known constants,
and I1 < I0.
This last rule made it possible to write a simpler algorithm to identify
horizontal add/sub patterns because now we don't have to worry about the
ordering of insert_vector_elt dag nodes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210477 91177308-0d34-0410-b5e6-96231b3b80d8
2014-06-09 16:54:41 +00:00
autoconf Remove path_tclsh.m4. 2014-06-02 12:54:32 +00:00
bindings [OCaml] Commit missing parts of r210395 2014-06-07 15:53:28 +00:00
cmake Remove clang-specific libxml2 check from CMake 2014-06-06 05:08:42 +00:00
docs [docs] Fix typo, align comments, fix syntax highlighting 2014-06-09 10:12:29 +00:00
examples
include [DAG] Expose NoSignedWrap, NoUnsignedWrap and Exact flags to SelectionDAG. 2014-06-09 12:32:53 +00:00
lib [X86] Add target combine rules for horizontal add/sub. 2014-06-09 16:54:41 +00:00
projects
test [X86] Add target combine rules for horizontal add/sub. 2014-06-09 16:54:41 +00:00
tools tools: add a high level explanation for WoA EH data 2014-06-07 19:23:07 +00:00
unittests [C++11] Use 'nullptr'. 2014-06-08 22:29:17 +00:00
utils [C++11] Use 'nullptr'. 2014-06-08 22:29:17 +00:00
.arcconfig
.clang-format
.gitignore
CMakeLists.txt Make LINK_POLLY_INTO_TOOLS work with the CMake build 2014-06-06 06:39:00 +00:00
CODE_OWNERS.TXT
configure Touch configure to force clang's config.h.in reconfiguration on the build servers 2014-06-06 10:36:38 +00:00
CREDITS.TXT
LICENSE.TXT
llvm.spec.in
LLVMBuild.txt
Makefile
Makefile.common
Makefile.config.in
Makefile.rules
README.txt

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.