Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | Create an object for tracking physical register usage. This will look | Alkis Evlogimenos | 2004-02-02 | 1 | -106/+116 | |
| | | | | | | much better when I get rid of the reserved registers. llvm-svn: 11066 | |||||
* | Change weight array into a vector and make it as big as the number of | Alkis Evlogimenos | 2004-02-01 | 1 | -17/+25 | |
| | | | | | | | | | | | registers (not as the max number of registers). Change toSpill from a std::set into a std::vector<bool>. Use the reverse iterator adapter to do a reverse scan of allocatable registers. llvm-svn: 11061 | |||||
* | Use std::map::count() instead of std::map::find() != std::map::end() | Alkis Evlogimenos | 2004-02-01 | 1 | -5/+3 | |
| | | | | | | where appropriate. llvm-svn: 11060 | |||||
* | Change string for joined intervals. | Alkis Evlogimenos | 2004-02-01 | 1 | -1/+1 | |
| | | | | llvm-svn: 11057 | |||||
* | Change xor to ^. | Alkis Evlogimenos | 2004-02-01 | 1 | -1/+1 | |
| | | | | llvm-svn: 11054 | |||||
* | Fix a bug in a recent checkin | Chris Lattner | 2004-02-01 | 1 | -1/+1 | |
| | | | | llvm-svn: 11050 | |||||
* | Missed one silly assert :-) | Alkis Evlogimenos | 2004-02-01 | 1 | -1/+1 | |
| | | | | llvm-svn: 11048 | |||||
* | Simplify joinIntervals() code. | Alkis Evlogimenos | 2004-02-01 | 1 | -62/+57 | |
| | | | | llvm-svn: 11047 | |||||
* | Use MRegisterInfo::isPhysicalRegister and | Alkis Evlogimenos | 2004-02-01 | 2 | -33/+33 | |
| | | | | | | MRegisterInfo::isVirtualRegister. llvm-svn: 11045 | |||||
* | Apply final part of Chris' patch. | Alkis Evlogimenos | 2004-01-31 | 1 | -11/+9 | |
| | | | | llvm-svn: 11040 | |||||
* | Be a little smarter on the way we handle physical register defs. | Alkis Evlogimenos | 2004-01-31 | 1 | -26/+13 | |
| | | | | llvm-svn: 11038 | |||||
* | Finegrainify namespacification, use new MRegisterInfo::isVirtualRegister | Chris Lattner | 2004-01-31 | 2 | -9/+7 | |
| | | | | | | method llvm-svn: 11037 | |||||
* | Fix, correctly this time, the computation of the return value | Chris Lattner | 2004-01-31 | 1 | -15/+16 | |
| | | | | | | | | | Fix a spello Tighten up the assertion checking No functionality changes. llvm-svn: 11036 | |||||
* | * Fix incorrect computation of the runOnMachineFunction return value | Chris Lattner | 2004-01-31 | 1 | -30/+23 | |
| | | | | | | * Turn a bunch of instance variables into automatic variables llvm-svn: 11035 | |||||
* | Remove unneeded #includes | Chris Lattner | 2004-01-31 | 1 | -12/+10 | |
| | | | | | | | | Move Passes.h (which defines the interface to this file) to the top. Move statistics to the top of the file. Add a comment llvm-svn: 11034 | |||||
* | Merge safe parts from last night's buggy commit. These do not break | Alkis Evlogimenos | 2004-01-31 | 1 | -47/+71 | |
| | | | | | | any test cases :-) llvm-svn: 11032 | |||||
* | Optimize liveAt() and overlaps(). We now use a binary search instead | Alkis Evlogimenos | 2004-01-31 | 1 | -20/+30 | |
| | | | | | | | | of a linear search to find the first range for comparisons. This cuts down the linear scan register allocator running time by a factor of 3 in 254.perlbmk and by a factor of 2.2 in 176.gcc. llvm-svn: 11030 | |||||
* | Revert last night's changes as they broke some tests. Will remerge parts of ↵ | Alkis Evlogimenos | 2004-01-31 | 1 | -105/+105 | |
| | | | | | | the patch. llvm-svn: 11029 | |||||
* | Several performance enhancements and cleanups from Chris. | Alkis Evlogimenos | 2004-01-31 | 1 | -105/+105 | |
| | | | | | | | Simplification of LiveIntervals::Interval::overlaps() and addition of examples to overlaps() and liveAt() to make them clearer. llvm-svn: 11028 | |||||
* | Finegrainify namespacification | Chris Lattner | 2004-01-30 | 1 | -4/+17 | |
| | | | | | | Implement LiveVariables::getIndexMachineBasicBlock llvm-svn: 11018 | |||||
* | Give clients of MachineFunctionPrinter the ability to specify a banner and | Brian Gaeke | 2004-01-30 | 1 | -3/+14 | |
| | | | | | | choose an ostream. llvm-svn: 11016 | |||||
* | Fix failing test cases with joined live intervals. It turns out that | Alkis Evlogimenos | 2004-01-23 | 1 | -3/+24 | |
| | | | | | | | | | when joining we need to check if we overlap with the second interval or any of its aliases. Also make joining intervals the default. llvm-svn: 10973 | |||||
* | Add option to join live intervals. Two intervals are joined if there | Alkis Evlogimenos | 2004-01-22 | 2 | -44/+232 | |
| | | | | | | | | | | | | | | is a move between two registers, at least one of the registers is virtual and the two live intervals do not overlap. This results in about 40% reduction in intervals, 30% decrease in the register allocators running time and a 20% increase in peephole optimizations (mainly move eliminations). The option can be enabled by passing -join-liveintervals where appropriate. llvm-svn: 10965 | |||||
* | Remove unneeded check. An interval in active, by definition overlaps | Alkis Evlogimenos | 2004-01-22 | 1 | -4/+1 | |
| | | | | | | with the current one. llvm-svn: 10959 | |||||
* | Improve debugging output. Remove unneeded virtReg->0 mapping when | Alkis Evlogimenos | 2004-01-22 | 1 | -20/+31 | |
| | | | | | | | | virtReg lives on the stack. Now a virtual register has an entry in the virtual->physical map or the virtual->stack slot map but never in both. llvm-svn: 10958 | |||||
* | Revert previous change. The code was correct... | Alkis Evlogimenos | 2004-01-22 | 1 | -1/+1 | |
| | | | | llvm-svn: 10957 | |||||
* | Fix incorrect negatives in LiveIntervals::Interval::liveAt(). | Alkis Evlogimenos | 2004-01-22 | 1 | -1/+1 | |
| | | | | llvm-svn: 10956 | |||||
* | Moved iterators around. | Tanya Lattner | 2004-01-20 | 1 | -2/+0 | |
| | | | | llvm-svn: 10926 | |||||
* | Moved iterators to common file. | Tanya Lattner | 2004-01-20 | 1 | -62/+0 | |
| | | | | llvm-svn: 10925 | |||||
* | Handle printing of intervals that are not assign to any physical | Alkis Evlogimenos | 2004-01-16 | 1 | -1/+1 | |
| | | | | | | register yet (2nd try). llvm-svn: 10896 | |||||
* | Handle printing of intervals that are not assign to any physical | Alkis Evlogimenos | 2004-01-16 | 1 | -6/+7 | |
| | | | | | | register yet. llvm-svn: 10895 | |||||
* | Fold open interval ends handling into | Alkis Evlogimenos | 2004-01-16 | 1 | -10/+4 | |
| | | | | | | LiveIntervals::Interval::expiredAt() and simplify regalloc code. llvm-svn: 10894 | |||||
* | Add asserts to previous change. | Alkis Evlogimenos | 2004-01-16 | 1 | -2/+6 | |
| | | | | llvm-svn: 10893 | |||||
* | Use a list instead of a vector to store intervals. This will be needed | Alkis Evlogimenos | 2004-01-16 | 1 | -7/+6 | |
| | | | | | | when we join intervals and one of the two will need to be removed. llvm-svn: 10892 | |||||
* | Properly update #intervals statistic. | Alkis Evlogimenos | 2004-01-14 | 1 | -0/+2 | |
| | | | | llvm-svn: 10847 | |||||
* | Fix bug in LiveIntervals::Interval::overlaps and | Alkis Evlogimenos | 2004-01-14 | 1 | -3/+3 | |
| | | | | | | | LiveIntervals::Interval::liveAt. Both were considering the live ranges closed in the end, when they are actually open. llvm-svn: 10835 | |||||
* | Improve debugging output. | Alkis Evlogimenos | 2004-01-14 | 1 | -2/+3 | |
| | | | | llvm-svn: 10834 | |||||
* | Fix miscomputation of live intervals. The catch is that registers can | Alkis Evlogimenos | 2004-01-13 | 1 | -0/+17 | |
| | | | | | | | be dead at the defining instruction but can only be killed in subsequent ones. llvm-svn: 10833 | |||||
* | Remove allocatable registers vector. It is already provided by | Alkis Evlogimenos | 2004-01-13 | 1 | -21/+2 | |
| | | | | | | LiveVariables. llvm-svn: 10830 | |||||
* | Cleanup debugging output. | Alkis Evlogimenos | 2004-01-13 | 1 | -9/+6 | |
| | | | | llvm-svn: 10824 | |||||
* | Fix output of live intervals to show correctly its closed, open | Alkis Evlogimenos | 2004-01-13 | 1 | -1/+1 | |
| | | | | | | ranges, i.e. [a,b) llvm-svn: 10822 | |||||
* | Remove unneeded check (with the recent change in live variables a use | Alkis Evlogimenos | 2004-01-13 | 1 | -4/+2 | |
| | | | | | | of a physical register is always dominated by a def). llvm-svn: 10821 | |||||
* | Indentation and whitespace cleanups. | Alkis Evlogimenos | 2004-01-13 | 1 | -9/+9 | |
| | | | | llvm-svn: 10820 | |||||
* | Fix bug introduced by previous commit: check if fixed intervals | Alkis Evlogimenos | 2004-01-13 | 1 | -0/+3 | |
| | | | | | | overlap before adding their spill weight. llvm-svn: 10819 | |||||
* | Correctly compute live variable information for physical registers | Alkis Evlogimenos | 2004-01-13 | 3 | -33/+30 | |
| | | | | | | | | | | | | | | when an implicitely defined register is later used by an alias. For example: call foo %reg1024 = mov %AL The call implicitely defines EAX but only AL is used. Before this fix no information was available on AL. Now EAX and all its aliases except AL get defined and die at the call instruction whereas AL lives to be killed by the assignment. llvm-svn: 10813 | |||||
* | Make LiveVariables::HandlePhysRegUse and | Alkis Evlogimenos | 2004-01-11 | 1 | -21/+11 | |
| | | | | | | | | | LiveVariables::HandlePhysRegDef private they use information that is not in memory when LiveVariables finishes the analysis. Also update the TwoAddressInstructionPass to not use this interface. llvm-svn: 10755 | |||||
* | Remove use of llvm/CodeGen/InstrSelection.h | Chris Lattner | 2004-01-10 | 1 | -2/+2 | |
| | | | | llvm-svn: 10749 | |||||
* | Finegrainify namespacification. | Chris Lattner | 2004-01-09 | 1 | -9/+4 | |
| | | | | | | | | This should get hunked over to the Sparc backend, along with MachineCodeForInstruction and a bunch of files in include/llvm/Codegen, but those battles will have to wait for a later time. llvm-svn: 10731 | |||||
* | Move InstrSelection into lib/Target/Sparc, as it's sparc specific | Chris Lattner | 2004-01-09 | 5 | -1038/+3 | |
| | | | | llvm-svn: 10730 | |||||
* | Move lib/Codegen/RegAlloc into lib/Target/Sparc, as it is sparc specific | Chris Lattner | 2004-01-09 | 15 | -3354/+1 | |
| | | | | llvm-svn: 10728 |