llvm-project/llvm/unittests
Cong Hou 15ea016346 Use fixed-point representation for BranchProbability.
BranchProbability now is represented by its numerator and denominator in uint32_t type. This patch changes this representation into a fixed point that is represented by the numerator in uint32_t type and a constant denominator 1<<31. This is quite similar to the representation of BlockMass in BlockFrequencyInfoImpl.h. There are several pros and cons of this change:

Pros:

1. It uses only a half space of the current one.
2. Some operations are much faster like plus, subtraction, comparison, and scaling by an integer.

Cons:

1. Constructing a probability using arbitrary numerator and denominator needs additional calculations.
2. It is a little less precise than before as we use a fixed denominator. For example, 1 - 1/3 may not be exactly identical to 1 / 3 (this will lead to many BranchProbability unit test failures). This should not matter when we only use it for branch probability. If we use it like a rational value for some precise calculations we may need another construct like ValueRatio.

One important reason for this change is that we propose to store branch probabilities instead of edge weights in MachineBasicBlock. We also want clients to use probability instead of weight when adding successors to a MBB. The current BranchProbability has more space which may be a concern.

Differential revision: http://reviews.llvm.org/D12603

llvm-svn: 248633
2015-09-25 23:09:59 +00:00
..
ADT Simplify SmallBitVector::applyMask by consolidating common code for 32- and 64-bit builds 2015-09-18 15:08:24 +00:00
Analysis [PM/AA] Rebuild LLVM's alias analysis infrastructure in a way compatible 2015-09-09 17:55:00 +00:00
AsmParser Fix PR 24633 - Handle undef values when parsing standalone constants. 2015-09-09 13:44:33 +00:00
Bitcode Fix memory leak in unit test of Bitcode/BitReaderTest.cpp 2015-08-03 21:23:51 +00:00
CodeGen AsmPrinter: Use an intrusively linked list for DIE::Children 2015-06-25 23:52:10 +00:00
DebugInfo Fix compilation of PDBApiTest. 2015-05-01 20:51:49 +00:00
ExecutionEngine [PM/AA] Rebuild LLVM's alias analysis infrastructure in a way compatible 2015-09-09 17:55:00 +00:00
IR Add a unit test for r248341. 2015-09-22 23:42:47 +00:00
LineEditor Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
Linker Linker: Move distinct MDNodes instead of cloning 2015-08-03 17:09:38 +00:00
MC [cleanup] Re-sort all the #include lines in LLVM using 2015-01-14 11:23:27 +00:00
Option Modify ParseArgs to return the InputArgList by value - there's no need for dynamic allocation/ownership here 2015-06-22 22:06:37 +00:00
ProfileData InstrProf: Add a test for multiple copies of the same with different hashes 2015-06-22 23:56:53 +00:00
Support Use fixed-point representation for BranchProbability. 2015-09-25 23:09:59 +00:00
Transforms [RemoveDuplicatePHINodes] Start over after removing a PHI. 2015-09-02 19:52:23 +00:00
CMakeLists.txt AsmParser: Require a terminating null character when creating memory buffer. 2015-05-20 20:41:27 +00:00
Makefile AsmParser: Require a terminating null character when creating memory buffer. 2015-05-20 20:41:27 +00:00
Makefile.unittest With rpaths being set correctly, SHLIBPATH_VAR is not needed anymore. 2014-02-28 16:16:51 +00:00