Proper patterns for thumb2 shift and rotate instructions.
[oota-llvm.git] / lib / Target / IA64 / IA64TargetAsmInfo.cpp
1 //===-- IA64TargetAsmInfo.cpp - IA64 asm properties -------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file contains the declarations of the IA64TargetAsmInfo properties.
11 //
12 //===----------------------------------------------------------------------===//
13
14 #include "IA64TargetAsmInfo.h"
15 #include "llvm/Constants.h"
16 #include "llvm/Target/TargetMachine.h"
17
18 using namespace llvm;
19
20 IA64TargetAsmInfo::IA64TargetAsmInfo(const TargetMachine &TM):
21   ELFTargetAsmInfo(TM) {
22   CommentString = "//";
23   Data8bitsDirective = "\tdata1\t";     // FIXME: check that we are
24   Data16bitsDirective = "\tdata2.ua\t"; // disabling auto-alignment
25   Data32bitsDirective = "\tdata4.ua\t"; // properly
26   Data64bitsDirective = "\tdata8.ua\t";
27   ZeroDirective = "\t.skip\t";
28   AsciiDirective = "\tstring\t";
29
30   GlobalVarAddrPrefix="";
31   GlobalVarAddrSuffix="";
32   FunctionAddrPrefix="@fptr(";
33   FunctionAddrSuffix=")";
34
35   // FIXME: would be nice to have rodata (no 'w') when appropriate?
36   ConstantPoolSection = "\n\t.section .data, \"aw\", \"progbits\"\n";
37 }
38
39 unsigned IA64TargetAsmInfo::RelocBehaviour() const {
40   return (TM.getRelocationModel() != Reloc::Static ?
41           Reloc::LocalOrGlobal : Reloc::Global);
42 }
43
44 // FIXME: Support small data/bss/rodata sections someday.