LLVM  12.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 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]
Collaboration diagram for llvm::HexagonInstPrinter:
Collaboration 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. More...
 
void printRegName (raw_ostream &O, unsigned RegNo) const override
 Print the assembler register name. More...
 
std::pair< const char *, uint64_t > getMnemonic (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). More...
 
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. More...
 
void setCommentStream (raw_ostream &OS)
 Specify a stream to emit comments to. More...
 
StringRef getOpcodeName (unsigned Opcode) const
 Return the name of the specified opcode enum (e.g. More...
 
bool getUseMarkup () const
 
void setUseMarkup (bool Value)
 
StringRef markup (StringRef s) const
 Utility functions to make adding mark ups simpler. More...
 
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. More...
 
format_object< int64_t > formatDec (int64_t Value) const
 Utility functions to print decimal/hexadecimal values. More...
 
format_object< int64_t > formatHex (int64_t Value) const
 
format_object< uint64_t > formatHex (uint64_t Value) const
 

Static Public Member Functions

static char constgetRegisterName (unsigned RegNo)
 

Additional Inherited Members

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

Detailed Description

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

r0 = add(r1, r2) r0 = #0 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

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.

Referenced by HexagonInstPrinter().

◆ getRegisterName()

static char const* llvm::HexagonInstPrinter::getRegisterName ( unsigned  RegNo)
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(), and printInstruction().

Referenced by HexagonInstPrinter().

◆ printInstruction()

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

Referenced by HexagonInstPrinter(), and printInst().

◆ printOperand()

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

◆ printRegName()

void HexagonInstPrinter::printRegName ( raw_ostream OS,
unsigned  RegNo 
) const
overridevirtual

Print the assembler register name.

Reimplemented from llvm::MCInstPrinter.

Definition at line 29 of file HexagonInstPrinter.cpp.

References getRegisterName().

Referenced by HexagonInstPrinter().


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