Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Reserve ECX and EDI instead of EBX and EDI. Since EBX is a callee | Alkis Evlogimenos | 2003-12-28 | 1 | -8/+8 |
| | | | | | | | | saved register it has a longer free range than ECX (which is defined every time there is a fnuction call) which makes ECX a better register to reserve. llvm-svn: 10635 | ||||
* | Add coalescing to register allocator. A hint is added to each interval | Alkis Evlogimenos | 2003-12-28 | 2 | -2/+29 |
| | | | | | | | | | | | which denotes the register we would like to be assigned to (virtual or physical). In register allocation, if this hint exists and we can map it to a physical register (it is either a physical register or it is a virtual register that already got assigned to a physical one) we use that register if it is available instead of a random one in the free pool. llvm-svn: 10634 | ||||
* | Add TargetInstrInfo::isMoveInstr() to support coalescing in register | Alkis Evlogimenos | 2003-12-28 | 2 | -0/+23 |
| | | | | | | allocation. llvm-svn: 10633 | ||||
* | Whoops, don't try to lower non intrinsic calls | Chris Lattner | 2003-12-28 | 2 | -0/+2 |
| | | | | llvm-svn: 10632 | ||||
* | implement support for the intrinsic lowering functionality | Chris Lattner | 2003-12-28 | 6 | -36/+78 |
| | | | | llvm-svn: 10629 | ||||
* | Eliminate some code that is not needed now that we have the intrinsic ↵ | Chris Lattner | 2003-12-28 | 4 | -58/+30 |
| | | | | | | lowering pass llvm-svn: 10628 | ||||
* | Pass around IntrinsicLowering instances as appropriate. | Chris Lattner | 2003-12-28 | 7 | -50/+74 |
| | | | | | | Reimplement the Interpreters implementation of va_* to be more direct. llvm-svn: 10627 | ||||
* | Use the intrinsic lowering functionality | Chris Lattner | 2003-12-28 | 1 | -15/+44 |
| | | | | llvm-svn: 10626 | ||||
* | Move into the VMCore library | Chris Lattner | 2003-12-28 | 1 | -1/+1 |
| | | | | llvm-svn: 10623 | ||||
* | Implement the default implementation of the intrinsic lowering class | Chris Lattner | 2003-12-28 | 1 | -0/+57 |
| | | | | llvm-svn: 10621 | ||||
* | finegrainify namespacification | Chris Lattner | 2003-12-28 | 1 | -9/+7 |
| | | | | | | minor cleanups llvm-svn: 10619 | ||||
* | Merging constants can cause further room for improvement. Iterate until | Chris Lattner | 2003-12-28 | 1 | -35/+45 |
| | | | | | | we converge llvm-svn: 10618 | ||||
* | Add a note | Chris Lattner | 2003-12-28 | 1 | -0/+5 |
| | | | | llvm-svn: 10617 | ||||
* | Factor code out of LLI | Chris Lattner | 2003-12-26 | 1 | -0/+54 |
| | | | | llvm-svn: 10616 | ||||
* | minor cleanups | Chris Lattner | 2003-12-26 | 1 | -7/+6 |
| | | | | llvm-svn: 10612 | ||||
* | No longer run atExit functions from run() | Chris Lattner | 2003-12-26 | 3 | -23/+27 |
| | | | | | | | rename run to runFunction Genericize the runFunction code a little bit, though it still stinks llvm-svn: 10610 | ||||
* | No longer run atExit functions from run() | Chris Lattner | 2003-12-26 | 2 | -10/+6 |
| | | | | | | rename run to runFunction llvm-svn: 10609 | ||||
* | Improve debugging output when choosing a register to spill. | Alkis Evlogimenos | 2003-12-24 | 1 | -8/+3 |
| | | | | llvm-svn: 10604 | ||||
* | Do a separate pass to compute spill weights because doing it inline | Alkis Evlogimenos | 2003-12-24 | 1 | -10/+27 |
| | | | | | | | | with live intervals was missing registers that were used before they were defined (in the arbitrary order live intervals numbers instructions). llvm-svn: 10603 | ||||
* | Right, fix the problem with invoke instructions, not just call instructions | Chris Lattner | 2003-12-23 | 1 | -1/+1 |
| | | | | llvm-svn: 10599 | ||||
* | Do not delete the type holder until after the call instruction has been | Chris Lattner | 2003-12-23 | 1 | -1/+1 |
| | | | | | | constructed! llvm-svn: 10598 | ||||
* | Minor cleanups, plug a minor memory leak | Chris Lattner | 2003-12-23 | 2 | -5/+2 |
| | | | | llvm-svn: 10596 | ||||
* | Change the way free regusters are computed and perform better | Alkis Evlogimenos | 2003-12-23 | 1 | -130/+77 |
| | | | | | | allocation in the presence of preallocated intervals. llvm-svn: 10595 | ||||
* | rename ClassifyExpression -> ClassifyExpr | Chris Lattner | 2003-12-23 | 4 | -19/+19 |
| | | | | llvm-svn: 10592 | ||||
* | More minor non-functional changes. This now computes the exit condition, though | Chris Lattner | 2003-12-23 | 1 | -15/+52 |
| | | | | | | it doesn't do anything with it. llvm-svn: 10590 | ||||
* | Remove extraneous #include | Chris Lattner | 2003-12-23 | 2 | -16/+11 |
| | | | | | | finegrainify namespacification llvm-svn: 10589 | ||||
* | Finegrainify namespacification | Chris Lattner | 2003-12-23 | 1 | -42/+42 |
| | | | | llvm-svn: 10588 | ||||
* | Fix memory corruption bug PR193 | Chris Lattner | 2003-12-22 | 1 | -20/+26 |
| | | | | llvm-svn: 10586 | ||||
* | Reverted back to revision 1.11. The previous fix doesn't really fix | John Criswell | 2003-12-22 | 1 | -12/+3 |
| | | | | | | anything; it just causes the bug to go dormant. llvm-svn: 10585 | ||||
* | Fix crash when compiling twolf. | Alkis Evlogimenos | 2003-12-22 | 1 | -1/+2 |
| | | | | llvm-svn: 10584 | ||||
* | Don't mind me, I'm just refactoring away. This patch makes room for LFTR, but | Chris Lattner | 2003-12-22 | 1 | -90/+130 |
| | | | | | | contains no functionality changes. llvm-svn: 10583 | ||||
* | finegrainify namespacification | Chris Lattner | 2003-12-22 | 1 | -8/+23 |
| | | | | | | Implement indvar analysis of getelementptr and sub expressions llvm-svn: 10582 | ||||
* | Implement IndVarsSimplify/pointer-indvars.ll, transforming pointer | Chris Lattner | 2003-12-22 | 1 | -9/+19 |
| | | | | | | arithmetic into "array subscripts" llvm-svn: 10580 | ||||
* | finegrainify namespacification | Chris Lattner | 2003-12-22 | 1 | -3/+13 |
| | | | | | | add new getIntPtrType() method llvm-svn: 10579 | ||||
* | Fix PR194 | Chris Lattner | 2003-12-22 | 1 | -56/+85 |
| | | | | llvm-svn: 10573 | ||||
* | Really release memory used by functions. Patch by Chris. | Misha Brukman | 2003-12-22 | 1 | -0/+1 |
| | | | | llvm-svn: 10572 | ||||
* | Remove verifyIntervals() since it doesn't actually work right now. | Alkis Evlogimenos | 2003-12-21 | 1 | -52/+0 |
| | | | | llvm-svn: 10570 | ||||
* | Change weight into a float so that we can take into account the | Alkis Evlogimenos | 2003-12-21 | 2 | -13/+28 |
| | | | | | | | | nesting level when computing it. Right now the allocator uses: w = sum_over_defs_uses( 10 ^ nesting level ); llvm-svn: 10569 | ||||
* | Move FP_REG_KILL closer to the return instruction. | Alkis Evlogimenos | 2003-12-21 | 1 | -1/+2 |
| | | | | llvm-svn: 10567 | ||||
* | Add support for inactive intervals. This effectively reuses registers | Alkis Evlogimenos | 2003-12-21 | 2 | -239/+370 |
| | | | | | | for live ranges that fall into assigned registers' holes. llvm-svn: 10566 | ||||
* | Fix PR#193. | John Criswell | 2003-12-20 | 1 | -3/+12 |
| | | | | | | | | | | Modified ReadArchiveBuffer() so that it dynamically allocates the std::string object used to hold the bytecode object file's name. This is necessary because it is passed by reference to the new Module that is allocated to represent the bytecode object, and previously we were using a std::string that disappeared on function exit. llvm-svn: 10565 | ||||
* | Move FP_REG_KILL closer to the actual branch instruction. | Alkis Evlogimenos | 2003-12-20 | 1 | -2/+5 |
| | | | | llvm-svn: 10563 | ||||
* | Remove floating point killer pass. This is now implemented in the | Alkis Evlogimenos | 2003-12-20 | 5 | -64/+8 |
| | | | | | | | | | | instruction selector by adding a new pseudo-instruction FP_REG_KILL. This instruction implicitly defines all x86 fp registers and is a terminator so that passes which add machine code at the end of basic blocks (like phi elimination) do not add instructions between it and the branch or return instruction. llvm-svn: 10562 | ||||
* | Add a new target-independent machine code freeing pass | Chris Lattner | 2003-12-20 | 1 | -8/+33 |
| | | | | llvm-svn: 10560 | ||||
* | Finally, _actually delete the machine code_ for a function, after it has | Chris Lattner | 2003-12-20 | 2 | -2/+9 |
| | | | | | | | been emitted. Also, since the FPK pass is causing memory access violations, disable it. llvm-svn: 10559 | ||||
* | This should not be needed anymore | Chris Lattner | 2003-12-20 | 1 | -4/+0 |
| | | | | llvm-svn: 10558 | ||||
* | Fix memory leak in the stackifier, due to the machinebasicblocks not holding | Chris Lattner | 2003-12-20 | 1 | -0/+1 |
| | | | | | | instructions on an ilist llvm-svn: 10556 | ||||
* | Finegrainify namespacification | Chris Lattner | 2003-12-20 | 1 | -21/+20 |
| | | | | | | Minor cleanups to killer pass llvm-svn: 10555 | ||||
* | Hoist some sparc specific code into the sparc target | Chris Lattner | 2003-12-20 | 3 | -6/+53 |
| | | | | llvm-svn: 10554 | ||||
* | * Finegrainify namespacification | Chris Lattner | 2003-12-20 | 1 | -72/+13 |
| | | | | | | | | * Move sparc specific code out of generic code * Eliminate the getOffset() method which made INVALID_FRAME_OFFSET necessary, which made pulling in MAX_INT as a sentinal necessary. llvm-svn: 10553 |