llvm-6502/test/Transforms
Benjamin Kramer 66821d9020 InstCombine: Turn (zext A) == (B & (1<<X)-1) into A == (trunc B), narrowing the compare.
This saves a cast, and zext is more expensive on platforms with subreg support
than trunc is. This occurs in the BSD implementation of memchr(3), see PR12750.
On the synthetic benchmark from that bug stupid_memchr and bsd_memchr have the
same performance now when not inlining either function.

stupid_memchr: 323.0us
bsd_memchr: 321.0us
memchr: 479.0us

where memchr is the llvm-gcc compiled bsd_memchr from osx lion's libc. When
inlining is enabled bsd_memchr still regresses down to llvm-gcc memchr time,
I haven't fully understood the issue yet, something is grossly mangling the
loop after inlining.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158297 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-10 20:35:00 +00:00
..
ADCE Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed. 2012-02-16 06:28:33 +00:00
ArgumentPromotion Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed. 2012-02-16 06:28:33 +00:00
BBVectorize Don't vectorize target-specific types (ppc_fp128, x86_fp80, etc.). 2012-04-27 19:34:00 +00:00
BlockPlacement Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed. 2012-02-16 06:28:33 +00:00
BoundsChecking BoundsChecking: fix a bug when the handling of recursive PHIs failed and could leave dangling references in the cache 2012-06-01 17:43:31 +00:00
BranchFolding
CodeExtractor Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed. 2012-02-16 06:28:33 +00:00
CodeGenPrepare Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed. 2012-02-16 06:28:33 +00:00
ConstantMerge Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed. 2012-02-16 06:28:33 +00:00
ConstProp Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed. 2012-02-16 06:28:33 +00:00
CorrelatedValuePropagation allow LazyValueInfo::getEdgeValue() to reason about multiple edges from the same switch instruction by doing union of ranges (which may still be conservative, but it's more aggressive than before) 2012-05-18 21:02:10 +00:00
DeadArgElim Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed. 2012-02-16 06:28:33 +00:00
DeadStoreElimination Teach DeadStoreElimination to eliminate exit-block stores with phi addresses. 2012-05-10 18:57:38 +00:00
EarlyCSE Fix regression from r151466: an we can't replace uses of an instruction reachable from the entry block with uses of an instruction not reachable from the entry block. PR12231. 2012-03-13 01:06:07 +00:00
FunctionAttrs Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed. 2012-02-16 06:28:33 +00:00
GlobalDCE Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed. 2012-02-16 06:28:33 +00:00
GlobalOpt Teach Function::hasAddressTaken that BlockAddress doesn't really take 2012-05-12 08:30:16 +00:00
GVN When gvn decides to replace an instruction with another, we have to patch the 2012-06-04 22:44:21 +00:00
IndVarSimplify Teach SCEV's icmp simplification logic that a-b == 0 is equivalent to a == b. 2012-05-30 18:32:23 +00:00
Inline Fix the inliner so that the optsize function attribute don't alter the 2012-05-23 13:42:57 +00:00
InstCombine InstCombine: Turn (zext A) == (B & (1<<X)-1) into A == (trunc B), narrowing the compare. 2012-06-10 20:35:00 +00:00
InstSimplify Revert r153521 as it's causing large regressions on the nightly testers. 2012-03-28 18:42:50 +00:00
Internalize Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed. 2012-02-16 06:28:33 +00:00
IPConstantProp Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed. 2012-02-16 06:28:33 +00:00
JumpThreading formatting change: strip debug info from test 2012-05-10 16:55:31 +00:00
LCSSA Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed. 2012-02-16 06:28:33 +00:00
LICM An instruction in a loop is not guaranteed to be executed just because the loop 2012-05-01 04:03:01 +00:00
LoopDeletion Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed. 2012-02-16 06:28:33 +00:00
LoopIdiom Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed. 2012-02-16 06:28:33 +00:00
LoopRotate Fix ValueTracking to conclude that debug intrinsics are safe to 2012-04-07 19:22:18 +00:00
LoopSimplify LoopSimplify bug fix. Handle indirect loop back edges. 2012-03-20 21:24:52 +00:00
LoopStrengthReduce LSR fix: add a missing phi check during IV hoisting. 2012-05-22 17:39:59 +00:00
LoopUnroll Fix 12513: Loop unrolling breaks with indirect branches. 2012-04-10 05:14:42 +00:00
LoopUnswitch Do not pass an invalid domtree to SimplifyInstruction from 2012-05-20 01:32:09 +00:00
LowerAtomic Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed. 2012-02-16 06:28:33 +00:00
LowerExpectIntrinsic Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed. 2012-02-16 06:28:33 +00:00
LowerInvoke Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed. 2012-02-16 06:28:33 +00:00
LowerSwitch PR1255 related changes (case ranges): 2012-05-24 09:33:20 +00:00
Mem2Reg Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed. 2012-02-16 06:28:33 +00:00
MemCpyOpt Move the capture analysis from MemoryDependencyAnalysis to a more general place 2012-05-14 20:35:04 +00:00
MergeFunc Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed. 2012-02-16 06:28:33 +00:00
ObjCARC Fix replacing all the users of objc weak runtime routines 2012-05-18 22:17:29 +00:00
PhaseOrdering Reapply r155136 after fixing PR12599. 2012-04-23 17:39:52 +00:00
PruneEH Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed. 2012-02-16 06:28:33 +00:00
Reassociate Revert commit 158073 while waiting for a fix. The issue is that reassociate 2012-06-08 13:37:30 +00:00
ScalarRepl Do not eliminate allocas whose alignment exceeds that of the 2012-05-19 22:52:10 +00:00
SCCP Reapply r155682, making constant folding more consistent, with a fix to work 2012-04-27 17:50:22 +00:00
SimplifyCFG Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed. 2012-02-16 06:28:33 +00:00
SimplifyLibCalls revert my previous patches that introduced an additional parameter to the objectsize intrinsic. 2012-05-22 15:25:31 +00:00
Sink Enhance the sinking code to handle diamond patterns. Patch by 2012-05-31 08:09:49 +00:00
StripSymbols Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed. 2012-02-16 06:28:33 +00:00
TailCallElim Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed. 2012-02-16 06:28:33 +00:00
TailDup Continue cleanup of LIT, getting rid of the remaining artifacts from dejagnu 2012-03-25 09:02:19 +00:00