llvm/lib
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
..
Analysis ScalarEvolution: Derive element size from the type of the loaded element 2014-06-08 19:21:20 +00:00
AsmParser Allow aliases to be unnamed_addr. 2014-06-06 01:20:28 +00:00
Bitcode Allow aliases to be unnamed_addr. 2014-06-06 01:20:28 +00:00
CodeGen [X86] Add target combine rules for horizontal add/sub. 2014-06-09 16:54:41 +00:00
DebugInfo [modules] Add module maps for LLVM. These are not quite ready for prime-time 2014-05-21 02:46:14 +00:00
ExecutionEngine Add a Constant version of stripPointerCasts. 2014-06-04 19:01:48 +00:00
IR InstCombine: Canonicalize addrspacecast between different element types 2014-06-06 21:52:55 +00:00
IRReader [C++11] More 'nullptr' conversion. In some cases just using a boolean check instead of comparing to nullptr. 2014-04-15 06:32:26 +00:00
LineEditor [CMake] Use LINK_LIBS instead of target_link_libraries(). 2014-02-26 06:41:29 +00:00
Linker Allow aliases to be unnamed_addr. 2014-06-06 01:20:28 +00:00
LTO Build fix: remove initializeJumpInstrTablesPass() call from LTO 2014-06-07 20:39:53 +00:00
MC Fix gcc warning (enumeral and non-enumeral type in conditional expression) 2014-06-09 07:35:07 +00:00
Object [yaml2obj][obj2yaml] Support ELF symbol's visibility flags (default/hidden/protected). 2014-06-06 07:41:57 +00:00
Option Options: Use erase_if to remove Args from the list. 2014-05-18 15:14:13 +00:00
ProfileData Use an enum class. 2014-06-03 05:12:33 +00:00
Support APFloat: x - NaN needs to flip the signbit of NaN when x is a number. 2014-06-08 16:53:31 +00:00
TableGen Fix typos in tablegen error messages 2014-05-31 05:18:52 +00:00
Target [X86] Add target combine rules for horizontal add/sub. 2014-06-09 16:54:41 +00:00
Transforms [msan] Workaround for invalid origins in shufflevector. 2014-06-09 14:29:34 +00:00
CMakeLists.txt ProfileData: Introduce the InstrProfReader interface and a text reader 2014-03-21 17:24:48 +00:00
LLVMBuild.txt ProfileData: Introduce the InstrProfReader interface and a text reader 2014-03-21 17:24:48 +00:00
Makefile ProfileData: Introduce the InstrProfReader interface and a text reader 2014-03-21 17:24:48 +00:00