llvm-mc/AsmParser: Define match classes in the .td file.
[oota-llvm.git] / lib / Target / X86 / X86TargetAsmInfo.h
index ac0505f71604362a245b9f4aede2596fd896780d..34599e5a92d238d2a17176d7c2e7aefe50d529d8 100644 (file)
@@ -2,8 +2,8 @@
 //
 //                     The LLVM Compiler Infrastructure
 //
-// This file was developed by James M. Laskey and is distributed under the
-// University of Illinois Open Source License. See LICENSE.TXT for details.
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
 //
 //===----------------------------------------------------------------------===//
 //
 #ifndef X86TARGETASMINFO_H
 #define X86TARGETASMINFO_H
 
+#include "X86TargetMachine.h"
 #include "llvm/Target/TargetAsmInfo.h"
+#include "llvm/Target/COFFTargetAsmInfo.h"
+#include "llvm/Target/DarwinTargetAsmInfo.h"
+#include "llvm/Support/Compiler.h"
 
 namespace llvm {
-  
-  // Forward declaration.
-  class X86TargetMachine;
 
-  struct X86TargetAsmInfo : public TargetAsmInfo {
-    X86TargetAsmInfo(const X86TargetMachine &TM);
+  extern const char *const x86_asm_table[];
+
+  template <class BaseTAI>
+  struct X86TargetAsmInfo : public BaseTAI {
+    explicit X86TargetAsmInfo(const TargetMachine &TM) {
+      BaseTAI::AsmTransCBE = x86_asm_table;
+      BaseTAI::AssemblerDialect =TM.getSubtarget<X86Subtarget>().getAsmFlavor();
+    }
+  };
+
+  EXTERN_TEMPLATE_INSTANTIATION(class X86TargetAsmInfo<TargetAsmInfo>);
+
+  struct X86DarwinTargetAsmInfo : public X86TargetAsmInfo<DarwinTargetAsmInfo> {
+    explicit X86DarwinTargetAsmInfo(const X86TargetMachine &TM);
+  };
+
+  struct X86ELFTargetAsmInfo : public X86TargetAsmInfo<TargetAsmInfo> {
+    explicit X86ELFTargetAsmInfo(const X86TargetMachine &TM);
   };
+
+  typedef X86TargetAsmInfo<COFFTargetAsmInfo> X86COFFTargetAsmInfo;
+
+  struct X86WinTargetAsmInfo : public X86TargetAsmInfo<TargetAsmInfo> {
+    explicit X86WinTargetAsmInfo(const X86TargetMachine &TM);
+  };
+
 } // namespace llvm
 
 #endif