PTX does not support negative values in .bNN data directives and we must typecast such values to unsigned before printing them. MCAsmInfo can now specify whether such casting is necessary for particular target. Differential Revision: https://reviews.llvm.org/D83423
58 lines
1.8 KiB
C++
58 lines
1.8 KiB
C++
//===-- NVPTXMCAsmInfo.cpp - NVPTX asm properties -------------------------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file contains the declarations of the NVPTXMCAsmInfo properties.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "NVPTXMCAsmInfo.h"
|
|
#include "llvm/ADT/Triple.h"
|
|
|
|
using namespace llvm;
|
|
|
|
void NVPTXMCAsmInfo::anchor() {}
|
|
|
|
NVPTXMCAsmInfo::NVPTXMCAsmInfo(const Triple &TheTriple,
|
|
const MCTargetOptions &Options) {
|
|
if (TheTriple.getArch() == Triple::nvptx64) {
|
|
CodePointerSize = CalleeSaveStackSlotSize = 8;
|
|
}
|
|
|
|
CommentString = "//";
|
|
|
|
HasSingleParameterDotFile = false;
|
|
|
|
InlineAsmStart = " begin inline asm";
|
|
InlineAsmEnd = " end inline asm";
|
|
|
|
SupportsDebugInformation = true;
|
|
// PTX does not allow .align on functions.
|
|
HasFunctionAlignment = false;
|
|
HasDotTypeDotSizeDirective = false;
|
|
// PTX does not allow .hidden or .protected
|
|
HiddenDeclarationVisibilityAttr = HiddenVisibilityAttr = MCSA_Invalid;
|
|
ProtectedVisibilityAttr = MCSA_Invalid;
|
|
|
|
Data8bitsDirective = ".b8 ";
|
|
Data16bitsDirective = nullptr; // not supported
|
|
Data32bitsDirective = ".b32 ";
|
|
Data64bitsDirective = ".b64 ";
|
|
ZeroDirective = ".b8";
|
|
AsciiDirective = nullptr; // not supported
|
|
AscizDirective = nullptr; // not supported
|
|
SupportsQuotedNames = false;
|
|
SupportsExtendedDwarfLocDirective = false;
|
|
SupportsSignedData = false;
|
|
|
|
// @TODO: Can we just disable this?
|
|
WeakDirective = "\t// .weak\t";
|
|
GlobalDirective = "\t// .globl\t";
|
|
|
|
UseIntegratedAssembler = false;
|
|
}
|