History log of /external/llvm/include/llvm/Support/BlockFrequency.h
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/include/llvm/Support/BlockFrequency.h
36b56886974eae4f9c5ebc96befd3e7bfe5de338 24-Apr-2014 Stephen Hines <srhines@google.com> Update to LLVM 3.5a.

Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
/external/llvm/include/llvm/Support/BlockFrequency.h
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/include/llvm/Support/BlockFrequency.h
2a210b7df7156cfc348e8287e05fcf662646614d 02-Jul-2013 Tobias Grosser <grosser@fim.uni-passau.de> Fix typo in comment

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185413 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Support/BlockFrequency.h
74d2a3e1a014b93e9037a7b04e85dc92bfb54fa7 02-Jul-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove floating point computations form SpillPlacement.cpp.

Patch by Benjamin Kramer!

Use the BlockFrequency class instead of floats in the Hopfield network
computations. This rescales the node Bias field from a [-2;2] float
range to two block frequencies BiasN and BiasP pulling in opposite
directions. This construct has a more predictable behavior when block
frequencies saturate.

The per-node scaling factors are no longer necessary, assuming the block
frequencies around a bundle are consistent.

This patch can cause the register allocator to make different spilling
decisions. The differences should be small.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185393 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Support/BlockFrequency.h
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/include/llvm/Support/BlockFrequency.h
75b51621540c23ddfc1e9ef6b4dc803453d9d122 25-Jun-2013 Benjamin Kramer <benny.kra@googlemail.com> BlockFrequency: Bump up the entry frequency a bit.

This is a band-aid to fix the most severe regressions we're seeing from basing
spill decisions on block frequencies, until we have a better solution.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184835 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Support/BlockFrequency.h
2ea475cddf42ce3421f0463be670c77c93329b2c 22-Jun-2013 Benjamin Kramer <benny.kra@googlemail.com> Reapply documentation changes from r184584.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184609 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Support/BlockFrequency.h
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/include/llvm/Support/BlockFrequency.h
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/include/llvm/Support/BlockFrequency.h
73a1ad8f0560f01830fd206e84d4a21e5b3b7f59 04-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Add missing includes/class declaration.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143718 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Support/BlockFrequency.h
e2481ff8ee722e25d1e3aa192b276f9b5be5b177 01-Aug-2011 Jakub Staszak <jstaszak@apple.com> Add BlockFrequency::getEntryFrequency()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136618 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Support/BlockFrequency.h
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/include/llvm/Support/BlockFrequency.h
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/include/llvm/Support/BlockFrequency.h