CellSPU:
[oota-llvm.git] / lib / Target / CellSPU / SPUTargetAsmInfo.h
1 //===-- SPUTargetAsmInfo.h - Cell SPU 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 declaration of the SPUTargetAsmInfo class.
11 //
12 //===----------------------------------------------------------------------===//
13
14 #ifndef SPUTARGETASMINFO_H
15 #define SPUTARGETASMINFO_H
16
17 #include "llvm/Target/TargetAsmInfo.h"
18 #include "llvm/Target/ELFTargetAsmInfo.h"
19 #include "SPUTargetMachine.h"
20 #include "SPUSubtarget.h"
21
22 namespace llvm {
23
24   // Forward declaration.
25   class SPUTargetMachine;
26   
27   template <class BaseTAI>
28   struct SPUTargetAsmInfo : public BaseTAI {
29     explicit SPUTargetAsmInfo(const SPUTargetMachine &TM):
30       BaseTAI(TM) {
31       /* (unused today)
32        * const SPUSubtarget *Subtarget = &TM.getSubtarget<SPUSubtarget>(); */
33
34       BaseTAI::ZeroDirective = "\t.space\t";
35       BaseTAI::SetDirective = "\t.set";
36       BaseTAI::Data64bitsDirective = "\t.quad\t";
37       BaseTAI::AlignmentIsInBytes = false;
38       BaseTAI::LCOMMDirective = "\t.lcomm\t";
39       BaseTAI::InlineAsmStart = "# InlineAsm Start";
40       BaseTAI::InlineAsmEnd = "# InlineAsm End";
41     }
42   };
43   
44   struct SPULinuxTargetAsmInfo : public SPUTargetAsmInfo<ELFTargetAsmInfo> {
45     explicit SPULinuxTargetAsmInfo(const SPUTargetMachine &TM);
46     virtual unsigned PreferredEHDataFormat(DwarfEncoding::Target Reason,
47                                            bool Global) const;
48   };
49 } // namespace llvm
50
51 #endif /* SPUTARGETASMINFO_H */