summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-08-07 21:01:44 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-08-07 21:01:44 +0000
commit2234e5eee6d196594d42e6f2be51e176bf5e5f6e (patch)
tree92b794b6fa5acfaf994f0e42b2a401e6cc2c72ae /utils
parentef80fe10251e52808ca92934dcb917fac798dbe2 (diff)
downloadllvm-2234e5eee6d196594d42e6f2be51e176bf5e5f6e.tar.gz
llvm-2234e5eee6d196594d42e6f2be51e176bf5e5f6e.tar.bz2
llvm-2234e5eee6d196594d42e6f2be51e176bf5e5f6e.tar.xz
llvm-mc/AsmMatcher: Move emit for register -> enum matcher into a separate routine.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78408 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils')
-rw-r--r--utils/TableGen/AsmMatcherEmitter.cpp29
1 files changed, 18 insertions, 11 deletions
diff --git a/utils/TableGen/AsmMatcherEmitter.cpp b/utils/TableGen/AsmMatcherEmitter.cpp
index f98ee3a083..56052050d3 100644
--- a/utils/TableGen/AsmMatcherEmitter.cpp
+++ b/utils/TableGen/AsmMatcherEmitter.cpp
@@ -538,19 +538,14 @@ static void ConstructConversionFunctions(CodeGenTarget &Target,
}
}
-void AsmMatcherEmitter::run(raw_ostream &OS) {
- CodeGenTarget Target;
+/// EmitMatchRegisterName - Emit the function to match a string to the target
+/// specific register enum.
+static void EmitMatchRegisterName(CodeGenTarget &Target, Record *AsmParser,
+ raw_ostream &OS) {
const std::vector<CodeGenRegister> &Registers = Target.getRegisters();
- Record *AsmParser = Target.getAsmParser();
- std::string ClassName = AsmParser->getValueAsString("AsmParserClassName");
-
- std::string Namespace = Registers[0].TheDef->getValueAsString("Namespace");
- EmitSourceFileHeader("Assembly Matcher Source Fragment", OS);
-
- // Emit the function to match a register name to number.
-
- OS << "bool " << Target.getName() << ClassName
+ OS << "bool " << Target.getName()
+ << AsmParser->getValueAsString("AsmParserClassName")
<< "::MatchRegisterName(const StringRef &Name, unsigned &RegNo) {\n";
// FIXME: TableGen should have a fast string matcher generator.
@@ -565,7 +560,19 @@ void AsmMatcherEmitter::run(raw_ostream &OS) {
}
OS << " return true;\n";
OS << "}\n\n";
+}
+
+void AsmMatcherEmitter::run(raw_ostream &OS) {
+ CodeGenTarget Target;
+ Record *AsmParser = Target.getAsmParser();
+ std::string ClassName = AsmParser->getValueAsString("AsmParserClassName");
+
+ EmitSourceFileHeader("Assembly Matcher Source Fragment", OS);
+
+ // Emit the function to match a register name to number.
+ EmitMatchRegisterName(Target, AsmParser, OS);
+ // Compute the information on the list of instructions to match.
std::vector<InstructionInfo*> Infos;
BuildInstructionInfos(Target, Infos);