llvm-6502/lib
Andrea Di Biagio 1726e2ff15 [X86] Add two combine rules to simplify dag nodes introduced during type legalization when promoting nodes with illegal vector type.
This patch teaches the backend how to simplify/canonicalize dag node
sequences normally introduced by the backend when promoting certain dag nodes
with illegal vector type.

This patch adds two new combine rules:
1) fold (shuffle (bitcast (BINOP A, B)), Undef, <Mask>) ->
        (shuffle (BINOP (bitcast A), (bitcast B)), Undef, <Mask>)

2) fold (BINOP (shuffle (A, Undef, <Mask>)), (shuffle (B, Undef, <Mask>))) ->
        (shuffle (BINOP A, B), Undef, <Mask>).

Both rules are only triggered on the type-legalized DAG.
In particular, rule 1. is a target specific combine rule that attempts
to sink a bitconvert into the operands of a binary operation.
Rule 2. is a target independet rule that attempts to move a shuffle
immediately after a binary operation.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209930 91177308-0d34-0410-b5e6-96231b3b80d8
2014-05-30 23:17:53 +00:00
..
Analysis implement missing SCEVDivision case 2014-05-29 19:44:09 +00:00
AsmParser [pr19844] Add thread local mode to aliases. 2014-05-28 18:15:43 +00:00
Bitcode [pr19844] Add thread local mode to aliases. 2014-05-28 18:15:43 +00:00
CodeGen [X86] Add two combine rules to simplify dag nodes introduced during type legalization when promoting nodes with illegal vector type. 2014-05-30 23:17:53 +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 AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
IR [X86] Auto-upgrade AVX1 vbroadcast intrinsics 2014-05-29 23:35:33 +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 Use create methods since msvc doesn't handle delegating constructors. 2014-05-17 21:29:57 +00:00
LTO AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
MC Fix MIPS exception personality encoding. 2014-05-30 16:48:56 +00:00
Object MachO: support N_INDR aliases in assembly files. 2014-05-30 13:22:59 +00:00
Option Options: Use erase_if to remove Args from the list. 2014-05-18 15:14:13 +00:00
ProfileData ProfileData: Allow multiple profiles in RawInstrProfReader 2014-05-16 00:38:00 +00:00
Support Fixup sys::getHostCPUFeatures crypto names so it doesn't clash with kernel headers 2014-05-23 10:14:13 +00:00
TableGen [modules] Add module maps for LLVM. These are not quite ready for prime-time 2014-05-21 02:46:14 +00:00
Target [X86] Add two combine rules to simplify dag nodes introduced during type legalization when promoting nodes with illegal vector type. 2014-05-30 23:17:53 +00:00
Transforms Make bitcast, extractelement, and insertelement considered cheap for speculation. 2014-05-30 18:34:43 +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