| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
| |
This function is intended to be used when inserting a machine instruction that
trivially restricts the legal registers, like LEA requiring a GR32_NOSP
argument.
llvm-svn: 115875
|
|
|
|
| |
llvm-svn: 108062
|
|
|
|
|
|
| |
and to clean up unused incoming physregs from the live-in list.
llvm-svn: 106805
|
|
|
|
|
|
| |
std::vector.
llvm-svn: 106298
|
|
|
|
|
|
|
| |
MachineRegisterInfo doesn't have to confusingly allocate an extra
entry.
llvm-svn: 106296
|
|
|
|
| |
llvm-svn: 105100
|
|
|
|
| |
llvm-svn: 105095
|
|
|
|
| |
llvm-svn: 104560
|
|
|
|
|
|
| |
use of it in MachineCSE.
llvm-svn: 103726
|
|
|
|
| |
llvm-svn: 103508
|
|
|
|
|
|
|
|
| |
closure after allocating all blocks.
Add a few more test cases for -regalloc=fast.
llvm-svn: 103500
|
|
|
|
|
|
| |
doesn't have to guess.
llvm-svn: 103194
|
|
|
|
|
|
| |
instructions for function arguments early and insert them after instruction selection is done.
llvm-svn: 102554
|
|
|
|
|
|
| |
function arguments).
llvm-svn: 102368
|
|
|
|
|
|
| |
SelectionDAGISel.
llvm-svn: 101258
|
|
|
|
| |
llvm-svn: 101254
|
|
|
|
| |
llvm-svn: 101145
|
|
|
|
| |
llvm-svn: 97663
|
|
|
|
| |
llvm-svn: 82812
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Change register allocation hint to a pair of unsigned integers. The hint type is zero (which means prefer the register specified as second part of the pair) or entirely target dependent.
- Allow targets to specify alternative register allocation orders based on allocation hint.
Part 2.
- Use the register allocation hint system to implement more aggressive load / store multiple formation.
- Aggressively form LDRD / STRD. These are formed *before* register allocation. It has to be done this way to shorten live interval of base and offset registers. e.g.
v1025 = LDR v1024, 0
v1026 = LDR v1024, 0
=>
v1025,v1026 = LDRD v1024, 0
If this transformation isn't done before allocation, v1024 will overlap v1025 which means it more difficult to allocate a register pair.
- Even with the register allocation hint, it may not be possible to get the desired allocation. In that case, the post-allocation load / store multiple pass must fix the ldrd / strd instructions. They can either become ldm / stm instructions or back to a pair of ldr / str instructions.
This is work in progress, not yet enabled.
llvm-svn: 73381
|
|
|
|
|
|
| |
MachineRegisterInfo. This allows more passes to set them.
llvm-svn: 73346
|
|
|
|
| |
llvm-svn: 69126
|
|
|
|
| |
llvm-svn: 60684
|
|
|
|
| |
llvm-svn: 57844
|
|
|
|
|
|
| |
their cleanup code.
llvm-svn: 53194
|
|
|
|
| |
llvm-svn: 47042
|
|
|
|
| |
llvm-svn: 46930
|
|
|
|
|
|
|
|
|
|
|
| |
dereferencing
it now returns the machineinstr of the use. To get the operand, use I.getOperand().
Add a new MachineRegisterInfo::replaceRegWith, which is basically like
Value::replaceAllUsesWith.
llvm-svn: 45482
|
|
|
|
|
|
| |
instruction that defines the specified vreg. Crazy.
llvm-svn: 45480
|
|
|
|
|
|
|
| |
operands. The lists are currently kept in MachineRegisterInfo, but it does
not yet provide an iterator interface to them.
llvm-svn: 45477
|
|
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
|