| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 94104
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This new version is much more aggressive about doing "full" reduction in
cases where it reduces register pressure, and also more aggressive about
rewriting induction variables to count down (or up) to zero when doing so
reduces register pressure.
It currently uses fairly simplistic algorithms for finding reuse
opportunities, but it introduces a new framework allows it to combine
multiple strategies at once to form hybrid solutions, instead of doing
all full-reduction or all base+index.
llvm-svn: 94061
|
| |
|
|
| |
llvm-svn: 92735
|
| |
|
|
|
|
| |
other files to compensate.
llvm-svn: 92075
|
| |
|
|
|
|
|
|
| |
contains another loop, or an instruction. The loop form is
substantially more efficient on large loops than the typical
code it replaces.
llvm-svn: 91654
|
| |
|
|
| |
llvm-svn: 91653
|
| |
|
|
| |
llvm-svn: 91647
|
| |
|
|
|
|
|
|
| |
of 91296 that caused trouble -- the Processed list needs to be
preserved for the livetime of the pass, as AddUsersIfInteresting
is called from other passes.
llvm-svn: 91641
|
| |
|
|
|
|
| |
introduced a non-deterministic behavior in the optimizer somewhere.
llvm-svn: 91598
|
| |
|
|
| |
llvm-svn: 91432
|
| |
|
|
|
|
| |
condition was inverted when the code was converted to contains().
llvm-svn: 91295
|
| |
|
|
| |
llvm-svn: 91293
|
| |
|
|
|
|
| |
the ScalarEvolution pointer into the functions which need it.
llvm-svn: 91289
|
| |
|
|
| |
llvm-svn: 91288
|
| |
|
|
| |
llvm-svn: 91287
|
| |
|
|
| |
llvm-svn: 91283
|
| |
|
|
| |
llvm-svn: 91282
|
| |
|
|
|
|
| |
SCEVExpander does this automatically.
llvm-svn: 91281
|
| |
|
|
| |
llvm-svn: 91280
|
| |
|
|
| |
llvm-svn: 89145
|
| |
|
|
| |
llvm-svn: 89123
|
| |
|
|
|
|
| |
use postinc iv.
llvm-svn: 89116
|
| |
|
|
| |
llvm-svn: 89110
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
cannot be folded into target cmp instruction.
- Avoid a phase ordering issue where early cmp optimization would prevent the
later count-to-zero optimization.
- Add missing checks which could cause LSR to reuse stride that does not have
users.
- Fix a bug in count-to-zero optimization code which failed to find the pre-inc
iv's phi node.
- Remove, tighten, loosen some incorrect checks disable valid transformations.
- Quite a bit of code clean up.
llvm-svn: 86969
|
| |
|
|
| |
llvm-svn: 86761
|
| |
|
|
| |
llvm-svn: 86715
|
| |
|
|
| |
llvm-svn: 86193
|
| |
|
|
|
|
| |
LoopSimplify form may not be available.
llvm-svn: 86175
|
| |
|
|
|
|
|
|
|
|
| |
strides for now, because it doesn't handle them correctly. This fixes a
miscompile of SingleSource/Benchmarks/Misc-C++/ray.
This problem was usually hidden because indvars transforms such induction
variables into negations of canonical induction variables.
llvm-svn: 85118
|
| |
|
|
|
|
| |
CmpInst::isSigned.
llvm-svn: 85037
|
| |
|
|
|
|
| |
update all the callers.
llvm-svn: 82889
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
that get created during loop unswitching, and fix SplitBlockPredecessors'
LCSSA updating code to create new PHIs instead of trying to just move
existing ones.
Also, optimize Loop::verifyLoop, since it gets called a lot. Use
searches on a sorted list of blocks instead of calling the "contains"
function, as is done in other places in the Loop class, since "contains"
does a linear search. Also, don't call verifyLoop from LoopSimplify or
LCSSA, as the PassManager is already calling verifyLoop as part of
LoopInfo's verifyAnalysis.
llvm-svn: 81221
|
| |
|
|
|
|
| |
tests significantly.
llvm-svn: 81101
|
| |
|
|
|
|
|
|
|
| |
that these passes are properly preserved.
Fix several transformation passes that claimed to preserve LoopSimplify
form but weren't.
llvm-svn: 80926
|
| |
|
|
| |
llvm-svn: 80766
|
| |
|
|
|
|
| |
This required converting a bunch of stuff off DOUT and other cleanups.
llvm-svn: 79819
|
| |
|
|
| |
llvm-svn: 78948
|
| |
|
|
|
|
| |
own struct type.
llvm-svn: 78610
|
| |
|
|
|
|
|
| |
matches what the comment says, and it avoids spurious BitCast
instructions for Argument values.
llvm-svn: 78121
|
| |
|
|
|
|
|
|
| |
change back are
metadata related, which I'm waiting on to avoid conflicting with Devang.
llvm-svn: 77721
|
| |
|
|
| |
llvm-svn: 77519
|
| |
|
|
| |
llvm-svn: 77516
|
| |
|
|
| |
llvm-svn: 77494
|
| |
|
|
| |
llvm-svn: 77247
|
| |
|
|
| |
llvm-svn: 77152
|
| |
|
|
|
|
| |
thanks to contexts-on-types. More to come.
llvm-svn: 77011
|
| |
|
|
| |
llvm-svn: 76702
|
| |
|
|
|
|
|
|
|
|
| |
using the Curiously Recurring Template Pattern with LoopBase.
This will help further refactoring, and future functionality for
Loop. Also, Headers can now foward-declare Loop, instead of pulling
in LoopInfo.h or doing tricks.
llvm-svn: 75519
|
| |
|
|
|
|
| |
the [I|F]CmpInst constructors. Who knew!?
llvm-svn: 75200
|
| |
|
|
| |
llvm-svn: 74918
|