Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | Teach the spiller to commute instructions in order to fold a reload. This ↵ | Evan Cheng | 2008-06-13 | 1 | -18/+125 | |
| | | | | | | hits 410 times on 444.namd and 122 times on 252.eon. llvm-svn: 52266 | |||||
* | Move #include to right place. | Evan Cheng | 2008-06-04 | 1 | -0/+1 | |
| | | | | llvm-svn: 51932 | |||||
* | Remove warnings about comparison between signed and unsigned expressions. | Bill Wendling | 2008-05-23 | 1 | -2/+2 | |
| | | | | llvm-svn: 51465 | |||||
* | Don't attempt to update SpillSlotToUsesMap for stack slots that aren't | David Greene | 2008-05-22 | 1 | -2/+14 | |
| | | | | | | generated by the spiller. llvm-svn: 51439 | |||||
* | More local spiller complexity! | Evan Cheng | 2008-05-20 | 1 | -0/+62 | |
| | | | | | | If local spiller optimization turns some instruction into an identity copy, it will be removed. If the output register happens to be dead (and source is obviously killed), transfer the kill / dead information to last use / def in the same MBB. llvm-svn: 51306 | |||||
* | Clean up the use of static and anonymous namespaces. This turned up | Dan Gohman | 2008-05-13 | 1 | -9/+9 | |
| | | | | | | | several things that were neither in an anonymous namespace nor static but not intended to be global. llvm-svn: 51017 | |||||
* | Yet another nasty spiller bug. | Evan Cheng | 2008-05-07 | 1 | -14/+19 | |
| | | | | | | | | | | %ecx = op store %cl<kill>, (addr) (addr) = op %al It's not safe to unfold the last operand and eliminate store even though %cl is marked kill. It's a sub-register use which means one of its super-register(s) may be used below. llvm-svn: 50794 | |||||
* | Use of implicit_def is not part of live interval. Create empty intervals for ↵ | Evan Cheng | 2008-04-11 | 1 | -0/+8 | |
| | | | | | | the uses when the live interval is being spilled. llvm-svn: 49542 | |||||
* | Move reMaterialize() from TargetRegisterInfo to TargetInstrInfo. | Evan Cheng | 2008-03-31 | 1 | -4/+5 | |
| | | | | llvm-svn: 48995 | |||||
* | Avoid commuting a def MI in order to coalesce a copy instruction away if any ↵ | Evan Cheng | 2008-03-26 | 1 | -0/+1 | |
| | | | | | | use of the same val# is a copy instruction that has already been coalesced. llvm-svn: 48833 | |||||
* | A couple of kill marker maintainence bug. | Evan Cheng | 2008-03-21 | 1 | -1/+1 | |
| | | | | llvm-svn: 48653 | |||||
* | Fix PR2138. Apparently any modification to a std::multimap (including remove ↵ | Evan Cheng | 2008-03-14 | 1 | -2/+8 | |
| | | | | | | entries for a different key) can invalidate multimap iterators. llvm-svn: 48371 | |||||
* | Change VirtRegMap's dump to dump to cerr, not DOUT, so that it | Dan Gohman | 2008-03-12 | 1 | -1/+1 | |
| | | | | | | | can be called from within a debuger without having -debug specified on the command-line. llvm-svn: 48298 | |||||
* | Set NextMII after issuing a physical register spill. | Evan Cheng | 2008-03-12 | 1 | -0/+1 | |
| | | | | llvm-svn: 48263 | |||||
* | Minor debug output bug. | Evan Cheng | 2008-03-12 | 1 | -1/+1 | |
| | | | | llvm-svn: 48261 | |||||
* | Transfer physical register spill info when load / store folding happens. | Evan Cheng | 2008-03-11 | 1 | -1/+2 | |
| | | | | llvm-svn: 48246 | |||||
* | When the register allocator runs out of registers, spill a physical register ↵ | Evan Cheng | 2008-03-11 | 1 | -0/+40 | |
| | | | | | | around the def's and use's of the interval being allocated to make it possible for the interval to target a register and spill it right away and restore a register for uses. This likely generates terrible code but is before than aborting. llvm-svn: 48218 | |||||
* | Refactor code. Remove duplicated functions that basically do the same thing as | Evan Cheng | 2008-03-05 | 1 | -4/+3 | |
| | | | | | | findRegisterUseOperandIdx, findRegisterDefOperandIndx. Fix some naming inconsistencies. llvm-svn: 47927 | |||||
* | Fix a bug in dead spill slot elimination. | Evan Cheng | 2008-02-27 | 1 | -0/+2 | |
| | | | | llvm-svn: 47687 | |||||
* | Final de-tabification. | Bill Wendling | 2008-02-27 | 1 | -1/+1 | |
| | | | | llvm-svn: 47663 | |||||
* | Spiller now remove unused spill slots. | Evan Cheng | 2008-02-27 | 1 | -17/+72 | |
| | | | | llvm-svn: 47657 | |||||
* | Rename PrintableName to Name. | Bill Wendling | 2008-02-26 | 1 | -7/+7 | |
| | | | | llvm-svn: 47629 | |||||
* | Change "Name" to "AsmName" in the target register info. Gee, a refactoring tool | Bill Wendling | 2008-02-26 | 1 | -9/+9 | |
| | | | | | | would have been a Godsend here! llvm-svn: 47625 | |||||
* | De-tabify. | Bill Wendling | 2008-02-26 | 1 | -1/+1 | |
| | | | | llvm-svn: 47598 | |||||
* | Make sure reload of implicit uses are issued before remat's. | Evan Cheng | 2008-02-22 | 1 | -3/+15 | |
| | | | | llvm-svn: 47492 | |||||
* | Enable re-materialization of instructions which have virtual register ↵ | Evan Cheng | 2008-02-22 | 1 | -11/+32 | |
| | | | | | | | | operands if the definition of the operand also reaches its uses. llvm-svn: 47475 | |||||
* | Update gcc 4.3 warnings fix patch with recent head changes | Anton Korobeynikov | 2008-02-20 | 1 | -1/+2 | |
| | | | | llvm-svn: 47368 | |||||
* | Rename MRegisterInfo to TargetRegisterInfo. | Dan Gohman | 2008-02-10 | 1 | -52/+52 | |
| | | | | llvm-svn: 46930 | |||||
* | Forgot these files. | Evan Cheng | 2008-02-08 | 1 | -1/+1 | |
| | | | | llvm-svn: 46896 | |||||
* | rename TargetInstrDescriptor -> TargetInstrDesc. | Chris Lattner | 2008-01-07 | 1 | -7/+7 | |
| | | | | | | | Make MachineInstr::getDesc return a reference instead of a pointer, since it can never be null. llvm-svn: 45695 | |||||
* | Move a bunch more accessors from TargetInstrInfo to TargetInstrDescriptor | Chris Lattner | 2008-01-07 | 1 | -1/+1 | |
| | | | | llvm-svn: 45680 | |||||
* | Rename MachineInstr::getInstrDescriptor -> getDesc(), which reflects | Chris Lattner | 2008-01-07 | 1 | -3/+3 | |
| | | | | | | | | | | | | | | | that it is cheap and efficient to get. Move a variety of predicates from TargetInstrInfo into TargetInstrDescriptor, which makes it much easier to query a predicate when you don't have TII around. Now you can use MI->getDesc()->isBranch() instead of going through TII, and this is much more efficient anyway. Not all of the predicates have been moved over yet. Update old code that used MI->getInstrDescriptor()->Flags to use the new predicates in many places. llvm-svn: 45674 | |||||
* | Update CodeGen for MRegisterInfo --> TargetInstrInfo changes. | Owen Anderson | 2008-01-07 | 1 | -5/+5 | |
| | | | | llvm-svn: 45673 | |||||
* | Move some more instruction creation methods from RegisterInfo into InstrInfo. | Owen Anderson | 2008-01-01 | 1 | -8/+12 | |
| | | | | llvm-svn: 45484 | |||||
* | Move copyRegToReg from MRegisterInfo to TargetInstrInfo. This is part of the | Owen Anderson | 2007-12-31 | 1 | -3/+3 | |
| | | | | | | Machine-level API cleanup instigated by Chris. llvm-svn: 45470 | |||||
* | Rename SSARegMap -> MachineRegisterInfo in keeping with the idea | Chris Lattner | 2007-12-31 | 1 | -28/+30 | |
| | | | | | | | | | | | | | | that "machine" classes are used to represent the current state of the code being compiled. Given this expanded name, we can start moving other stuff into it. For now, move the UsedPhysRegs and LiveIn/LoveOuts vectors from MachineFunction into it. Update all the clients to match. This also reduces some needless #includes, such as MachineModuleInfo from MachineFunction. llvm-svn: 45467 | |||||
* | More cleanups for MachineOperand: | Chris Lattner | 2007-12-30 | 1 | -2/+2 | |
| | | | | | | | | | | - Eliminate the static "print" method for operands, moving it into MachineOperand::print. - Change various set* methods for register flags to take a bool for the value to set it to. Remove unset* methods. - Group methods more logically by operand flavor in MachineOperand.h llvm-svn: 45461 | |||||
* | Remove attribution from file headers, per discussion on llvmdev. | Chris Lattner | 2007-12-29 | 1 | -2/+2 | |
| | | | | llvm-svn: 45418 | |||||
* | If deleting a reload instruction due to reuse (value is available in ↵ | Evan Cheng | 2007-12-11 | 1 | -2/+18 | |
| | | | | | | register R and reload is targeting R), make sure to invalidate the kill information of the last kill. llvm-svn: 44894 | |||||
* | MachineInstr can change. Store indexes instead. | Evan Cheng | 2007-12-05 | 1 | -1/+1 | |
| | | | | llvm-svn: 44612 | |||||
* | If a split live interval is spilled again, remove the kill marker on its ↵ | Evan Cheng | 2007-12-05 | 1 | -1/+2 | |
| | | | | | | last use. llvm-svn: 44611 | |||||
* | Fix kill info for split intervals. | Evan Cheng | 2007-12-05 | 1 | -3/+5 | |
| | | | | llvm-svn: 44609 | |||||
* | - Mark last use of a split interval as kill instead of letting spiller track it. | Evan Cheng | 2007-12-05 | 1 | -2/+0 | |
| | | | | | | | | | This allows an important optimization to be re-enabled. - If all uses / defs of a split interval can be folded, give the interval a low spill weight so it would not be picked in case spilling is needed (avoid pushing other intervals in the same BB to be spilled). llvm-svn: 44601 | |||||
* | Add a argument to storeRegToStackSlot and storeRegToAddr to specify whether | Evan Cheng | 2007-12-05 | 1 | -11/+7 | |
| | | | | | | the stored register is killed. llvm-svn: 44600 | |||||
* | Remove a unsafe optimization. This fixes 401.bzip2. | Evan Cheng | 2007-12-04 | 1 | -8/+0 | |
| | | | | llvm-svn: 44587 | |||||
* | Spiller unfold optimization bug: do not clobber a reusable stack slot value ↵ | Evan Cheng | 2007-12-04 | 1 | -10/+16 | |
| | | | | | | unless it can be modified. llvm-svn: 44575 | |||||
* | Bug fixes. | Evan Cheng | 2007-12-03 | 1 | -7/+8 | |
| | | | | llvm-svn: 44549 | |||||
* | Update kill info for uses of split intervals. | Evan Cheng | 2007-12-03 | 1 | -8/+15 | |
| | | | | llvm-svn: 44531 | |||||
* | Remove redundant foldMemoryOperand variants and other code clean up. | Evan Cheng | 2007-12-02 | 1 | -14/+4 | |
| | | | | llvm-svn: 44517 | |||||
* | Fixed various live interval splitting bugs / compile time issues. | Evan Cheng | 2007-11-29 | 1 | -47/+25 | |
| | | | | llvm-svn: 44428 |