summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/LiveIntervals.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Change weight into a float so that we can take into account theAlkis Evlogimenos2003-12-211-3/+11
| | | | | | | | nesting level when computing it. Right now the allocator uses: w = sum_over_defs_uses( 10 ^ nesting level ); llvm-svn: 10569
* Add support for inactive intervals. This effectively reuses registersAlkis Evlogimenos2003-12-211-2/+47
| | | | | | for live ranges that fall into assigned registers' holes. llvm-svn: 10566
* Remove TwoAddressInstruction from the public headers and add an IDAlkis Evlogimenos2003-12-181-2/+1
| | | | | | instead, since this pass doesn't expose any state to its users. llvm-svn: 10520
* Modify linear scan register allocator to use the two-addressAlkis Evlogimenos2003-12-181-0/+2
| | | | | | | instruction pass. This also fixes all remaining bugs for this new allocator to pass all tests under test/Programs. llvm-svn: 10515
* When a variable is killed and redifined in a basic block only oneAlkis Evlogimenos2003-12-181-1/+4
| | | | | | | | killing instruction is tracked. This causes the LiveIntervals to create bogus intervals. The workaound is to add a range to the interval from the redefinition to the end of the basic block. llvm-svn: 10510
* Handle multiple virtual register definitions gracefully.Alkis Evlogimenos2003-12-181-51/+67
| | | | | | | | Move some of the longer LiveIntervals::Interval method out of the header and add debug information to them. Fix bug and simplify range merging code. llvm-svn: 10509
* Change preserve all claim to just preserve live variables and phielimination.Alkis Evlogimenos2003-12-151-1/+2
| | | | llvm-svn: 10469
* Change interface of MachineOperand as follows:Alkis Evlogimenos2003-12-141-1/+1
| | | | | | | | | | | | | | | a) remove opIsUse(), opIsDefOnly(), opIsDefAndUse() b) add isUse(), isDef() c) rename opHiBits32() to isHiBits32(), opLoBits32() to isLoBits32(), opHiBits64() to isHiBits64(), opLoBits64() to isLoBits64(). This results to much more readable code, for example compare "op.opIsDef() || op.opIsDefAndUse()" to "op.isDef()" a pattern used very often in the code. llvm-svn: 10461
* Ignore non-allocatable physical registers in live interval analysis.Alkis Evlogimenos2003-12-131-0/+4
| | | | llvm-svn: 10449
* Handle explicit physical register defs.Alkis Evlogimenos2003-12-131-2/+5
| | | | llvm-svn: 10445
* Move operator<<(std::ostream&, const LiveInterval&) out of the header file.Alkis Evlogimenos2003-12-051-0/+11
| | | | llvm-svn: 10290
* Sort live intervals by increasing start point.Alkis Evlogimenos2003-12-051-0/+1
| | | | llvm-svn: 10289
* Merging the linear scan register allocator in trunk. It currently passes ↵Alkis Evlogimenos2003-11-201-0/+302
most tests under test/Programs/SingleSource/Benchmarks/Shootout so development will continue on trunk. The allocator is not enabled by default. You will need to pass -regallo=linearscan to lli or llc to use it. llvm-svn: 10103
OpenPOWER on IntegriCloud