History log of /external/llvm/include/llvm/Support/IntegersSubsetMapping.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
1a710fdde197b00107ef55df51054925b9a5d2a2 24-Aug-2012 Manman Ren <mren@apple.com> BranchProb: modify the definition of an edge in BranchProbabilityInfo to handle
the case of multiple edges from one block to another.

A simple example is a switch statement with multiple values to the same
destination. The definition of an edge is modified from a pair of blocks to
a pair of PredBlock and an index into the successors.

Also set the weight correctly when building SelectionDAG from LLVM IR,
especially when converting a Switch.
IntegersSubsetMapping is updated to calculate the weight for each cluster.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162572 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Support/IntegersSubsetMapping.h
b163a21940afb639bc8bb57810d48cfc116ea931 04-Jul-2012 Stepan Dyatkovskiy <stpworld@narod.ru> Reverted r159658:
Optimized diff operation: implemented the case when LHS and RHS subsets contains single numbers only.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159704 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Support/IntegersSubsetMapping.h
66d79cefcb742bdbfef8823ac8491a7ebc4af5a7 04-Jul-2012 Stepan Dyatkovskiy <stpworld@narod.ru> Reverted r156659, due to probable performance regressions, DenseMap should be used here:
IntegersSubsetMapping
- Replaced type of Items field from std::list with std::map. In neares future I'll test it with DenseMap and do the correspond replacement
if possible.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159703 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Support/IntegersSubsetMapping.h
9ccc83e7f70e63b746cbc7eef9fb06022e758677 03-Jul-2012 Stepan Dyatkovskiy <stpworld@narod.ru> IntegersSubsetMappin: cosmetic changes in diff operation.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159661 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Support/IntegersSubsetMapping.h
2e2a15e26b78a0958ccbac66a03850852721b9cf 03-Jul-2012 Stepan Dyatkovskiy <stpworld@narod.ru> Part of r159527. Splitted into series of patches and gone with fixed PR13256:
IntegersSubsetMapping
Added new methods
- add(self& RHS, SuccessorClass *S)
- detachCase
- removeCase
- findSuccessor
- getCases
- getCaseSingleNumber
- isOverlapped



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159660 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Support/IntegersSubsetMapping.h
6a590737355e82d83729198715e3fff11b0c6f9e 03-Jul-2012 Stepan Dyatkovskiy <stpworld@narod.ru> Part of r159527. Splitted into series of patches and gone with fixed PR13256:
IntegersSubsetMapping
- Replaced type of Items field from std::list with std::map. In neares future I'll test it with DenseMap and do the correspond replacement
if possible.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159659 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Support/IntegersSubsetMapping.h
181e0bdafaf33524a9a7f082caf5459615f4ab30 03-Jul-2012 Stepan Dyatkovskiy <stpworld@narod.ru> Part of r159527. Splitted into series of patches and gone with fixed PR13256:
Optimized diff operation: implemented the case when LHS and RHS subsets contains single numbers only.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159658 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Support/IntegersSubsetMapping.h
c723eb1aef817d47feec620933ee1ec6005cdd14 03-Jul-2012 Eric Christopher <echristo@apple.com> Revert "IntRange:" as it appears to be breaking self hosting.

This reverts commit b2833d9dcba88c6f0520cad760619200adc0442c.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159618 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Support/IntegersSubsetMapping.h
b2833d9dcba88c6f0520cad760619200adc0442c 02-Jul-2012 Stepan Dyatkovskiy <stpworld@narod.ru> IntRange:
- Changed isSingleNumber method behaviour. Now this flag is calculated on demand.
IntegersSubsetMapping
- Optimized diff operation.
- Replaced type of Items field from std::list with std::map.
- Added new methods:
bool isOverlapped(self &RHS)
void add(self& RHS, SuccessorClass *S)
void detachCase(self& NewMapping, SuccessorClass *Succ)
void removeCase(SuccessorClass *Succ)
SuccessorClass *findSuccessor(const IntTy& Val)
const IntTy* getCaseSingleNumber(SuccessorClass *Succ)
IntegersSubsetTest
- DiffTest: Added checks for successors.
SimplifyCFG
Updated SwitchInst usage (now it is case-ragnes compatible) for
- SimplifyEqualityComparisonWithOnlyPredecessor
- FoldValueComparisonIntoPredecessors



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159527 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Support/IntegersSubsetMapping.h
b787d41959163f6104af7b34a5ce719210dfb72f 26-Jun-2012 Stepan Dyatkovskiy <stpworld@narod.ru> IntegersSubsetMapping: implemented "diff" operation. Operation allows at the same time perform up to three operations:
- LHS exclude RHS
- LHS intersect RHS (LHS successors will keeped)
- RHS exclude LHS
The complexity is N+M, where
N is size of LHS
M is size of RHS.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159201 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Support/IntegersSubsetMapping.h
0f7a7bcd4820eee293f9300769e1ef4c1cbc1c7c 26-Jun-2012 Stepan Dyatkovskiy <stpworld@narod.ru> IntegersSubsetMapping: removed exclude operation, it will replaced with more universal "diff" operation in next commit.
Changes was separated onto two commits for better readability.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159200 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Support/IntegersSubsetMapping.h
5d59b0b38ea2b6f1860fe1e741fbaf1d7457c0b8 05-Jun-2012 Stepan Dyatkovskiy <stpworld@narod.ru> IntegersSubsetMapping: added exclude operation, that allows to exclude subset of integers from current mapping.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157989 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Support/IntegersSubsetMapping.h
20cb4919cd01967b11b0b468fd43167b263ed028 05-Jun-2012 Stepan Dyatkovskiy <stpworld@narod.ru> IntegersSubsetMapping:
Changed type of Items collection: from std::vector to std::list.
Also some small fixes made in IntegersSubset.h, IntegersSubsetMapping.h and IntegersSubsetTest.cpp.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157987 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Support/IntegersSubsetMapping.h
31219d2cec17dca632b6d047a15e86dc92b76e18 02-Jun-2012 Stepan Dyatkovskiy <stpworld@narod.ru> Added unittests for IntegersSubset and IntegersSubsetMapping.
- Fixed IntegersSubsetGeneric copy/assignment behaviour.
- Fixed IntegersSubsetGeneric::getSize/getSingleValue methods.
- Fixed IntegersSubsetGeneric::verify method.

Also IntegersSubset.h and IntegersSubsetMapping.h headers was fixed.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157887 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Support/IntegersSubsetMapping.h
43eb31bfae470b33bab9a6764b98b5e8a0beeda5 02-Jun-2012 Stepan Dyatkovskiy <stpworld@narod.ru> PR1255: case ranges.
IntRange converted from struct to class. So main change everywhere is replacement of ".Low/High" with ".getLow/getHigh()"



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157884 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Support/IntegersSubsetMapping.h
4319a552ac98137d511341905711293d541f15e7 02-Jun-2012 Stepan Dyatkovskiy <stpworld@narod.ru> PR1255: case ranges.
IntegersSubsetGeneric, IntegersSubsetMapping: added IntTy template parameter, that allows use either APInt or IntItem. This change allows to write unittest for these classes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157880 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Support/IntegersSubsetMapping.h
6bb5c0074dc4cede2ad8efd420ec91288f91b012 01-Jun-2012 Stepan Dyatkovskiy <stpworld@narod.ru> PR1255: case ranges.
IntegersSubset devided into IntegersSubsetGeneric and into IntegersSubset itself. The first has no references to ConstantInt and works with IntItem only.
IntegersSubsetMapping also made generic. Here added second template parameter "IntegersSubsetTy" that allows to use on of two IntegersSubset types described below.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157815 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Support/IntegersSubsetMapping.h
f8d14c4ca3874890cfd8867d9557efca9511c98f 01-Jun-2012 Stepan Dyatkovskiy <stpworld@narod.ru> PR1255: case ranges.
IntItem cleanup. IntItemBase, IntItemConstantIntImp and IntItem merged into IntItem. All arithmetic operators was propogated from APInt. Also added comparison operators <,>,<=,>=. Currently you will find set of macros that propogates operators from APInt to IntItem in the beginning of IntegerSubset. Note that THESE MACROS WILL REMOVED after all passes will case-ranges compatible. Also note that these macros much smaller pain that something like this:
if (V->getValue().ugt(AnotherV->getValue()) { ... }

These changes made IntItem full featured integer object. It allows to make IntegerSubset class generic (move out all ConstantInt references inside and add unit-tests) in next commits.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157810 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Support/IntegersSubsetMapping.h
0aa32d5d0ff6cd65b6cff957858a79e2d2a614bd 29-May-2012 Stepan Dyatkovskiy <stpworld@narod.ru> ConstantRangesSet renamed to IntegersSubset. CRSBuilder renamed to IntegersSubsetMapping.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157612 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Support/IntegersSubsetMapping.h