summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Sparc/SparcRegInfo.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Simplify code a bitChris Lattner2003-07-211-9/+9
| | | | llvm-svn: 7217
* Added special consideration for instrumentation strategyAnand Shukla2003-07-201-0/+14
| | | | llvm-svn: 7208
* Several fixes to handling of int CC register:Vikram S. Adve2003-07-101-142/+22
| | | | | | | | | | | | | | | | | | | | (1) An int CC live range must be spilled if there are any interferences, even if no other "neighbour" in the interf. graph has been allocated that reg. yet. This is actually true of any class with only one reg! (2) SparcIntCCRegClass::colorIGNode sets the color even if the LR must be spilled so that the machine-independent spill code doesn't have to make the machine-dependent decision of which CC name to use based on operand type: %xcc or %icc. (These are two halves of the same register.) (3) LR->isMarkedForSpill() is no longer the same as LR->hasColor(). These should never have been the same, and this is necessary now for #2. (4) All RDCCR and WRCCR instructions are directly generated with the phony number for %ccr so that EmitAssembly/EmitBinary doesn't have to deal with this. llvm-svn: 7151
* Major bug fix though it happened rarely (only on a compare after anVikram S. Adve2003-07-061-13/+9
| | | | | | | | integer overflow): We need to use %icc and not %xcc for comparisons on 32-bit or smaller integer values. llvm-svn: 7111
* Bug/case fixes:Vikram S. Adve2003-07-021-10/+22
| | | | | | | | | | | | (1) select: Ok to convert a pointer to a float or double. (2) regalloc: Some MachineInstr* for caller-saving code before a call were being inserted before and after the call! (3) Don't insert the caller-saving instructions in the MachineCodeForInstruction for the Call instruction. *All* instructions generated by register allocation need to be recorded in those maps, but it needs to be done uniformly. llvm-svn: 7051
* Fix invalid number of arguments problemChris Lattner2003-06-161-2/+2
| | | | llvm-svn: 6692
* * Changed Bcc instructions to behave like BPcc instructionsMisha Brukman2003-06-061-3/+6
| | | | | | | | | * BPA and BPN do not take a %cc register as a parameter * SLL/SRL/SRA{r,i}5 are there for a reason - they are ONLY 32-bit instructions * Likewise, SLL/SRL/SRAX{r,i}6 are only 64-bit * Added WRCCR{r,i} opcodes llvm-svn: 6655
* Add map info for arguments to call (copies)Anand Shukla2003-06-011-1/+11
| | | | llvm-svn: 6503
* Extensive changes to the way code generation occurs for functionVikram S. Adve2003-05-311-162/+156
| | | | | | | | | | | | | | call arguments and return values: Now all copy operations before and after a call are generated during selection instead of during register allocation. The values are copied to virtual registers (or to the stack), but in the former case these operands are marked with the correct physical registers according to the calling convention. Although this complicates scheduling and does not work well with live range analysis, it simplifies the machine-dependent part of register allocation. llvm-svn: 6465
* Added 'r' and 'i' annotations to instructions as SparcInstr.def has changed.Misha Brukman2003-05-271-19/+22
| | | | llvm-svn: 6377
* Added special register class containing (for now) %fsr.Vikram S. Adve2003-05-271-84/+58
| | | | | | | | Fixed spilling of %fcc[0-3] which are part of %fsr. Moved some machine-independent reg-class code to class TargetRegInfo from SparcReg{Class,}Info. llvm-svn: 6339
* Namespacified `vector' and `cerr' to always use the `std::' namespace.Misha Brukman2003-05-211-53/+52
| | | | | | Eliminated `using' directives. llvm-svn: 6261
* Sparc instruction opcodes now all live under the `V9' namespace.Misha Brukman2003-05-201-40/+41
| | | | llvm-svn: 6249
* Remove wierd printoutChris Lattner2003-05-121-1/+1
| | | | llvm-svn: 6145
* Fix warningsChris Lattner2003-01-151-4/+3
| | | | llvm-svn: 5316
* Adjust to simpler interfacesChris Lattner2003-01-151-35/+41
| | | | | | Eliminate dependency on RegClass.h llvm-svn: 5315
* #include RegClass.h explicitlyChris Lattner2003-01-151-0/+1
| | | | llvm-svn: 5307
* Move private header to private directoryChris Lattner2003-01-151-1/+1
| | | | llvm-svn: 5305
* Prune #includesChris Lattner2003-01-151-1/+0
| | | | llvm-svn: 5303
* Use BuildMI more, Create*Instruction lessChris Lattner2003-01-151-77/+31
| | | | llvm-svn: 5291
* Rename llvm/Analysis/LiveVar/FunctionLiveVarInfo.h -> ↵Chris Lattner2003-01-141-7/+10
| | | | | | llvm/CodeGen/FunctionLiveVarInfo.h llvm-svn: 5284
* More renamings of Target/Machine*Info to Target/Target*InfoChris Lattner2002-12-291-1/+1
| | | | llvm-svn: 5204
* * Rename machineFrameInfo to targetFrameInfoChris Lattner2002-12-281-19/+18
| | | | | | * Constant pool and frame info is no longer directly in MachineFunction llvm-svn: 5177
* Remove unneccesary #includesChris Lattner2002-10-291-1/+0
| | | | llvm-svn: 4408
* Don't pass default argsChris Lattner2002-10-281-8/+7
| | | | llvm-svn: 4354
* Don't bother passing in default valueChris Lattner2002-10-281-13/+13
| | | | llvm-svn: 4347
* Fixes to work with updated RegAllocChris Lattner2002-10-281-10/+10
| | | | llvm-svn: 4345
* Rename the redundant MachineOperand::getOperandType() to ↵Chris Lattner2002-10-281-8/+7
| | | | | | MachineOperand::getType() llvm-svn: 4331
* Changed `MachineCodeForMethod' to `MachineFunction'.Misha Brukman2002-10-281-4/+4
| | | | llvm-svn: 4301
* - Two minor improvements to the MachineInstr class to reduce footprint andChris Lattner2002-10-221-5/+5
| | | | | | | overhead: Merge 3 parallel vectors into 1, change regsUsed hash_set to be a bitvector. Sped up LLC a little less than 10% in a debug build! llvm-svn: 4261
* Print "circular" warning message only in debug mode.Vikram S. Adve2002-10-141-2/+1
| | | | llvm-svn: 4170
* Eliminate duplicate target pointer. Also add a few assertions.Vikram S. Adve2002-10-131-6/+14
| | | | llvm-svn: 4128
* Live ranges for Return value and return address of a Call are no longerVikram S. Adve2002-09-281-49/+26
| | | | | | | created here. Instead they are created in LiveRangeInfo.cpp. This simplifies the code here quite a bit. llvm-svn: 3965
* - Renamed Type::isIntegral() to Type::isInteger()Chris Lattner2002-09-031-2/+2
| | | | | | | - Added new method Type::isIntegral() that is the same as isInteger, but also accepts bool. llvm-svn: 3574
* - Clean up interface to Sparc register handling a bit:Chris Lattner2002-08-121-46/+97
| | | | | | | | | | | | - Eliminate Sparc*Order classes, moving contents to Sparc*Class classes - get register name methods now return const char * const pointers instead of std::string's. - Added file header comments to SparcRegClassInfo.(cpp|h) - Moved BIG constant arrays out of SparcRegClassInfo.h, into SparcRegInfo.cpp. This should allow a LOT of std::string constructors to not have to be called. llvm-svn: 3295
* GCC 3.1 changes, finally the burm file builds the FIRST time a clean ↵Chris Lattner2002-07-251-3/+4
| | | | | | directory is built. llvm-svn: 3073
* *** empty log message ***Chris Lattner2002-07-241-1/+1
| | | | llvm-svn: 3056
* More important fixes:Vikram S. Adve2002-07-101-40/+53
| | | | | | | | | | -- FP argument to a function with no prototype going on stack was not being copied to the stack in colorCallArgs(). -- Put caller-saving code *before* argument copying code so that we don't trash a register before saving it! -- Two other minor fixes. llvm-svn: 2855
* Added std:: to mem_fun for 64-bit gccAnand Shukla2002-07-091-2/+2
| | | | llvm-svn: 2845
* Significant changes to correctly spill CC registers and to correctlyVikram S. Adve2002-07-081-214/+273
| | | | | | | | | | | | | | | | | | | | | | | | | | handle conditional move instructions: -- cpMem<->Reg functions now support CC registers (int and FP) correctly. Also, cpMem<->Reg functions now return a vector of machine instructions. -- Scratch registers must be explicitly provided to cpMem<->Reg when needed, since CC regs need one to be copied to/from memory. -- CC regs are saved to a scratch register instead of stack. -- All regs used by a instruction are now recorded in MachineInstr::regsUsed, since regs used to save values *across* an instruction are not obvious either from the operands or from the LiveVar sets. -- An (explicit or implicit) operand may now be both a def and a use. This is needed for conditional move operations. So an operand may need spill code both before and after the instruction. Other changes: -- Added several get{Class,Type} functions. -- Added unified-to-local register number conversion. -- class MachineCodeForBasicBlock is now an annotation on BasicBlock. -- Suggest/Color methods may modify the MachineInstr (and always did), so don't make that argument const! -- Caller-saving code doesn't need its special purpose code for handling CC registers since cpMem<->Reg handle those correctly now. llvm-svn: 2834
* changes to make it compatible with 64bit gccAnand Shukla2002-06-251-0/+1
| | | | llvm-svn: 2791
* MEGAPATCH checkin.Chris Lattner2002-06-251-28/+24
| | | | | | For details, See: docs/2002-06-25-MegaPatchInfo.txt llvm-svn: 2778
* Disable debugging outputChris Lattner2002-06-041-1/+1
| | | | llvm-svn: 2756
* Numerous bug fixes:Vikram S. Adve2002-05-191-419/+314
| | | | | | | | | | | | | | | | | | | | | | | | -- correct sign extensions for integer casts and for shift-by-constant instructions generated for integer multiply -- passing FP arguments to functions with more than 6 arguments -- passing FP arguments to varargs functions -- passing FP arguments to functions with no prototypes -- incorrect stack frame size when padding a section -- folding getelementptr operations with mixed array and struct indexes -- use uint64_t instead of uint for constant offsets in mem operands -- incorrect coloring for CC registers (both int and FP): interferences were being completely ignored for int CC and were considered but no spills were marked for fp CC! Also some code improvements: -- better interface to generating machine instr for common cases (many places still need to be updated to use this interface) -- annotations on MachineInstr to communicate information from one codegen phase to another (now used to pass information about CALL/JMPLCALL operands from selection to register allocation) -- all sizes and offests in class TargetData are uint64_t instead of uint llvm-svn: 2640
* Eliminate duplicate or unneccesary #include'sChris Lattner2002-04-291-0/+1
| | | | llvm-svn: 2397
* s/Method/FunctionChris Lattner2002-04-271-1/+1
| | | | llvm-svn: 2336
* Simplify code a bitChris Lattner2002-04-271-6/+5
| | | | llvm-svn: 2322
* Major changes to how int and FP arguments are handled. VarargsVikram S. Adve2002-04-251-189/+254
| | | | | | | function calls were simply wrong; other functions were just not using all available registers. llvm-svn: 2316
* Only print debug message if DEBUG_RA is onChris Lattner2002-04-151-8/+6
| | | | llvm-svn: 2254
* Eliminate unneccesary extraneous iteratorsChris Lattner2002-04-091-10/+4
| | | | llvm-svn: 2215
OpenPOWER on IntegriCloud