diff options
author | Jim Grosbach <grosbach@apple.com> | 2013-02-06 06:00:06 +0000 |
---|---|---|
committer | Jim Grosbach <grosbach@apple.com> | 2013-02-06 06:00:06 +0000 |
commit | fa05def52c6bb8266d856a9af2de6fa066d93d44 (patch) | |
tree | 70e16da8174d68bec9e30ac1ad4192650f22bd48 /include/llvm/MC/MCTargetAsmParser.h | |
parent | b2ac7c09b17efadea2a9f90f45801d9d2ee687aa (diff) | |
download | llvm-fa05def52c6bb8266d856a9af2de6fa066d93d44.tar.gz llvm-fa05def52c6bb8266d856a9af2de6fa066d93d44.tar.bz2 llvm-fa05def52c6bb8266d856a9af2de6fa066d93d44.tar.xz |
Allow targets to add custom asm operand matching logic.
For example, ARM has several instructions with a literal '#0' immediate in the syntax
that's not represented as an actual operand. The asm matcher is expected a token
operand, but the parser will have created an immediate operand. This is currently
handled by dedicated per-instruction C++ munging of the ParsedAsmOperand list, but
will be better handled by this hook.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174487 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/MC/MCTargetAsmParser.h')
-rw-r--r-- | include/llvm/MC/MCTargetAsmParser.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/include/llvm/MC/MCTargetAsmParser.h b/include/llvm/MC/MCTargetAsmParser.h index 483a80b3b5..84585d68a8 100644 --- a/include/llvm/MC/MCTargetAsmParser.h +++ b/include/llvm/MC/MCTargetAsmParser.h @@ -142,6 +142,15 @@ public: MCStreamer &Out, unsigned &ErrorInfo, bool MatchingInlineAsm) = 0; + /// 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. + virtual unsigned validateTargetOperandClass(MCParsedAsmOperand *Op, + unsigned Kind) { + return Match_InvalidOperand; + } + /// checkTargetMatchPredicate - Validate the instruction match against /// any complex target predicates not expressible via match classes. virtual unsigned checkTargetMatchPredicate(MCInst &Inst) { |