|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| | 
| 
| 
| | llvm-svn: 7350 | 
| | 
| 
| 
| | llvm-svn: 7349 | 
| | 
| 
| 
| | llvm-svn: 7348 | 
| | 
| 
| 
| | llvm-svn: 7347 | 
| | 
| 
| 
| | llvm-svn: 7342 | 
| | 
| 
| 
| | llvm-svn: 7341 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | info (since multiple reg types may share the same reg class).
(2) Remove machine-specific regalloc. methods that are no longer needed.
    In particular, arguments and return value from a call do not need
    machine-specific code for allocation.
(3) Rename TargetRegInfo::getRegType variants to avoid unintentional
    overloading when an include file is omitted.
llvm-svn: 7329 | 
| | 
| 
| 
| 
| 
| 
| | found to consider regType info (since multiple reg types may share
the same reg class, e.g., single and double on Sparc).
llvm-svn: 7327 | 
| | 
| 
| 
| | llvm-svn: 7250 | 
| | 
| 
| 
| | llvm-svn: 7247 | 
| | 
| 
| 
| | llvm-svn: 7246 | 
| | 
| 
| 
| | llvm-svn: 7156 | 
| | 
| 
| 
| | llvm-svn: 7155 | 
| | 
| 
| 
| 
| 
| | which args can be substituted: defsOnly, defsAndUses or usesOnly.
llvm-svn: 7154 | 
| | 
| 
| 
| | llvm-svn: 7153 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | (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: 7152 | 
| | 
| 
| 
| | llvm-svn: 7112 | 
| | 
| 
| 
| | llvm-svn: 7054 | 
| | 
| 
| 
| 
| 
| 
| 
| | not just an Instruction*, at least in one unfortunate case:
the first operand to the va_arg instruction.
Modify ValueToDefVecMap to map from Value*, not Instruction*.
llvm-svn: 7052 | 
| | 
| 
| 
| 
| 
| | system.
llvm-svn: 7014 | 
| | 
| 
| 
| | llvm-svn: 6842 | 
| | 
| 
| 
| 
| 
| | optimized INTO an alloca
llvm-svn: 6727 | 
| | 
| 
| 
| 
| 
| | Remove usage of alloca
llvm-svn: 6725 | 
| | 
| 
| 
| 
| 
| 
| | so that we can easily change its use to be conditional on the result of
an autoconf test later.
llvm-svn: 6723 | 
| | 
| 
| 
| | llvm-svn: 6682 | 
| | 
| 
| 
| 
| 
| | add a function ModuloScheduling::dumpFinalSchedule() to print out final schedule
llvm-svn: 6677 | 
| | 
| 
| 
| | llvm-svn: 6676 | 
| | 
| 
| 
| | llvm-svn: 6675 | 
| | 
| 
| 
| 
| 
| | add some comments
llvm-svn: 6674 | 
| | 
| 
| 
| 
| 
| | add comment
llvm-svn: 6673 | 
| | 
| 
| 
| | llvm-svn: 6672 | 
| | 
| 
| 
| 
| 
| 
| 
| | SETTING the operand to be an immediate or have verified that one of the operands
is really a SignExtended or Unextended immediate value already, which warrants
an 'i' opcode.
llvm-svn: 6662 | 
| | 
| 
| 
| | llvm-svn: 6624 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | the loop, and in both cases. In the first case, it is a VReg that is a constant
so it may be actually converted to a constant. In the second case, it is already
a constant, but then if it doesn't change its type (e.g. to become a register
and have the value loaded from memory if it is too large to live in its
instruction field), we must change the opcode BEFORE the 'continue', otherwise
we miss the opportunity.
llvm-svn: 6602 | 
| | 
| 
| 
| | llvm-svn: 6590 | 
| | 
| 
| 
| 
| 
| | place.
llvm-svn: 6563 | 
| | 
| 
| 
| | llvm-svn: 6554 | 
| | 
| 
| 
| 
| 
| 
| | This pass should be moved to lib/Target/Sparc since it's sparc specific
It also needs a file comment.
llvm-svn: 6553 | 
| | 
| 
| 
| 
| 
| 
| | In particular these classes are the last that link the noncopyable classes
with the hash_map, vector, and list classes.
llvm-svn: 6552 | 
| | 
| 
| 
| | llvm-svn: 6550 | 
| | 
| 
| 
| | llvm-svn: 6547 | 
| | 
| 
| 
| | llvm-svn: 6545 | 
| | 
| 
| 
| | llvm-svn: 6529 | 
| | 
| 
| 
| | llvm-svn: 6515 | 
| | 
| 
| 
| | llvm-svn: 6470 | 
| | 
| 
| 
| 
| 
| 
| 
| | TmpInstruction constructors because every TmpInstruction object has
to be registered with a MachineCodeForInstruction to prevent leaks.
This simplifies the user's code.
llvm-svn: 6469 | 
| | 
| 
| 
| | llvm-svn: 6468 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | preallocated.  While reg-to-reg dependences were already handled, this
change required new code for adding edges to/from call instructions.
This was part of the extensive changes to the way code generation occurs
for function call arguments and return values.
See log for CodeGen/PhyRegAlloc.cpp.
llvm-svn: 6467 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | 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 | 
| | 
| 
| 
| | llvm-svn: 6452 |