llvm-6502/lib
Chandler Carruth 3d4542ce3d [x86] Remove the insanely over-aggressive unpack lowering strategy for
v16i8 shuffles, and replace it with new facilities.

This uses precise patterns to match exact unpacks, and the new
generalized unpack lowering only when we detect a case where we will
have to shuffle both inputs anyways and they terminate in exactly
a blend.

This fixes all of the blend horrors that I uncovered by always lowering
blends through the vector shuffle lowering. It also removes *sooooo*
much of the crazy instruction sequences required for v16i8 lowering
previously. Much cleaner now.

The only "meh" aspect is that we sometimes use pshufb+pshufb+unpck when
it would be marginally nicer to use pshufb+pshufb+por. However, the
difference there is *tiny*. In many cases its a win because we re-use
the pshufb mask. In others, we get to avoid the pshufb entirely. I've
left a FIXME, but I'm dubious we can really do better than this. I'm
actually pretty happy with this lowering now.

For SSE2 this exposes some horrors that were really already there. Those
will have to fixed by changing a different path through the v16i8
lowering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229846 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-19 12:10:37 +00:00
..
Analysis Reformat. 2015-02-18 08:36:14 +00:00
AsmParser IR: Drop scope from MDTemplateParameter 2015-02-19 00:37:21 +00:00
Bitcode IR: Drop scope from MDTemplateParameter 2015-02-19 00:37:21 +00:00
CodeGen [x86,sdag] Two interrelated changes to the x86 and sdag code. 2015-02-19 10:36:19 +00:00
DebugInfo llvm-pdbdump: Add flags controlling the type of values to dump. 2015-02-15 20:27:53 +00:00
ExecutionEngine Don't deference the section_end() iterator. 2015-02-17 20:07:28 +00:00
Fuzzer
IR Implement invoke statepoint verification. 2015-02-19 11:28:47 +00:00
IRReader Use ADDITIONAL_HEADER_DIRS in all LLVM CMake projects. 2015-02-11 03:28:02 +00:00
LineEditor Use ADDITIONAL_HEADER_DIRS in all LLVM CMake projects. 2015-02-11 03:28:02 +00:00
Linker Prefer SmallVector::append/insert over push_back loops. 2015-02-17 15:29:18 +00:00
LTO [PM] Remove the old 'PassManager.h' header file at the top level of 2015-02-13 10:01:29 +00:00
MC Reverting r229831 due to multiple ARM/PPC/MIPS build-bot failures. 2015-02-19 11:38:11 +00:00
Object Introduce Target::createNullTargetStreamer and use it from IRObjectFile. 2015-02-19 00:45:02 +00:00
Option Prefer SmallVector::append/insert over push_back loops. 2015-02-17 15:29:18 +00:00
ProfileData InstrProf: Don't combine expansion regions with code regions 2015-02-18 19:01:06 +00:00
Support [Support/Timer] Make GetMallocUsage() aware of jemalloc. 2015-02-19 07:27:14 +00:00
TableGen MSVC 2013 does not ICE on this code in the same fashion that MSVC 2012 did; NFC. 2015-02-16 19:33:36 +00:00
Target [x86] Remove the insanely over-aggressive unpack lowering strategy for 2015-02-19 12:10:37 +00:00
Transforms [objc-arc] Introduce the concept of RCIdentity and rename all relevant functions to use that name. NFC. 2015-02-19 00:42:38 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile