aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-07-17 20:42:00 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-07-17 20:42:00 +0000
commit092a9dda2d13918a6410db26f41c7b5aa97ff989 (patch)
tree2dcdd3c50dd465a3e1068c713ed64e39781dea35 /lib
parent234f6893a2bb752479e51c943e1eb604f2f48429 (diff)
downloadexternal_llvm-092a9dda2d13918a6410db26f41c7b5aa97ff989.zip
external_llvm-092a9dda2d13918a6410db26f41c7b5aa97ff989.tar.gz
external_llvm-092a9dda2d13918a6410db26f41c7b5aa97ff989.tar.bz2
Sketch support for target specific assembly parser.
- Not fully enabled yet, need a configure regeneration. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76230 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Target/X86/AsmParser/CMakeLists.txt6
-rw-r--r--lib/Target/X86/AsmParser/Makefile15
-rw-r--r--lib/Target/X86/AsmParser/X86AsmParser.cpp40
-rw-r--r--lib/Target/X86/Makefile2
4 files changed, 62 insertions, 1 deletions
diff --git a/lib/Target/X86/AsmParser/CMakeLists.txt b/lib/Target/X86/AsmParser/CMakeLists.txt
new file mode 100644
index 0000000..034d5ab
--- /dev/null
+++ b/lib/Target/X86/AsmParser/CMakeLists.txt
@@ -0,0 +1,6 @@
+include_directories( ${CMAKE_CURRENT_BINARY_DIR}/.. ${CMAKE_CURRENT_SOURCE_DIR}/.. )
+
+add_llvm_library(LLVMX86AsmParser
+ X86AsmParser.cpp
+ )
+add_dependencies(LLVMX86AsmParser X86CodeGenTable_gen)
diff --git a/lib/Target/X86/AsmParser/Makefile b/lib/Target/X86/AsmParser/Makefile
new file mode 100644
index 0000000..25fb0a2
--- /dev/null
+++ b/lib/Target/X86/AsmParser/Makefile
@@ -0,0 +1,15 @@
+##===- lib/Target/X86/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 = LLVMX86AsmParser
+
+# Hack: we need to include 'main' x86 target directory to grab private headers
+CPPFLAGS = -I$(PROJ_OBJ_DIR)/.. -I$(PROJ_SRC_DIR)/..
+
+include $(LEVEL)/Makefile.common
diff --git a/lib/Target/X86/AsmParser/X86AsmParser.cpp b/lib/Target/X86/AsmParser/X86AsmParser.cpp
new file mode 100644
index 0000000..0871148
--- /dev/null
+++ b/lib/Target/X86/AsmParser/X86AsmParser.cpp
@@ -0,0 +1,40 @@
+//===-- X86AsmParser.cpp - Parse X86 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 "llvm/Target/TargetRegistry.h"
+#include "llvm/Target/TargetAsmParser.h"
+using namespace llvm;
+
+namespace {
+
+class X86ATTAsmParser : public TargetAsmParser {
+ public:
+ explicit X86ATTAsmParser(const Target &);
+};
+
+}
+
+X86ATTAsmParser::X86ATTAsmParser(const Target &T)
+ : TargetAsmParser(T)
+{
+}
+
+namespace {
+ TargetAsmParser *createAsmParser(const Target &T) {
+ return new X86ATTAsmParser(T);
+ }
+}
+
+// Force static initialization.
+extern "C" void LLVMInitializeX86AsmParser() {
+ extern Target TheX86_32Target;
+ TargetRegistry::RegisterAsmParser(TheX86_32Target, &createAsmParser);
+ extern Target TheX86_64Target;
+ TargetRegistry::RegisterAsmParser(TheX86_64Target, &createAsmParser);
+}
diff --git a/lib/Target/X86/Makefile b/lib/Target/X86/Makefile
index 51571a0..220831d 100644
--- a/lib/Target/X86/Makefile
+++ b/lib/Target/X86/Makefile
@@ -18,6 +18,6 @@ BUILT_SOURCES = X86GenRegisterInfo.h.inc X86GenRegisterNames.inc \
X86GenFastISel.inc \
X86GenCallingConv.inc X86GenSubtarget.inc
-DIRS = AsmPrinter TargetInfo
+DIRS = AsmPrinter AsmParser TargetInfo
include $(LEVEL)/Makefile.common