Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/llvm/lib/Target/AVR/MCTargetDesc/AVRAsmBackend.h
35294 views
1
//===-- AVRAsmBackend.h - AVR Asm Backend --------------------------------===//
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
// \file The AVR assembly backend implementation.
10
//
11
//===----------------------------------------------------------------------===//
12
//
13
14
#ifndef LLVM_AVR_ASM_BACKEND_H
15
#define LLVM_AVR_ASM_BACKEND_H
16
17
#include "MCTargetDesc/AVRFixupKinds.h"
18
19
#include "llvm/MC/MCAsmBackend.h"
20
#include "llvm/TargetParser/Triple.h"
21
22
namespace llvm {
23
24
class MCAssembler;
25
class MCContext;
26
struct MCFixupKindInfo;
27
28
/// Utilities for manipulating generated AVR machine code.
29
class AVRAsmBackend : public MCAsmBackend {
30
public:
31
AVRAsmBackend(Triple::OSType OSType)
32
: MCAsmBackend(llvm::endianness::little), OSType(OSType) {}
33
34
void adjustFixupValue(const MCFixup &Fixup, const MCValue &Target,
35
uint64_t &Value, MCContext *Ctx = nullptr) const;
36
37
std::unique_ptr<MCObjectTargetWriter>
38
createObjectTargetWriter() const override;
39
40
void applyFixup(const MCAssembler &Asm, const MCFixup &Fixup,
41
const MCValue &Target, MutableArrayRef<char> Data,
42
uint64_t Value, bool IsResolved,
43
const MCSubtargetInfo *STI) const override;
44
45
std::optional<MCFixupKind> getFixupKind(StringRef Name) const override;
46
const MCFixupKindInfo &getFixupKindInfo(MCFixupKind Kind) const override;
47
48
unsigned getNumFixupKinds() const override {
49
return AVR::NumTargetFixupKinds;
50
}
51
52
bool writeNopData(raw_ostream &OS, uint64_t Count,
53
const MCSubtargetInfo *STI) const override;
54
55
bool shouldForceRelocation(const MCAssembler &Asm, const MCFixup &Fixup,
56
const MCValue &Target,
57
const MCSubtargetInfo *STI) override;
58
59
private:
60
Triple::OSType OSType;
61
};
62
63
} // end namespace llvm
64
65
#endif // LLVM_AVR_ASM_BACKEND_H
66
67