Changes in directory llvm/lib/Target/X86:
X86TargetAsmInfo.cpp added (r1.1) X86TargetAsmInfo.h added (r1.1) --- Log message: Break out target asm info into separate files. --- Diffs of the changes: (+126 -0) X86TargetAsmInfo.cpp | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++ X86TargetAsmInfo.h | 31 ++++++++++++++++ 2 files changed, 126 insertions(+) Index: llvm/lib/Target/X86/X86TargetAsmInfo.cpp diff -c /dev/null llvm/lib/Target/X86/X86TargetAsmInfo.cpp:1.1 *** /dev/null Thu Sep 7 17:05:12 2006 --- llvm/lib/Target/X86/X86TargetAsmInfo.cpp Thu Sep 7 17:05:02 2006 *************** *** 0 **** --- 1,95 ---- + //===-- X86TargetAsmInfo.cpp - X86 asm properties ---------------*- C++ -*-===// + // + // 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 contains the declarations of the X86TargetAsmInfo properties. + // + //===----------------------------------------------------------------------===// + + #include "X86TargetAsmInfo.h" + #include "X86TargetMachine.h" + #include "X86Subtarget.h" + + using namespace llvm; + + X86TargetAsmInfo::X86TargetAsmInfo(const X86TargetMachine &TM) { + const X86Subtarget *Subtarget = &TM.getSubtarget<X86Subtarget>(); + + //FIXME - Should to be simplified. + + switch (Subtarget->TargetType) { + case X86Subtarget::isDarwin: + AlignmentIsInBytes = false; + GlobalPrefix = "_"; + Data64bitsDirective = 0; // we can't emit a 64-bit unit + ZeroDirective = "\t.space\t"; // ".space N" emits N zeros. + PrivateGlobalPrefix = "L"; // Marker for constant pool idxs + ConstantPoolSection = "\t.const\n"; + JumpTableDataSection = "\t.const\n"; // FIXME: depends on PIC mode + FourByteConstantSection = "\t.literal4\n"; + EightByteConstantSection = "\t.literal8\n"; + LCOMMDirective = "\t.lcomm\t"; + COMMDirectiveTakesAlignment = false; + HasDotTypeDotSizeDirective = false; + StaticCtorsSection = ".mod_init_func"; + StaticDtorsSection = ".mod_term_func"; + InlineAsmStart = "# InlineAsm Start"; + InlineAsmEnd = "# InlineAsm End"; + SetDirective = "\t.set"; + + NeedsSet = true; + DwarfAbbrevSection = ".section __DWARF,__debug_abbrev,regular,debug"; + DwarfInfoSection = ".section __DWARF,__debug_info,regular,debug"; + DwarfLineSection = ".section __DWARF,__debug_line,regular,debug"; + DwarfFrameSection = ".section __DWARF,__debug_frame,regular,debug"; + DwarfPubNamesSection = ".section __DWARF,__debug_pubnames,regular,debug"; + DwarfPubTypesSection = ".section __DWARF,__debug_pubtypes,regular,debug"; + DwarfStrSection = ".section __DWARF,__debug_str,regular,debug"; + DwarfLocSection = ".section __DWARF,__debug_loc,regular,debug"; + DwarfARangesSection = ".section __DWARF,__debug_aranges,regular,debug"; + DwarfRangesSection = ".section __DWARF,__debug_ranges,regular,debug"; + DwarfMacInfoSection = ".section __DWARF,__debug_macinfo,regular,debug"; + break; + case X86Subtarget::isCygwin: + GlobalPrefix = "_"; + COMMDirectiveTakesAlignment = false; + HasDotTypeDotSizeDirective = false; + StaticCtorsSection = "\t.section .ctors,\"aw\""; + StaticDtorsSection = "\t.section .dtors,\"aw\""; + break; + case X86Subtarget::isWindows: + GlobalPrefix = "_"; + HasDotTypeDotSizeDirective = false; + break; + default: break; + } + + if (Subtarget->isFlavorIntel()) { + GlobalPrefix = "_"; + CommentString = ";"; + + PrivateGlobalPrefix = "$"; + AlignDirective = "\talign\t"; + ZeroDirective = "\tdb\t"; + ZeroDirectiveSuffix = " dup(0)"; + AsciiDirective = "\tdb\t"; + AscizDirective = 0; + Data8bitsDirective = "\tdb\t"; + Data16bitsDirective = "\tdw\t"; + Data32bitsDirective = "\tdd\t"; + Data64bitsDirective = "\tdq\t"; + HasDotTypeDotSizeDirective = false; + + TextSection = "_text"; + DataSection = "_data"; + SwitchToSectionDirective = ""; + TextSectionStartSuffix = "\tsegment 'CODE'"; + DataSectionStartSuffix = "\tsegment 'DATA'"; + SectionEndDirectiveSuffix = "\tends\n"; + } + } Index: llvm/lib/Target/X86/X86TargetAsmInfo.h diff -c /dev/null llvm/lib/Target/X86/X86TargetAsmInfo.h:1.1 *** /dev/null Thu Sep 7 17:05:20 2006 --- llvm/lib/Target/X86/X86TargetAsmInfo.h Thu Sep 7 17:05:02 2006 *************** *** 0 **** --- 1,31 ---- + //=====-- X86TargetAsmInfo.h - X86 asm properties -------------*- C++ -*--====// + // + // 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 contains the declaration of the X86TargetAsmInfo class. + // + //===----------------------------------------------------------------------===// + + #ifndef X86TARGETASMINFO_H + #define X86TARGETASMINFO_H + + #include "llvm/Target/TargetAsmInfo.h" + + namespace llvm { + + // Forward declaration. + class X86TargetMachine; + + struct X86TargetAsmInfo : public TargetAsmInfo { + X86TargetAsmInfo(const X86TargetMachine &TM); + }; + + + } // namespace llvm + + #endif _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits