diff options
author | Dan Gohman <gohman@apple.com> | 2008-08-20 21:45:57 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2008-08-20 21:45:57 +0000 |
commit | 1e0ee4bc38e9cdc7e7ac49968527e2c05f927904 (patch) | |
tree | c8bedf614fd3fd0d9c7ca157ae3bc0fc41bdb4f3 /utils | |
parent | 0bfa1bfbff1ddc5a85494c9e2b1f985f145dc8a6 (diff) |
Factor the code for determining the target-specific instruction
namespace out of the isel emitters and into common code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55079 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils')
-rw-r--r-- | utils/TableGen/CodeGenTarget.cpp | 15 | ||||
-rw-r--r-- | utils/TableGen/CodeGenTarget.h | 4 | ||||
-rw-r--r-- | utils/TableGen/DAGISelEmitter.cpp | 13 | ||||
-rw-r--r-- | utils/TableGen/FastISelEmitter.cpp | 8 |
4 files changed, 22 insertions, 18 deletions
diff --git a/utils/TableGen/CodeGenTarget.cpp b/utils/TableGen/CodeGenTarget.cpp index d9f4c3e341..4e7a10c1d8 100644 --- a/utils/TableGen/CodeGenTarget.cpp +++ b/utils/TableGen/CodeGenTarget.cpp @@ -135,6 +135,21 @@ const std::string &CodeGenTarget::getName() const { return TargetRec->getName(); } +std::string CodeGenTarget::getInstNamespace() const { + std::string InstNS; + + for (inst_iterator i = inst_begin(), e = inst_end(); i != e; ++i) { + InstNS = i->second.Namespace; + + // Make sure not to pick up "TargetInstrInfo" by accidentally getting + // the namespace off the PHI instruction or something. + if (InstNS != "TargetInstrInfo") + break; + } + + return InstNS; +} + Record *CodeGenTarget::getInstructionSet() const { return TargetRec->getValueAsDef("InstructionSet"); } diff --git a/utils/TableGen/CodeGenTarget.h b/utils/TableGen/CodeGenTarget.h index f53b6a99c1..ef46b6c618 100644 --- a/utils/TableGen/CodeGenTarget.h +++ b/utils/TableGen/CodeGenTarget.h @@ -78,6 +78,10 @@ public: Record *getTargetRecord() const { return TargetRec; } const std::string &getName() const; + /// getInstNamespace - Return the target-specific instruction namespace. + /// + std::string getInstNamespace() const; + /// getInstructionSet - Return the InstructionSet object. /// Record *getInstructionSet() const; diff --git a/utils/TableGen/DAGISelEmitter.cpp b/utils/TableGen/DAGISelEmitter.cpp index 9f0f155a7f..12667d5656 100644 --- a/utils/TableGen/DAGISelEmitter.cpp +++ b/utils/TableGen/DAGISelEmitter.cpp @@ -1604,17 +1604,8 @@ static std::string getLegalCName(std::string OpName) { void DAGISelEmitter::EmitInstructionSelector(std::ostream &OS) { const CodeGenTarget &Target = CGP.getTargetInfo(); - // Get the namespace to insert instructions into. Make sure not to pick up - // "TargetInstrInfo" by accidentally getting the namespace off the PHI - // instruction or something. - std::string InstNS; - for (CodeGenTarget::inst_iterator i = Target.inst_begin(), - e = Target.inst_end(); i != e; ++i) { - InstNS = i->second.Namespace; - if (InstNS != "TargetInstrInfo") - break; - } - + // Get the namespace to insert instructions into. + std::string InstNS = Target.getInstNamespace(); if (!InstNS.empty()) InstNS += "::"; // Group the patterns by their top-level opcodes. diff --git a/utils/TableGen/FastISelEmitter.cpp b/utils/TableGen/FastISelEmitter.cpp index 9650ea8855..7edd5fca42 100644 --- a/utils/TableGen/FastISelEmitter.cpp +++ b/utils/TableGen/FastISelEmitter.cpp @@ -157,13 +157,7 @@ void FastISelEmitter::run(std::ostream &OS) { // Get the namespace to insert instructions into. Make sure not to pick up // "TargetInstrInfo" by accidentally getting the namespace off the PHI // instruction or something. - std::string InstNS; - for (CodeGenTarget::inst_iterator i = Target.inst_begin(), - e = Target.inst_end(); i != e; ++i) { - InstNS = i->second.Namespace; - if (InstNS != "TargetInstrInfo") - break; - } + std::string InstNS = Target.getInstNamespace(); OS << "namespace llvm {\n"; OS << "namespace " << InstNS << " {\n"; |