Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | Remove redundant foldMemoryOperand variants and other code clean up. | Evan Cheng | 2007-12-02 | 1 | -1/+5 | |
| | | | | llvm-svn: 44517 | |||||
* | Add parameter to getDwarfRegNum to permit targets | Dale Johannesen | 2007-11-13 | 1 | -1/+1 | |
| | | | | | | | | to use different mappings for EH and debug info; no functional change yet. Fix warning in X86CodeEmitter. llvm-svn: 44056 | |||||
* | Unify CALLSEQ_{START,END}. They take 4 parameters: the chain, two stack | Bill Wendling | 2007-11-13 | 1 | -1/+4 | |
| | | | | | | | | | | | adjustment fields, and an optional flag. If there is a "dynamic_stackalloc" in the code, make sure that it's bracketed by CALLSEQ_START and CALLSEQ_END. If not, then there is the potential for the stack to be changed while the stack's being used by another instruction (like a call). This can only result in tears... llvm-svn: 44037 | |||||
* | Use TableGen to emit information for dwarf register numbers. | Anton Korobeynikov | 2007-11-11 | 1 | -0/+5 | |
| | | | | | | | | This makes DwarfRegNum to accept list of numbers instead. Added three different "flavours", but only slightly tested on x86-32/linux. Please check another subtargets if possible, llvm-svn: 43997 | |||||
* | - Added getOpcodeAfterMemoryUnfold(). It doesn't unfold an instruction, but ↵ | Evan Cheng | 2007-10-18 | 1 | -2/+2 | |
| | | | | | | | | only returns the opcode of the instruction post unfolding. - Fix some copy+paste bugs. llvm-svn: 43153 | |||||
* | Use SmallVectorImpl instead of SmallVector with hardcoded size in MRegister ↵ | Evan Cheng | 2007-10-18 | 1 | -4/+4 | |
| | | | | | | public interface. llvm-svn: 43150 | |||||
* | - Added a few target hooks to generate load / store instructions from / to any | Evan Cheng | 2007-10-05 | 1 | -21/+110 | |
| | | | | | | | | address (not just from / to frameindexes). - Added target hooks to unfold load / store instructions / SDNodes into separate load, data processing, store instructions / SDNodes. llvm-svn: 42621 | |||||
* | Allow copyRegToReg to emit cross register classes copies. | Evan Cheng | 2007-09-26 | 1 | -4/+10 | |
| | | | | | | Tested with "make check"! llvm-svn: 42346 | |||||
* | Change instruction description to split OperandList into OutOperandList and | Evan Cheng | 2007-07-19 | 1 | -2/+2 | |
| | | | | | | | | | | | | | | | InOperandList. This gives one piece of important information: # of results produced by an instruction. An example of the change: def ADD32rr : I<0x01, MRMDestReg, (ops GR32:$dst, GR32:$src1, GR32:$src2), "add{l} {$src2, $dst|$dst, $src2}", [(set GR32:$dst, (add GR32:$src1, GR32:$src2))]>; => def ADD32rr : I<0x01, MRMDestReg, (outs GR32:$dst), (ins GR32:$src1, GR32:$src2), "add{l} {$src2, $dst|$dst, $src2}", [(set GR32:$dst, (add GR32:$src1, GR32:$src2))]>; llvm-svn: 40033 | |||||
* | Only adjust esp around calls in presence of alloca. | Evan Cheng | 2007-07-19 | 1 | -1/+1 | |
| | | | | llvm-svn: 40030 | |||||
* | Long live the exception handling! | Anton Korobeynikov | 2007-07-14 | 1 | -2/+3 | |
| | | | | | | | | | | | | | | | This patch fills the last necessary bits to enable exceptions handling in LLVM. Currently only on x86-32/linux. In fact, this patch adds necessary intrinsics (and their lowering) which represent really weird target-specific gcc builtins used inside unwinder. After corresponding llvm-gcc patch will land (easy) exceptions should be more or less workable. However, exceptions handling support should not be thought as 'finished': I expect many small and not so small glitches everywhere. llvm-svn: 39855 | |||||
* | Remove clobbersPred. Add an OptionalDefOperand to instructions which have ↵ | Evan Cheng | 2007-07-10 | 1 | -5/+9 | |
| | | | | | | the 's' bit. llvm-svn: 38501 | |||||
* | Added ARM::CPSR to represent ARM CPSR status register. | Evan Cheng | 2007-07-05 | 1 | -49/+59 | |
| | | | | llvm-svn: 37894 | |||||
* | Add missing const qualifiers. | Evan Cheng | 2007-05-29 | 1 | -3/+3 | |
| | | | | llvm-svn: 37342 | |||||
* | Add PredicateOperand to all ARM instructions that have the condition field. | Evan Cheng | 2007-05-15 | 1 | -48/+77 | |
| | | | | llvm-svn: 37066 | |||||
* | Fix PR1390 in a better way. | Lauro Ramos Venancio | 2007-05-07 | 1 | -12/+41 | |
| | | | | llvm-svn: 36916 | |||||
* | Fix PR1390. | Lauro Ramos Venancio | 2007-05-05 | 1 | -38/+10 | |
| | | | | | | Don't spill extra register to align the stack. llvm-svn: 36814 | |||||
* | Debug support for arm-linux. | Lauro Ramos Venancio | 2007-05-03 | 1 | -0/+5 | |
| | | | | | | Patch by Raul Herbster. llvm-svn: 36690 | |||||
* | eliminateFrameIndex() change. | Evan Cheng | 2007-05-01 | 1 | -3/+4 | |
| | | | | llvm-svn: 36626 | |||||
* | Under normal circumstances, when a frame pointer is not required, we reserve | Evan Cheng | 2007-05-01 | 1 | -3/+27 | |
| | | | | | | | | | | | | argument space for call sites in the function immediately on entry to the current function. This eliminates the need for add/sub sp brackets around call sites. However, this is not always a good idea. If the "call frame" is large and the target load / store instructions have small immediate field to encode sp offset, this can cause poor codegen. In the worst case, this can make it impossible to scavenge a register if the reserved spill slot is pushed too far apart from sp / fp. llvm-svn: 36607 | |||||
* | add parenthesis. | Lauro Ramos Venancio | 2007-04-27 | 1 | -2/+2 | |
| | | | | llvm-svn: 36514 | |||||
* | In Thumb mode, the frame register must be R7. | Lauro Ramos Venancio | 2007-04-27 | 1 | -2/+2 | |
| | | | | llvm-svn: 36512 | |||||
* | Match MachineFunction::UsedPhysRegs changes. | Evan Cheng | 2007-04-25 | 1 | -9/+6 | |
| | | | | llvm-svn: 36452 | |||||
* | Fix a bug in getFrameRegister. | Lauro Ramos Venancio | 2007-04-19 | 1 | -1/+4 | |
| | | | | | | Reported by Raul Herbster. llvm-svn: 36262 | |||||
* | Removed tabs everywhere except autogenerated & external files. Add make | Anton Korobeynikov | 2007-04-16 | 1 | -1/+1 | |
| | | | | | | target for tabs checking. llvm-svn: 36146 | |||||
* | Fixed a bug that causes codegen of noop like add r0, r0, #0. | Evan Cheng | 2007-04-03 | 1 | -1/+1 | |
| | | | | llvm-svn: 35627 | |||||
* | Added MRegisterInfo hook to re-materialize an instruction. | Evan Cheng | 2007-03-20 | 1 | -16/+35 | |
| | | | | llvm-svn: 35205 | |||||
* | Fix naming inconsistencies. | Evan Cheng | 2007-03-19 | 1 | -17/+17 | |
| | | | | llvm-svn: 35163 | |||||
* | Fix one more Thumb eliminateFrameIndex bug. | Evan Cheng | 2007-03-07 | 1 | -9/+23 | |
| | | | | llvm-svn: 34990 | |||||
* | Register scavenging is now on by default for ARM. | Evan Cheng | 2007-03-06 | 1 | -3/+4 | |
| | | | | llvm-svn: 34987 | |||||
* | Scavenge a register using the register scavenger when needed. | Evan Cheng | 2007-03-06 | 1 | -8/+107 | |
| | | | | llvm-svn: 34966 | |||||
* | eliminate unnecessary reset of SP in epilog on darwin | Dale Johannesen | 2007-03-02 | 1 | -1/+1 | |
| | | | | llvm-svn: 34824 | |||||
* | Use a spilled free callee-saved register as scratch register. | Evan Cheng | 2007-03-01 | 1 | -3/+17 | |
| | | | | llvm-svn: 34785 | |||||
* | - Track which callee-saved registers are spilled. | Evan Cheng | 2007-03-01 | 1 | -10/+18 | |
| | | | | | | - Some code clean up. llvm-svn: 34783 | |||||
* | Doh. ARM::PC is obvious a reserved register. | Evan Cheng | 2007-02-28 | 1 | -0/+1 | |
| | | | | llvm-svn: 34763 | |||||
* | Make requiresRegisterScavenging determination on a per MachineFunction basis. | Evan Cheng | 2007-02-28 | 1 | -2/+4 | |
| | | | | llvm-svn: 34711 | |||||
* | Start making use of RegScavenger. | Evan Cheng | 2007-02-28 | 1 | -8/+12 | |
| | | | | llvm-svn: 34708 | |||||
* | Let MRegisterInfo now owns RegScavenger; eliminateFrameIndex must preserve ↵ | Evan Cheng | 2007-02-27 | 1 | -27/+43 | |
| | | | | | | register kill info. llvm-svn: 34692 | |||||
* | bugfix: SP wasn't updated for varargs when frame pointer was eliminated. | Lauro Ramos Venancio | 2007-02-23 | 1 | -63/+63 | |
| | | | | llvm-svn: 34537 | |||||
* | Add option to turn on register scavenger; By default, spills kills the ↵ | Evan Cheng | 2007-02-23 | 1 | -6/+18 | |
| | | | | | | register being stored. llvm-svn: 34514 | |||||
* | Support to provide exception and selector registers. | Jim Laskey | 2007-02-21 | 1 | -0/+10 | |
| | | | | llvm-svn: 34482 | |||||
* | Re-apply my liveintervalanalysis changes. Now with PR1207 fixes. | Evan Cheng | 2007-02-19 | 1 | -0/+15 | |
| | | | | llvm-svn: 34428 | |||||
* | For PR1207: | Reid Spencer | 2007-02-19 | 1 | -15/+0 | |
| | | | | | | | Revert patches that caused the problem. Evan, please investigate and reapply when you've discovered the problem. llvm-svn: 34399 | |||||
* | Added getReservedRegs(). | Evan Cheng | 2007-02-17 | 1 | -0/+15 | |
| | | | | llvm-svn: 34376 | |||||
* | isLowRegister() expects input is a physical register. | Evan Cheng | 2007-02-07 | 1 | -2/+2 | |
| | | | | llvm-svn: 34013 | |||||
* | Rename. | Evan Cheng | 2007-02-07 | 1 | -6/+7 | |
| | | | | llvm-svn: 34011 | |||||
* | If sp offset will be materialized in a register. Clear the offset field of ↵ | Evan Cheng | 2007-02-07 | 1 | -8/+10 | |
| | | | | | | str / ldr. llvm-svn: 34010 | |||||
* | Get rid of references to iostream. | Evan Cheng | 2007-02-07 | 1 | -3/+2 | |
| | | | | llvm-svn: 34009 | |||||
* | In thumb mode, R3 is reserved, but it can be live in to the function. If | Evan Cheng | 2007-02-07 | 1 | -5/+21 | |
| | | | | | | | | that is the case, whenever we use it as a scratch register, save it to R12 first and then restore it after the use. This is a temporary and truly horrible workaround! llvm-svn: 33999 | |||||
* | - If fp (r7) is used to reference stack objects, use [r, r] address mode. | Evan Cheng | 2007-02-07 | 1 | -28/+67 | |
| | | | | | | | | - If there is a dynamic alloca, in the epilogue, restore the value of sp using r7 - offset. - Other bug fixes. llvm-svn: 33997 |