summaryrefslogtreecommitdiff
path: root/utils/TableGen/CodeGenRegisters.h
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2012-05-16 23:03:04 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2012-05-16 23:03:04 +0000
commit3778aeb74864390bf763424c45cc355ac330fbc9 (patch)
treec065591be602aa00be92acb640dcc3291376caf7 /utils/TableGen/CodeGenRegisters.h
parent66e19c3e9db6e2727be21074a52f5c9fa187050f (diff)
downloadllvm-3778aeb74864390bf763424c45cc355ac330fbc9.tar.gz
llvm-3778aeb74864390bf763424c45cc355ac330fbc9.tar.bz2
llvm-3778aeb74864390bf763424c45cc355ac330fbc9.tar.xz
Use RegUnits to compute overlapping registers.
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156960 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen/CodeGenRegisters.h')
-rw-r--r--utils/TableGen/CodeGenRegisters.h12
1 files changed, 3 insertions, 9 deletions
diff --git a/utils/TableGen/CodeGenRegisters.h b/utils/TableGen/CodeGenRegisters.h
index e6c72df740..d00b999aff 100644
--- a/utils/TableGen/CodeGenRegisters.h
+++ b/utils/TableGen/CodeGenRegisters.h
@@ -189,6 +189,9 @@ namespace llvm {
// Canonically ordered set.
typedef std::set<const CodeGenRegister*, Less> Set;
+ // Compute the set of registers overlapping this.
+ void computeOverlaps(Set &Overlaps, const CodeGenRegBank&) const;
+
private:
bool SubRegsComplete;
bool SuperRegsComplete;
@@ -601,15 +604,6 @@ namespace llvm {
// Computed derived records such as missing sub-register indices.
void computeDerivedInfo();
- // Compute full overlap sets for every register. These sets include the
- // rarely used aliases that are neither sub nor super-registers.
- //
- // Map[R1].count(R2) is reflexive and symmetric, but not transitive.
- //
- // If R1 is a sub-register of R2, Map[R1] is a subset of Map[R2].
- void computeOverlaps(std::map<const CodeGenRegister*,
- CodeGenRegister::Set> &Map);
-
// Compute the set of registers completely covered by the registers in Regs.
// The returned BitVector will have a bit set for each register in Regs,
// all sub-registers, and all super-registers that are covered by the