Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | First step towards moving the coalescer to priority_queue based machinery. | Evan Cheng | 2007-11-06 | 1 | -34/+181 | |
| | | | | llvm-svn: 43764 | |||||
* | Move SimpleRegisterCoalescing.h to lib/CodeGen since there is now a common | Evan Cheng | 2007-11-05 | 1 | -2/+2 | |
| | | | | | | register coalescer interface: RegisterCoalescing. llvm-svn: 43714 | |||||
* | Skip over deleted val#'s. | Evan Cheng | 2007-11-05 | 1 | -2/+2 | |
| | | | | llvm-svn: 43700 | |||||
* | - Coalesce extract_subreg when both intervals are relatively small. | Evan Cheng | 2007-11-01 | 1 | -23/+46 | |
| | | | | | | - Some code clean up. llvm-svn: 43606 | |||||
* | Really fix PR1734. Carefully track which register uses are sub-register uses by | Evan Cheng | 2007-10-18 | 1 | -8/+25 | |
| | | | | | | traversing inverse register coalescing map. llvm-svn: 43118 | |||||
* | One more extract_subreg coalescing bug fix. | Evan Cheng | 2007-10-17 | 1 | -1/+1 | |
| | | | | llvm-svn: 43065 | |||||
* | Fix PR1734. | Evan Cheng | 2007-10-16 | 1 | -1/+1 | |
| | | | | llvm-svn: 43035 | |||||
* | Code clean up. | Evan Cheng | 2007-10-16 | 1 | -13/+27 | |
| | | | | llvm-svn: 43026 | |||||
* | Fix PR1729: watch out for val# with no def. | Evan Cheng | 2007-10-15 | 1 | -8/+13 | |
| | | | | llvm-svn: 42996 | |||||
* | When coalescing an EXTRACT_SUBREG and the dst register is a physical register, | Evan Cheng | 2007-10-14 | 1 | -25/+27 | |
| | | | | | | | | the source register will be coalesced to the super register of the LHS. Properly merge in the live ranges of the resulting coalesced interval that were part of the original source interval to the live interval of the super-register. llvm-svn: 42961 | |||||
* | Restrict EXTRACT_SUBREG coalescing to avoid negative performance impact. | Evan Cheng | 2007-10-12 | 1 | -1/+6 | |
| | | | | llvm-svn: 42903 | |||||
* | EXTRACT_SUBREG coalescing support. The coalescer now treats EXTRACT_SUBREG like | Evan Cheng | 2007-10-12 | 1 | -17/+106 | |
| | | | | | | | | | (almost) a register copy. However, it always coalesced to the register of the RHS (the super-register). All uses of the result of a EXTRACT_SUBREG are sub- register uses which adds subtle complications to load folding, spiller rewrite, etc. llvm-svn: 42899 | |||||
* | Bad choice of variable name. | Evan Cheng | 2007-10-10 | 1 | -2/+2 | |
| | | | | llvm-svn: 42821 | |||||
* | Fix an extremely stupid bug that prevented first round of coalescing ↵ | Evan Cheng | 2007-10-09 | 1 | -1/+2 | |
| | | | | | | (physical registers only) from happening. llvm-svn: 42820 | |||||
* | Remove isReg, isImm, and isMBB, and change all their users to use | Dan Gohman | 2007-09-14 | 1 | -5/+5 | |
| | | | | | | | isRegister, isImmediate, and isMachineBasicBlock, which are equivalent, and more popular. llvm-svn: 41958 | |||||
* | Pluggable coalescers inplementation. | David Greene | 2007-09-06 | 1 | -0/+11 | |
| | | | | llvm-svn: 41743 | |||||
* | Use pool allocator for all the VNInfo's to improve memory access locality. ↵ | Evan Cheng | 2007-09-05 | 1 | -9/+10 | |
| | | | | | | This reduces coalescing time on siod Mac OS X PPC by 35%. Also remove the back ptr from VNInfo to LiveInterval and other tweaks. llvm-svn: 41729 | |||||
* | More tweaks to improve compile time. | Evan Cheng | 2007-09-01 | 1 | -19/+21 | |
| | | | | llvm-svn: 41669 | |||||
* | std::map -> DenseMap for slight compile time benefit. | Evan Cheng | 2007-08-31 | 1 | -7/+7 | |
| | | | | llvm-svn: 41650 | |||||
* | Use std::map instead of a (potentially very sparse) array to track val# ↵ | Evan Cheng | 2007-08-31 | 1 | -36/+27 | |
| | | | | | | defined by copy from the other live range. Minor compile time win when number of val# is large. llvm-svn: 41640 | |||||
* | Change LiveRange so it keeps a pointer to the VNInfo rather than an index. | Evan Cheng | 2007-08-29 | 1 | -110/+118 | |
| | | | | | | | Changes related modules so VNInfo's are not copied. This decrease copy coalescing time by 45% and overall compilation time by 10% on siod. llvm-svn: 41579 | |||||
* | Recover most of the compile time regression due to recent live interval changes. | Evan Cheng | 2007-08-28 | 1 | -17/+27 | |
| | | | | | | | | 1. Eliminate the costly live interval "swapping". 2. Change ValueNumberInfo container from SmallVector to std::vector. The former performs slowly when the vector size is very large. llvm-svn: 41536 | |||||
* | Fix some kill info update bugs; add hidden option -disable-rematerialization ↵ | Evan Cheng | 2007-08-16 | 1 | -0/+6 | |
| | | | | | | to turn off remat for debugging. llvm-svn: 41118 | |||||
* | Fix for PR1596: AdjustCopiesBackFrom() should conservatively check if any of ↵ | Evan Cheng | 2007-08-14 | 1 | -0/+13 | |
| | | | | | | its sub-registers may overlap with the interval of the copy that's being coalesced. llvm-svn: 41084 | |||||
* | Kill info update bugs. | Evan Cheng | 2007-08-14 | 1 | -1/+1 | |
| | | | | llvm-svn: 41064 | |||||
* | Re-implement trivial rematerialization. This allows def MIs whose live ↵ | Evan Cheng | 2007-08-13 | 1 | -6/+0 | |
| | | | | | | intervals that are coalesced to be rematerialized. llvm-svn: 41060 | |||||
* | No need to remove dead range from soon-to-be-dead live interval. Its val# ↵ | Evan Cheng | 2007-08-12 | 1 | -3/+3 | |
| | | | | | | may be out of whack. llvm-svn: 41024 | |||||
* | Code to maintain kill information during register coalescing. | Evan Cheng | 2007-08-11 | 1 | -14/+42 | |
| | | | | llvm-svn: 41016 | |||||
* | unbreak the build | Chris Lattner | 2007-08-09 | 1 | -1/+1 | |
| | | | | llvm-svn: 40976 | |||||
* | Bug fix. ~1U marks the val# dead. | Evan Cheng | 2007-08-09 | 1 | -1/+1 | |
| | | | | llvm-svn: 40975 | |||||
* | - Each val# can have multiple kills. | Evan Cheng | 2007-08-08 | 1 | -2/+2 | |
| | | | | | | | - Fix some minor bugs related to special markers on val# def. ~0U means undefined, ~1U means dead val#. llvm-svn: 40916 | |||||
* | - LiveInterval value#'s now have 3 components: def instruction #, | Evan Cheng | 2007-08-07 | 1 | -12/+12 | |
| | | | | | | | | | | kill instruction #, and source register number (iff the value# is defined by a copy). - Now def instruction # is set for every value#, not just for copy defined ones. - Update some outdated code related inactive live ranges. - Kill info not yet set. That's next patch. llvm-svn: 40913 | |||||
* | shorten this name | Chris Lattner | 2007-08-05 | 1 | -2/+1 | |
| | | | | llvm-svn: 40843 | |||||
* | simpleregistercoalescing -> regcoalescing. It's too long for me to handle. | Evan Cheng | 2007-07-31 | 1 | -1/+1 | |
| | | | | llvm-svn: 40654 | |||||
* | Don't assume that only Uses can be kills. Defs are marked as kills initially | Dan Gohman | 2007-07-20 | 1 | -2/+2 | |
| | | | | | | | | when there are no uses. This fixes a dangling-pointer bug, where pointers to deleted instructions were not removed from kills lists. More info here: http://lists.cs.uiuc.edu/pipermail/llvmdev/2007-July/009749.html llvm-svn: 40131 | |||||
* | Add comment. | Evan Cheng | 2007-07-18 | 1 | -0/+3 | |
| | | | | llvm-svn: 40022 | |||||
* | fix typos | Gabor Greif | 2007-07-09 | 1 | -31/+31 | |
| | | | | llvm-svn: 38453 | |||||
* | Factor live variable analysis so it does not do register coalescing | David Greene | 2007-06-08 | 1 | -0/+1138 | |
simultaneously. Move that pass to SimpleRegisterCoalescing. This makes it easier to implement alternative register allocation and coalescing strategies while maintaining reuse of the existing live interval analysis. llvm-svn: 37520 |