LLVM: lib/Target/Sparc/MCTargetDesc/SparcMCExpr.cpp Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

21

22using namespace llvm;

23

24#define DEBUG_TYPE "sparcmcexpr"

25

30}

31

33

35

38

39 if (closeParen)

40 OS << ')';

41}

42

44{

45 switch (Kind) {

55

58

89 }

91}

92

94{

136}

137

139 switch (Kind) {

140 default: llvm_unreachable("Unhandled SparcMCExpr::VariantKind");

180 }

181}

182

187}

188

190 switch (Expr->getKind()) {

193 break;

194

196 break;

197

199 const MCBinaryExpr *BE = cast(Expr);

202 break;

203 }

204

206 const MCSymbolRefExpr &SymRef = *cast(Expr);

208 break;

209 }

210

213 break;

214 }

215

216}

217

220 default: return;

223

224

225

226 MCSymbol *Symbol = Asm.getContext().getOrCreateSymbol("__tls_get_addr");

227 Asm.registerSymbol(*Symbol);

228 auto ELFSymbol = cast(Symbol);

229 if (!ELFSymbol->isBindingSet())

231 [[fallthrough]];

232 }

249 }

251}

252

255}

static void fixELFSymbolsInTLSFixupsImpl(const MCExpr *Expr, MCAssembler &Asm)

PowerPC TLS Dynamic Call Fixup

This class is intended to be used as a base class for asm properties and features specific to the tar...

Binary assembler expressions.

const MCExpr * getLHS() const

Get the left-hand side expression of the binary operator.

const MCExpr * getRHS() const

Get the right-hand side expression of the binary operator.

Context object for machine code objects.

Base class for the full range of assembler expressions which are needed for parsing.

@ Unary

Unary expressions.

@ Constant

Constant expressions.

@ SymbolRef

References to labels and assigned expressions.

@ Target

Target specific expression.

@ Binary

Binary expressions.

bool evaluateAsRelocatable(MCValue &Res, const MCAssembler *Asm, const MCFixup *Fixup) const

Try to evaluate the expression to a relocatable value, i.e.

void print(raw_ostream &OS, const MCAsmInfo *MAI, bool InParens=false) const

Encode information on a single operation to perform on a byte sequence (e.g., an encoded instruction)...

Streaming machine code generation interface.

void visitUsedExpr(const MCExpr &Expr)

Represent a reference to a symbol from inside an expression.

const MCSymbol & getSymbol() const

MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...

This represents an "assembler immediate".

const MCExpr * getSubExpr() const

getSubExpr - Get the child of this expression.

bool evaluateAsRelocatableImpl(MCValue &Res, const MCAssembler *Asm, const MCFixup *Fixup) const override

static const SparcMCExpr * create(VariantKind Kind, const MCExpr *Expr, MCContext &Ctx)

Sparc::Fixups getFixupKind() const

getFixupKind - Get the fixup kind of this expression.

void visitUsedExpr(MCStreamer &Streamer) const override

static VariantKind parseVariantKind(StringRef name)

static bool printVariantKind(raw_ostream &OS, VariantKind Kind)

void fixELFSymbolsInTLSFixups(MCAssembler &Asm) const override

VariantKind getKind() const

getOpcode - Get the kind of this expression.

void printImpl(raw_ostream &OS, const MCAsmInfo *MAI) const override

StringRef - Represent a constant reference to a string, i.e.

A switch()-like statement whose cases are string literals.

StringSwitch & Case(StringLiteral S, T Value)

This class implements an extremely fast bulk output stream that can only output to a stream.

#define llvm_unreachable(msg)

Marks that the current location is not supposed to be reachable.

@ fixup_sparc_lo10

fixup_sparc_lo10 - 10-bit fixup corresponding to lo(foo)

@ fixup_sparc_lm

fixup_sparc_lm - 22-bit fixup corresponding to lm(foo)

@ fixup_sparc_lox10

13-bit fixup corresponding to lox(foo)

@ fixup_sparc_hi22

fixup_sparc_hi22 - 22-bit fixup corresponding to hi(foo) for sethi

@ fixup_sparc_tls_gd_call

@ fixup_sparc_tls_ldo_lox10

@ fixup_sparc_tls_ldm_add

@ fixup_sparc_tls_le_hix22

@ fixup_sparc_m44

fixup_sparc_m44 - 10-bit fixup corresponding to m44(foo)

@ fixup_sparc_tls_ie_hi22

@ fixup_sparc_gotdata_hix22

22-bit fixup corresponding to gdop_hix22(foo)

@ fixup_sparc_hh

fixup_sparc_hh - 22-bit fixup corresponding to hh(foo)

@ fixup_sparc_got10

fixup_sparc_got10 - 10-bit fixup corresponding to got10(foo)

@ fixup_sparc_tls_le_lox10

@ fixup_sparc_got13

fixup_sparc_got13 - 13-bit fixup corresponding to got13(foo)

@ fixup_sparc_tls_ldo_hix22

@ fixup_sparc_tls_ldo_add

@ fixup_sparc_gotdata_op

32-bit fixup corresponding to gdop(foo)

@ fixup_sparc_tls_gd_hi22

fixups for Thread Local Storage

@ fixup_sparc_13

fixup_sparc_13 - 13-bit fixup

@ fixup_sparc_hix22

22-bit fixup corresponding to hix(foo)

@ fixup_sparc_tls_gd_lo10

@ fixup_sparc_got22

fixup_sparc_got22 - 22-bit fixup corresponding to got22(foo)

@ fixup_sparc_h44

fixup_sparc_h44 - 22-bit fixup corresponding to h44(foo)

@ fixup_sparc_tls_ldm_lo10

@ fixup_sparc_tls_ldm_call

@ fixup_sparc_tls_ie_lo10

@ fixup_sparc_pc22

fixup_sparc_pc22 - 22-bit fixup corresponding to pc22(foo)

@ fixup_sparc_tls_ldm_hi22

@ fixup_sparc_l44

fixup_sparc_l44 - 12-bit fixup corresponding to l44(foo)

@ fixup_sparc_gotdata_lox10

13-bit fixup corresponding to gdop_lox10(foo)

@ fixup_sparc_pc10

fixup_sparc_pc10 - 10-bit fixup corresponding to pc10(foo)

@ fixup_sparc_hm

fixup_sparc_hm - 10-bit fixup corresponding to hm(foo)

@ fixup_sparc_wplt30

fixup_sparc_wplt30

This is an optimization pass for GlobalISel generic memory operations.