| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
| |
Create a new CodeGenRegBank class that will eventually hold all the code
that computes the register structure from Records.
llvm-svn: 132849
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some register classes are only used for instruction operand constraints.
They should never be used for virtual registers. Previously, those
register classes were given an empty allocation order, but now you can
say 'let isAllocatable=0' in the register class definition.
TableGen calculates if a register is part of any allocatable register
class, and makes that information available in TargetRegisterDesc::inAllocatableClass.
The goal here is to eliminate use cases for overriding allocation_order_*
methods.
llvm-svn: 132508
|
|
|
|
|
|
|
| |
These values were not used for anything. Spill size and alignment is a property
of the register class, not the register.
llvm-svn: 129906
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On the x86-64 and thumb2 targets, some registers are more expensive to encode
than others in the same register class.
Add a CostPerUse field to the TableGen register description, and make it
available from TRI->getCostPerUse. This represents the cost of a REX prefix or a
32-bit instruction encoding required by choosing a high register.
Teach the greedy register allocator to prefer cheap registers for busy live
ranges (as indicated by spill weight).
llvm-svn: 129864
|
|
|
|
| |
llvm-svn: 127448
|
|
|
|
| |
llvm-svn: 127446
|
|
|
|
|
|
|
|
| |
fixed physical registers. Start moving fp comparison
aliases to the .td file (which default to using %st1 if
nothing is specified).
llvm-svn: 118352
|
|
|
|
|
|
| |
accordingly. No functional change.
llvm-svn: 112008
|
|
|
|
|
|
|
|
|
|
|
| |
structure that represents a mapping without any dependencies on SubRegIndex
numbering.
This brings us closer to being able to remove the explicit SubRegIndex
numbering, and it is now possible to specify any mapping without inventing
*_INVALID register classes.
llvm-svn: 104563
|
|
|
|
|
|
|
|
| |
while
the latter is capable of representing either a primitive or an extended type.
llvm-svn: 78713
|
|
|
|
|
|
| |
own struct type.
llvm-svn: 78610
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and better control the abstraction. Rename the type
to MVT. To update out-of-tree patches, the main
thing to do is to rename MVT::ValueType to MVT, and
rewrite expressions like MVT::getSizeInBits(VT) in
the form VT.getSizeInBits(). Use VT.getSimpleVT()
to extract a MVT::SimpleValueType for use in switch
statements (you will get an assert failure if VT is
an extended value type - these shouldn't exist after
type legalization).
This results in a small speedup of codegen and no
new testsuite failures (x86-64 linux).
llvm-svn: 52044
|
|
|
|
|
|
| |
annoying warnings.
llvm-svn: 47367
|
|
|
|
| |
llvm-svn: 45419
|
|
|
|
|
|
| |
between two registers in the specific class.
llvm-svn: 42123
|
|
|
|
|
|
| |
are strict about such things.
llvm-svn: 41956
|
|
|
|
|
|
| |
class basis.
llvm-svn: 37572
|
|
|
|
| |
llvm-svn: 25046
|
|
|
|
| |
llvm-svn: 24596
|
|
|
|
|
|
| |
work. This change has no effect on generated code.
llvm-svn: 24563
|
|
|
|
| |
llvm-svn: 23282
|
|
|
|
| |
llvm-svn: 22928
|
|
|
|
| |
llvm-svn: 22918
|
|
|
|
| |
llvm-svn: 21428
|
|
|
|
| |
llvm-svn: 15965
|
|
|
|
| |
llvm-svn: 15961
|
|
|
|
| |
llvm-svn: 15960
|
|
Obviously this is not done.
llvm-svn: 15804
|