aboutsummaryrefslogtreecommitdiffstats
path: root/utils/TableGen/CodeGenRegisters.h
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2011-06-15 00:20:40 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2011-06-15 00:20:40 +0000
commit7b9cafde5e3faec22bbfbbc90cca0876968abad9 (patch)
tree3799aac0ece80d63d64d22d24487f6e5478de834 /utils/TableGen/CodeGenRegisters.h
parent189531f317d0b3a082f78cc2da44128e4ff8e17d (diff)
downloadexternal_llvm-7b9cafde5e3faec22bbfbbc90cca0876968abad9.zip
external_llvm-7b9cafde5e3faec22bbfbbc90cca0876968abad9.tar.gz
external_llvm-7b9cafde5e3faec22bbfbbc90cca0876968abad9.tar.bz2
Move the list of register classes into CodeGenRegBank as well.
No functional change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133029 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen/CodeGenRegisters.h')
-rw-r--r--utils/TableGen/CodeGenRegisters.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/utils/TableGen/CodeGenRegisters.h b/utils/TableGen/CodeGenRegisters.h
index 233ceb2..26305b6 100644
--- a/utils/TableGen/CodeGenRegisters.h
+++ b/utils/TableGen/CodeGenRegisters.h
@@ -153,6 +153,9 @@ namespace llvm {
std::vector<CodeGenRegister> Registers;
DenseMap<Record*, CodeGenRegister*> Def2Reg;
+ std::vector<CodeGenRegisterClass> RegClasses;
+ DenseMap<Record*, CodeGenRegisterClass*> Def2RC;
+
// Composite SubRegIndex instances.
// Map (SubRegIndex, SubRegIndex) -> SubRegIndex.
typedef DenseMap<std::pair<Record*, Record*>, Record*> CompositeMap;
@@ -181,6 +184,20 @@ namespace llvm {
// Find a register from its Record def.
CodeGenRegister *getReg(Record*);
+ const std::vector<CodeGenRegisterClass> &getRegClasses() {
+ return RegClasses;
+ }
+
+ // Find a register class from its def.
+ CodeGenRegisterClass *getRegClass(Record*);
+
+ /// getRegisterClassForRegister - Find the register class that contains the
+ /// specified physical register. If the register is not in a register
+ /// class, return null. If the register is in multiple classes, and the
+ /// classes have a superset-subset relationship and the same set of types,
+ /// return the superclass. Otherwise return null.
+ const CodeGenRegisterClass* getRegClassForRegister(Record *R);
+
// Computed derived records such as missing sub-register indices.
void computeDerivedInfo();