llvm-6502/lib/Transforms/Scalar
Chandler Carruth 464bda3a16 Teach the reassociate pass to fold chains of multiplies with repeated
elements to minimize the number of multiplies required to compute the
final result. This uses a heuristic to attempt to form near-optimal
binary exponentiation-style multiply chains. While there are some cases
it misses, it seems to at least a decent job on a very diverse range of
inputs.

Initial benchmarks show no interesting regressions, and an 8%
improvement on SPASS. Let me know if any other interesting results (in
either direction) crop up!

Credit to Richard Smith for the core algorithm, and helping code the
patch itself.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155616 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-26 05:30:30 +00:00
..
ADCE.cpp
BasicBlockPlacement.cpp
CMakeLists.txt
CodeGenPrepare.cpp Refactor the interface to recursively simplifying instructions to be tad 2012-03-24 21:11:24 +00:00
ConstantProp.cpp
CorrelatedValuePropagation.cpp llvm::SwitchInst 2012-03-11 06:09:17 +00:00
DCE.cpp
DeadStoreElimination.cpp Reverted r152620 - DSE: Shorten memset when a later store overwrites the start of it. There were all sorts of buildbot issues 2012-02-28 05:06:24 +00:00
EarlyCSE.cpp bz11794 : EarlyCSE stack overflow on long functions. 2012-01-31 23:14:41 +00:00
GlobalMerge.cpp Fix various issues (or do cleanups) found by enabling certain MSVC warnings. 2012-02-13 06:30:56 +00:00
GVN.cpp Make GVN's propagateEquality non-recursive. No intended functionality change. 2012-04-06 15:31:09 +00:00
IndVarSimplify.cpp More IndVarSimplify cleanup. 2012-03-24 00:51:17 +00:00
JumpThreading.cpp enhance jump threading to preserve TBAA information when PRE'ing loads, 2012-03-13 18:07:41 +00:00
LICM.cpp
LLVMBuild.txt
LoopDeletion.cpp
LoopIdiomRecognize.cpp
LoopInstSimplify.cpp
LoopRotation.cpp loop-rotate shouldn't hoist alloca instructions out of a loop. Patch by Patrik Hägglund, with slightly modified test. Issue reported by Patrik Hägglund on llvmdev. 2012-02-16 00:41:10 +00:00
LoopStrengthReduce.cpp Print IV chain numbers while collecting them. 2012-04-25 18:01:32 +00:00
LoopUnrollPass.cpp LoopUnrollPass: Use variable "Threshold" instead of "CurrentThreshold" when 2012-04-04 11:44:08 +00:00
LoopUnswitch.cpp Put this expensive check below the less expensive ones. 2012-04-19 23:31:07 +00:00
LowerAtomic.cpp
Makefile
MemCpyOptimizer.cpp Fix various issues (or do cleanups) found by enabling certain MSVC warnings. 2012-02-13 06:30:56 +00:00
ObjCARC.cpp Simplify the known retain count tracking; use a boolean state instead 2012-04-25 00:50:46 +00:00
Reassociate.cpp Teach the reassociate pass to fold chains of multiplies with repeated 2012-04-26 05:30:30 +00:00
Reg2Mem.cpp
Scalar.cpp
ScalarReplAggregates.cpp Typo. 2012-04-11 19:21:58 +00:00
SCCP.cpp Fix 80-column violation. 2012-03-28 00:35:33 +00:00
SimplifyCFGPass.cpp
SimplifyLibCalls.cpp fix pr12559: mark unavailable win32 math libcalls 2012-04-17 23:05:54 +00:00
Sink.cpp
TailRecursionElimination.cpp