Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | eliminateFrameIndex() is even more complicated if frame ptr is used instead ↵ | Evan Cheng | 2007-02-07 | 1 | -20/+34 | |
| | | | | | | of SP when there are dynamic alloca's. llvm-svn: 33975 | |||||
* | Spill / restore should avoid modifying the condition register. | Evan Cheng | 2007-02-07 | 1 | -34/+35 | |
| | | | | llvm-svn: 33971 | |||||
* | foldMemoryOperand() cannot fold tMOVrr sp into load / store in thumb mode. ↵ | Evan Cheng | 2007-02-06 | 1 | -13/+19 | |
| | | | | | | tLDRspi / tSTRspi cannot target / store high registers. llvm-svn: 33958 | |||||
* | eliminateFrameIndex() bug when frame pointer is used as base register. | Evan Cheng | 2007-02-06 | 1 | -23/+27 | |
| | | | | llvm-svn: 33945 | |||||
* | bugfix: SP isn't resetted when function has FP and there is no spills. | Lauro Ramos Venancio | 2007-02-02 | 1 | -2/+3 | |
| | | | | llvm-svn: 33800 | |||||
* | Another thumb large stack offset codegen bug. | Evan Cheng | 2007-02-02 | 1 | -5/+13 | |
| | | | | llvm-svn: 33795 | |||||
* | Ugh. Only meant to do this in thumb mode. | Evan Cheng | 2007-02-02 | 1 | -5/+10 | |
| | | | | llvm-svn: 33780 | |||||
* | Also set alignment of stack-based structs to 4 in thumb mode. | Evan Cheng | 2007-02-01 | 1 | -2/+1 | |
| | | | | llvm-svn: 33741 | |||||
* | Special epilogue for vararg functions. We cannot do a pop to pc because | Evan Cheng | 2007-02-01 | 1 | -4/+20 | |
| | | | | | | | | | | | there follows a sp increment for the va register save region. Instead issue a separate pop to another register, increment sp, and then return: pop {r4, r5, r6, r7} pop {r3} add sp, #3 * 4 bx r3 llvm-svn: 33739 | |||||
* | Don't want to add FramePtr to callee save spill list twice. | Evan Cheng | 2007-01-31 | 1 | -8/+2 | |
| | | | | llvm-svn: 33727 | |||||
* | Darwin ABI requires FP to point to stack slot of prev FP. | Evan Cheng | 2007-01-31 | 1 | -3/+14 | |
| | | | | llvm-svn: 33724 | |||||
* | Update comment. | Evan Cheng | 2007-01-31 | 1 | -1/+1 | |
| | | | | llvm-svn: 33721 | |||||
* | ARM fix: Miscompilation when frame pointer can't be eliminated. ↵ | Lauro Ramos Venancio | 2007-01-31 | 1 | -10/+9 | |
| | | | | | | Uninitialized frame pointer register is used. llvm-svn: 33703 | |||||
* | During PEI, if the immediate value of sp + offset is too large (i.e. something | Evan Cheng | 2007-01-30 | 1 | -21/+102 | |
| | | | | | | | that would require > 3 instructions to materialize), load the immediate from a constpool entry. llvm-svn: 33667 | |||||
* | In thumb mode, round up stack frame size to multiple of 4 since add/sub | Evan Cheng | 2007-01-30 | 1 | -115/+124 | |
| | | | | | | sp, imm instructions implicitly multiply the offset by 4. llvm-svn: 33653 | |||||
* | Thumb eliminateFrameIndex fixes. | Evan Cheng | 2007-01-30 | 1 | -8/+27 | |
| | | | | llvm-svn: 33652 | |||||
* | - In thumb mode, if size of MachineFunction is >= 2048, force LR to be | Evan Cheng | 2007-01-30 | 1 | -3/+17 | |
| | | | | | | | | | | | | | spilled (if it is not already). - If LR is spilled, use BL to implement far jumps. LR is not used as a GPR in thumb mode so it can be clobbered if it is properly spilled / restored in prologue / epilogue. - If LR is force spilled but no far jump has been emitted, try undo'ing the spill by: push lr -> delete pop pc -> bx lr llvm-svn: 33650 | |||||
* | Remember if LR register has been spilled in this function. | Evan Cheng | 2007-01-29 | 1 | -1/+5 | |
| | | | | llvm-svn: 33632 | |||||
* | Represent tADDspi and tSUBspi as two-address instructions. | Evan Cheng | 2007-01-26 | 1 | -1/+1 | |
| | | | | llvm-svn: 33551 | |||||
* | I am an idiot. | Evan Cheng | 2007-01-25 | 1 | -1/+1 | |
| | | | | llvm-svn: 33509 | |||||
* | PEI is now responsible for adding MaxCallFrameSize to frame size and align ↵ | Evan Cheng | 2007-01-23 | 1 | -15/+0 | |
| | | | | | | the stack. Each target can further adjust the frame size if necessary. llvm-svn: 33460 | |||||
* | hasFP() is now a virtual method of MRegisterInfo. | Evan Cheng | 2007-01-23 | 1 | -1/+1 | |
| | | | | llvm-svn: 33455 | |||||
* | Round up stack to multiple of alignment only if it's a leaf function without ↵ | Evan Cheng | 2007-01-20 | 1 | -4/+7 | |
| | | | | | | alloca. llvm-svn: 33401 | |||||
* | Prologue and epilogue bugs for non-Darwin targets. | Evan Cheng | 2007-01-20 | 1 | -22/+46 | |
| | | | | llvm-svn: 33390 | |||||
* | Clean up ARM PEI code. | Evan Cheng | 2007-01-20 | 1 | -79/+65 | |
| | | | | llvm-svn: 33389 | |||||
* | isDarwin -> isTargetDarwin | Evan Cheng | 2007-01-19 | 1 | -3/+3 | |
| | | | | llvm-svn: 33366 | |||||
* | ARM backend contribution from Apple. | Evan Cheng | 2007-01-19 | 1 | -124/+904 | |
| | | | | llvm-svn: 33353 | |||||
* | Don't add or sub zero to sp. | Lauro Ramos Venancio | 2007-01-12 | 1 | -6/+10 | |
| | | | | llvm-svn: 33142 | |||||
* | Build constants using instructions mov/orr or mvn/eor. | Lauro Ramos Venancio | 2007-01-12 | 1 | -69/+6 | |
| | | | | llvm-svn: 33141 | |||||
* | Fix naming inconsistency. | Evan Cheng | 2007-01-02 | 1 | -6/+6 | |
| | | | | llvm-svn: 32823 | |||||
* | macros -> Inline functions | Rafael Espindola | 2006-12-18 | 1 | -9/+13 | |
| | | | | | | Lauros's patch llvm-svn: 32656 | |||||
* | Avoid creating invalid sub/add instructions on the prolog/epilog | Rafael Espindola | 2006-12-14 | 1 | -10/+86 | |
| | | | | | | patch by Lauro llvm-svn: 32577 | |||||
* | What should be the last unnecessary <iostream>s in the library. | Bill Wendling | 2006-12-07 | 1 | -1/+0 | |
| | | | | llvm-svn: 32333 | |||||
* | Change MachineInstr ctor's to take a TargetInstrDescriptor reference instead | Evan Cheng | 2006-11-27 | 1 | -16/+18 | |
| | | | | | | of opcode and number of operands. llvm-svn: 31947 | |||||
* | implement load effective address similar to the alpha backend | Rafael Espindola | 2006-11-09 | 1 | -4/+4 | |
| | | | | | | remove lea_addri and the now unused memri addressing mode llvm-svn: 31592 | |||||
* | initial implementation of addressing mode 2 | Rafael Espindola | 2006-11-08 | 1 | -9/+9 | |
| | | | | | | TODO: fix lea_addri llvm-svn: 31552 | |||||
* | add support for calling functions when the caller has variable sized objects | Rafael Espindola | 2006-10-31 | 1 | -1/+19 | |
| | | | | llvm-svn: 31312 | |||||
* | initial support for frame pointers | Rafael Espindola | 2006-10-26 | 1 | -4/+37 | |
| | | | | llvm-svn: 31197 | |||||
* | add the immediate to the Offset in eliminateFrameIndex | Rafael Espindola | 2006-10-17 | 1 | -2/+2 | |
| | | | | llvm-svn: 30998 | |||||
* | add FCPYS and FCPYD | Rafael Espindola | 2006-10-17 | 1 | -3/+11 | |
| | | | | llvm-svn: 30995 | |||||
* | fix the stack alignment | Rafael Espindola | 2006-10-06 | 1 | -0/+3 | |
| | | | | llvm-svn: 30766 | |||||
* | add shifts to addressing mode 1 | Rafael Espindola | 2006-09-13 | 1 | -4/+8 | |
| | | | | llvm-svn: 30291 | |||||
* | partial implementation of the ARM Addressing Mode 1 | Rafael Espindola | 2006-09-11 | 1 | -4/+4 | |
| | | | | llvm-svn: 30252 | |||||
* | Completely eliminate def&use operands. Now a register operand is EITHER a | Chris Lattner | 2006-09-05 | 1 | -2/+2 | |
| | | | | | | def operand or a use operand. llvm-svn: 30109 | |||||
* | add a "load effective address" | Rafael Espindola | 2006-08-17 | 1 | -1/+2 | |
| | | | | llvm-svn: 29748 | |||||
* | Declare the callee saved regs | Rafael Espindola | 2006-08-16 | 1 | -8/+10 | |
| | | | | | | | Remove the hard coded store and load of the link register Implement ARMFrameInfo llvm-svn: 29727 | |||||
* | correctly set LocalAreaOffset of TargetFrameInfo | Rafael Espindola | 2006-08-09 | 1 | -5/+0 | |
| | | | | llvm-svn: 29589 | |||||
* | fix the spill code | Rafael Espindola | 2006-08-09 | 1 | -7/+9 | |
| | | | | llvm-svn: 29583 | |||||
* | fix the loading of the link register in emitepilogue | Rafael Espindola | 2006-08-09 | 1 | -1/+3 | |
| | | | | llvm-svn: 29580 | |||||
* | change the addressing mode of the str instruction to reg+imm | Rafael Espindola | 2006-08-08 | 1 | -4/+2 | |
| | | | | llvm-svn: 29571 |