History log of /llvm-project/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp (Results 326 – 350 of 369)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 863bab68 26-Sep-2012 Bill Wendling <isanbard@gmail.com>

Remove the `hasFnAttr' method from Function.

The hasFnAttr method has been replaced by querying the Attributes explicitly. No
intended functionality change.

llvm-svn: 164725


Revision tags: llvmorg-3.1.0, llvmorg-3.1.0-rc3, llvmorg-3.1.0-rc2, llvmorg-3.1.0-rc1
# b21b865f 04-Apr-2012 Hongbin Zheng <etherzhhb@gmail.com>

LoopUnrollPass: Use variable "Threshold" instead of "CurrentThreshold" when
reducing unroll count, otherwise the reduced unroll count is not taking
the "OptimizeForSize" attribute into account.

LoopUnrollPass: Use variable "Threshold" instead of "CurrentThreshold" when
reducing unroll count, otherwise the reduced unroll count is not taking
the "OptimizeForSize" attribute into account.

llvm-svn: 154007

show more ...


# d04d1529 09-Dec-2011 Andrew Trick <atrick@apple.com>

Add -unroll-runtime for unrolling loops with run-time trip counts.

Patch by Brendon Cahoon!

This extends the existing LoopUnroll and LoopUnrollPass. Brendon
measured no regressions in the llvm test

Add -unroll-runtime for unrolling loops with run-time trip counts.

Patch by Brendon Cahoon!

This extends the existing LoopUnroll and LoopUnrollPass. Brendon
measured no regressions in the llvm test suite with -unroll-runtime
enabled. This implementation works by using the existing loop
unrolling code to unroll the loop by a power-of-two (default 8). It
generates an if-then-else sequence of code prior to the loop to
execute the extra iterations before entering the unrolled loop.

llvm-svn: 146245

show more ...


# a8bdb7cb 28-Nov-2011 Andrew Trick <atrick@apple.com>

Remove the temporary flag -disable-unroll-scev and dead code.

SCEV should now be used for trip count analysis, not LoopInfo.

llvm-svn: 145262


Revision tags: llvmorg-3.0.0, llvmorg-3.0.0-rc4, llvmorg-3.0.0-rc3, llvmorg-3.0.0-rc2
# 88b4fa21 19-Oct-2011 Devang Patel <dpatel@apple.com>

Initialze ScalarEvalution dependency.
Patch by Pranav Bhandarkar!

llvm-svn: 142556


Revision tags: llvmorg-3.0.0-rc1
# f7656015 01-Oct-2011 Andrew Trick <atrick@apple.com>

Inlining and unrolling heuristics should be aware of free truncs.

We want heuristics to be based on accurate data, but more importantly
we don't want llvm to behave randomly. A benign trunc inserted

Inlining and unrolling heuristics should be aware of free truncs.

We want heuristics to be based on accurate data, but more importantly
we don't want llvm to behave randomly. A benign trunc inserted by an
upstream pass should not cause a wild swings in optimization
level. See PR11034. It's a general problem with threshold-based
heuristics, but we can make it less bad.

llvm-svn: 140919

show more ...


# 31b941a6 02-Sep-2011 Andrew Trick <atrick@apple.com>

Enable SCEV-based unrolling by default.

This changes loop unrolling to use the same mechanism for trip count
computation as indvars. This is a stronger check that tends to unroll
more loops. A very

Enable SCEV-based unrolling by default.

This changes loop unrolling to use the same mechanism for trip count
computation as indvars. This is a stronger check that tends to unroll
more loops. A very common side-effect is that many single iteration
loops will be removed sooner. The real goal was simply to remove
dependence on canonical IVs.

x86 is break even.
ARM performance changes to expect (+ is good):
External/SPEC/CFP2000/183.equake/183.equake +13%
SingleSource/Benchmarks/Dhrystone/fldry +21%
MultiSource/Applications/spiff/spiff +3%
SingleSource/Benchmarks/Stanford/Puzzle -14%

The Puzzle regression is actually an improvement in loop optimization
that defeats GVN: rdar://problem/10065079.

llvm-svn: 139009

show more ...


# 2b6860f0 11-Aug-2011 Andrew Trick <atrick@apple.com>

Allow loop unrolling to get known trip counts from ScalarEvolution.

SCEV unrolling can unroll loops with arbitrary induction variables. It
is a prerequisite for -disable-iv-rewrite performance. It i

Allow loop unrolling to get known trip counts from ScalarEvolution.

SCEV unrolling can unroll loops with arbitrary induction variables. It
is a prerequisite for -disable-iv-rewrite performance. It is also
easily handles loops of arbitrary structure including multiple exits
and is generally more robust.

This is under a temporary option to avoid affecting default
behavior for the next couple of weeks. It is needed so that I can
checkin unit tests for updateUnloop.

llvm-svn: 137384

show more ...


# 4d0040ba 10-Aug-2011 Andrew Trick <atrick@apple.com>

Invoke SimplifyIndVar when we partially unroll a loop. Fixes PR10534.

llvm-svn: 137203


# 1cabe54f 23-Jul-2011 Andrew Trick <atrick@apple.com>

Move trip count discovery outside of the generic LoopUnroll helper. This
removes its dependence on canonical induction variables.

llvm-svn: 135829


# 279e7a6c 23-Jul-2011 Andrew Trick <atrick@apple.com>

whitespace

llvm-svn: 135828


# 35a65b2a 14-Apr-2011 Chris Lattner <sabre@nondot.org>

fix a couple -Wsign-compare warnings.

llvm-svn: 129501


# 377cc31a 13-Apr-2011 Junjie Gu <jgu222@gmail.com>

Fixed the revision 129449.

llvm-svn: 129450


# 7c3b4593 13-Apr-2011 Junjie Gu <jgu222@gmail.com>

Passing unroll parameters (unroll-count, threshold, and partial unroll) via LoopUnroll class's ctor. Doing so
will allow multiple context with different loop unroll parameters to run. This is a min

Passing unroll parameters (unroll-count, threshold, and partial unroll) via LoopUnroll class's ctor. Doing so
will allow multiple context with different loop unroll parameters to run. This is a minor change and no effect
on existing application.

llvm-svn: 129449

show more ...


Revision tags: llvmorg-2.9.0, llvmorg-2.9.0-rc3, llvmorg-2.9.0-rc2, llvmorg-2.9.0-rc1
# 459e0799 17-Jan-2011 Owen Anderson <resistor@mac.com>

Remove dead code, that I apparently wrote a while back. We seem to be doing well enough
without whatever this was trying to do. When/if someone has the time to do some empirical
evaluations, it mig

Remove dead code, that I apparently wrote a while back. We seem to be doing well enough
without whatever this was trying to do. When/if someone has the time to do some empirical
evaluations, it might be worth it to figure out what this code was trying to do and see if
it's worth resurrecting/fixing.

llvm-svn: 123684

show more ...


# dfcfcb49 11-Jan-2011 Chris Lattner <sabre@nondot.org>

random cleanups

llvm-svn: 123221


# 679572e5 02-Jan-2011 Chris Lattner <sabre@nondot.org>

improve loop rotation to use CodeMetrics to analyze the
size of a loop header instead of its own code size estimator.
This allows it to handle bitcasts etc more precisely.

llvm-svn: 122681


# a4fefc19 19-Oct-2010 Owen Anderson <resistor@mac.com>

Passes do not need to recursively initialize passes that they preserve, if
they do not also require them. This allows us to reduce inter-pass linkage
dependencies.

llvm-svn: 116854


# 6c18d1aa 19-Oct-2010 Owen Anderson <resistor@mac.com>

Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which
must be called in the pass's constructor. This function uses static dependency

Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which
must be called in the pass's constructor. This function uses static dependency declarations to recursively initialize
the pass's dependencies.

Clients that only create passes through the createFooPass() APIs will require no changes. Clients that want to use the
CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h
before parsing commandline arguments.

I have tested this with all standard configurations of clang and llvm-gcc on Darwin. It is possible that there are problems
with the static dependencies that will only be visible with non-standard options. If you encounter any crash in pass
registration/creation, please send the testcase to me directly.

llvm-svn: 116820

show more ...


# 8ac477ff 12-Oct-2010 Owen Anderson <resistor@mac.com>

Begin adding static dependence information to passes, which will allow us to
perform initialization without static constructors AND without explicit initialization
by the client. For the moment, pas

Begin adding static dependence information to passes, which will allow us to
perform initialization without static constructors AND without explicit initialization
by the client. For the moment, passes are required to initialize both their
(potential) dependencies and any passes they preserve. I hope to be able to relax
the latter requirement in the future.

llvm-svn: 116334

show more ...


# df7a4f25 07-Oct-2010 Owen Anderson <resistor@mac.com>

Now with fewer extraneous semicolons!

llvm-svn: 115996


Revision tags: llvmorg-2.8.0, llvmorg-2.8.0-rc3
# d67ca0ed 29-Sep-2010 Owen Anderson <resistor@mac.com>

Revert r114919, which caused some serious regressions on ARM.

llvm-svn: 115053


# 9c93fd55 27-Sep-2010 Owen Anderson <resistor@mac.com>

Weight loop unrolling counts by nesting depth. Unrolling deeply nested loops tends to cause high
register pressure and thus excess spills, which we don't currently recover from well. This should
be

Weight loop unrolling counts by nesting depth. Unrolling deeply nested loops tends to cause high
register pressure and thus excess spills, which we don't currently recover from well. This should
be re-evaluated in the future if our ability to generate good spills/splits improves.

Partial fix for <rdar://problem/7635585>.

llvm-svn: 114919

show more ...


Revision tags: llvmorg-2.8.0-rc2
# d85c9ccd 10-Sep-2010 Owen Anderson <resistor@mac.com>

Lower the unrolling theshold to 150. Empirical tests indicate that this is a sweet spot in the performance per
code size increase curve.

llvm-svn: 113595


# 04cf3fd7 09-Sep-2010 Owen Anderson <resistor@mac.com>

What the loop unroller cares about, rather than just not unrolling loops with calls, is
not unrolling loops that contain calls that would be better off getting inlined. This mostly
comes up when an

What the loop unroller cares about, rather than just not unrolling loops with calls, is
not unrolling loops that contain calls that would be better off getting inlined. This mostly
comes up when an interleaved devirtualization pass has devirtualized a call which the inliner
will inline on a future pass. Thus, rather than blocking all loops containing calls, add
a metric for "inline candidate calls" and block loops containing those instead.

llvm-svn: 113535

show more ...


1...<<1112131415