1 //===-- NVPTXMCAsmInfo.cpp - NVPTX asm properties -------------------------===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 // This file contains the declarations of the NVPTXMCAsmInfo properties.
11 //===----------------------------------------------------------------------===//
13 #include "NVPTXMCAsmInfo.h"
14 #include "llvm/ADT/Triple.h"
18 void NVPTXMCAsmInfo::anchor() {}
20 NVPTXMCAsmInfo::NVPTXMCAsmInfo(const Triple
&TheTriple
) {
21 if (TheTriple
.getArch() == Triple::nvptx64
) {
22 CodePointerSize
= CalleeSaveStackSlotSize
= 8;
27 HasSingleParameterDotFile
= false;
29 InlineAsmStart
= " begin inline asm";
30 InlineAsmEnd
= " end inline asm";
32 SupportsDebugInformation
= true;
33 // PTX does not allow .align on functions.
34 HasFunctionAlignment
= false;
35 HasDotTypeDotSizeDirective
= false;
36 // PTX does not allow .hidden or .protected
37 HiddenDeclarationVisibilityAttr
= HiddenVisibilityAttr
= MCSA_Invalid
;
38 ProtectedVisibilityAttr
= MCSA_Invalid
;
40 Data8bitsDirective
= ".b8 ";
41 Data16bitsDirective
= nullptr; // not supported
42 Data32bitsDirective
= ".b32 ";
43 Data64bitsDirective
= ".b64 ";
44 ZeroDirective
= ".b8";
45 AsciiDirective
= nullptr; // not supported
46 AscizDirective
= nullptr; // not supported
47 SupportsQuotedNames
= false;
48 SupportsExtendedDwarfLocDirective
= false;
50 // @TODO: Can we just disable this?
51 WeakDirective
= "\t// .weak\t";
52 GlobalDirective
= "\t// .globl\t";