1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 04:22:57 +02:00
llvm-mirror/test/Transforms
Arnold Schwaighofer d0c38e0586 SimplifyCFG: If convert single conditional stores
This resurrects r179957, but adds code that makes sure we don't touch
atomic/volatile 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 where 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.

llvm-svn: 180731
2013-04-29 21:28:24 +00:00
..
ADCE
ArgumentPromotion Update some EH tests that were violating the new EH model. 2013-03-21 18:30:10 +00:00
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 Tests: rewrite 'opt ... %s' to 'opt ... < %s' so that opt does not emit a ModuleID 2012-12-30 01:28:40 +00:00
ConstantMerge Tests: rewrite 'opt ... %s' to 'opt ... < %s' so that opt does not emit a ModuleID 2012-12-30 01:28:40 +00:00
ConstProp Remove this testcase until I can figure out how to properly conditionalize it. 2013-02-07 07:01:54 +00:00
CorrelatedValuePropagation CVP: If we have a PHI with an incoming select, try to skip the select. 2013-02-24 15:34:43 +00:00
DeadArgElim Revert "Revert "PR14606: debug info imported_module support"" 2013-04-22 06:12:31 +00:00
DeadStoreElimination Tests: rewrite 'opt ... %s' to 'opt ... < %s' so that opt does not emit a ModuleID 2013-01-01 13:57:25 +00:00
EarlyCSE Initially forgotten-to-svn-add test case for r177279. 2013-03-18 12:07:24 +00:00
FunctionAttrs Move library call prototype attribute inference to functionattrs 2013-03-21 00:55:59 +00:00
GCOVProfiling Revert "Revert "PR14606: debug info imported_module support"" 2013-04-22 06:12:31 +00:00
GlobalDCE Revert 179826. Tests were worthless. 2013-04-19 09:32:30 +00:00
GlobalOpt Use a worklist to avoid a sneaky iterator invalidation. 2013-04-02 08:16:45 +00:00
GVN Revert 179071 because it is not the right way to support non standard new/new[] operators. 2013-04-09 04:43:46 +00:00
IndVarSimplify IndVarSimplify: do not recompute an IV value outside of the loop if : 2013-03-19 20:00:22 +00:00
Inline Update test. There may be multiple catches, but those will be cleaned up. 2013-03-22 20:36:39 +00:00
InstCombine Changed back (relative to commit 179786) the operations executed when extract(cast) is transformed to cast(extract). It uses the Builder class as before. In addition the result node is added to the Worklist, so all the previous extract users will become the new scalar cast users. 2013-04-22 20:51:10 +00:00
InstSimplify ConstantFolding: ComputeMaskedBits wants the scalar size for vectors. 2013-04-19 16:56:24 +00:00
Internalize Change the internalize pass to internalize all symbols when given an empty 2012-10-26 18:47:48 +00:00
IPConstantProp Use references to attribute groups on the call/invoke instructions. 2013-02-22 09:09:42 +00:00
JumpThreading Use references to attribute groups on the call/invoke instructions. 2013-02-22 09:09:42 +00:00
LCSSA
LICM Revert the test moves from 176733. Use "REQUIRES: asserts" instead. 2013-03-12 16:27:52 +00:00
LoopDeletion Modify the LLVM assembly output so that it uses references to represent function attributes. 2013-02-20 07:21:42 +00:00
LoopIdiom PR14904: Segmentation fault running pass 'Recognize loop idioms' 2013-01-10 23:32:01 +00:00
LoopRotate Tests: rewrite 'opt ... %s' to 'opt ... < %s' so that opt does not emit a ModuleID 2012-12-30 02:33:22 +00:00
LoopSimplify
LoopStrengthReduce LSR IVChain improvement. 2013-02-09 01:11:01 +00:00
LoopUnroll Revert the test moves from 176733. Use "REQUIRES: asserts" instead. 2013-03-12 16:27:52 +00:00
LoopUnswitch Revert the test moves from 176733. Use "REQUIRES: asserts" instead. 2013-03-12 16:27:52 +00:00
LoopVectorize LoopVectorizer: Calculate the number of pointers to disambiguate at runtime based on the numbers of reads and writes. 2013-04-26 05:08:59 +00:00
LowerAtomic
LowerExpectIntrinsic
LowerInvoke
LowerSwitch
Mem2Reg Revert "Adding DIImportedModules to DIScopes." 2013-03-28 02:44:59 +00:00
MemCpyOpt Use references to attribute groups on the call/invoke instructions. 2013-02-22 09:09:42 +00:00
MergeFunc MergeFunc: Make pointer and integer types generate the same hash. 2013-04-19 23:06:44 +00:00
MetaRenamer Tests: rewrite 'opt ... %s' to 'opt ... < %s' so that opt does not emit a ModuleID 2013-01-01 13:57:25 +00:00
ObjCARC [objc-arc] Apply the RV optimization to retains next to calls in ObjCARCContract instead of ObjCARCOpts. 2013-04-29 06:53:53 +00:00
PhaseOrdering Revert 179826. Tests were worthless. 2013-04-19 09:32:30 +00:00
PruneEH
Reassociate Fix a XOR reassociation bug. 2013-04-27 18:02:12 +00:00
Reg2Mem Make sure we don't emit instructions before a landingpad instruction. 2013-01-08 10:51:32 +00:00
ScalarRepl Disable the optimization about promoting vector-element-access with symbolic index. 2013-04-05 21:07:08 +00:00
SCCP Tests: rewrite 'opt ... %s' to 'opt ... < %s' so that opt does not emit a ModuleID 2013-01-01 13:57:25 +00:00
SimplifyCFG SimplifyCFG: If convert single conditional stores 2013-04-29 21:28:24 +00:00
SimplifyLibCalls Move library call prototype attribute inference to functionattrs 2013-03-21 00:55:59 +00:00
Sink
SLPVectorizer SLPVectorize: Add support for vectorization of casts. 2013-04-21 08:05:59 +00:00
SROA SROA: Don't crash on a select with two identical operands. 2013-04-21 17:48:39 +00:00
StripSymbols Tests: rewrite 'opt ... %s' to 'opt ... < %s' so that opt does not emit a ModuleID 2013-01-01 13:57:25 +00:00
TailCallElim Revert the test moves from 176733. Use "REQUIRES: asserts" instead. 2013-03-12 16:27:52 +00:00
TailDup Revert the test moves from 176733. Use "REQUIRES: asserts" instead. 2013-03-12 16:27:52 +00:00