15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===-- NVPTXMCAsmInfo.cpp - NVPTX asm properties -------------------------===//
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//                     The LLVM Compiler Infrastructure
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file is distributed under the University of Illinois Open Source
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// License. See LICENSE.TXT for details.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)//
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// This file contains the declarations of the NVPTXMCAsmInfo properties.
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)//
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "NVPTXMCAsmInfo.h"
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "llvm/ADT/Triple.h"
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "llvm/Support/CommandLine.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using namespace llvm;
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// -debug-compile - Command line option to inform opt and llc passes to
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// compile for debugging
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static cl::opt<bool> CompileForDebugging("debug-compile",
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                         cl::desc("Compile for debugging"),
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                         cl::Hidden, cl::init(false));
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void NVPTXMCAsmInfo::anchor() {}
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NVPTXMCAsmInfo::NVPTXMCAsmInfo(const StringRef &TT) {
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Triple TheTriple(TT);
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (TheTriple.getArch() == Triple::nvptx64) {
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    PointerSize = CalleeSaveStackSlotSize = 8;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CommentString = "//";
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  HasSetDirective = false;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  HasSingleParameterDotFile = false;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InlineAsmStart = " inline asm";
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InlineAsmEnd = " inline asm";
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SupportsDebugInformation = CompileForDebugging;
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  HasDotTypeDotSizeDirective = false;
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Data8bitsDirective = " .b8 ";
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Data16bitsDirective = " .b16 ";
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Data32bitsDirective = " .b32 ";
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Data64bitsDirective = " .b64 ";
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ZeroDirective = " .b8";
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AsciiDirective = " .b8";
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AscizDirective = " .b8";
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // @TODO: Can we just disable this?
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GlobalDirective = "\t// .globl\t";
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)