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