NVPTXMCAsmInfo.cpp revision 6e53180db120b30f600ac31611a9dd47ef7f4921
1//===-- NVPTXMCAsmInfo.cpp - NVPTX asm properties -------------------------===//
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 NVPTXMCAsmInfo properties.
11//
12//===----------------------------------------------------------------------===//
13
14#include "NVPTXMCAsmInfo.h"
15#include "llvm/ADT/Triple.h"
16#include "llvm/Support/CommandLine.h"
17
18using namespace llvm;
19
20bool CompileForDebugging;
21
22// -debug-compile - Command line option to inform opt and llc passes to
23// compile for debugging
24static cl::opt<bool, true>
25Debug("debug-compile", cl::desc("Compile for debugging"), cl::Hidden,
26      cl::location(CompileForDebugging), cl::init(false));
27
28void NVPTXMCAsmInfo::anchor() {}
29
30NVPTXMCAsmInfo::NVPTXMCAsmInfo(const StringRef &TT) {
31  Triple TheTriple(TT);
32  if (TheTriple.getArch() == Triple::nvptx64) {
33    PointerSize = CalleeSaveStackSlotSize = 8;
34  }
35
36  CommentString = "//";
37
38  PrivateGlobalPrefix = "$L__";
39
40  AllowPeriodsInName = false;
41
42  HasSetDirective = false;
43
44  HasSingleParameterDotFile = false;
45
46  InlineAsmStart = " inline asm";
47  InlineAsmEnd = " inline asm";
48
49  SupportsDebugInformation = CompileForDebugging;
50  HasDotTypeDotSizeDirective = false;
51
52  Data8bitsDirective = " .b8 ";
53  Data16bitsDirective = " .b16 ";
54  Data32bitsDirective = " .b32 ";
55  Data64bitsDirective = " .b64 ";
56  PrivateGlobalPrefix = "";
57  ZeroDirective = " .b8";
58  AsciiDirective = " .b8";
59  AscizDirective = " .b8";
60
61  // @TODO: Can we just disable this?
62  GlobalDirective = "\t// .globl\t";
63}
64