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: AVRMCCodeEmitter.h
//===-- AVRMCCodeEmitter.h - Convert AVR Code to Machine Code -------------===// // // 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 // //===----------------------------------------------------------------------===// // // This file defines the AVRMCCodeEmitter class. // //===----------------------------------------------------------------------===// // #ifndef LLVM_AVR_CODE_EMITTER_H #define LLVM_AVR_CODE_EMITTER_H #include "AVRFixupKinds.h" #include "llvm/MC/MCCodeEmitter.h" #include "llvm/Support/DataTypes.h" #define GET_INSTRINFO_OPERAND_TYPES_ENUM #include "AVRGenInstrInfo.inc" namespace llvm { class MCContext; class MCExpr; class MCFixup; class MCInst; class MCInstrInfo; class MCOperand; class MCSubtargetInfo; class raw_ostream; /// Writes AVR machine code to a stream. class AVRMCCodeEmitter : public MCCodeEmitter { public: AVRMCCodeEmitter(const MCInstrInfo &MCII, MCContext &Ctx) : MCII(MCII), Ctx(Ctx) {} private: /// Finishes up encoding an LD/ST instruction. /// The purpose of this function is to set an bit in the instruction /// which follows no logical pattern. See the implementation for details. unsigned loadStorePostEncoder(const MCInst &MI, unsigned EncodedValue, const MCSubtargetInfo &STI) const; /// Gets the encoding for a conditional branch target. template <AVR::Fixups Fixup> unsigned encodeRelCondBrTarget(const MCInst &MI, unsigned OpNo, SmallVectorImpl<MCFixup> &Fixups, const MCSubtargetInfo &STI) const; /// Encodes the `PTRREGS` operand to a load or store instruction. unsigned encodeLDSTPtrReg(const MCInst &MI, unsigned OpNo, SmallVectorImpl<MCFixup> &Fixups, const MCSubtargetInfo &STI) const; /// Encodes a `register+immediate` operand for `LDD`/`STD`. unsigned encodeMemri(const MCInst &MI, unsigned OpNo, SmallVectorImpl<MCFixup> &Fixups, const MCSubtargetInfo &STI) const; /// Takes the complement of a number (~0 - val). unsigned encodeComplement(const MCInst &MI, unsigned OpNo, SmallVectorImpl<MCFixup> &Fixups, const MCSubtargetInfo &STI) const; /// Encodes an immediate value with a given fixup. /// \tparam Offset The offset into the instruction for the fixup. template <AVR::Fixups Fixup, unsigned Offset> unsigned encodeImm(const MCInst &MI, unsigned OpNo, SmallVectorImpl<MCFixup> &Fixups, const MCSubtargetInfo &STI) const; /// Gets the encoding of the target for the `CALL k` instruction. unsigned encodeCallTarget(const MCInst &MI, unsigned OpNo, SmallVectorImpl<MCFixup> &Fixups, const MCSubtargetInfo &STI) const; /// TableGen'ed function to get the binary encoding for an instruction. uint64_t getBinaryCodeForInstr(const MCInst &MI, SmallVectorImpl<MCFixup> &Fixups, const MCSubtargetInfo &STI) const; unsigned getExprOpValue(const MCExpr *Expr, SmallVectorImpl<MCFixup> &Fixups, const MCSubtargetInfo &STI) const; /// Returns the binary encoding of operand. /// /// If the machine operand requires relocation, the relocation is recorded /// and zero is returned. unsigned getMachineOpValue(const MCInst &MI, const MCOperand &MO, SmallVectorImpl<MCFixup> &Fixups, const MCSubtargetInfo &STI) const; void emitInstruction(uint64_t Val, unsigned Size, const MCSubtargetInfo &STI, raw_ostream &OS) const; void encodeInstruction(const MCInst &MI, raw_ostream &OS, SmallVectorImpl<MCFixup> &Fixups, const MCSubtargetInfo &STI) const override; AVRMCCodeEmitter(const AVRMCCodeEmitter &) = delete; void operator=(const AVRMCCodeEmitter &) = delete; const MCInstrInfo &MCII; MCContext &Ctx; }; } // end namespace of llvm. #endif // LLVM_AVR_CODE_EMITTER_H
Upload File
Create Folder