diff options
| author | Rafael Espindola <rafael.espindola@gmail.com> | 2012-01-11 03:56:41 +0000 | 
|---|---|---|
| committer | Rafael Espindola <rafael.espindola@gmail.com> | 2012-01-11 03:56:41 +0000 | 
| commit | 870c4e92b90f30e8ac85e705936bbff4481d8d6b (patch) | |
| tree | 0ac348d6e9bcd0eef750a39ab53c487de767d09b /llvm/lib/Target | |
| parent | 642f0f6a40313fa9c16d941f7691652deb60f08e (diff) | |
| download | bcm5719-llvm-870c4e92b90f30e8ac85e705936bbff4481d8d6b.tar.gz bcm5719-llvm-870c4e92b90f30e8ac85e705936bbff4481d8d6b.zip | |
Add the skeleton of an asm parser for mips.
llvm-svn: 147923
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/Mips/AsmParser/CMakeLists.txt | 6 | ||||
| -rw-r--r-- | llvm/lib/Target/Mips/AsmParser/LLVMBuild.txt | 23 | ||||
| -rw-r--r-- | llvm/lib/Target/Mips/AsmParser/Makefile | 15 | ||||
| -rw-r--r-- | llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp | 66 | ||||
| -rw-r--r-- | llvm/lib/Target/Mips/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | llvm/lib/Target/Mips/LLVMBuild.txt | 3 | ||||
| -rw-r--r-- | llvm/lib/Target/Mips/Makefile | 2 | 
7 files changed, 114 insertions, 2 deletions
| diff --git a/llvm/lib/Target/Mips/AsmParser/CMakeLists.txt b/llvm/lib/Target/Mips/AsmParser/CMakeLists.txt new file mode 100644 index 00000000000..ac21c259fb4 --- /dev/null +++ b/llvm/lib/Target/Mips/AsmParser/CMakeLists.txt @@ -0,0 +1,6 @@ +include_directories( ${CMAKE_CURRENT_BINARY_DIR}/.. ${CMAKE_CURRENT_SOURCE_DIR}/.. ) + +add_llvm_library(LLVMMipsAsmParser +  MipsAsmParser.cpp +  ) + diff --git a/llvm/lib/Target/Mips/AsmParser/LLVMBuild.txt b/llvm/lib/Target/Mips/AsmParser/LLVMBuild.txt new file mode 100644 index 00000000000..e7ca243d0e7 --- /dev/null +++ b/llvm/lib/Target/Mips/AsmParser/LLVMBuild.txt @@ -0,0 +1,23 @@ +;===- ./lib/Target/Mips/AsmParser/LLVMBuild.txt ----------------*- Conf -*--===; +; +;                     The LLVM Compiler Infrastructure +; +; This file is distributed under the University of Illinois Open Source +; License. See LICENSE.TXT for details. +; +;===------------------------------------------------------------------------===; +; +; This is an LLVMBuild description file for the components in this subdirectory. +; +; For more information on the LLVMBuild system, please see: +; +;   http://llvm.org/docs/LLVMBuild.html +; +;===------------------------------------------------------------------------===; + +[component_0] +type = Library +name = MipsAsmParser +parent = Mips +required_libraries = MC MCParser Support MipsDesc MipsInfo +add_to_library_groups = Mips diff --git a/llvm/lib/Target/Mips/AsmParser/Makefile b/llvm/lib/Target/Mips/AsmParser/Makefile new file mode 100644 index 00000000000..679acee9fe7 --- /dev/null +++ b/llvm/lib/Target/Mips/AsmParser/Makefile @@ -0,0 +1,15 @@ +##===- lib/Target/Mips/AsmParser/Makefile ------------------*- Makefile -*-===## +# +#                     The LLVM Compiler Infrastructure +# +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# +##===----------------------------------------------------------------------===## +LEVEL = ../../../.. +LIBRARYNAME = LLVMMipsAsmParser + +# Hack: we need to include 'main' mips target directory to grab private headers +CPP.Flags += -I$(PROJ_OBJ_DIR)/.. -I$(PROJ_SRC_DIR)/.. + +include $(LEVEL)/Makefile.common diff --git a/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp b/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp new file mode 100644 index 00000000000..58b55902575 --- /dev/null +++ b/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp @@ -0,0 +1,66 @@ +//===-- MipsAsmParser.cpp - Parse Mips assembly to MCInst instructions ----===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "MCTargetDesc/MipsMCTargetDesc.h" +#include "llvm/MC/MCParser/MCAsmLexer.h" +#include "llvm/MC/MCTargetAsmParser.h" +#include "llvm/Support/TargetRegistry.h" + +using namespace llvm; + +namespace { +class MipsAsmParser : public MCTargetAsmParser { +  bool MatchAndEmitInstruction(SMLoc IDLoc, +                               SmallVectorImpl<MCParsedAsmOperand*> &Operands, +                               MCStreamer &Out); + +  bool ParseRegister(unsigned &RegNo, SMLoc &StartLoc, SMLoc &EndLoc); + +  bool ParseInstruction(StringRef Name, SMLoc NameLoc, +                                SmallVectorImpl<MCParsedAsmOperand*> &Operands); + +  bool ParseDirective(AsmToken DirectiveID); + +public: +  MipsAsmParser(MCSubtargetInfo &sti, MCAsmParser &parser) +    : MCTargetAsmParser() { +  } + +}; +} + +bool MipsAsmParser:: +MatchAndEmitInstruction(SMLoc IDLoc, +                        SmallVectorImpl<MCParsedAsmOperand*> &Operands, +                        MCStreamer &Out) { +  return true; +} + +bool MipsAsmParser:: +ParseRegister(unsigned &RegNo, SMLoc &StartLoc, SMLoc &EndLoc) { +  return true; +} + +bool MipsAsmParser:: +ParseInstruction(StringRef Name, SMLoc NameLoc, +                 SmallVectorImpl<MCParsedAsmOperand*> &Operands) { +  return true; +} + +bool MipsAsmParser:: +ParseDirective(AsmToken DirectiveID) { +  return true; +} + +extern "C" void LLVMInitializeMipsAsmParser() { +  RegisterMCAsmParser<MipsAsmParser> X(TheMipsTarget); +  RegisterMCAsmParser<MipsAsmParser> Y(TheMipselTarget); +  RegisterMCAsmParser<MipsAsmParser> A(TheMips64Target); +  RegisterMCAsmParser<MipsAsmParser> B(TheMips64elTarget); +} diff --git a/llvm/lib/Target/Mips/CMakeLists.txt b/llvm/lib/Target/Mips/CMakeLists.txt index b54612e5601..7c80fc29b31 100644 --- a/llvm/lib/Target/Mips/CMakeLists.txt +++ b/llvm/lib/Target/Mips/CMakeLists.txt @@ -33,3 +33,4 @@ add_llvm_target(MipsCodeGen  add_subdirectory(InstPrinter)  add_subdirectory(TargetInfo)  add_subdirectory(MCTargetDesc) +add_subdirectory(AsmParser) diff --git a/llvm/lib/Target/Mips/LLVMBuild.txt b/llvm/lib/Target/Mips/LLVMBuild.txt index bcd32bc0005..abbed8c90fc 100644 --- a/llvm/lib/Target/Mips/LLVMBuild.txt +++ b/llvm/lib/Target/Mips/LLVMBuild.txt @@ -16,12 +16,13 @@  ;===------------------------------------------------------------------------===;  [common] -subdirectories = InstPrinter MCTargetDesc TargetInfo +subdirectories = AsmParser InstPrinter MCTargetDesc TargetInfo  [component_0]  type = TargetGroup  name = Mips  parent = Target +has_asmparser = 1  has_asmprinter = 1  has_jit = 1 diff --git a/llvm/lib/Target/Mips/Makefile b/llvm/lib/Target/Mips/Makefile index 94f7c18eec4..168635c96be 100644 --- a/llvm/lib/Target/Mips/Makefile +++ b/llvm/lib/Target/Mips/Makefile @@ -17,7 +17,7 @@ BUILT_SOURCES = MipsGenRegisterInfo.inc MipsGenInstrInfo.inc \                  MipsGenDAGISel.inc MipsGenCallingConv.inc \                  MipsGenSubtargetInfo.inc MipsGenMCCodeEmitter.inc -DIRS = InstPrinter TargetInfo MCTargetDesc +DIRS = InstPrinter AsmParser TargetInfo MCTargetDesc  include $(LEVEL)/Makefile.common | 

