summaryrefslogtreecommitdiff
path: root/utils/TableGen/CodeGenRegisters.h
diff options
context:
space:
mode:
authorAndrew Trick <atrick@apple.com>2012-04-11 18:16:28 +0000
committerAndrew Trick <atrick@apple.com>2012-04-11 18:16:28 +0000
commitec14cd7ddc66d47cd7927f18d8c11844c400367e (patch)
treed5e211ca2188480ea99ee9dd124a05a73b176ef2 /utils/TableGen/CodeGenRegisters.h
parent1835547ec195c35b3a59bf834f4df942c61a5c53 (diff)
downloadllvm-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.h12
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;