| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
| |
The RC->getSubClassMask() pointer now points to a sequence of register
class bit masks. The first bit mask is the normal sub-class mask. The
following masks are super-reg class masks used by
getMatchingSuperRegClass().
llvm-svn: 156120
|
|
|
|
|
|
|
|
| |
Many register classes only have a few super-registers, so it is not
necessary to keep individual bit masks for all possible sub-register
indices.
llvm-svn: 156083
|
|
|
|
|
|
|
|
| |
Some targets have no sub-registers at all. Use the TargetRegisterInfo
versions of composeSubRegIndices(), getSubClassWithSubReg(), and
getMatchingSuperRegClass() for those targets.
llvm-svn: 156075
|
|
|
|
|
|
| |
'&XXXRegClass' instead.
llvm-svn: 155270
|
|
|
|
| |
llvm-svn: 155234
|
|
|
|
| |
llvm-svn: 155038
|
|
|
|
| |
llvm-svn: 155027
|
|
|
|
| |
llvm-svn: 155025
|
|
|
|
| |
llvm-svn: 155024
|
|
|
|
| |
llvm-svn: 154518
|
|
|
|
| |
llvm-svn: 154477
|
|
|
|
|
|
|
|
|
|
| |
This is a new algorithm that finds sets of register units that can be
used to model registers pressure. This handles arbitrary, overlapping
register classes. Each register class is associated with a (small)
list of pressure sets. These are the dimensions of pressure affected
by the register class's liveness.
llvm-svn: 154374
|
|
|
|
| |
llvm-svn: 153937
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
search to do the lookup.
This also avoids emitting the information twice, which led to code bloat. On i386-linux-Release+Asserts
with all targets built this change shaves a whopping 1.3 MB off clang. The number is probably exaggerated
by recent inliner changes but the methods were already enormous with the old inline cost computation.
The DWARF reg -> LLVM reg mapping doesn't seem to have holes in it, so it could be a simple lookup table.
I didn't implement that optimization yet to avoid potentially changing functionality.
There is still some duplication both in tablegen and the generated code that should be cleaned up eventually.
llvm-svn: 153837
|
|
|
|
|
|
|
|
|
| |
Use an explicit comparator instead of the default.
The sets are sorted, but not using the default comparator. Hopefully,
this will unbreak the Linux builders.
llvm-svn: 153772
|
|
|
|
|
|
| |
--enable-expensive-checks build.
llvm-svn: 153771
|
|
|
|
|
|
| |
Many register classes have the same value types. Share the table space.
llvm-svn: 153764
|
|
|
|
|
|
|
|
| |
TableGen emits lists of sub-registers, super-registers, and overlaps. Put
them all in a single table and use a SequenceToOffsetTable to share
suffixes.
llvm-svn: 153761
|
|
|
|
| |
llvm-svn: 153667
|
|
|
|
| |
llvm-svn: 152104
|
|
|
|
| |
llvm-svn: 152019
|
|
|
|
|
|
| |
static data size.
llvm-svn: 152016
|
|
|
|
| |
llvm-svn: 152001
|
|
|
|
|
|
| |
static data size.
llvm-svn: 151998
|
|
|
|
|
|
| |
size of static data.
llvm-svn: 151996
|
|
|
|
| |
llvm-svn: 151821
|
|
|
|
|
|
|
|
| |
Allows us to de-virtualize the function and provides access to it in
the instruction printer, which is useful for handling composite
physical registers (e.g., ARM register lists).
llvm-svn: 151815
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit 151760.
We want to move getSubReg() from TargetRegisterInfo into MCRegisterInfo,
but to do that, the type of the lookup table needs to be the same for
all targets.
llvm-svn: 151814
|
|
|
|
|
|
|
|
|
|
|
| |
function pointer.
This allows us to make TRC non-polymorphic and value-initializable, eliminating a huge static
initializer and a ton of cruft from the generated code.
Shrinks ARMBaseRegisterInfo.o by ~100k.
llvm-svn: 151806
|
|
|
|
|
|
|
|
|
| |
using a big switch.
- The search bounds are constant, in the worst case (ARM target) it will scan over 30 uint16_ts.
- This method isn't very hot, I had problems finding a testcase where it's called more than a dozen of times (no perf impact).
llvm-svn: 151773
|
|
|
|
|
|
| |
Doesn't help ARM with its massive register set, but halves the size on x86 and all other targets.
llvm-svn: 151760
|
|
|
|
| |
llvm-svn: 151758
|
|
|
|
| |
llvm-svn: 151756
|
|
|
|
|
|
|
|
| |
Instead of nested switch statements, use a lookup table. On ARM, this replaces
a 23k (x86_64 release build) function with a 16k table. Its not unlikely to
be faster, as well.
llvm-svn: 151751
|
|
|
|
|
|
| |
were added in r151038.
llvm-svn: 151246
|
|
|
|
|
|
| |
that weren't already const.
llvm-svn: 151138
|
|
|
|
|
|
| |
to static data that should not be modified.
llvm-svn: 151134
|
|
|
|
| |
llvm-svn: 151043
|
|
|
|
|
|
| |
with just the size of the array to avoid relocations.
llvm-svn: 151041
|
|
|
|
|
|
| |
table instead of pointers to reduce relocations and shrink table size on 64-bit builds. Shaves ~24K off X86MCTargetDesc.o. Accidentally commited only part of this in r151038.
llvm-svn: 151039
|
|
|
|
|
|
| |
class, eliminating static ctors.
llvm-svn: 150173
|
|
|
|
|
|
|
| |
X86GenRegisterInfo.inc | 1032 -------------------------------------------------
1 file changed, 1032 deletions(-)
llvm-svn: 150080
|
|
|
|
|
|
| |
MCTargetDesc refactor.
llvm-svn: 150076
|
|
|
|
| |
llvm-svn: 149814
|
|
|
|
|
|
|
| |
It's only by luck that we haven't produced any yet, and clang refuses to
compile them.
llvm-svn: 149546
|
|
|
|
|
|
| |
It was wrong and completely unused.
llvm-svn: 149433
|
|
|
|
|
|
| |
Each SubRegIndex keeps track of how it composes.
llvm-svn: 149423
|
|
|
|
|
|
|
|
|
| |
This class is used to represent SubRegIndex instances instead of the raw
Record pointers that were used before.
No functional change intended.
llvm-svn: 149418
|
|
|
|
|
|
|
|
|
| |
Targets can now add CalleeSavedRegs defs to their *CallingConv.td file.
TableGen will use this to create a *_SaveList array suitable for
returning from getCalleeSavedRegs() as well as a *_RegMask bit mask
suitable for returning from getCallPreservedMask().
llvm-svn: 148346
|
|
|
|
|
|
|
|
|
| |
Use information computed while inferring new register classes to emit
accurate, table-driven implementations of getMatchingSuperRegClass().
Delete the old manual, error-prone implementations in the targets.
llvm-svn: 146873
|