AsmParser for backend

Hi,

I try to create a backend to support AsmParser, but it hasn’t the red part as below. I find the Mips has this. Do you know how to make it appear?

Jonathan

#ifdef GET_ASSEMBLER_HEADER
#undef GET_ASSEMBLER_HEADER
// This should be included into the middle of the declaration of
// your subclasses implementation of MCTargetAsmParser.
unsigned ComputeAvailableFeatures(uint64_t FeatureBits) const;
void convertToMCInst(unsigned Kind, MCInst &Inst, unsigned Opcode,
const SmallVectorImpl<MCParsedAsmOperand*> &Operands);
void convertToMapAndConstraints(unsigned Kind,
const SmallVectorImpl<MCParsedAsmOperand*> &Operands);
bool mnemonicIsValid(StringRef Mnemonic);
unsigned MatchInstructionImpl(
const SmallVectorImpl<MCParsedAsmOperand*> &Operands,
MCInst &Inst,
unsigned &ErrorInfo, bool matchingInlineAsm,
unsigned VariantID = 0);

enum OperandMatchResultTy {
MatchOperand_Success, // operand matched successfully
MatchOperand_NoMatch, // operand did not match
MatchOperand_ParseFail // operand matched but had errors
};
OperandMatchResultTy MatchOperandParserImpl(
SmallVectorImpl<MCParsedAsmOperand*> &Operands,
StringRef Mnemonic);
OperandMatchResultTy tryCustomParseOperand(
SmallVectorImpl<MCParsedAsmOperand*> &Operands,
unsigned MCK);

#endif // GET_ASSEMBLER_HEADER_INFO

I try to create a backend to support AsmParser, but it hasn't the red

part

as below. I find the Mips has this. Do you know how to make it appear?

Jonathan

#ifdef GET_ASSEMBLER_HEADER
#undef GET_ASSEMBLER_HEADER
  // This should be included into the middle of the declaration of
  // your subclasses implementation of MCTargetAsmParser.
  unsigned ComputeAvailableFeatures(uint64_t FeatureBits) const;
  void convertToMCInst(unsigned Kind, MCInst &Inst, unsigned Opcode,
                       const SmallVectorImpl<MCParsedAsmOperand*>

&Operands);

  void convertToMapAndConstraints(unsigned Kind,
                           const
SmallVectorImpl<MCParsedAsmOperand*> &Operands);
  bool mnemonicIsValid(StringRef Mnemonic);
  unsigned MatchInstructionImpl(
                           const
SmallVectorImpl<MCParsedAsmOperand*> &Operands,
                                MCInst &Inst,
                                unsigned &ErrorInfo, bool

matchingInlineAsm,

                                unsigned VariantID = 0);

  enum OperandMatchResultTy {
    MatchOperand_Success, // operand matched successfully
    MatchOperand_NoMatch, // operand did not match
    MatchOperand_ParseFail // operand matched but had errors
  };
  OperandMatchResultTy MatchOperandParserImpl(
    SmallVectorImpl<MCParsedAsmOperand*> &Operands,
    StringRef Mnemonic);
  OperandMatchResultTy tryCustomParseOperand(
    SmallVectorImpl<MCParsedAsmOperand*> &Operands,
    unsigned MCK);

#endif // GET_ASSEMBLER_HEADER_INFO

My understanding is that this will be generated automatically
if any instruction has an operand that needs a custom parser
(i.e. one that has been defined using the ParserMethod attribute).

Bye,
Ulrich

Ulrich,

Very thank your help, it's OK now. I add the ParserMethod and ParserMatchClass and it work.

Jonathan