LLVM 18.0.0git
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//===----------------------------------------------------------------------===//
14#include "llvm/MC/MCContext.h"
15#include "llvm/MC/MCExpr.h"
17#include "llvm/MC/MCSymbol.h"
18
19#define DEBUG_TYPE "avrmcelfstreamer"
20
21using namespace llvm;
22
24 const MCSymbol *Sym, unsigned SizeInBytes, SMLoc Loc,
25 AVRMCExpr::VariantKind ModifierKind) {
27 if (ModifierKind == AVRMCExpr::VK_AVR_None) {
29 if (SizeInBytes == SIZE_LONG)
31 else if (SizeInBytes == SIZE_WORD)
33 } else if (ModifierKind == AVRMCExpr::VK_AVR_LO8)
35 else if (ModifierKind == AVRMCExpr::VK_AVR_HI8)
37 else if (ModifierKind == AVRMCExpr::VK_AVR_HH8)
40 SizeInBytes, Loc);
41}
42
43namespace llvm {
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
Symbol * Sym
Definition: ELF_riscv.cpp:477
LLVMContext & Context
void emitValueForModiferKind(const MCSymbol *Sym, unsigned SizeInBytes, SMLoc Loc=SMLoc(), AVRMCExpr::VariantKind ModifierKind=AVRMCExpr::VK_AVR_None)
VariantKind
Specifies the type of an expression.
Definition: AVRMCExpr.h:22
@ VK_AVR_LO8
Corresponds to lo8().
Definition: AVRMCExpr.h:26
@ VK_AVR_HH8
Corresponds to hlo8() and hh8().
Definition: AVRMCExpr.h:27
@ VK_AVR_HI8
Corresponds to hi8().
Definition: AVRMCExpr.h:25
Context object for machine code objects.
Definition: MCContext.h:76
Streaming machine code generation interface.
Definition: MCStreamer.h:212
MCContext & getContext() const
Definition: MCStreamer.h:297
void emitValue(const MCExpr *Value, unsigned Size, SMLoc Loc=SMLoc())
Definition: MCStreamer.cpp:180
static const MCSymbolRefExpr * create(const MCSymbol *Symbol, MCContext &Ctx)
Definition: MCExpr.h:389
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
Definition: MCSymbol.h:40
Represents a location in source code.
Definition: SMLoc.h:23
Triple - Helper class for working with autoconf configuration names.
Definition: Triple.h:44
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
MCStreamer * createAVRELFStreamer(Triple const &TT, MCContext &Context, std::unique_ptr< MCAsmBackend > MAB, std::unique_ptr< MCObjectWriter > OW, std::unique_ptr< MCCodeEmitter > CE)
const int SIZE_WORD
const int SIZE_LONG