LLVM 22.0.0git
|
MCTargetAsmParser - Generic interface to target specific assembly parsers. More...
#include "llvm/MC/MCParser/MCTargetAsmParser.h"
Public Types | |
enum | MatchResultTy { Match_InvalidOperand , Match_InvalidTiedOperand , Match_MissingFeature , Match_MnemonicFail , Match_Success , Match_NearMisses , FIRST_TARGET_MATCH_RESULT_TY } |
Public Member Functions | |
MCTargetAsmParser (const MCTargetAsmParser &)=delete | |
MCTargetAsmParser & | operator= (const MCTargetAsmParser &)=delete |
~MCTargetAsmParser () override | |
const MCSubtargetInfo & | getSTI () const |
const FeatureBitset & | getAvailableFeatures () const |
void | setAvailableFeatures (const FeatureBitset &Value) |
bool | isParsingMSInlineAsm () |
void | setParsingMSInlineAsm (bool Value) |
MCTargetOptions | getTargetOptions () const |
void | setSemaCallback (MCAsmParserSemaCallback *Callback) |
virtual bool | parsePrimaryExpr (const MCExpr *&Res, SMLoc &EndLoc) |
virtual bool | parseDataExpr (const MCExpr *&Res) |
virtual bool | parseRegister (MCRegister &Reg, SMLoc &StartLoc, SMLoc &EndLoc)=0 |
virtual ParseStatus | tryParseRegister (MCRegister &Reg, SMLoc &StartLoc, SMLoc &EndLoc)=0 |
tryParseRegister - parse one register if possible | |
virtual bool | parseInstruction (ParseInstructionInfo &Info, StringRef Name, SMLoc NameLoc, OperandVector &Operands)=0 |
Parse one assembly instruction. | |
virtual bool | parseInstruction (ParseInstructionInfo &Info, StringRef Name, AsmToken Token, OperandVector &Operands) |
virtual bool | ParseDirective (AsmToken DirectiveID) |
ParseDirective - Parse a target specific assembler directive This method is deprecated, use 'parseDirective' instead. | |
virtual ParseStatus | parseDirective (AsmToken DirectiveID) |
Parses a target-specific assembler directive. | |
virtual bool | matchAndEmitInstruction (SMLoc IDLoc, unsigned &Opcode, OperandVector &Operands, MCStreamer &Out, uint64_t &ErrorInfo, bool MatchingInlineAsm)=0 |
Recognize a series of operands of a parsed instruction as an actual MCInst and emit it to the specified MCStreamer. | |
virtual bool | omitRegisterFromClobberLists (MCRegister Reg) |
Allows targets to let registers opt out of clobber lists. | |
virtual unsigned | validateTargetOperandClass (MCParsedAsmOperand &Op, unsigned Kind) |
Allow a target to add special case operand matching for things that tblgen doesn't/can't handle effectively. | |
virtual unsigned | checkEarlyTargetMatchPredicate (MCInst &Inst, const OperandVector &Operands) |
Validate the instruction match against any complex target predicates before rendering any operands to it. | |
virtual unsigned | checkTargetMatchPredicate (MCInst &Inst) |
checkTargetMatchPredicate - Validate the instruction match against any complex target predicates not expressible via match classes. | |
virtual void | convertToMapAndConstraints (unsigned Kind, const OperandVector &Operands)=0 |
virtual bool | areEqualRegs (const MCParsedAsmOperand &Op1, const MCParsedAsmOperand &Op2) const |
Returns whether two operands are registers and are equal. | |
virtual bool | equalIsAsmAssignment () |
virtual bool | isLabel (AsmToken &Token) |
virtual bool | tokenIsStartOfStatement (AsmToken::TokenKind Token) |
virtual const MCExpr * | applySpecifier (const MCExpr *E, uint32_t, MCContext &Ctx) |
virtual void | doBeforeLabelEmit (MCSymbol *Symbol, SMLoc IDLoc) |
virtual void | onLabelParsed (MCSymbol *Symbol) |
virtual void | flushPendingInstructions (MCStreamer &Out) |
Ensure that all previously parsed instructions have been emitted to the output streamer, if the target does not emit them immediately. | |
virtual void | onBeginOfFile () |
virtual void | onEndOfFile () |
Public Member Functions inherited from llvm::MCAsmParserExtension | |
MCAsmParserExtension (const MCAsmParserExtension &)=delete | |
MCAsmParserExtension & | operator= (const MCAsmParserExtension &)=delete |
virtual | ~MCAsmParserExtension () |
virtual void | Initialize (MCAsmParser &Parser) |
Initialize the extension for parsing using the given Parser . | |
MCContext & | getContext () |
AsmLexer & | getLexer () |
const AsmLexer & | getLexer () const |
MCAsmParser & | getParser () |
const MCAsmParser & | getParser () const |
SourceMgr & | getSourceManager () |
MCStreamer & | getStreamer () |
bool | Warning (SMLoc L, const Twine &Msg) |
bool | Error (SMLoc L, const Twine &Msg, SMRange Range=SMRange()) |
void | Note (SMLoc L, const Twine &Msg) |
bool | TokError (const Twine &Msg) |
const AsmToken & | Lex () |
const AsmToken & | getTok () |
bool | parseToken (AsmToken::TokenKind T, const Twine &Msg="unexpected token") |
bool | parseEOL () |
bool | parseMany (function_ref< bool()> parseOne, bool hasComma=true) |
bool | parseOptionalToken (AsmToken::TokenKind T) |
bool | parseDirectiveCGProfile (StringRef, SMLoc) |
parseDirectiveCGProfile ::= .cg_profile identifier, identifier, <number> | |
bool | maybeParseUniqueID (int64_t &UniqueID) |
bool | check (bool P, const Twine &Msg) |
bool | check (bool P, SMLoc Loc, const Twine &Msg) |
bool | addErrorSuffix (const Twine &Suffix) |
bool | HasBracketExpressions () const |
Protected Member Functions | |
MCTargetAsmParser (MCTargetOptions const &, const MCSubtargetInfo &STI, const MCInstrInfo &MII) | |
MCSubtargetInfo & | copySTI () |
Create a copy of STI and return a non-const reference to it. | |
Protected Member Functions inherited from llvm::MCAsmParserExtension | |
MCAsmParserExtension () |
Protected Attributes | |
FeatureBitset | AvailableFeatures |
AvailableFeatures - The current set of available features. | |
bool | ParsingMSInlineAsm = false |
ParsingMSInlineAsm - Are we parsing ms-style inline assembly? | |
MCAsmParserSemaCallback * | SemaCallback = nullptr |
SemaCallback - The Sema callback implementation. | |
MCTargetOptions | MCOptions |
Set of options which affects instrumentation of inline assembly. | |
const MCSubtargetInfo * | STI |
Current STI. | |
const MCInstrInfo & | MII |
Protected Attributes inherited from llvm::MCAsmParserExtension | |
bool | BracketExpressionsSupported = false |
Additional Inherited Members | |
Static Protected Member Functions inherited from llvm::MCAsmParserExtension | |
template<typename T, bool(T::*)(StringRef, SMLoc) Handler> | |
static bool | HandleDirective (MCAsmParserExtension *Target, StringRef Directive, SMLoc DirectiveLoc) |
MCTargetAsmParser - Generic interface to target specific assembly parsers.
Definition at line 335 of file MCTargetAsmParser.h.
Enumerator | |
---|---|
Match_InvalidOperand | |
Match_InvalidTiedOperand | |
Match_MissingFeature | |
Match_MnemonicFail | |
Match_Success | |
Match_NearMisses | |
FIRST_TARGET_MATCH_RESULT_TY |
Definition at line 337 of file MCTargetAsmParser.h.
|
protected |
Definition at line 16 of file MCTargetAsmParser.cpp.
References MCOptions, MII, and STI.
Referenced by MCTargetAsmParser(), operator=(), and XtensaAsmParser::XtensaAsmParser().
|
delete |
References MCTargetAsmParser().
|
overridedefault |
References getSTI().
|
inlinevirtual |
Definition at line 517 of file MCTargetAsmParser.h.
References E().
|
virtual |
Returns whether two operands are registers and are equal.
This is used by the tied-operands checks in the AsmMatcher. This method can be overridden to allow e.g. a sub- or super-register as the tied operand.
Definition at line 59 of file MCTargetAsmParser.cpp.
References llvm::MCParsedAsmOperand::getReg(), and llvm::MCParsedAsmOperand::isReg().
Referenced by convertToMapAndConstraints().
|
inlinevirtual |
Validate the instruction match against any complex target predicates before rendering any operands to it.
Definition at line 489 of file MCTargetAsmParser.h.
References Match_Success, and Operands.
checkTargetMatchPredicate - Validate the instruction match against any complex target predicates not expressible via match classes.
Definition at line 495 of file MCTargetAsmParser.h.
References Match_Success.
|
pure virtual |
References areEqualRegs(), and Operands.
|
protected |
Create a copy of STI and return a non-const reference to it.
Definition at line 23 of file MCTargetAsmParser.cpp.
References llvm::MCAsmParserExtension::getContext(), getSTI(), llvm::MCAsmParserExtension::getStreamer(), llvm::MCContext::getSubtargetCopy(), and STI.
|
inlinevirtual |
Definition at line 523 of file MCTargetAsmParser.h.
|
inlinevirtual |
Definition at line 509 of file MCTargetAsmParser.h.
|
inlinevirtual |
Ensure that all previously parsed instructions have been emitted to the output streamer, if the target does not emit them immediately.
Definition at line 529 of file MCTargetAsmParser.h.
|
inline |
Definition at line 380 of file MCTargetAsmParser.h.
References AvailableFeatures.
const MCSubtargetInfo & MCTargetAsmParser::getSTI | ( | ) | const |
Definition at line 34 of file MCTargetAsmParser.cpp.
References STI.
Referenced by copySTI(), XtensaAsmParser::hasWindowed(), and ~MCTargetAsmParser().
|
inline |
Definition at line 390 of file MCTargetAsmParser.h.
References MCOptions.
Definition at line 511 of file MCTargetAsmParser.h.
|
inline |
Definition at line 387 of file MCTargetAsmParser.h.
References ParsingMSInlineAsm.
|
pure virtual |
Recognize a series of operands of a parsed instruction as an actual MCInst and emit it to the specified MCStreamer.
This returns false on success and returns true on failure to match.
On failure, the target parser is responsible for emitting a diagnostic explaining the match failure.
References Operands.
|
inlinevirtual |
Allows targets to let registers opt out of clobber lists.
Definition at line 475 of file MCTargetAsmParser.h.
References Reg.
|
inlinevirtual |
Definition at line 532 of file MCTargetAsmParser.h.
|
inlinevirtual |
Definition at line 535 of file MCTargetAsmParser.h.
|
inlinevirtual |
Definition at line 525 of file MCTargetAsmParser.h.
|
delete |
References MCTargetAsmParser().
Definition at line 402 of file MCTargetAsmParser.h.
References llvm::MCAsmParserExtension::getParser().
ParseDirective - Parse a target specific assembler directive This method is deprecated, use 'parseDirective' instead.
The parser is positioned following the directive name. The target specific directive parser should parse the entire directive doing or recording any target specific work, or return true and do nothing if the directive is not target specific. If the directive is specific for the target, the entire line is parsed up to and including the end-of-statement token and false is returned.
DirectiveID | - the identifier token of the directive. |
Definition at line 449 of file MCTargetAsmParser.h.
Referenced by parseDirective().
|
virtual |
Parses a target-specific assembler directive.
The parser is positioned following the directive name. The target-specific directive parser should parse the entire directive doing or recording any target-specific work, or emit an error. On success, the entire line should be parsed up to and including the end-of-statement token. On failure, the parser is not required to read to the end of the line. If the directive is not target-specific, no tokens should be consumed and NoMatch is returned.
DirectiveID | - The token identifying the directive. |
Definition at line 38 of file MCTargetAsmParser.cpp.
References llvm::ParseStatus::Failure, llvm::AsmToken::getLoc(), llvm::MCAsmParserExtension::getParser(), llvm::MCAsmParserExtension::getTok(), llvm::ParseStatus::NoMatch, ParseDirective(), and llvm::ParseStatus::Success.
|
inlinevirtual |
Definition at line 433 of file MCTargetAsmParser.h.
References llvm::AsmToken::getLoc(), Info, Operands, and parseInstruction().
|
pure virtual |
Parse one assembly instruction.
The parser is positioned following the instruction name. The target specific instruction parser should parse the entire instruction and construct the appropriate MCInst, or emit an error. On success, the entire line should be parsed up to and including the end-of-statement token. On failure, the parser is not required to read to the end of the line.
Name | - The instruction name. |
NameLoc | - The source location of the name. |
Operands | [out] - The list of parsed operands, this returns ownership of them to the caller. |
References Info, and Operands.
Referenced by parseInstruction().
|
inlinevirtual |
Definition at line 397 of file MCTargetAsmParser.h.
References llvm::MCAsmParserExtension::getParser().
|
pure virtual |
References Reg.
|
inline |
Definition at line 383 of file MCTargetAsmParser.h.
References AvailableFeatures.
Referenced by XtensaAsmParser::XtensaAsmParser().
|
inline |
Definition at line 388 of file MCTargetAsmParser.h.
References ParsingMSInlineAsm.
|
inline |
Definition at line 392 of file MCTargetAsmParser.h.
References SemaCallback.
|
inlinevirtual |
Definition at line 513 of file MCTargetAsmParser.h.
|
pure virtual |
|
inlinevirtual |
Allow a target to add special case operand matching for things that tblgen doesn't/can't handle effectively.
For example, literal immediates on ARM. TableGen expects a token operand, but the parser will recognize them as immediates.
Definition at line 481 of file MCTargetAsmParser.h.
References Match_InvalidOperand.
|
protected |
AvailableFeatures - The current set of available features.
Definition at line 355 of file MCTargetAsmParser.h.
Referenced by getAvailableFeatures(), and setAvailableFeatures().
|
protected |
Set of options which affects instrumentation of inline assembly.
Definition at line 365 of file MCTargetAsmParser.h.
Referenced by getTargetOptions(), and MCTargetAsmParser().
|
protected |
Definition at line 370 of file MCTargetAsmParser.h.
Referenced by MCTargetAsmParser(), and XtensaAsmParser::XtensaAsmParser().
|
protected |
ParsingMSInlineAsm - Are we parsing ms-style inline assembly?
Definition at line 358 of file MCTargetAsmParser.h.
Referenced by isParsingMSInlineAsm(), and setParsingMSInlineAsm().
|
protected |
SemaCallback - The Sema callback implementation.
Must be set when parsing ms-style inline assembly.
Definition at line 362 of file MCTargetAsmParser.h.
Referenced by setSemaCallback().
|
protected |
Current STI.
Definition at line 368 of file MCTargetAsmParser.h.
Referenced by copySTI(), getSTI(), MCTargetAsmParser(), and XtensaAsmParser::XtensaAsmParser().