LLVM API Documentation
#include <HexagonAsmPrinter.h>
Public Member Functions | |
HexagonAsmPrinter (TargetMachine &TM, MCStreamer &Streamer) | |
const char * | getPassName () const override |
bool | isBlockOnlyReachableByFallthrough (const MachineBasicBlock *MBB) const override |
void | EmitInstruction (const MachineInstr *MI) override |
void | printOperand (const MachineInstr *MI, unsigned OpNo, raw_ostream &O) |
bool | PrintAsmOperand (const MachineInstr *MI, unsigned OpNo, unsigned AsmVariant, const char *ExtraCode, raw_ostream &OS) override |
bool | PrintAsmMemoryOperand (const MachineInstr *MI, unsigned OpNo, unsigned AsmVariant, const char *ExtraCode, raw_ostream &OS) override |
Static Public Member Functions | |
static const char * | getRegisterName (unsigned RegNo) |
Definition at line 24 of file HexagonAsmPrinter.h.
llvm::HexagonAsmPrinter::HexagonAsmPrinter | ( | TargetMachine & | TM, |
MCStreamer & | Streamer | ||
) | [inline, explicit] |
Definition at line 28 of file HexagonAsmPrinter.h.
References llvm::TargetMachine::getSubtarget().
void HexagonAsmPrinter::EmitInstruction | ( | const MachineInstr * | MI | ) | [override, virtual] |
printMachineInstruction -- Print out a single Hexagon MI in Darwin syntax to the current output stream.
Reimplemented from llvm::AsmPrinter.
Definition at line 175 of file HexagonAsmPrinter.cpp.
References llvm::TargetOpcode::DBG_VALUE, llvm::AsmPrinter::EmitToStreamer(), llvm::MachineBasicBlock::end(), llvm::MachineInstr::getBundleSize(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getParent(), llvm::HexagonLowerToMC(), llvm::TargetOpcode::IMPLICIT_DEF, llvm::MachineInstr::isBundle(), llvm::AArch64CC::MI, llvm::AsmPrinter::MII, llvm::AsmPrinter::OutStreamer, llvm::HexagonMCInst::setPacketEnd(), and llvm::HexagonMCInst::setPacketStart().
const char* llvm::HexagonAsmPrinter::getPassName | ( | ) | const [inline, override, virtual] |
getPassName - Return a nice clean name for a pass. This usually implemented in terms of the name that is registered by one of the Registration templates, but can be overloaded directly.
Reimplemented from llvm::Pass.
Definition at line 33 of file HexagonAsmPrinter.h.
static const char* llvm::HexagonAsmPrinter::getRegisterName | ( | unsigned | RegNo | ) | [static] |
Referenced by printOperand().
bool HexagonAsmPrinter::isBlockOnlyReachableByFallthrough | ( | const MachineBasicBlock * | MBB | ) | const [override, virtual] |
Return true if the basic block has exactly one predecessor and the control transfer mechanism between the predecessor and this block is a fall-through.
isBlockOnlyReachableByFallthough - Return true if the basic block has exactly one predecessor and the control transfer mechanism between the predecessor and this block is a fall-through.
Reimplemented from llvm::AsmPrinter.
Definition at line 99 of file HexagonAsmPrinter.cpp.
References llvm::MachineBasicBlock::hasAddressTaken().
bool HexagonAsmPrinter::PrintAsmMemoryOperand | ( | const MachineInstr * | MI, |
unsigned | OpNo, | ||
unsigned | AsmVariant, | ||
const char * | ExtraCode, | ||
raw_ostream & | OS | ||
) | [override, virtual] |
Print the specified operand of MI, an INLINEASM instruction, using the specified assembler variant as an address. Targets should override this to format as appropriate. This method can return true if the operand is erroneous.
Reimplemented from llvm::AsmPrinter.
Definition at line 146 of file HexagonAsmPrinter.cpp.
References llvm::MachineOperand::getImm(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::isImm(), llvm::MachineOperand::isReg(), llvm_unreachable, and printOperand().
bool HexagonAsmPrinter::PrintAsmOperand | ( | const MachineInstr * | MI, |
unsigned | OpNo, | ||
unsigned | AsmVariant, | ||
const char * | ExtraCode, | ||
raw_ostream & | OS | ||
) | [override, virtual] |
PrintAsmOperand - Print out an operand for an inline asm expression.
Reimplemented from llvm::AsmPrinter.
Definition at line 109 of file HexagonAsmPrinter.cpp.
References llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::isImm(), llvm::MachineOperand::isReg(), and printOperand().
void HexagonAsmPrinter::printOperand | ( | const MachineInstr * | MI, |
unsigned | OpNo, | ||
raw_ostream & | O | ||
) |
Definition at line 64 of file HexagonAsmPrinter.cpp.
References llvm::AsmPrinter::GetCPISymbol(), llvm::MachineOperand::getGlobal(), llvm::MachineOperand::getImm(), llvm::MachineOperand::getIndex(), llvm::MachineOperand::getMBB(), llvm::MachineOperand::getOffset(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), getRegisterName(), llvm::AsmPrinter::getSymbol(), llvm::MachineBasicBlock::getSymbol(), llvm::MachineOperand::getType(), llvm_unreachable, llvm::MachineOperand::MO_ConstantPoolIndex, llvm::MachineOperand::MO_GlobalAddress, llvm::MachineOperand::MO_Immediate, llvm::MachineOperand::MO_MachineBasicBlock, llvm::MachineOperand::MO_Register, and llvm::AsmPrinter::printOffset().
Referenced by PrintAsmMemoryOperand(), and PrintAsmOperand().