llvm-6502/test/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
..
ADCE
ArgumentPromotion Update optimization passes to handle inalloca arguments 2014-01-28 02:38:36 +00:00
BBVectorize
BranchFolding Re-commit: Demote EmitRawText call in AsmPrinter::EmitInlineAsm() and remove hasRawTextSupport() call 2014-02-13 14:44:26 +00:00
CodeExtractor
CodeGenPrepare X86 CodeGenPrep: sink shufflevectors before shifts 2014-02-19 10:02:43 +00:00
ConstantHoisting/X86 [Constant Hoisting] Fix insertion point for constant materialization. 2014-02-08 00:20:49 +00:00
ConstantMerge
ConstProp
CorrelatedValuePropagation
DeadArgElim Fix broken CHECK lines 2014-02-16 07:31:05 +00:00
DeadStoreElimination Update optimization passes to handle inalloca arguments 2014-01-28 02:38:36 +00:00
DebugIR
EarlyCSE
FunctionAttrs Update optimization passes to handle inalloca arguments 2014-01-28 02:38:36 +00:00
GCOVProfiling
GlobalDCE
GlobalOpt GlobalOpt: Aliases don't have sections, don't copy them when replacing 2014-02-13 02:18:36 +00:00
GVN Fix broken CHECK lines. 2014-01-11 21:06:00 +00:00
IndVarSimplify [LPM] Fix PR18642, a pretty nasty bug in IndVars that "never mattered" 2014-01-29 04:40:19 +00:00
Inline Set default of inlinecold-threshold to 225. 2014-02-06 01:59:22 +00:00
InstCombine Do more addrspacecast transforms that happen for bitcast. 2014-02-14 00:49:12 +00:00
InstSimplify InstSimplify: Make shift, select and GEP simplifications vector-aware. 2014-01-24 17:09:53 +00:00
Internalize
IPConstantProp
JumpThreading
LCSSA
LICM [LPM] Switch LICM to actively use LCSSA in addition to preserving it. 2014-02-11 12:52:27 +00:00
LoopDeletion
LoopIdiom
LoopReroll
LoopRotate [LPM] Fix PR18643, another scary place where loop transforms failed to 2014-01-29 13:16:53 +00:00
LoopSimplify [LPM] Switch LICM to actively use LCSSA in addition to preserving it. 2014-02-11 12:52:27 +00:00
LoopStrengthReduce SCEVExpander: Try hard not to create derived induction variables in other loops 2014-02-16 15:49:50 +00:00
LoopUnroll
LoopUnswitch
LoopVectorize LoopVectorizer: Keep track of conditional store basic blocks 2014-02-08 20:41:13 +00:00
LowerAtomic
LowerExpectIntrinsic Lower llvm.expect intrinsic correctly for i1 2014-02-02 22:43:55 +00:00
LowerInvoke
LowerSwitch
Mem2Reg
MemCpyOpt A memcpy out of an fresh alloca is a no-op, delete it. Patch by Patrick Walton! 2014-02-06 06:29:19 +00:00
MergeFunc
MetaRenamer
ObjCARC Fix known typos 2014-01-24 17:20:08 +00:00
PhaseOrdering
PruneEH
Reassociate
Reg2Mem
SampleProfile llvm/test/Transforms/SampleProfile/syntax.ll: Eliminate locale-sensitive message check. 2014-01-11 09:23:52 +00:00
Scalarizer
ScalarRepl
SCCP
SimplifyCFG Allow speculating llvm.sqrt, fma and fmuladd 2014-01-31 00:09:00 +00:00
Sink
SLPVectorizer fix for null VectorizedValue assertion in the SLP Vectorizer (in function vectorizeTree()). radar://16064178 2014-02-17 03:06:16 +00:00
SROA Fix a really nasty SROA bug with how we handled out-of-bounds memcpy 2014-01-19 12:16:54 +00:00
StripSymbols
StructurizeCFG
TailCallElim
TailDup