History log of /external/llvm/lib/Support/BlockFrequency.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
dce4a407a24b04eebc6a376f8e62b41aaa7b071f 29-May-2014 Stephen Hines <srhines@google.com> Update LLVM for 3.5 rebase (r209712).

Change-Id: I149556c940fb7dc92d075273c87ff584f400941f
/external/llvm/lib/Support/BlockFrequency.cpp
36b56886974eae4f9c5ebc96befd3e7bfe5de338 24-Apr-2014 Stephen Hines <srhines@google.com> Update to LLVM 3.5a.

Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
/external/llvm/lib/Support/BlockFrequency.cpp
e7a1e3ee8279f12d0f2b49fb198d577949795c88 17-Nov-2013 Michael Gottesman <mgottesman@apple.com> [block-freq] Add BlockFrequency::scale that returns a remainder from the division and make the private scale in BlockFrequency more performant.

This change is the first in a series of changes improving LLVM's Block
Frequency propogation implementation to not lose probability mass in
branchy code when propogating block frequency information from a basic
block to its successors. This patch is a simple infrastructure
improvement that does not actually modify the block frequency
algorithm. The specific changes are:

1. Changes the division algorithm used when scaling block frequencies by
branch probabilities to a short division algorithm. This gives us the
remainder for free as well as provides a nice speed boost. When I
benched the old routine and the new routine on a Sandy Bridge iMac with
disabled turbo mode performing 8192 iterations on an array of length
32768, I saw ~600% increase in speed in mean/median performance.

2. Exposes a scale method that returns a remainder. This is important so
we can ensure that when we scale a block frequency by some branch
probability BP = N/D, the remainder from the division by D can be
retrieved and propagated to other children to ensure no probability mass
is lost (more to come on this).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194950 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Support/BlockFrequency.cpp
5d3257e37ced7dd75023bb9c4619f297374f61d6 28-Jun-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix a bad overflow check pointed out by Ben.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185226 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Support/BlockFrequency.cpp
e187512bde9fd090a78924928a0b8793e3d87cbb 28-Jun-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Eliminate an assortment of undefined behavior.

Hopefully, this fixes the PPC64 buildbots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185218 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Support/BlockFrequency.cpp
a45b375610b24243ad131c96142f7f57c08c2d43 28-Jun-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Stylistic cleanups, no functional change.

- Use static functions instead of anonymous namespace.
- Appease the Doxygen lobby.
- Use 0-based induction variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185185 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Support/BlockFrequency.cpp
d7648ff20f8bbc8217a26576ca96addc55e003de 28-Jun-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a division operator to BlockFrequency.

Allow a BlockFrequency to be divided by a non-zero BranchProbability
with saturating arithmetic. This will be used to compute the frequency
of a loop header given the probability of leaving the loop.

Our long division algorithm already saturates on overflow, so that was a
freebie.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185184 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Support/BlockFrequency.cpp
b1c0cc22dd5854a77e5699e80ce37545315b98ed 25-Jun-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Print block frequencies in decimal form.

This is easier to read than the internal fixed-point representation.

If anybody knows the correct algorithm for converting fixed-point
numbers to base 10, feel free to fix it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184881 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Support/BlockFrequency.cpp
b47aceaf068352eebf4da87a647363b2317f0f22 21-Jun-2013 Benjamin Kramer <benny.kra@googlemail.com> Revert "BlockFrequency: Saturate at 1 instead of 0 when multiplying a frequency with a branch probability."

This reverts commit r184584. Breaks PPC selfhost.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184590 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Support/BlockFrequency.cpp
93702a3b0754052d926c75082abf7ca156b80c45 21-Jun-2013 Benjamin Kramer <benny.kra@googlemail.com> BlockFrequency: Saturate at 1 instead of 0 when multiplying a frequency with a branch probability.

Zero is used by BlockFrequencyInfo as a special "don't know" value. It also
causes a sink for frequencies as you can't ever get off a zero frequency with
more multiplies.

This recovers a 10% regression on MultiSource/Benchmarks/7zip. A zero frequency
was propagated into an inner loop causing excessive spilling.

PR16402.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184584 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Support/BlockFrequency.cpp
bc1430a0a0b3f97b86039950e57d832cb01f1cf6 27-Oct-2011 Benjamin Kramer <benny.kra@googlemail.com> BlockFrequency: Use a smarter overflow check.

This trades one 64 bit div for one 64 bit mul and some arithmetic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143106 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Support/BlockFrequency.cpp
ffcc2a542c13b698848f38c56a13cdac388c65ab 27-Jul-2011 Jakub Staszak <jstaszak@apple.com> Optimize 96-bit division a little bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136222 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Support/BlockFrequency.cpp
636a02b57c3ade2eb528bda31f05556f42aa7d48 27-Jul-2011 Jakub Staszak <jstaszak@apple.com> Move static methods to the anonymous namespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136221 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Support/BlockFrequency.cpp
a26ec886a3a4d9d317262861d7a3de4f64bad71c 26-Jul-2011 Jakub Staszak <jstaszak@apple.com> Add BlockFrequency class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135992 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Support/BlockFrequency.cpp