llvm-6502/test/Transforms
Arnold Schwaighofer f7af1987dd SimplifyCFG: If convert single conditional stores
This transformation will transform a conditional store with a preceeding
uncondtional store to the same location:

 a[i] =
 may-alias with a[i] load
 if (cond)
   a[i] = Y

into an unconditional store.

 a[i] = X
 may-alias with a[i] load
 tmp = cond ? Y : X;
 a[i] = tmp

We assume that on average the cost of a mispredicted branch is going to be
higher than the cost of a second store to the same location, and that the
secondary benefits of creating a bigger basic block for other optimizations to
work on outway the potential case were the branch would be correctly predicted
and the cost of the executing the second store would be noticably reflected in
performance.

hmmer's execution time improves by 30% on an imac12,2 on ref data sets. With
this change we are on par with gcc's performance (gcc also performs this
transformation). There was a 1.2 % performance improvement on a ARM swift chip.
Other tests in the test-suite+external seem to be mostly uninfluenced in my
experiments:
This optimization was triggered on 41 tests such that the executable was
different before/after the patch. Only 1 out of the 40 tests (dealII) was
reproducable below 100% (by about .4%). Given that hmmer benefits so much I
believe this to be a fair trade off.

I am going to watch performance numbers across the builtbots and will revert
this if anything unexpected comes up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179957 91177308-0d34-0410-b5e6-96231b3b80d8
2013-04-20 21:42:09 +00:00
..
ADCE
ArgumentPromotion
BBVectorize CostModel: increase the default cost of supported floating point operations from 1 to two. Fixed a few tests that changes because now the cost of one insert + a vector operation on two doubles is lower than two scalar operations on doubles. 2013-04-12 21:15:03 +00:00
BlockPlacement
BranchFolding
CodeExtractor
CodeGenPrepare
ConstantMerge
ConstProp
CorrelatedValuePropagation
DeadArgElim Revert "PR14606: debug info imported_module support" 2013-04-19 07:47:16 +00:00
DeadStoreElimination
EarlyCSE
FunctionAttrs
GCOVProfiling Revert "PR14606: debug info imported_module support" 2013-04-19 07:47:16 +00:00
GlobalDCE Revert 179826. Tests were worthless. 2013-04-19 09:32:30 +00:00
GlobalOpt
GVN
IndVarSimplify
Inline
InstCombine recommit tests 2013-04-20 17:39:52 +00:00
InstSimplify ConstantFolding: ComputeMaskedBits wants the scalar size for vectors. 2013-04-19 16:56:24 +00:00
Internalize
IPConstantProp
JumpThreading
LCSSA
LICM
LoopDeletion
LoopIdiom
LoopRotate
LoopSimplify
LoopStrengthReduce
LoopUnroll
LoopUnswitch
LoopVectorize LoopVectorizer: Recognize min/max reductions 2013-04-18 17:22:34 +00:00
LowerAtomic
LowerExpectIntrinsic
LowerInvoke
LowerSwitch
Mem2Reg
MemCpyOpt
MergeFunc MergeFunc: Make pointer and integer types generate the same hash. 2013-04-19 23:06:44 +00:00
MetaRenamer
ObjCARC [objc-arc] Do not mismatch up retains inside a for loop with releases outside said for loop in the presense of differing provenance caused by escaping blocks. 2013-04-18 05:39:45 +00:00
PhaseOrdering Revert 179826. Tests were worthless. 2013-04-19 09:32:30 +00:00
PruneEH
Reassociate
Reg2Mem
ScalarRepl
SCCP
SimplifyCFG SimplifyCFG: If convert single conditional stores 2013-04-20 21:42:09 +00:00
SimplifyLibCalls
Sink
SLPVectorizer SLPVectorizer: Improve the cost model for loop invariant broadcast values. 2013-04-20 06:13:47 +00:00
SROA
StripSymbols
TailCallElim
TailDup