blob: aec5e3f55e4c566a8af1b35906ab3d0413d7b7b0 [file] [log] [blame]
Daniel Dunbarc7df3cb2009-07-17 20:42:00 +00001//===-- X86AsmParser.cpp - Parse X86 assembly to MCInst instructions ------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
Daniel Dunbar0b0441e2009-07-18 23:03:22 +000010#include "X86.h"
Daniel Dunbar78929e52009-07-20 20:01:54 +000011#include "llvm/ADT/SmallVector.h"
Daniel Dunbard80432a2009-07-28 20:47:52 +000012#include "llvm/MC/MCAsmLexer.h"
Daniel Dunbar4b0f4ef2009-07-20 18:55:04 +000013#include "llvm/MC/MCAsmParser.h"
Daniel Dunbarc7df3cb2009-07-17 20:42:00 +000014#include "llvm/Target/TargetRegistry.h"
15#include "llvm/Target/TargetAsmParser.h"
16using namespace llvm;
17
18namespace {
Daniel Dunbar78929e52009-07-20 20:01:54 +000019 struct X86Operand {
20 };
Daniel Dunbarc7df3cb2009-07-17 20:42:00 +000021
Daniel Dunbar78929e52009-07-20 20:01:54 +000022 class X86ATTAsmParser : public TargetAsmParser {
Daniel Dunbard80432a2009-07-28 20:47:52 +000023 MCAsmParser &Parser;
24
25 private:
Daniel Dunbar78929e52009-07-20 20:01:54 +000026 bool ParseOperand(X86Operand &Op);
27
Daniel Dunbar9a7b61d2009-07-27 21:49:56 +000028 bool MatchInstruction(const StringRef &Name,
Daniel Dunbar78929e52009-07-20 20:01:54 +000029 llvm::SmallVector<X86Operand, 3> &Operands,
30 MCInst &Inst);
Daniel Dunbar4b0f4ef2009-07-20 18:55:04 +000031
Daniel Dunbard80432a2009-07-28 20:47:52 +000032 MCAsmLexer &getLexer() const { return Parser.getLexer(); }
33
Daniel Dunbar78929e52009-07-20 20:01:54 +000034 public:
Daniel Dunbard80432a2009-07-28 20:47:52 +000035 X86ATTAsmParser(const Target &T, MCAsmParser &_Parser)
36 : TargetAsmParser(T), Parser(_Parser) {}
Daniel Dunbar78929e52009-07-20 20:01:54 +000037
Daniel Dunbar9a7b61d2009-07-27 21:49:56 +000038 virtual bool ParseInstruction(MCAsmParser &AP, const StringRef &Name,
Daniel Dunbar78929e52009-07-20 20:01:54 +000039 MCInst &Inst);
40 };
Daniel Dunbarc7df3cb2009-07-17 20:42:00 +000041}
42
Daniel Dunbar78929e52009-07-20 20:01:54 +000043bool X86ATTAsmParser::ParseOperand(X86Operand &Op) {
44 return true;
45}
46
47bool
Daniel Dunbar9a7b61d2009-07-27 21:49:56 +000048X86ATTAsmParser::MatchInstruction(const StringRef &Name,
Daniel Dunbar78929e52009-07-20 20:01:54 +000049 llvm::SmallVector<X86Operand, 3> &Operands,
50 MCInst &Inst) {
51 return false;
52}
53
Daniel Dunbar9a7b61d2009-07-27 21:49:56 +000054bool X86ATTAsmParser::ParseInstruction(MCAsmParser &AP, const StringRef &Name,
Daniel Dunbar4b0f4ef2009-07-20 18:55:04 +000055 MCInst &Inst) {
Daniel Dunbar78929e52009-07-20 20:01:54 +000056 llvm::SmallVector<X86Operand, 3> Operands;
Daniel Dunbar78929e52009-07-20 20:01:54 +000057
58 return MatchInstruction(Name, Operands, Inst);
Daniel Dunbar4b0f4ef2009-07-20 18:55:04 +000059}
60
Daniel Dunbarc7df3cb2009-07-17 20:42:00 +000061// Force static initialization.
62extern "C" void LLVMInitializeX86AsmParser() {
Daniel Dunbarc680b012009-07-25 06:49:55 +000063 RegisterAsmParser<X86ATTAsmParser> X(TheX86_32Target);
64 RegisterAsmParser<X86ATTAsmParser> Y(TheX86_64Target);
Daniel Dunbarc7df3cb2009-07-17 20:42:00 +000065}