LLVM
20.0.0git
lib
Target
AVR
MCTargetDesc
AVRMCELFStreamer.cpp
Go to the documentation of this file.
1
//===--------- AVRMCELFStreamer.cpp - AVR subclass of MCELFStreamer -------===//
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 is a stub that parses a MCInst bundle and passes the
10
// instructions on to the real streamer.
11
//
12
//===----------------------------------------------------------------------===//
13
#include "
MCTargetDesc/AVRMCELFStreamer.h
"
14
#include "
llvm/MC/MCContext.h
"
15
#include "
llvm/MC/MCExpr.h
"
16
#include "
llvm/MC/MCObjectWriter.h
"
17
#include "
llvm/MC/MCSymbol.h
"
18
19
#define DEBUG_TYPE "avrmcelfstreamer"
20
21
using namespace
llvm
;
22
23
void
AVRMCELFStreamer::emitValueForModiferKind
(
24
const
MCSymbol
*
Sym
,
unsigned
SizeInBytes,
SMLoc
Loc,
25
AVRMCExpr::VariantKind
ModifierKind) {
26
MCSymbolRefExpr::VariantKind
Kind =
MCSymbolRefExpr::VK_AVR_NONE
;
27
if
(ModifierKind ==
AVRMCExpr::VK_AVR_None
) {
28
Kind =
MCSymbolRefExpr::VK_AVR_DIFF8
;
29
if
(SizeInBytes ==
SIZE_LONG
)
30
Kind =
MCSymbolRefExpr::VK_AVR_DIFF32
;
31
else
if
(SizeInBytes ==
SIZE_WORD
)
32
Kind =
MCSymbolRefExpr::VK_AVR_DIFF16
;
33
}
else
if
(ModifierKind ==
AVRMCExpr::VK_AVR_LO8
)
34
Kind =
MCSymbolRefExpr::VK_AVR_LO8
;
35
else
if
(ModifierKind ==
AVRMCExpr::VK_AVR_HI8
)
36
Kind =
MCSymbolRefExpr::VK_AVR_HI8
;
37
else
if
(ModifierKind ==
AVRMCExpr::VK_AVR_HH8
)
38
Kind =
MCSymbolRefExpr::VK_AVR_HLO8
;
39
MCELFStreamer::emitValue
(
MCSymbolRefExpr::create
(
Sym
, Kind,
getContext
()),
40
SizeInBytes, Loc);
41
}
42
43
namespace
llvm
{
44
MCStreamer
*
createAVRELFStreamer
(
Triple
const
&TT,
MCContext
&Context,
45
std::unique_ptr<MCAsmBackend> MAB,
46
std::unique_ptr<MCObjectWriter> OW,
47
std::unique_ptr<MCCodeEmitter> CE) {
48
return
new
AVRMCELFStreamer
(Context, std::move(MAB), std::move(OW),
49
std::move(CE));
50
}
51
52
}
// end namespace llvm
AVRMCELFStreamer.h
Sym
Symbol * Sym
Definition:
ELF_riscv.cpp:479
MCContext.h
MCExpr.h
MCObjectWriter.h
MCSymbol.h
llvm::AVRMCELFStreamer
Definition:
AVRMCELFStreamer.h:25
llvm::AVRMCELFStreamer::emitValueForModiferKind
void emitValueForModiferKind(const MCSymbol *Sym, unsigned SizeInBytes, SMLoc Loc=SMLoc(), AVRMCExpr::VariantKind ModifierKind=AVRMCExpr::VK_AVR_None)
Definition:
AVRMCELFStreamer.cpp:23
llvm::AVRMCExpr::VariantKind
VariantKind
Specifies the type of an expression.
Definition:
AVRMCExpr.h:22
llvm::AVRMCExpr::VK_AVR_LO8
@ VK_AVR_LO8
Corresponds to lo8().
Definition:
AVRMCExpr.h:26
llvm::AVRMCExpr::VK_AVR_None
@ VK_AVR_None
Definition:
AVRMCExpr.h:23
llvm::AVRMCExpr::VK_AVR_HH8
@ VK_AVR_HH8
Corresponds to hlo8() and hh8().
Definition:
AVRMCExpr.h:27
llvm::AVRMCExpr::VK_AVR_HI8
@ VK_AVR_HI8
Corresponds to hi8().
Definition:
AVRMCExpr.h:25
llvm::MCContext
Context object for machine code objects.
Definition:
MCContext.h:83
llvm::MCStreamer
Streaming machine code generation interface.
Definition:
MCStreamer.h:213
llvm::MCStreamer::getContext
MCContext & getContext() const
Definition:
MCStreamer.h:300
llvm::MCStreamer::emitValue
void emitValue(const MCExpr *Value, unsigned Size, SMLoc Loc=SMLoc())
Definition:
MCStreamer.cpp:179
llvm::MCSymbolRefExpr::VariantKind
VariantKind
Definition:
MCExpr.h:194
llvm::MCSymbolRefExpr::VK_AVR_NONE
@ VK_AVR_NONE
Definition:
MCExpr.h:246
llvm::MCSymbolRefExpr::VK_AVR_DIFF8
@ VK_AVR_DIFF8
Definition:
MCExpr.h:250
llvm::MCSymbolRefExpr::VK_AVR_DIFF16
@ VK_AVR_DIFF16
Definition:
MCExpr.h:251
llvm::MCSymbolRefExpr::VK_AVR_LO8
@ VK_AVR_LO8
Definition:
MCExpr.h:247
llvm::MCSymbolRefExpr::VK_AVR_DIFF32
@ VK_AVR_DIFF32
Definition:
MCExpr.h:252
llvm::MCSymbolRefExpr::VK_AVR_HLO8
@ VK_AVR_HLO8
Definition:
MCExpr.h:249
llvm::MCSymbolRefExpr::VK_AVR_HI8
@ VK_AVR_HI8
Definition:
MCExpr.h:248
llvm::MCSymbolRefExpr::create
static const MCSymbolRefExpr * create(const MCSymbol *Symbol, MCContext &Ctx)
Definition:
MCExpr.h:398
llvm::MCSymbol
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
Definition:
MCSymbol.h:41
llvm::SMLoc
Represents a location in source code.
Definition:
SMLoc.h:23
llvm::Triple
Triple - Helper class for working with autoconf configuration names.
Definition:
Triple.h:44
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition:
AddressRanges.h:18
llvm::createAVRELFStreamer
MCStreamer * createAVRELFStreamer(Triple const &TT, MCContext &Context, std::unique_ptr< MCAsmBackend > MAB, std::unique_ptr< MCObjectWriter > OW, std::unique_ptr< MCCodeEmitter > CE)
Definition:
AVRMCELFStreamer.cpp:44
llvm::SIZE_WORD
const int SIZE_WORD
Definition:
AVRMCELFStreamer.h:23
llvm::SIZE_LONG
const int SIZE_LONG
Definition:
AVRMCELFStreamer.h:22
Generated on Sun Dec 22 2024 01:07:26 for LLVM by
1.9.6