llvm-6502/unittests
Michael Gottesman e7a1e3ee82 [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
2013-11-17 03:25:24 +00:00
..
ADT [weak vtables] Remove a bunch of weak vtables 2013-11-15 22:34:48 +00:00
Analysis Fix an oversight in isPotentiallyReachable where we wouldn't do any CFG-walking 2013-08-13 00:03:47 +00:00
Bitcode llvm/unittests: Use OwningPtr to fix --vg-leak. 2013-01-23 08:33:13 +00:00
CodeGen DIEHash: Summary hashing of member functions 2013-10-25 20:04:25 +00:00
DebugInfo DWARF parser: propery handle DW_FORM_ref_sig8 and fix Windows build. 2013-10-29 16:32:19 +00:00
ExecutionEngine [weak vtables] Remove a bunch of weak vtables 2013-11-15 22:34:48 +00:00
IR [PM] Completely remove support for explicit 'require' methods on the 2013-11-17 03:18:05 +00:00
MC Fix MCDataAtom never calling remap when adding data. 2013-10-16 18:26:16 +00:00
Object Update incorrect file headers. 2013-08-01 18:42:28 +00:00
Option Option parsing: support case-insensitive option matching. 2013-08-28 20:04:31 +00:00
Support [block-freq] Add BlockFrequency::scale that returns a remainder from the division and make the private scale in BlockFrequency more performant. 2013-11-17 03:25:24 +00:00
Transforms Introduce SpecialCaseList::isIn overload for GlobalAliases. 2013-08-19 19:00:35 +00:00
CMakeLists.txt Fix MCDataAtom never calling remap when adding data. 2013-10-16 18:26:16 +00:00
Makefile Revert "Move copying of global initializers below the cloning of functions." 2013-11-09 00:43:18 +00:00
Makefile.unittest build/unittests: Fix llvm-config names for gtest libraries, and bring Makefile 2011-12-15 23:35:08 +00:00