LLVM 22.0.0git
PPCMCAsmInfo.h
Go to the documentation of this file.
1//===-- PPCMCAsmInfo.h - PPC asm properties --------------------*- C++ -*--===//
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 PowerPC MCAsmInfo classes.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef LLVM_LIB_TARGET_POWERPC_MCTARGETDESC_PPCMCASMINFO_H
14#define LLVM_LIB_TARGET_POWERPC_MCTARGETDESC_PPCMCASMINFO_H
15
18#include "llvm/MC/MCExpr.h"
19#include "llvm/MC/MCValue.h"
20
21namespace llvm {
22class Triple;
23
25 void anchor() override;
26
27public:
28 explicit PPCELFMCAsmInfo(bool is64Bit, const Triple &);
30 const MCSpecifierExpr &Expr) const override;
32 const MCAssembler *Asm) const override;
33};
34
36public:
37 explicit PPCXCOFFMCAsmInfo(bool is64Bit, const Triple &);
39 const MCSpecifierExpr &Expr) const override;
41 const MCAssembler *Asm) const override;
42};
43
44namespace PPC {
47
57
58 S_AIX_TLSGD, // symbol@gd
59 S_AIX_TLSGDM, // symbol@m
60 S_AIX_TLSIE, // symbol@ie
61 S_AIX_TLSLD, // symbol@ld
62 S_AIX_TLSLE, // symbol@le
63 S_AIX_TLSML, // symbol@ml
64 S_DTPMOD, // symbol@dtpmod
65 S_DTPREL, // symbol@dprel
66 S_DTPREL_HA, // symbol@dtprel@ha
67 S_DTPREL_HI, // symbol@dtprel@h
68 S_DTPREL_HIGH, // symbol@dtprel@high
69 S_DTPREL_HIGHA, // symbol@dtprel@higha
70 S_DTPREL_HIGHER, // symbol@dtprel@higher
71 S_DTPREL_HIGHERA, // symbol@dtprel@highera
72 S_DTPREL_HIGHEST, // symbol@dtprel@highest
73 S_DTPREL_HIGHESTA, // symbol@dtprel@highesta
74 S_DTPREL_LO, // symbol@dtprel@l
75 S_GOT, // symbol@got
76 S_GOT_DTPREL, // symbol@got@dtprel
77 S_GOT_DTPREL_HA, // symbol@got@dtprel@ha
78 S_GOT_DTPREL_HI, // symbol@got@dtprel@h
79 S_GOT_DTPREL_LO, // symbol@got@dtprel@l
80 S_GOT_HA, // symbol@got@ha
81 S_GOT_HI, // symbol@got@h
82 S_GOT_LO, // symbol@got@l
83 S_GOT_PCREL, // symbol@got@pcrel
84 S_GOT_TLSGD, // symbol@got@tlsgd
85 S_GOT_TLSGD_HA, // symbol@got@tlsgd@ha
86 S_GOT_TLSGD_HI, // symbol@got@tlsgd@h
87 S_GOT_TLSGD_LO, // symbol@got@tlsgd@l
88 S_GOT_TLSGD_PCREL, // symbol@got@tlsgd@pcrel
89 S_GOT_TLSLD, // symbol@got@tlsld
90 S_GOT_TLSLD_HA, // symbol@got@tlsld@ha
91 S_GOT_TLSLD_HI, // symbol@got@tlsld@h
92 S_GOT_TLSLD_LO, // symbol@got@tlsld@l
93 S_GOT_TLSLD_PCREL, // symbol@got@tlsld@pcrel
94 S_GOT_TPREL, // symbol@got@tprel
95 S_GOT_TPREL_HA, // symbol@got@tprel@ha
96 S_GOT_TPREL_HI, // symbol@got@tprel@h
97 S_GOT_TPREL_LO, // symbol@got@tprel@l
98 S_GOT_TPREL_PCREL, // symbol@got@tprel@pcrel
99 S_L, // symbol@l
100 S_LOCAL, // symbol@local
101 S_NOTOC, // symbol@notoc
103 S_PCREL_OPT, // .reloc expr, R_PPC64_PCREL_OPT, expr
104 S_PLT, // symbol@plt
105 S_TLS, // symbol@tls
106 S_TLSGD, // symbol@tlsgd
107 S_TLSLD, // symbol@tlsld
108 S_TLS_PCREL, // symbol@tls@pcrel
109 S_TOC, // symbol@toc
110 S_TOCBASE, // symbol@tocbase
111 S_TOC_HA, // symbol@toc@ha
112 S_TOC_HI, // symbol@toc@h
113 S_TOC_LO, // symbol@toc@l
114 S_TPREL, // symbol@tprel
115 S_TPREL_HA, // symbol@tprel@ha
116 S_TPREL_HI, // symbol@tprel@h
117 S_TPREL_HIGH, // symbol@tprel@high
118 S_TPREL_HIGHA, // symbol@tprel@higha
119 S_TPREL_HIGHER, // symbol@tprel@higher
120 S_TPREL_HIGHERA, // symbol@tprel@highera
121 S_TPREL_HIGHEST, // symbol@tprel@highest
122 S_TPREL_HIGHESTA, // symbol@tprel@highesta
123 S_TPREL_LO, // symbol@tprel@l
124 S_U, // symbol@u
125};
126
127bool evaluateAsConstant(const MCSpecifierExpr &Expr, int64_t &Res);
128}
129
130namespace PPCMCExpr {
132}
133
134static inline uint16_t getSpecifier(const MCSymbolRefExpr *SRE) {
135 return SRE->getKind();
136}
137} // namespace llvm
138
139#endif
raw_pwrite_stream & OS
static bool is64Bit(const char *name)
Extension point for target-specific MCExpr subclasses with a relocation specifier,...
Definition: MCExpr.h:495
Represent a reference to a symbol from inside an expression.
Definition: MCExpr.h:190
VariantKind getKind() const
Definition: MCExpr.h:232
bool evaluateAsRelocatableImpl(const MCSpecifierExpr &Expr, MCValue &Res, const MCAssembler *Asm) const override
void printSpecifierExpr(raw_ostream &OS, const MCSpecifierExpr &Expr) const override
bool evaluateAsRelocatableImpl(const MCSpecifierExpr &Expr, MCValue &Res, const MCAssembler *Asm) const override
void printSpecifierExpr(raw_ostream &OS, const MCSpecifierExpr &Expr) const override
Triple - Helper class for working with autoconf configuration names.
Definition: Triple.h:47
This class implements an extremely fast bulk output stream that can only output to a stream.
Definition: raw_ostream.h:53
bool evaluateAsConstant(const MCSpecifierExpr &Expr, int64_t &Res)
@ S_TPREL_HIGHESTA
Definition: PPCMCAsmInfo.h:122
@ S_GOT_TLSGD_PCREL
Definition: PPCMCAsmInfo.h:88
@ S_GOT_TLSGD_LO
Definition: PPCMCAsmInfo.h:87
@ S_DTPREL_HIGHA
Definition: PPCMCAsmInfo.h:69
@ S_GOT_TPREL_PCREL
Definition: PPCMCAsmInfo.h:98
@ S_GOT_TLSLD_PCREL
Definition: PPCMCAsmInfo.h:93
@ S_DTPREL_HIGHEST
Definition: PPCMCAsmInfo.h:72
@ S_GOT_TLSLD_LO
Definition: PPCMCAsmInfo.h:92
@ S_DTPREL_HIGHESTA
Definition: PPCMCAsmInfo.h:73
@ S_GOT_TLSGD_HA
Definition: PPCMCAsmInfo.h:85
@ S_GOT_TLSGD_HI
Definition: PPCMCAsmInfo.h:86
@ S_GOT_DTPREL_HI
Definition: PPCMCAsmInfo.h:78
@ S_GOT_TLSLD_HI
Definition: PPCMCAsmInfo.h:91
@ S_GOT_TPREL_HA
Definition: PPCMCAsmInfo.h:95
@ S_GOT_DTPREL_HA
Definition: PPCMCAsmInfo.h:77
@ S_GOT_TPREL_LO
Definition: PPCMCAsmInfo.h:97
@ S_GOT_TLSLD_HA
Definition: PPCMCAsmInfo.h:90
@ S_DTPREL_HIGHER
Definition: PPCMCAsmInfo.h:70
@ S_GOT_TPREL_HI
Definition: PPCMCAsmInfo.h:96
@ S_DTPREL_HIGHERA
Definition: PPCMCAsmInfo.h:71
@ S_GOT_DTPREL_LO
Definition: PPCMCAsmInfo.h:79
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
static uint16_t getSpecifier(const MCSymbolRefExpr *SRE)
Definition: PPCMCAsmInfo.h:134