llvm/lib/Transforms
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
..
Hello Set LLVM_EXPORTED_SYMBOL_FILE in CMakeLists whose corresponding Makefiles do so. 2013-12-29 23:06:49 +00:00
InstCombine Do more addrspacecast transforms that happen for bitcast. 2014-02-14 00:49:12 +00:00
Instrumentation Now that llvm always does the right thing with private, use it. 2014-02-19 02:08:39 +00:00
IPO GlobalOpt: Aliases don't have sections, don't copy them when replacing 2014-02-13 02:18:36 +00:00
ObjCARC Update optimization passes to handle inalloca arguments 2014-01-28 02:38:36 +00:00
Scalar X86 CodeGenPrep: sink shufflevectors before shifts 2014-02-19 10:02:43 +00:00
Utils Rename some member variables from TD to DL. 2014-02-18 15:33:12 +00:00
Vectorize fix for null VectorizedValue assertion in the SLP Vectorizer (in function vectorizeTree()). radar://16064178 2014-02-17 03:06:16 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile