summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86RegisterInfo.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Move reMaterialize() from TargetRegisterInfo to TargetInstrInfo.Evan Cheng2008-03-311-28/+0
| | | | llvm-svn: 48995
* Add information about callee-saved registers on Win64Anton Korobeynikov2008-03-221-6/+24
| | | | llvm-svn: 48692
* Fix newly-introduced 4.3 warningsAnton Korobeynikov2008-02-201-1/+2
| | | | llvm-svn: 47375
* Rename MRegisterInfo to TargetRegisterInfo.Dan Gohman2008-02-101-2/+3
| | | | llvm-svn: 46930
* Avoid needlessly casting away const qualifiers.Dan Gohman2008-02-081-1/+1
| | | | llvm-svn: 46877
* Frame index can be negative.Evan Cheng2008-02-021-1/+1
| | | | llvm-svn: 46655
* Remove the nasty LABEL hack with a much less evil one. Now ↵Evan Cheng2008-02-011-10/+0
| | | | | | llvm.dbg.func.start implies a stoppoint is set. SelectionDAGISel records a new source line but does not create a ISD::LABEL node for this special stoppoint. Asm printer will magically print this label. This ensures nothing is emitted before. llvm-svn: 46635
* Add an extra operand to LABEL nodes which distinguishes between debug, EH, ↵Evan Cheng2008-01-311-4/+4
| | | | | | or misc labels. This fixes the EH breakage. However I am not convinced this is *the* solution. llvm-svn: 46609
* Add x86 specific getFrameIndexOffset(). This fixes local variable debugging ↵Evan Cheng2008-01-311-0/+14
| | | | | | info. llvm-svn: 46598
* Treat the label for the first @llvm.dbg.stoppoint the same way as the ↵Evan Cheng2008-01-301-4/+8
| | | | | | | | | | dbg_func_start label. Make sure nothing else is inserted before them. Note this solution might be somewhat fragile since ISD::LABEL may be used for other purposes. If that ends up to be an issue, we may need to introduce a different node for debug labels. llvm-svn: 46571
* Skip over the label which marks the beginning of the function before ↵Evan Cheng2008-01-301-0/+6
| | | | | | inserting prologue code. llvm-svn: 46546
* Provide correct DWARF register numbering for debug information emission on ↵Anton Korobeynikov2008-01-251-3/+6
| | | | | | | | x86-32/Darwin. This should fix bunch of issues. llvm-svn: 46337
* rename TargetInstrDescriptor -> TargetInstrDesc.Chris Lattner2008-01-071-1/+1
| | | | | | | Make MachineInstr::getDesc return a reference instead of a pointer, since it can never be null. llvm-svn: 45695
* Rename MachineInstr::getInstrDescriptor -> getDesc(), which reflectsChris Lattner2008-01-071-63/+2
| | | | | | | | | | | | | | | 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
* Move even more functionality from MRegisterInfo into TargetInstrInfo.Owen Anderson2008-01-071-1070/+0
| | | | | | Some day I'll get it all moved over... llvm-svn: 45672
* Move some more functionality from MRegisterInfo to TargetInstrInfo.Owen Anderson2008-01-041-33/+0
| | | | llvm-svn: 45603
* Move some more instruction creation methods from RegisterInfo into InstrInfo.Owen Anderson2008-01-011-82/+40
| | | | llvm-svn: 45484
* Move copyRegToReg from MRegisterInfo to TargetInstrInfo. This is part of theOwen Anderson2007-12-311-68/+0
| | | | | | Machine-level API cleanup instigated by Chris. llvm-svn: 45470
* Rename SSARegMap -> MachineRegisterInfo in keeping with the idea Chris Lattner2007-12-311-4/+7
| | | | | | | | | | | | | | 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
* Add new shorter predicates for testing machine operands for various types: Chris Lattner2007-12-301-4/+4
| | | | | | | | | | | | e.g. MO.isMBB() instead of MO.isMachineBasicBlock(). I don't plan on switching everything over, so new clients should just start using the shorter names. Remove old long accessors, switching everything over to use the short accessor: getMachineBasicBlock() -> getMBB(), getConstantPoolIndex() -> getIndex(), setMachineBasicBlock -> setMBB(), etc. llvm-svn: 45464
* More cleanups for MachineOperand:Chris Lattner2007-12-301-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
* Shrinkify the machine operand creation method names.Chris Lattner2007-12-301-1/+1
| | | | llvm-svn: 45433
* Remove attribution from file headers, per discussion on llvmdev.Chris Lattner2007-12-291-2/+2
| | | | llvm-svn: 45418
* Make better use of instructions that clear high bits; fix various 2-wide ↵Evan Cheng2007-12-151-0/+3
| | | | | | shuffle bugs. llvm-svn: 45058
* Actually, MOVPQIto64mr is a dup of MOVPQI2QImr, MOV64toPQIrm is a dup of ↵Evan Cheng2007-12-141-2/+2
| | | | | | MOVQI2PQIrm. llvm-svn: 45041
* Allow the JIT to encode MMX instructionsNate Begeman2007-12-111-8/+8
| | | | llvm-svn: 44869
* Add a argument to storeRegToStackSlot and storeRegToAddr to specify whetherEvan Cheng2007-12-051-13/+28
| | | | | | the stored register is killed. llvm-svn: 44600
* Remove redundant foldMemoryOperand variants and other code clean up.Evan Cheng2007-12-021-51/+36
| | | | llvm-svn: 44517
* Allow some reloads to be folded in multi-use cases. Specifically testl r, r ↵Evan Cheng2007-12-011-1/+74
| | | | | | -> cmpl [mem], 0. llvm-svn: 44479
* Clean up sub-register implementation by moving subReg information back toEvan Cheng2007-11-141-3/+3
| | | | | | | | | | | MachineOperand auxInfo. Previous clunky implementation uses an external map to track sub-register uses. That works because register allocator uses a new virtual register for each spilled use. With interval splitting (coming soon), we may have multiple uses of the same register some of which are of using different sub-registers from others. It's too fragile to constantly update the information. llvm-svn: 44104
* Add parameter to getDwarfRegNum to permit targetsDale Johannesen2007-11-131-1/+1
| | | | | | | | to use different mappings for EH and debug info; no functional change yet. Fix warning in X86CodeEmitter. llvm-svn: 44056
* Fix x86-64 jit: remove reliance on Dwarf numbers.Evan Cheng2007-11-131-6/+16
| | | | llvm-svn: 44048
* Use TableGen to emit information for dwarf register numbers. Anton Korobeynikov2007-11-111-46/+10
| | | | | | | | 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
* Revert previous rewrite per chris's comments.Dale Johannesen2007-11-091-93/+40
| | | | llvm-svn: 43950
* Rewrite Dwarf number handling per review comments.Dale Johannesen2007-11-091-40/+93
| | | | llvm-svn: 43918
* Complete conditionalization of Dwarf reg numbers.Dale Johannesen2007-11-071-6/+46
| | | | | | | | Would somebody not on Darwin please make sure this doesn't break anything. Exception handling failures would be the most likely symptom. llvm-svn: 43844
* Interchange Dwarf numbers of ESP and EBP on x86 Darwin.Dale Johannesen2007-11-071-0/+16
| | | | | | Much improvement in exception handling. llvm-svn: 43794
* Use movups to spill / restore SSE registers on targets where stacks alignment isEvan Cheng2007-11-051-15/+20
| | | | | | | less than 16. This is a temporary solution until dynamic stack alignment is implemented. llvm-svn: 43703
* Fix off-by-one stack offset computations (dwarf information) for callee-savedAnton Korobeynikov2007-10-261-1/+2
| | | | | | | | registers in case, when FP pointer was eliminated. This should fixes misc. random EH-related crahses, when stuff is compiled with -fomit-frame-pointer. Thanks Duncan for nailing this bug! llvm-svn: 43381
* Fix an unfolding bug.Evan Cheng2007-10-221-1/+2
| | | | llvm-svn: 43212
* Resolve unfold tables ambiguity.Evan Cheng2007-10-191-6/+7
| | | | llvm-svn: 43194
* Local spiller optimization:Evan Cheng2007-10-191-33/+80
| | | | | | | | | | | | | | | | Turn a store folding instruction into a load folding instruction. e.g. xorl %edi, %eax movl %eax, -32(%ebp) movl -36(%ebp), %eax orl %eax, -32(%ebp) => xorl %edi, %eax orl -36(%ebp), %eax mov %eax, -32(%ebp) This enables the unfolding optimization for a subsequent instruction which will also eliminate the newly introduced store instruction. llvm-svn: 43192
* - Added getOpcodeAfterMemoryUnfold(). It doesn't unfold an instruction, but ↵Evan Cheng2007-10-181-2/+16
| | | | | | | | 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 Cheng2007-10-181-6/+6
| | | | | | public interface. llvm-svn: 43150
* Change unfoldMemoryOperand(). User is now responsible for passing in theEvan Cheng2007-10-131-11/+18
| | | | | | | register used by the unfolded instructions. User can also specify whether to unfold the load, the store, or both. llvm-svn: 42946
* Fold load / store into MOV32to32_ and MOV16to16_.Evan Cheng2007-10-121-0/+4
| | | | llvm-svn: 42895
* Added tail call optimization to the x86 back end. It can beArnold Schwaighofer2007-10-111-5/+124
| | | | | | | | | | | enabled by passing -tailcallopt to llc. The optimization is performed if the following conditions are satisfied: * caller/callee are fastcc * elf/pic is disabled OR elf/pic enabled + callee is in module + callee has visibility protected or hidden llvm-svn: 42870
* disable this entirely: it is causing use of invalidated iterators and ↵Chris Lattner2007-10-071-0/+2
| | | | | | infinite looping. llvm-svn: 42739
* Fix many regressions on x86 by avoiding dereferencing the end iterator.Chris Lattner2007-10-071-35/+38
| | | | llvm-svn: 42738
* Oops, I really wanted to commit this part also :)Anton Korobeynikov2007-10-061-2/+27
| | | | llvm-svn: 42700
OpenPOWER on IntegriCloud