diff options
| author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2012-05-29 23:40:00 +0000 |
|---|---|---|
| committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2012-05-29 23:40:00 +0000 |
| commit | 7f381bd26d5855ce8643134a7778c5121d440f82 (patch) | |
| tree | ccb102005fb259e590efba840e44fc7261cf19f1 /llvm/utils/TableGen/CodeGenRegisters.cpp | |
| parent | 8bd45f8ecd129a8c71f1dbf189b6826b086a3d6f (diff) | |
| download | bcm5719-llvm-7f381bd26d5855ce8643134a7778c5121d440f82.tar.gz bcm5719-llvm-7f381bd26d5855ce8643134a7778c5121d440f82.zip | |
Emit register unit lists for each register.
Register units are already used internally in TableGen to compute
register pressure sets and overlapping registers. This patch makes them
available to the code generators.
The register unit lists are differentially encoded so they can be reused
for many related registers. This keeps the total size of the lists below
200 bytes for most targets. ARM has the largest table at 560 bytes.
Add an MCRegUnitIterator for traversing the register unit lists. It
provides an abstract interface so the representation can be changed in
the future without changing all clients.
llvm-svn: 157650
Diffstat (limited to 'llvm/utils/TableGen/CodeGenRegisters.cpp')
| -rw-r--r-- | llvm/utils/TableGen/CodeGenRegisters.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/utils/TableGen/CodeGenRegisters.cpp b/llvm/utils/TableGen/CodeGenRegisters.cpp index 2b064aa3073..887f01bdfa9 100644 --- a/llvm/utils/TableGen/CodeGenRegisters.cpp +++ b/llvm/utils/TableGen/CodeGenRegisters.cpp @@ -83,6 +83,7 @@ CodeGenRegister::CodeGenRegister(Record *R, unsigned Enum) EnumValue(Enum), CostPerUse(R->getValueAsInt("CostPerUse")), CoveredBySubRegs(R->getValueAsBit("CoveredBySubRegs")), + NumNativeRegUnits(0), SubRegsComplete(false), SuperRegsComplete(false), TopoSig(~0u) @@ -397,6 +398,10 @@ CodeGenRegister::computeSubRegs(CodeGenRegBank &RegBank) { if (RegUnits.empty()) RegUnits.push_back(RegBank.newRegUnit(this)); + // We have now computed the native register units. More may be adopted later + // for balancing purposes. + NumNativeRegUnits = RegUnits.size(); + return SubRegs; } |

