| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
| |
TableGen already computes register units as the basic unit of
interference. We can use that to compute the set of overlapping
registers.
This means that we can easily compute overlap sets for one register at a
time. There is no benefit to computing all registers at once.
llvm-svn: 156960
|
| |
|
|
|
|
|
|
|
|
|
| |
Many targets always use the same bitwise encoding value for physical
registers in all (or most) instructions. Add this mapping to the
.td files and TableGen'erate the information and expose an accessor
in MCRegisterInfo.
patch by Tom Stellard.
llvm-svn: 156829
|
| |
|
|
|
|
|
|
| |
This manually enumerated list of super-register classes has been
superceeded by the automatically computed super-register class masks
available through SuperRegClassIterator.
llvm-svn: 156151
|
| |
|
|
|
|
| |
TargetRegisterClass now gives access to the necessary tables.
llvm-svn: 156122
|
| |
|
|
|
|
|
|
| |
This is a pointer into one of the tables used by
getMatchingSuperRegClass(). It makes it possible to use a shared
implementation of that function.
llvm-svn: 156121
|
| |
|
|
|
|
|
|
|
| |
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
|