diff options
author | Chris Lattner <sabre@nondot.org> | 2005-12-05 02:35:08 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2005-12-05 02:35:08 +0000 |
commit | 5c4736a3da04795ba8d04e152e151afd6942e2f1 (patch) | |
tree | 4a3f145ea104a0d86e8447fccc9a004c08857923 /utils/TableGen/CodeGenTarget.h | |
parent | b5d01436e3c937ea4b291de7a17c660aa30e1703 (diff) | |
download | llvm-5c4736a3da04795ba8d04e152e151afd6942e2f1.tar.gz llvm-5c4736a3da04795ba8d04e152e151afd6942e2f1.tar.bz2 llvm-5c4736a3da04795ba8d04e152e151afd6942e2f1.tar.xz |
Add some methods
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24596 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen/CodeGenTarget.h')
-rw-r--r-- | utils/TableGen/CodeGenTarget.h | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/utils/TableGen/CodeGenTarget.h b/utils/TableGen/CodeGenTarget.h index ba538245c6..f2c4da336c 100644 --- a/utils/TableGen/CodeGenTarget.h +++ b/utils/TableGen/CodeGenTarget.h @@ -90,7 +90,26 @@ public: assert(0 && "Didn't find the register class"); abort(); } - + + /// getRegisterClassForRegister - Find the register class that contains the + /// specified physical register. If there register exists in multiple + /// register classes or is not in a register class, return null. + const CodeGenRegisterClass *getRegisterClassForRegister(Record *R) const { + const std::vector<CodeGenRegisterClass> &RCs = getRegisterClasses(); + const CodeGenRegisterClass *FoundRC = 0; + for (unsigned i = 0, e = RCs.size(); i != e; ++i) { + const CodeGenRegisterClass &RC = RegisterClasses[i]; + for (unsigned ei = 0, ee = RC.Elements.size(); ei != ee; ++ei) { + if (R == RC.Elements[ei]) { + if (FoundRC) return 0; // In multiple RC's + FoundRC = &RC; + break; + } + } + } + return FoundRC; + } + const std::vector<MVT::ValueType> &getLegalValueTypes() const { if (LegalValueTypes.empty()) ReadLegalValueTypes(); return LegalValueTypes; |