summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* Create an object for tracking physical register usage. This will lookAlkis Evlogimenos2004-02-021-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 ofAlkis Evlogimenos2004-02-011-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 Evlogimenos2004-02-011-5/+3
| | | | | | where appropriate. llvm-svn: 11060
* Change string for joined intervals.Alkis Evlogimenos2004-02-011-1/+1
| | | | llvm-svn: 11057
* Change xor to ^.Alkis Evlogimenos2004-02-011-1/+1
| | | | llvm-svn: 11054
* Fix a bug in a recent checkinChris Lattner2004-02-011-1/+1
| | | | llvm-svn: 11050
* Missed one silly assert :-)Alkis Evlogimenos2004-02-011-1/+1
| | | | llvm-svn: 11048
* Simplify joinIntervals() code.Alkis Evlogimenos2004-02-011-62/+57
| | | | llvm-svn: 11047
* Use MRegisterInfo::isPhysicalRegister andAlkis Evlogimenos2004-02-012-33/+33
| | | | | | MRegisterInfo::isVirtualRegister. llvm-svn: 11045
* Apply final part of Chris' patch.Alkis Evlogimenos2004-01-311-11/+9
| | | | llvm-svn: 11040
* Be a little smarter on the way we handle physical register defs.Alkis Evlogimenos2004-01-311-26/+13
| | | | llvm-svn: 11038
* Finegrainify namespacification, use new MRegisterInfo::isVirtualRegisterChris Lattner2004-01-312-9/+7
| | | | | | method llvm-svn: 11037
* Fix, correctly this time, the computation of the return valueChris Lattner2004-01-311-15/+16
| | | | | | | | | Fix a spello Tighten up the assertion checking No functionality changes. llvm-svn: 11036
* * Fix incorrect computation of the runOnMachineFunction return valueChris Lattner2004-01-311-30/+23
| | | | | | * Turn a bunch of instance variables into automatic variables llvm-svn: 11035
* Remove unneeded #includesChris Lattner2004-01-311-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 breakAlkis Evlogimenos2004-01-311-47/+71
| | | | | | any test cases :-) llvm-svn: 11032
* Optimize liveAt() and overlaps(). We now use a binary search insteadAlkis Evlogimenos2004-01-311-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 Evlogimenos2004-01-311-105/+105
| | | | | | the patch. llvm-svn: 11029
* Several performance enhancements and cleanups from Chris.Alkis Evlogimenos2004-01-311-105/+105
| | | | | | | Simplification of LiveIntervals::Interval::overlaps() and addition of examples to overlaps() and liveAt() to make them clearer. llvm-svn: 11028
* Finegrainify namespacificationChris Lattner2004-01-301-4/+17
| | | | | | Implement LiveVariables::getIndexMachineBasicBlock llvm-svn: 11018
* Give clients of MachineFunctionPrinter the ability to specify a banner andBrian Gaeke2004-01-301-3/+14
| | | | | | choose an ostream. llvm-svn: 11016
* Fix failing test cases with joined live intervals. It turns out thatAlkis Evlogimenos2004-01-231-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 thereAlkis Evlogimenos2004-01-222-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 overlapsAlkis Evlogimenos2004-01-221-4/+1
| | | | | | with the current one. llvm-svn: 10959
* Improve debugging output. Remove unneeded virtReg->0 mapping whenAlkis Evlogimenos2004-01-221-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 Evlogimenos2004-01-221-1/+1
| | | | llvm-svn: 10957
* Fix incorrect negatives in LiveIntervals::Interval::liveAt().Alkis Evlogimenos2004-01-221-1/+1
| | | | llvm-svn: 10956
* Moved iterators around.Tanya Lattner2004-01-201-2/+0
| | | | llvm-svn: 10926
* Moved iterators to common file.Tanya Lattner2004-01-201-62/+0
| | | | llvm-svn: 10925
* Handle printing of intervals that are not assign to any physicalAlkis Evlogimenos2004-01-161-1/+1
| | | | | | register yet (2nd try). llvm-svn: 10896
* Handle printing of intervals that are not assign to any physicalAlkis Evlogimenos2004-01-161-6/+7
| | | | | | register yet. llvm-svn: 10895
* Fold open interval ends handling intoAlkis Evlogimenos2004-01-161-10/+4
| | | | | | LiveIntervals::Interval::expiredAt() and simplify regalloc code. llvm-svn: 10894
* Add asserts to previous change.Alkis Evlogimenos2004-01-161-2/+6
| | | | llvm-svn: 10893
* Use a list instead of a vector to store intervals. This will be neededAlkis Evlogimenos2004-01-161-7/+6
| | | | | | when we join intervals and one of the two will need to be removed. llvm-svn: 10892
* Properly update #intervals statistic.Alkis Evlogimenos2004-01-141-0/+2
| | | | llvm-svn: 10847
* Fix bug in LiveIntervals::Interval::overlaps andAlkis Evlogimenos2004-01-141-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 Evlogimenos2004-01-141-2/+3
| | | | llvm-svn: 10834
* Fix miscomputation of live intervals. The catch is that registers canAlkis Evlogimenos2004-01-131-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 byAlkis Evlogimenos2004-01-131-21/+2
| | | | | | LiveVariables. llvm-svn: 10830
* Cleanup debugging output.Alkis Evlogimenos2004-01-131-9/+6
| | | | llvm-svn: 10824
* Fix output of live intervals to show correctly its closed, openAlkis Evlogimenos2004-01-131-1/+1
| | | | | | ranges, i.e. [a,b) llvm-svn: 10822
* Remove unneeded check (with the recent change in live variables a useAlkis Evlogimenos2004-01-131-4/+2
| | | | | | of a physical register is always dominated by a def). llvm-svn: 10821
* Indentation and whitespace cleanups.Alkis Evlogimenos2004-01-131-9/+9
| | | | llvm-svn: 10820
* Fix bug introduced by previous commit: check if fixed intervalsAlkis Evlogimenos2004-01-131-0/+3
| | | | | | overlap before adding their spill weight. llvm-svn: 10819
* Correctly compute live variable information for physical registersAlkis Evlogimenos2004-01-133-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 andAlkis Evlogimenos2004-01-111-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.hChris Lattner2004-01-101-2/+2
| | | | llvm-svn: 10749
* Finegrainify namespacification.Chris Lattner2004-01-091-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 specificChris Lattner2004-01-095-1038/+3
| | | | llvm-svn: 10730
* Move lib/Codegen/RegAlloc into lib/Target/Sparc, as it is sparc specificChris Lattner2004-01-0915-3354/+1
| | | | llvm-svn: 10728
OpenPOWER on IntegriCloud