| //===-- MipsMCAsmInfo.cpp - Mips 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 MipsMCAsmInfo properties. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #include "MipsMCAsmInfo.h" |
| #include "llvm/ADT/Triple.h" |
| |
| using namespace llvm; |
| |
| void MipsMCAsmInfo::anchor() { } |
| |
| MipsMCAsmInfo::MipsMCAsmInfo(const Triple &TheTriple) { |
| IsLittleEndian = TheTriple.isLittleEndian(); |
| |
| if (TheTriple.isMIPS64() && TheTriple.getEnvironment() != Triple::GNUABIN32) |
| CodePointerSize = CalleeSaveStackSlotSize = 8; |
| |
| // FIXME: This condition isn't quite right but it's the best we can do until |
| // this object can identify the ABI. It will misbehave when using O32 |
| // on a mips64*-* triple. |
| if (TheTriple.isMIPS32()) { |
| PrivateGlobalPrefix = "$"; |
| PrivateLabelPrefix = "$"; |
| } |
| |
| AlignmentIsInBytes = false; |
| Data16bitsDirective = "\t.2byte\t"; |
| Data32bitsDirective = "\t.4byte\t"; |
| Data64bitsDirective = "\t.8byte\t"; |
| CommentString = "#"; |
| ZeroDirective = "\t.space\t"; |
| GPRel32Directive = "\t.gpword\t"; |
| GPRel64Directive = "\t.gpdword\t"; |
| DTPRel32Directive = "\t.dtprelword\t"; |
| DTPRel64Directive = "\t.dtpreldword\t"; |
| TPRel32Directive = "\t.tprelword\t"; |
| TPRel64Directive = "\t.tpreldword\t"; |
| UseAssignmentForEHBegin = true; |
| SupportsDebugInformation = true; |
| ExceptionsType = ExceptionHandling::DwarfCFI; |
| DwarfRegNumForCFI = true; |
| HasMipsExpressions = true; |
| UseIntegratedAssembler = true; |
| } |