//
// 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