xref: /aosp_15_r20/external/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCAsmInfo.cpp (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker //===-- PPCMCAsmInfo.cpp - PPC asm properties -----------------------------===//
2*9880d681SAndroid Build Coastguard Worker //
3*9880d681SAndroid Build Coastguard Worker //                     The LLVM Compiler Infrastructure
4*9880d681SAndroid Build Coastguard Worker //
5*9880d681SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source
6*9880d681SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details.
7*9880d681SAndroid Build Coastguard Worker //
8*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
9*9880d681SAndroid Build Coastguard Worker //
10*9880d681SAndroid Build Coastguard Worker // This file contains the declarations of the MCAsmInfoDarwin properties.
11*9880d681SAndroid Build Coastguard Worker //
12*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
13*9880d681SAndroid Build Coastguard Worker 
14*9880d681SAndroid Build Coastguard Worker #include "PPCMCAsmInfo.h"
15*9880d681SAndroid Build Coastguard Worker #include "llvm/ADT/Triple.h"
16*9880d681SAndroid Build Coastguard Worker 
17*9880d681SAndroid Build Coastguard Worker using namespace llvm;
18*9880d681SAndroid Build Coastguard Worker 
anchor()19*9880d681SAndroid Build Coastguard Worker void PPCMCAsmInfoDarwin::anchor() { }
20*9880d681SAndroid Build Coastguard Worker 
PPCMCAsmInfoDarwin(bool is64Bit,const Triple & T)21*9880d681SAndroid Build Coastguard Worker PPCMCAsmInfoDarwin::PPCMCAsmInfoDarwin(bool is64Bit, const Triple& T) {
22*9880d681SAndroid Build Coastguard Worker   if (is64Bit) {
23*9880d681SAndroid Build Coastguard Worker     PointerSize = CalleeSaveStackSlotSize = 8;
24*9880d681SAndroid Build Coastguard Worker   }
25*9880d681SAndroid Build Coastguard Worker   IsLittleEndian = false;
26*9880d681SAndroid Build Coastguard Worker 
27*9880d681SAndroid Build Coastguard Worker   CommentString = ";";
28*9880d681SAndroid Build Coastguard Worker   ExceptionsType = ExceptionHandling::DwarfCFI;
29*9880d681SAndroid Build Coastguard Worker 
30*9880d681SAndroid Build Coastguard Worker   if (!is64Bit)
31*9880d681SAndroid Build Coastguard Worker     Data64bitsDirective = nullptr; // We can't emit a 64-bit unit in PPC32 mode.
32*9880d681SAndroid Build Coastguard Worker 
33*9880d681SAndroid Build Coastguard Worker   AssemblerDialect = 1;           // New-Style mnemonics.
34*9880d681SAndroid Build Coastguard Worker   SupportsDebugInformation= true; // Debug information.
35*9880d681SAndroid Build Coastguard Worker 
36*9880d681SAndroid Build Coastguard Worker   // The installed assembler for OSX < 10.6 lacks some directives.
37*9880d681SAndroid Build Coastguard Worker   // FIXME: this should really be a check on the assembler characteristics
38*9880d681SAndroid Build Coastguard Worker   // rather than OS version
39*9880d681SAndroid Build Coastguard Worker   if (T.isMacOSX() && T.isMacOSXVersionLT(10, 6))
40*9880d681SAndroid Build Coastguard Worker     HasWeakDefCanBeHiddenDirective = false;
41*9880d681SAndroid Build Coastguard Worker 
42*9880d681SAndroid Build Coastguard Worker   UseIntegratedAssembler = true;
43*9880d681SAndroid Build Coastguard Worker }
44*9880d681SAndroid Build Coastguard Worker 
anchor()45*9880d681SAndroid Build Coastguard Worker void PPCELFMCAsmInfo::anchor() { }
46*9880d681SAndroid Build Coastguard Worker 
PPCELFMCAsmInfo(bool is64Bit,const Triple & T)47*9880d681SAndroid Build Coastguard Worker PPCELFMCAsmInfo::PPCELFMCAsmInfo(bool is64Bit, const Triple& T) {
48*9880d681SAndroid Build Coastguard Worker   // FIXME: This is not always needed. For example, it is not needed in the
49*9880d681SAndroid Build Coastguard Worker   // v2 abi.
50*9880d681SAndroid Build Coastguard Worker   NeedsLocalForSize = true;
51*9880d681SAndroid Build Coastguard Worker 
52*9880d681SAndroid Build Coastguard Worker   if (is64Bit) {
53*9880d681SAndroid Build Coastguard Worker     PointerSize = CalleeSaveStackSlotSize = 8;
54*9880d681SAndroid Build Coastguard Worker   }
55*9880d681SAndroid Build Coastguard Worker   IsLittleEndian = T.getArch() == Triple::ppc64le;
56*9880d681SAndroid Build Coastguard Worker 
57*9880d681SAndroid Build Coastguard Worker   // ".comm align is in bytes but .align is pow-2."
58*9880d681SAndroid Build Coastguard Worker   AlignmentIsInBytes = false;
59*9880d681SAndroid Build Coastguard Worker 
60*9880d681SAndroid Build Coastguard Worker   CommentString = "#";
61*9880d681SAndroid Build Coastguard Worker 
62*9880d681SAndroid Build Coastguard Worker   // Uses '.section' before '.bss' directive
63*9880d681SAndroid Build Coastguard Worker   UsesELFSectionDirectiveForBSS = true;
64*9880d681SAndroid Build Coastguard Worker 
65*9880d681SAndroid Build Coastguard Worker   // Debug Information
66*9880d681SAndroid Build Coastguard Worker   SupportsDebugInformation = true;
67*9880d681SAndroid Build Coastguard Worker 
68*9880d681SAndroid Build Coastguard Worker   DollarIsPC = true;
69*9880d681SAndroid Build Coastguard Worker 
70*9880d681SAndroid Build Coastguard Worker   // Set up DWARF directives
71*9880d681SAndroid Build Coastguard Worker   MinInstAlignment = 4;
72*9880d681SAndroid Build Coastguard Worker 
73*9880d681SAndroid Build Coastguard Worker   // Exceptions handling
74*9880d681SAndroid Build Coastguard Worker   ExceptionsType = ExceptionHandling::DwarfCFI;
75*9880d681SAndroid Build Coastguard Worker 
76*9880d681SAndroid Build Coastguard Worker   ZeroDirective = "\t.space\t";
77*9880d681SAndroid Build Coastguard Worker   Data64bitsDirective = is64Bit ? "\t.quad\t" : nullptr;
78*9880d681SAndroid Build Coastguard Worker   AssemblerDialect = 1;           // New-Style mnemonics.
79*9880d681SAndroid Build Coastguard Worker   LCOMMDirectiveAlignmentType = LCOMM::ByteAlignment;
80*9880d681SAndroid Build Coastguard Worker 
81*9880d681SAndroid Build Coastguard Worker   UseIntegratedAssembler = true;
82*9880d681SAndroid Build Coastguard Worker }
83*9880d681SAndroid Build Coastguard Worker 
84