003 File Manager
Current Path:
/usr/src/contrib/llvm-project/llvm/lib/Target/AVR/MCTargetDesc
usr
/
src
/
contrib
/
llvm-project
/
llvm
/
lib
/
Target
/
AVR
/
MCTargetDesc
/
📁
..
📄
AVRAsmBackend.cpp
(14.86 KB)
📄
AVRAsmBackend.h
(2.26 KB)
📄
AVRELFObjectWriter.cpp
(4.75 KB)
📄
AVRELFStreamer.cpp
(2.07 KB)
📄
AVRELFStreamer.h
(779 B)
📄
AVRFixupKinds.h
(4.98 KB)
📄
AVRInstPrinter.cpp
(5.4 KB)
📄
AVRInstPrinter.h
(2.08 KB)
📄
AVRMCAsmInfo.cpp
(923 B)
📄
AVRMCAsmInfo.h
(874 B)
📄
AVRMCCodeEmitter.cpp
(9.69 KB)
📄
AVRMCCodeEmitter.h
(4.24 KB)
📄
AVRMCELFStreamer.cpp
(2.05 KB)
📄
AVRMCELFStreamer.h
(2.11 KB)
📄
AVRMCExpr.cpp
(5.79 KB)
📄
AVRMCExpr.h
(2.77 KB)
📄
AVRMCTargetDesc.cpp
(4.41 KB)
📄
AVRMCTargetDesc.h
(1.69 KB)
📄
AVRTargetStreamer.cpp
(1.49 KB)
📄
AVRTargetStreamer.h
(920 B)
Editing: AVRMCExpr.h
//===-- AVRMCExpr.h - AVR specific MC expression classes --------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLVM_AVR_MCEXPR_H #define LLVM_AVR_MCEXPR_H #include "llvm/MC/MCExpr.h" #include "MCTargetDesc/AVRFixupKinds.h" namespace llvm { /// A expression in AVR machine code. class AVRMCExpr : public MCTargetExpr { public: /// Specifies the type of an expression. enum VariantKind { VK_AVR_None, VK_AVR_HI8, ///< Corresponds to `hi8()`. VK_AVR_LO8, ///< Corresponds to `lo8()`. VK_AVR_HH8, ///< Corresponds to `hlo8() and hh8()`. VK_AVR_HHI8, ///< Corresponds to `hhi8()`. VK_AVR_PM_LO8, ///< Corresponds to `pm_lo8()`. VK_AVR_PM_HI8, ///< Corresponds to `pm_hi8()`. VK_AVR_PM_HH8, ///< Corresponds to `pm_hh8()`. VK_AVR_LO8_GS, ///< Corresponds to `lo8(gs())`. VK_AVR_HI8_GS, ///< Corresponds to `hi8(gs())`. VK_AVR_GS, ///< Corresponds to `gs()`. }; public: /// Creates an AVR machine code expression. static const AVRMCExpr *create(VariantKind Kind, const MCExpr *Expr, bool isNegated, MCContext &Ctx); /// Gets the type of the expression. VariantKind getKind() const { return Kind; } /// Gets the name of the expression. const char *getName() const; const MCExpr *getSubExpr() const { return SubExpr; } /// Gets the fixup which corresponds to the expression. AVR::Fixups getFixupKind() const; /// Evaluates the fixup as a constant value. bool evaluateAsConstant(int64_t &Result) const; bool isNegated() const { return Negated; } void setNegated(bool negated = true) { Negated = negated; } void printImpl(raw_ostream &OS, const MCAsmInfo *MAI) const override; bool evaluateAsRelocatableImpl(MCValue &Res, const MCAsmLayout *Layout, const MCFixup *Fixup) const override; void visitUsedExpr(MCStreamer &streamer) const override; MCFragment *findAssociatedFragment() const override { return getSubExpr()->findAssociatedFragment(); } void fixELFSymbolsInTLSFixups(MCAssembler &Asm) const override {} static bool classof(const MCExpr *E) { return E->getKind() == MCExpr::Target; } public: static VariantKind getKindByName(StringRef Name); private: int64_t evaluateAsInt64(int64_t Value) const; const VariantKind Kind; const MCExpr *SubExpr; bool Negated; private: explicit AVRMCExpr(VariantKind Kind, const MCExpr *Expr, bool Negated) : Kind(Kind), SubExpr(Expr), Negated(Negated) {} ~AVRMCExpr() {} }; } // end namespace llvm #endif // LLVM_AVR_MCEXPR_H
Upload File
Create Folder