LLVM 20.0.0git
Public Member Functions | Static Public Member Functions | List of all members
llvm::HexagonInstPrinter Class Reference

Prints bundles as a newline separated list of individual instructions Duplexes are separated by a vertical tab \v character A trailing line includes bundle properties such as endloop0/1. More...

#include "Target/Hexagon/MCTargetDesc/HexagonInstPrinter.h"

Inheritance diagram for llvm::HexagonInstPrinter:
Inheritance graph
[legend]

Public Member Functions

 HexagonInstPrinter (MCAsmInfo const &MAI, MCInstrInfo const &MII, MCRegisterInfo const &MRI)
 
void printInst (MCInst const *MI, uint64_t Address, StringRef Annot, const MCSubtargetInfo &STI, raw_ostream &O) override
 Print the specified MCInst to the specified raw_ostream.
 
void printRegName (raw_ostream &O, MCRegister Reg) const override
 Print the assembler register name.
 
std::pair< const char *, uint64_tgetMnemonic (const MCInst *MI) override
 Returns a pair containing the mnemonic for MI and the number of bits left for further processing by printInstruction (generated by tablegen).
 
void printInstruction (const MCInst *MI, uint64_t Address, raw_ostream &O)
 
void printOperand (MCInst const *MI, unsigned OpNo, raw_ostream &O) const
 
void printBrtarget (MCInst const *MI, unsigned OpNo, raw_ostream &O) const
 
MCAsmInfo constgetMAI () const
 
MCInstrInfo constgetMII () const
 
- Public Member Functions inherited from llvm::MCInstPrinter
 MCInstPrinter (const MCAsmInfo &mai, const MCInstrInfo &mii, const MCRegisterInfo &mri)
 
virtual ~MCInstPrinter ()
 
virtual bool applyTargetSpecificCLOption (StringRef Opt)
 Customize the printer according to a command line option.
 
void setCommentStream (raw_ostream &OS)
 Specify a stream to emit comments to.
 
virtual std::pair< const char *, uint64_tgetMnemonic (const MCInst *MI)=0
 Returns a pair containing the mnemonic for MI and the number of bits left for further processing by printInstruction (generated by tablegen).
 
virtual void printInst (const MCInst *MI, uint64_t Address, StringRef Annot, const MCSubtargetInfo &STI, raw_ostream &OS)=0
 Print the specified MCInst to the specified raw_ostream.
 
StringRef getOpcodeName (unsigned Opcode) const
 Return the name of the specified opcode enum (e.g.
 
virtual void printRegName (raw_ostream &OS, MCRegister Reg) const
 Print the assembler register name.
 
bool getUseMarkup () const
 
void setUseMarkup (bool Value)
 
bool getUseColor () const
 
void setUseColor (bool Value)
 
WithMarkup markup (raw_ostream &OS, Markup M) const
 
bool getPrintImmHex () const
 
void setPrintImmHex (bool Value)
 
void setPrintHexStyle (HexStyle::Style Value)
 
void setPrintBranchImmAsAddress (bool Value)
 
void setSymbolizeOperands (bool Value)
 
void setMCInstrAnalysis (const MCInstrAnalysis *Value)
 
format_object< int64_t > formatImm (int64_t Value) const
 Utility function to print immediates in decimal or hex.
 
format_object< int64_t > formatDec (int64_t Value) const
 Utility functions to print decimal/hexadecimal values.
 
format_object< int64_t > formatHex (int64_t Value) const
 
format_object< uint64_tformatHex (uint64_t Value) const
 

Static Public Member Functions

static char constgetRegisterName (MCRegister Reg)
 

Additional Inherited Members

- Public Types inherited from llvm::MCInstPrinter
enum class  Markup { Immediate , Register , Target , Memory }
 
- Protected Member Functions inherited from llvm::MCInstPrinter
void printAnnotation (raw_ostream &OS, StringRef Annot)
 Utility function for printing annotations.
 
const charmatchAliasPatterns (const MCInst *MI, const MCSubtargetInfo *STI, const AliasMatchingData &M)
 Helper for matching MCInsts to alias patterns when printing instructions.
 
- Protected Attributes inherited from llvm::MCInstPrinter
raw_ostreamCommentStream = nullptr
 A stream that comments can be emitted to if desired.
 
const MCAsmInfoMAI
 
const MCInstrInfoMII
 
const MCRegisterInfoMRI
 
const MCInstrAnalysisMIA = nullptr
 
bool UseMarkup = false
 True if we are printing marked up assembly.
 
bool UseColor = false
 True if we are printing colored assembly.
 
bool PrintAliases = true
 True if we prefer aliases (e.g. nop) to raw mnemonics.
 
bool PrintImmHex = false
 True if we are printing immediates as hex.
 
HexStyle::Style PrintHexStyle = HexStyle::C
 Which style to use for printing hexadecimal values.
 
bool PrintBranchImmAsAddress = false
 If true, a branch immediate (e.g.
 
bool SymbolizeOperands = false
 If true, symbolize branch target and memory reference operands.
 

Detailed Description

Prints bundles as a newline separated list of individual instructions Duplexes are separated by a vertical tab \v character A trailing line includes bundle properties such as endloop0/1.

r0 = add(r1, r2) r0 = #0 \v jump 0x0 :endloop0 :endloop1

Definition at line 25 of file HexagonInstPrinter.h.

Constructor & Destructor Documentation

◆ HexagonInstPrinter()

llvm::HexagonInstPrinter::HexagonInstPrinter ( MCAsmInfo const MAI,
MCInstrInfo const MII,
MCRegisterInfo const MRI 
)
inlineexplicit

Definition at line 27 of file HexagonInstPrinter.h.

Member Function Documentation

◆ getMAI()

MCAsmInfo const & llvm::HexagonInstPrinter::getMAI ( ) const
inline

Definition at line 42 of file HexagonInstPrinter.h.

References llvm::MCInstPrinter::MAI.

◆ getMII()

MCInstrInfo const & llvm::HexagonInstPrinter::getMII ( ) const
inline

Definition at line 43 of file HexagonInstPrinter.h.

◆ getMnemonic()

std::pair< const char *, uint64_t > llvm::HexagonInstPrinter::getMnemonic ( const MCInst MI)
overridevirtual

Returns a pair containing the mnemonic for MI and the number of bits left for further processing by printInstruction (generated by tablegen).

Implements llvm::MCInstPrinter.

◆ getRegisterName()

static char const * llvm::HexagonInstPrinter::getRegisterName ( MCRegister  Reg)
static

◆ printBrtarget()

void HexagonInstPrinter::printBrtarget ( MCInst const MI,
unsigned  OpNo,
raw_ostream O 
) const

◆ printInst()

void HexagonInstPrinter::printInst ( MCInst const MI,
uint64_t  Address,
StringRef  Annot,
const MCSubtargetInfo STI,
raw_ostream OS 
)
overridevirtual

Print the specified MCInst to the specified raw_ostream.

Address the address of current instruction on most targets, used to print a PC relative immediate as the target address. On targets where a PC relative immediate is relative to the next instruction and the length of a MCInst is difficult to measure (e.g. x86), this is the address of the next instruction. If Address is 0, the immediate will be printed.

Implements llvm::MCInstPrinter.

Definition at line 33 of file HexagonInstPrinter.cpp.

References llvm::Address, assert(), llvm::HexagonMCInstrInfo::bundleInstructions(), llvm::HexagonMCInstrInfo::bundleSize(), llvm::MCOperand::getInst(), llvm::MCInst::getOperand(), HEXAGON_PACKET_SIZE, I, llvm::HexagonMCInstrInfo::isBundle(), llvm::HexagonMCInstrInfo::isDuplex(), llvm::HexagonMCInstrInfo::isImmext(), llvm::HexagonMCInstrInfo::isInnerLoop(), llvm::HexagonMCInstrInfo::isOuterLoop(), MI, OS, and printInstruction().

◆ printInstruction()

void llvm::HexagonInstPrinter::printInstruction ( const MCInst MI,
uint64_t  Address,
raw_ostream O 
)

Referenced by printInst().

◆ printOperand()

void HexagonInstPrinter::printOperand ( MCInst const MI,
unsigned  OpNo,
raw_ostream O 
) const

◆ printRegName()

void HexagonInstPrinter::printRegName ( raw_ostream OS,
MCRegister  Reg 
) const
overridevirtual

Print the assembler register name.

Reimplemented from llvm::MCInstPrinter.

Definition at line 29 of file HexagonInstPrinter.cpp.

References getRegisterName().


The documentation for this class was generated from the following files: