diff options
author | Andrew Trick <atrick@apple.com> | 2012-04-11 18:16:28 +0000 |
---|---|---|
committer | Andrew Trick <atrick@apple.com> | 2012-04-11 18:16:28 +0000 |
commit | ec14cd7ddc66d47cd7927f18d8c11844c400367e (patch) | |
tree | d5e211ca2188480ea99ee9dd124a05a73b176ef2 /utils/TableGen/CodeGenRegisters.h | |
parent | 1835547ec195c35b3a59bf834f4df942c61a5c53 (diff) | |
download | llvm-ec14cd7ddc66d47cd7927f18d8c11844c400367e.tar.gz llvm-ec14cd7ddc66d47cd7927f18d8c11844c400367e.tar.bz2 llvm-ec14cd7ddc66d47cd7927f18d8c11844c400367e.tar.xz |
TableGen's regpressure: emit per-registerclass weight limits.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154518 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen/CodeGenRegisters.h')
-rw-r--r-- | utils/TableGen/CodeGenRegisters.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/utils/TableGen/CodeGenRegisters.h b/utils/TableGen/CodeGenRegisters.h index 4b45467e9e..232a6e71de 100644 --- a/utils/TableGen/CodeGenRegisters.h +++ b/utils/TableGen/CodeGenRegisters.h @@ -279,6 +279,9 @@ namespace llvm { // getOrder(0). const CodeGenRegister::Set &getMembers() const { return Members; } + // Populate a unique sorted list of units from a register set. + void buildRegUnitSet(std::vector<unsigned> &RegUnits) const; + CodeGenRegisterClass(CodeGenRegBank&, Record *R); // A key representing the parts of a register class used for forming @@ -449,6 +452,15 @@ namespace llvm { return RegUnitWeights[RUID]; } + // Get the sum of unit weights. + unsigned getRegUnitSetWeight(const std::vector<unsigned> &Units) const { + unsigned Weight = 0; + for (std::vector<unsigned>::const_iterator + I = Units.begin(), E = Units.end(); I != E; ++I) + Weight += getRegUnitWeight(*I); + return Weight; + } + // Increase a RegUnitWeight. void increaseRegUnitWeight(unsigned RUID, unsigned Inc) { RegUnitWeights[RUID] += Inc; |