tblgen/AsmMatcher: Always emit the match function as 'MatchInstructionImpl',

target specific parsers can adapt the TargetAsmParser to this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110888 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Daniel Dunbar 2010-08-12 00:55:32 +00:00
parent fd56f3c91a
commit 4f98f83459
4 changed files with 11 additions and 13 deletions

View File

@ -511,10 +511,6 @@ class AsmParser {
// perform target specific instruction post-processing.
string AsmParserInstCleanup = "";
// MatchInstructionName - The name of the instruction matching function to
// generate.
string MatchInstructionName = "MatchInstruction";
// Variant - AsmParsers can be of multiple different variants. Variants are
// used to support targets that need to parser multiple formats for the
// assembly language.

View File

@ -80,13 +80,19 @@ private:
bool ParseDirectiveSyntax(SMLoc L);
bool MatchInstruction(const SmallVectorImpl<MCParsedAsmOperand*> &Operands,
MCInst &Inst) {
return MatchInstructionImpl(Operands, Inst);
}
/// @name Auto-generated Match Functions
/// {
unsigned ComputeAvailableFeatures(const ARMSubtarget *Subtarget) const;
bool MatchInstruction(const SmallVectorImpl<MCParsedAsmOperand*> &Operands,
MCInst &Inst);
bool MatchInstructionImpl(const SmallVectorImpl<MCParsedAsmOperand*>
&Operands,
MCInst &Inst);
/// }

View File

@ -182,7 +182,6 @@ include "X86CallingConv.td"
// Currently the X86 assembly parser only supports ATT syntax.
def ATTAsmParser : AsmParser {
string AsmParserClassName = "ATTAsmParser";
string MatchInstructionName = "MatchInstructionImpl";
int Variant = 0;
// Discard comments in assembly strings.

View File

@ -1699,13 +1699,10 @@ void AsmMatcherEmitter::run(raw_ostream &OS) {
it != ie; ++it)
MaxNumOperands = std::max(MaxNumOperands, (*it)->Operands.size());
const std::string &MatchName =
AsmParser->getValueAsString("MatchInstructionName");
OS << "bool " << Target.getName() << ClassName << "::\n"
<< MatchName
<< "(const SmallVectorImpl<MCParsedAsmOperand*> &Operands,\n";
OS.indent(MatchName.size() + 1);
OS << "MCInst &Inst) {\n";
<< "MatchInstructionImpl(const SmallVectorImpl<MCParsedAsmOperand*>"
<< " &Operands,\n";
OS << " MCInst &Inst) {\n";
// Emit the static match table; unused classes get initalized to 0 which is
// guaranteed to be InvalidMatchClass.