1 //===-- NVPTXMCAsmInfo.cpp - NVPTX asm properties -------------------------===//
2 //
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
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This file contains the declarations of the NVPTXMCAsmInfo properties.
10 //
11 //===----------------------------------------------------------------------===//
12 
13 #include "NVPTXMCAsmInfo.h"
14 #include "llvm/TargetParser/Triple.h"
15 
16 using namespace llvm;
17 
18 void NVPTXMCAsmInfo::anchor() {}
19 
20 NVPTXMCAsmInfo::NVPTXMCAsmInfo(const Triple &TheTriple,
21                                const MCTargetOptions &Options) {
22   if (TheTriple.getArch() == Triple::nvptx64) {
23     CodePointerSize = CalleeSaveStackSlotSize = 8;
24   }
25 
26   CommentString = "//";
27 
28   HasSingleParameterDotFile = false;
29 
30   InlineAsmStart = " begin inline asm";
31   InlineAsmEnd = " end inline asm";
32 
33   SupportsDebugInformation = true;
34   // PTX does not allow .align on functions.
35   HasFunctionAlignment = false;
36   HasDotTypeDotSizeDirective = false;
37   // PTX does not allow .hidden or .protected
38   HiddenDeclarationVisibilityAttr = HiddenVisibilityAttr = MCSA_Invalid;
39   ProtectedVisibilityAttr = MCSA_Invalid;
40 
41   Data8bitsDirective = ".b8 ";
42   Data16bitsDirective = nullptr; // not supported
43   Data32bitsDirective = ".b32 ";
44   Data64bitsDirective = ".b64 ";
45   ZeroDirective = ".b8";
46   AsciiDirective = nullptr; // not supported
47   AscizDirective = nullptr; // not supported
48   SupportsQuotedNames = false;
49   SupportsExtendedDwarfLocDirective = false;
50   SupportsSignedData = false;
51 
52   PrivateGlobalPrefix = "$L__";
53   PrivateLabelPrefix = PrivateGlobalPrefix;
54 
55   // @TODO: Can we just disable this?
56   WeakDirective = "\t// .weak\t";
57   GlobalDirective = "\t// .globl\t";
58 
59   UseIntegratedAssembler = false;
60 
61   // Avoid using parens for identifiers starting with $ - ptxas does
62   // not expect them.
63   UseParensForDollarSignNames = false;
64 
65   // ptxas does not support DWARF `.file fileno directory filename'
66   // syntax as of v11.X.
67   EnableDwarfFileDirectoryDefault = false;
68 }
69