1c5707112e7635d1dd2f2cc9c4f42e79a51302ccaJia Liu//===-- MipsAsmParser.cpp - Parse Mips assembly to MCInst instructions ----===//
2fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola//
3fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola//                     The LLVM Compiler Infrastructure
4fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola//
5fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola// This file is distributed under the University of Illinois Open Source
6fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola// License. See LICENSE.TXT for details.
7fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola//
8fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola//===----------------------------------------------------------------------===//
9fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola
10fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola#include "MCTargetDesc/MipsMCTargetDesc.h"
11fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola#include "llvm/MC/MCParser/MCAsmLexer.h"
12fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola#include "llvm/MC/MCTargetAsmParser.h"
13fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola#include "llvm/Support/TargetRegistry.h"
14fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola
15fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindolausing namespace llvm;
16fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola
17fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindolanamespace {
18fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindolaclass MipsAsmParser : public MCTargetAsmParser {
19fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola  bool MatchAndEmitInstruction(SMLoc IDLoc,
20fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola                               SmallVectorImpl<MCParsedAsmOperand*> &Operands,
21fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola                               MCStreamer &Out);
22fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola
23fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola  bool ParseRegister(unsigned &RegNo, SMLoc &StartLoc, SMLoc &EndLoc);
24fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola
25fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola  bool ParseInstruction(StringRef Name, SMLoc NameLoc,
26fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola                                SmallVectorImpl<MCParsedAsmOperand*> &Operands);
27fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola
28fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola  bool ParseDirective(AsmToken DirectiveID);
29fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola
30fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindolapublic:
31fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola  MipsAsmParser(MCSubtargetInfo &sti, MCAsmParser &parser)
32fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola    : MCTargetAsmParser() {
33fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola  }
34fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola
35fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola};
36fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola}
37fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola
38fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindolabool MipsAsmParser::
39fddf80459747198d2ee33974c90f6137ea29cbd8Rafael EspindolaMatchAndEmitInstruction(SMLoc IDLoc,
40fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola                        SmallVectorImpl<MCParsedAsmOperand*> &Operands,
41fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola                        MCStreamer &Out) {
42fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola  return true;
43fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola}
44fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola
45fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindolabool MipsAsmParser::
46fddf80459747198d2ee33974c90f6137ea29cbd8Rafael EspindolaParseRegister(unsigned &RegNo, SMLoc &StartLoc, SMLoc &EndLoc) {
47fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola  return true;
48fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola}
49fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola
50fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindolabool MipsAsmParser::
51fddf80459747198d2ee33974c90f6137ea29cbd8Rafael EspindolaParseInstruction(StringRef Name, SMLoc NameLoc,
52fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola                 SmallVectorImpl<MCParsedAsmOperand*> &Operands) {
53fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola  return true;
54fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola}
55fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola
56fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindolabool MipsAsmParser::
57fddf80459747198d2ee33974c90f6137ea29cbd8Rafael EspindolaParseDirective(AsmToken DirectiveID) {
58fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola  return true;
59fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola}
60fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola
61fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindolaextern "C" void LLVMInitializeMipsAsmParser() {
62fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola  RegisterMCAsmParser<MipsAsmParser> X(TheMipsTarget);
63fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola  RegisterMCAsmParser<MipsAsmParser> Y(TheMipselTarget);
64fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola  RegisterMCAsmParser<MipsAsmParser> A(TheMips64Target);
65fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola  RegisterMCAsmParser<MipsAsmParser> B(TheMips64elTarget);
66fddf80459747198d2ee33974c90f6137ea29cbd8Rafael Espindola}
67