| Jim Laskey | 0e83541 | 2006-09-07 22:05:02 +0000 | [diff] [blame] | 1 | //=====-- X86TargetAsmInfo.h - X86 asm properties -------------*- C++ -*--====// | 
|  | 2 | // | 
|  | 3 | //                     The LLVM Compiler Infrastructure | 
|  | 4 | // | 
| Chris Lattner | f3ebc3f | 2007-12-29 20:36:04 +0000 | [diff] [blame] | 5 | // This file is distributed under the University of Illinois Open Source | 
|  | 6 | // License. See LICENSE.TXT for details. | 
| Jim Laskey | 0e83541 | 2006-09-07 22:05:02 +0000 | [diff] [blame] | 7 | // | 
|  | 8 | //===----------------------------------------------------------------------===// | 
|  | 9 | // | 
|  | 10 | // This file contains the declaration of the X86TargetAsmInfo class. | 
|  | 11 | // | 
|  | 12 | //===----------------------------------------------------------------------===// | 
|  | 13 |  | 
|  | 14 | #ifndef X86TARGETASMINFO_H | 
|  | 15 | #define X86TARGETASMINFO_H | 
|  | 16 |  | 
| Anton Korobeynikov | 87001fd | 2008-09-25 21:00:33 +0000 | [diff] [blame] | 17 | #include "X86TargetMachine.h" | 
| Jim Laskey | 0e83541 | 2006-09-07 22:05:02 +0000 | [diff] [blame] | 18 | #include "llvm/Target/TargetAsmInfo.h" | 
| Anton Korobeynikov | 4e05489 | 2008-07-19 13:15:21 +0000 | [diff] [blame] | 19 | #include "llvm/Target/ELFTargetAsmInfo.h" | 
|  | 20 | #include "llvm/Target/DarwinTargetAsmInfo.h" | 
| Anton Korobeynikov | 87001fd | 2008-09-25 21:00:33 +0000 | [diff] [blame] | 21 | #include "llvm/Support/Compiler.h" | 
| Jim Laskey | 0e83541 | 2006-09-07 22:05:02 +0000 | [diff] [blame] | 22 |  | 
|  | 23 | namespace llvm { | 
| Bill Wendling | e21237e | 2007-01-16 03:42:04 +0000 | [diff] [blame] | 24 |  | 
| Anton Korobeynikov | 87001fd | 2008-09-25 21:00:33 +0000 | [diff] [blame] | 25 | extern const char *const x86_asm_table[]; | 
| Jim Laskey | 0e83541 | 2006-09-07 22:05:02 +0000 | [diff] [blame] | 26 |  | 
| Anton Korobeynikov | 87001fd | 2008-09-25 21:00:33 +0000 | [diff] [blame] | 27 | template <class BaseTAI> | 
|  | 28 | struct X86TargetAsmInfo : public BaseTAI { | 
| Chris Lattner | 6b1be83 | 2009-07-20 17:59:32 +0000 | [diff] [blame] | 29 | explicit X86TargetAsmInfo(const X86TargetMachine &TM) : BaseTAI(TM) { | 
| Anton Korobeynikov | 87001fd | 2008-09-25 21:00:33 +0000 | [diff] [blame] | 30 | BaseTAI::AsmTransCBE = x86_asm_table; | 
| Chris Lattner | 6b1be83 | 2009-07-20 17:59:32 +0000 | [diff] [blame] | 31 | BaseTAI::AssemblerDialect =TM.getSubtarget<X86Subtarget>().getAsmFlavor(); | 
| Anton Korobeynikov | 87001fd | 2008-09-25 21:00:33 +0000 | [diff] [blame] | 32 | } | 
| Anton Korobeynikov | 9a6ed37 | 2008-07-09 13:20:48 +0000 | [diff] [blame] | 33 | }; | 
|  | 34 |  | 
| Anton Korobeynikov | 87001fd | 2008-09-25 21:00:33 +0000 | [diff] [blame] | 35 | typedef X86TargetAsmInfo<TargetAsmInfo> X86GenericTargetAsmInfo; | 
|  | 36 |  | 
|  | 37 | EXTERN_TEMPLATE_INSTANTIATION(class X86TargetAsmInfo<TargetAsmInfo>); | 
|  | 38 |  | 
|  | 39 | struct X86DarwinTargetAsmInfo : public X86TargetAsmInfo<DarwinTargetAsmInfo> { | 
| Anton Korobeynikov | 9a6ed37 | 2008-07-09 13:20:48 +0000 | [diff] [blame] | 40 | explicit X86DarwinTargetAsmInfo(const X86TargetMachine &TM); | 
| Anton Korobeynikov | d947aa8 | 2008-07-09 13:21:08 +0000 | [diff] [blame] | 41 | virtual unsigned PreferredEHDataFormat(DwarfEncoding::Target Reason, | 
|  | 42 | bool Global) const; | 
| Rafael Espindola | 770b4b8 | 2008-12-19 10:55:56 +0000 | [diff] [blame] | 43 | virtual const char *getEHGlobalPrefix() const; | 
| Anton Korobeynikov | 9a6ed37 | 2008-07-09 13:20:48 +0000 | [diff] [blame] | 44 | }; | 
|  | 45 |  | 
| Anton Korobeynikov | 87001fd | 2008-09-25 21:00:33 +0000 | [diff] [blame] | 46 | struct X86ELFTargetAsmInfo : public X86TargetAsmInfo<ELFTargetAsmInfo> { | 
| Anton Korobeynikov | 9a6ed37 | 2008-07-09 13:20:48 +0000 | [diff] [blame] | 47 | explicit X86ELFTargetAsmInfo(const X86TargetMachine &TM); | 
| Anton Korobeynikov | d947aa8 | 2008-07-09 13:21:08 +0000 | [diff] [blame] | 48 | virtual unsigned PreferredEHDataFormat(DwarfEncoding::Target Reason, | 
|  | 49 | bool Global) const; | 
| Anton Korobeynikov | 9a6ed37 | 2008-07-09 13:20:48 +0000 | [diff] [blame] | 50 | }; | 
|  | 51 |  | 
| Anton Korobeynikov | 87001fd | 2008-09-25 21:00:33 +0000 | [diff] [blame] | 52 | struct X86COFFTargetAsmInfo : public X86GenericTargetAsmInfo { | 
| Anton Korobeynikov | 9a6ed37 | 2008-07-09 13:20:48 +0000 | [diff] [blame] | 53 | explicit X86COFFTargetAsmInfo(const X86TargetMachine &TM); | 
| Anton Korobeynikov | d947aa8 | 2008-07-09 13:21:08 +0000 | [diff] [blame] | 54 | virtual unsigned PreferredEHDataFormat(DwarfEncoding::Target Reason, | 
|  | 55 | bool Global) const; | 
| Chris Lattner | 0f5ebf5 | 2009-07-24 04:49:34 +0000 | [diff] [blame] | 56 | virtual const char * | 
| Chris Lattner | 0af0039 | 2009-07-25 23:21:55 +0000 | [diff] [blame] | 57 | getSectionPrefixForUniqueGlobal(SectionKind kind) const; | 
| Chris Lattner | 1db2103 | 2009-07-26 07:33:58 +0000 | [diff] [blame] | 58 |  | 
| Chris Lattner | 149465e | 2009-07-27 05:32:16 +0000 | [diff] [blame] | 59 | virtual void getSectionFlagsAsString(SectionKind Kind, | 
|  | 60 | SmallVectorImpl<char> &Str) const; | 
| Anton Korobeynikov | 9a6ed37 | 2008-07-09 13:20:48 +0000 | [diff] [blame] | 61 | }; | 
|  | 62 |  | 
| Anton Korobeynikov | 87001fd | 2008-09-25 21:00:33 +0000 | [diff] [blame] | 63 | struct X86WinTargetAsmInfo : public X86GenericTargetAsmInfo { | 
| Anton Korobeynikov | 9a6ed37 | 2008-07-09 13:20:48 +0000 | [diff] [blame] | 64 | explicit X86WinTargetAsmInfo(const X86TargetMachine &TM); | 
| Jim Laskey | 0e83541 | 2006-09-07 22:05:02 +0000 | [diff] [blame] | 65 | }; | 
| Anton Korobeynikov | 87001fd | 2008-09-25 21:00:33 +0000 | [diff] [blame] | 66 |  | 
| Jim Laskey | 0e83541 | 2006-09-07 22:05:02 +0000 | [diff] [blame] | 67 | } // namespace llvm | 
|  | 68 |  | 
|  | 69 | #endif |