llvm/lib
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
..
Analysis Rename some member variables from TD to DL. 2014-02-18 15:33:12 +00:00
AsmParser [ms-cxxabi] Add a new calling convention that swaps 'this' and 'sret' 2014-01-31 17:41:22 +00:00
Bitcode Make parseBitcodeFile return an ErrorOr<Module *>. 2014-01-15 01:08:23 +00:00
CodeGen Avoid an infinite cycle with private linkage and -f{data|function}-sections. 2014-02-19 01:28:30 +00:00
DebugInfo Support DWARF discriminators in object streamer. 2014-02-14 19:27:53 +00:00
ExecutionEngine Fix PR18743. 2014-02-18 22:24:57 +00:00
IR Fix PR18743. 2014-02-18 22:24:57 +00:00
IRReader Make parseBitcodeFile return an ErrorOr<Module *>. 2014-01-15 01:08:23 +00:00
LineEditor Avoid using EL_GETFP. 2014-02-04 20:04:46 +00:00
Linker Add a -suppress-warnings option to bitcode linking. 2014-02-06 18:01:56 +00:00
LTO Fix PR18743. 2014-02-18 22:24:57 +00:00
MC MCAsmParser: support required parameters 2014-02-19 03:00:29 +00:00
Object Change the begin and end methods in ObjectFile to match the style guide. 2014-02-10 20:24:04 +00:00
Option Avoid buffer copies when a Twine already is a StringRef. 2013-12-03 18:18:28 +00:00
Support Use mkdir instead of stat+mkdir. 2014-02-13 16:58:19 +00:00
TableGen [TableGen] Correctly generate implicit anonymous prototype defs in multiclasses 2014-01-02 20:47:09 +00:00
Target X86 CodeGenPrep: sink shufflevectors before shifts 2014-02-19 10:02:43 +00:00
Transforms X86 CodeGenPrep: sink shufflevectors before shifts 2014-02-19 10:02:43 +00:00
CMakeLists.txt Introduce line editor library. 2014-01-31 23:46:14 +00:00
LLVMBuild.txt Introduce line editor library. 2014-01-31 23:46:14 +00:00
Makefile Introduce line editor library. 2014-01-31 23:46:14 +00:00