Thanks to visit codestin.com
Credit goes to llvm.org

LLVM 22.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::Specifier ModifierKind) {
27 if (ModifierKind == AVR::S_AVR_NONE) {
28 Kind = AVR::S_DIFF8;
29 if (SizeInBytes == SIZE_LONG)
30 Kind = AVR::S_DIFF32;
31 else if (SizeInBytes == SIZE_WORD)
32 Kind = AVR::S_DIFF16;
33 } else if (ModifierKind == AVR::S_LO8)
34 Kind = AVR::S_LO8;
35 else if (ModifierKind == AVR::S_HI8)
36 Kind = AVR::S_HI8;
37 else if (ModifierKind == AVR::S_HH8)
38 Kind = AVR::S_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
void emitValueForModiferKind(const MCSymbol *Sym, unsigned SizeInBytes, SMLoc Loc=SMLoc(), AVRMCExpr::Specifier ModifierKind=AVR::S_AVR_NONE)
Context object for machine code objects.
Definition MCContext.h:83
Streaming machine code generation interface.
Definition MCStreamer.h:220
MCContext & getContext() const
Definition MCStreamer.h:314
void emitValue(const MCExpr *Value, unsigned Size, SMLoc Loc=SMLoc())
static const MCSymbolRefExpr * create(const MCSymbol *Symbol, MCContext &Ctx, SMLoc Loc=SMLoc())
Definition MCExpr.h:214
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
Definition MCSymbol.h:42
Represents a location in source code.
Definition SMLoc.h:23
Triple - Helper class for working with autoconf configuration names.
Definition Triple.h:47
@ S_LO8
Corresponds to lo8().
@ S_HH8
Corresponds to hlo8() and hh8().
@ S_HI8
Corresponds to hi8().
This is an optimization pass for GlobalISel generic memory operations.
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