Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | Transfer physical register spill info when load / store folding happens. | Evan Cheng | 2008-03-11 | 1 | -0/+1 | |
| | | | | llvm-svn: 48246 | |||||
* | When the register allocator runs out of registers, spill a physical register ↵ | Evan Cheng | 2008-03-11 | 1 | -0/+78 | |
| | | | | | | 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 | -12/+13 | |
| | | | | | | findRegisterUseOperandIdx, findRegisterDefOperandIndx. Fix some naming inconsistencies. llvm-svn: 47927 | |||||
* | Spiller now remove unused spill slots. | Evan Cheng | 2008-02-27 | 1 | -0/+3 | |
| | | | | llvm-svn: 47657 | |||||
* | Rename PrintableName to Name. | Bill Wendling | 2008-02-26 | 1 | -1/+1 | |
| | | | | llvm-svn: 47629 | |||||
* | Change "Name" to "AsmName" in the target register info. Gee, a refactoring tool | Bill Wendling | 2008-02-26 | 1 | -1/+1 | |
| | | | | | | would have been a Godsend here! llvm-svn: 47625 | |||||
* | All remat'ed loads cannot be folded into two-address code. Not just argument ↵ | Evan Cheng | 2008-02-25 | 1 | -4/+4 | |
| | | | | | | loads. This change doesn't really have any impact on codegen. llvm-svn: 47557 | |||||
* | Correctly determine whether a argument load can be folded into its uses. | Evan Cheng | 2008-02-25 | 1 | -45/+52 | |
| | | | | llvm-svn: 47545 | |||||
* | Rematerialization logic was overly conservative when it comes to loads from ↵ | Evan Cheng | 2008-02-23 | 1 | -20/+6 | |
| | | | | | | fixed stack slots. llvm-svn: 47529 | |||||
* | If remating a machine instr with virtual register operand, make sure the vr ↵ | Evan Cheng | 2008-02-23 | 1 | -2/+1 | |
| | | | | | | is avaliable at all uses regardless of whether it would be folded. llvm-svn: 47526 | |||||
* | Recognize loads of arguments as re-materializable first. Therefore if ↵ | Evan Cheng | 2008-02-23 | 1 | -24/+26 | |
| | | | | | | isReallyTriviallyReMaterializable() returns true it doesn't confuse it as a "normal" re-materializable instruction. llvm-svn: 47520 | |||||
* | Fix spill weight updating bug. | Evan Cheng | 2008-02-23 | 1 | -15/+27 | |
| | | | | llvm-svn: 47507 | |||||
* | Enable re-materialization of instructions which have virtual register ↵ | Evan Cheng | 2008-02-22 | 1 | -28/+155 | |
| | | | | | | | | operands if the definition of the operand also reaches its uses. llvm-svn: 47475 | |||||
* | Clean up some spilling code using MachineRegisterInfo. | Evan Cheng | 2008-02-21 | 1 | -22/+51 | |
| | | | | llvm-svn: 47416 | |||||
* | New helper function getMBBFromIndex() that given an index in any instruction ↵ | Roman Levenstein | 2008-02-18 | 1 | -16/+0 | |
| | | | | | | of an MBB returns a pointer the MBB. Reviewed by Evan. llvm-svn: 47267 | |||||
* | - Removing the infamous r2rMap_ and rep() method. Now the coalescer will update | Evan Cheng | 2008-02-15 | 1 | -28/+36 | |
| | | | | | | | register defs and uses after each successful coalescing. - Also removed a number of hacks and fixed some subtle kill information bugs. llvm-svn: 47167 | |||||
* | Fix a potential serious problem where kills belonging to the val# defined by ↵ | Evan Cheng | 2008-02-13 | 1 | -3/+2 | |
| | | | | | | a two-address instruction is also on the val# that defines the input. llvm-svn: 47057 | |||||
* | Rename MRegisterInfo to TargetRegisterInfo. | Dan Gohman | 2008-02-10 | 1 | -22/+22 | |
| | | | | llvm-svn: 46930 | |||||
* | Forgot these files. | Evan Cheng | 2008-02-08 | 1 | -2/+2 | |
| | | | | llvm-svn: 46896 | |||||
* | Move some functionality for adding flags to MachineInstr's into methods on ↵ | Owen Anderson | 2008-01-24 | 1 | -1/+1 | |
| | | | | | | MachineInstr rather than LiveVariables. llvm-svn: 46295 | |||||
* | Only remat loads from immutable stack slots. | Evan Cheng | 2008-01-10 | 1 | -2/+2 | |
| | | | | llvm-svn: 45831 | |||||
* | Simplify some code. | Evan Cheng | 2008-01-10 | 1 | -8/+2 | |
| | | | | llvm-svn: 45830 | |||||
* | Don't use LiveVariables::VarInfo::DefInst. | Owen Anderson | 2008-01-10 | 1 | -1/+8 | |
| | | | | llvm-svn: 45815 | |||||
* | rename TargetInstrDescriptor -> TargetInstrDesc. | Chris Lattner | 2008-01-07 | 1 | -10/+10 | |
| | | | | | | | Make MachineInstr::getDesc return a reference instead of a pointer, since it can never be null. llvm-svn: 45695 | |||||
* | simplify some code using new predicates | Chris Lattner | 2008-01-07 | 1 | -3/+2 | |
| | | | | llvm-svn: 45689 | |||||
* | Rename MachineInstr::getInstrDescriptor -> getDesc(), which reflects | Chris Lattner | 2008-01-07 | 1 | -7/+7 | |
| | | | | | | | | | | | | | | | 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 | -3/+3 | |
| | | | | llvm-svn: 45673 | |||||
* | rename isLoad -> isSimpleLoad due to evan's desire to have such a predicate. | Chris Lattner | 2008-01-06 | 1 | -5/+4 | |
| | | | | llvm-svn: 45667 | |||||
* | Don't recalculate the loop info and loop dominators analyses if they're | Bill Wendling | 2008-01-04 | 1 | -0/+2 | |
| | | | | | | preserved. llvm-svn: 45596 | |||||
* | Rename SSARegMap -> MachineRegisterInfo in keeping with the idea | Chris Lattner | 2007-12-31 | 1 | -10/+10 | |
| | | | | | | | | | | | | | | 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 | -1/+1 | |
| | | | | | | | | | | - 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 | |||||
* | Implicit def instructions, e.g. X86::IMPLICIT_DEF_GR32, are always ↵ | Evan Cheng | 2007-12-12 | 1 | -3/+15 | |
| | | | | | | re-materializable and they should not be spilled. llvm-svn: 44960 | |||||
* | Switch over to MachineLoopInfo. | Evan Cheng | 2007-12-11 | 1 | -5/+5 | |
| | | | | llvm-svn: 44838 | |||||
* | Reverting 44702. It wasn't correct to rename them. | Bill Wendling | 2007-12-08 | 1 | -1/+1 | |
| | | | | llvm-svn: 44727 | |||||
* | Renaming: | Bill Wendling | 2007-12-08 | 1 | -1/+1 | |
| | | | | | | | isTriviallyReMaterializable -> hasNoSideEffects isReallyTriviallyReMaterializable -> isTriviallyReMaterializable llvm-svn: 44702 | |||||
* | Turning simple splitting on. Start testing new coalescer heuristics as new ↵ | Evan Cheng | 2007-12-06 | 1 | -1/+1 | |
| | | | | | | llcbeta. llvm-svn: 44660 | |||||
* | Fix for PR1831: if all defs of an interval are re-materializable, then it's ↵ | Evan Cheng | 2007-12-06 | 1 | -4/+34 | |
| | | | | | | a preferred spill candiate. llvm-svn: 44644 | |||||
* | MachineInstr can change. Store indexes instead. | Evan Cheng | 2007-12-05 | 1 | -2/+12 | |
| | | | | llvm-svn: 44612 | |||||
* | If a split live interval is spilled again, remove the kill marker on its ↵ | Evan Cheng | 2007-12-05 | 1 | -1/+4 | |
| | | | | | | last use. llvm-svn: 44611 | |||||
* | Clobber more bugs. | Evan Cheng | 2007-12-05 | 1 | -2/+3 | |
| | | | | llvm-svn: 44610 | |||||
* | Fix kill info for split intervals. | Evan Cheng | 2007-12-05 | 1 | -10/+20 | |
| | | | | llvm-svn: 44609 | |||||
* | - Mark last use of a split interval as kill instead of letting spiller track it. | Evan Cheng | 2007-12-05 | 1 | -26/+73 | |
| | | | | | | | | | 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 | |||||
* | Discard split intervals made empty due to folding. | Evan Cheng | 2007-12-04 | 1 | -5/+16 | |
| | | | | llvm-svn: 44565 | |||||
* | Typo | Evan Cheng | 2007-12-03 | 1 | -1/+1 | |
| | | | | llvm-svn: 44532 | |||||
* | Update kill info for uses of split intervals. | Evan Cheng | 2007-12-03 | 1 | -3/+2 | |
| | | | | llvm-svn: 44531 | |||||
* | Remove redundant foldMemoryOperand variants and other code clean up. | Evan Cheng | 2007-12-02 | 1 | -70/+72 | |
| | | | | llvm-svn: 44517 | |||||
* | Fix a bug where splitting cause some unnecessary spilling. | Evan Cheng | 2007-12-01 | 1 | -2/+12 | |
| | | | | llvm-svn: 44482 | |||||
* | Allow some reloads to be folded in multi-use cases. Specifically testl r, r ↵ | Evan Cheng | 2007-12-01 | 1 | -22/+32 | |
| | | | | | | -> cmpl [mem], 0. llvm-svn: 44479 | |||||
* | Do not fold reload into an instruction with multiple uses. It issues one ↵ | Evan Cheng | 2007-11-30 | 1 | -75/+86 | |
| | | | | | | extra load. llvm-svn: 44467 |