Path: blob/main/contrib/llvm-project/llvm/lib/Target/X86/MCTargetDesc/X86ATTInstPrinter.h
35294 views
//=- X86ATTInstPrinter.h - Convert X86 MCInst to assembly syntax --*- C++ -*-=//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//7//8// This class prints an X86 MCInst to AT&T style .s file syntax.9//10//===----------------------------------------------------------------------===//1112#ifndef LLVM_LIB_TARGET_X86_MCTARGETDESC_X86ATTINSTPRINTER_H13#define LLVM_LIB_TARGET_X86_MCTARGETDESC_X86ATTINSTPRINTER_H1415#include "X86InstPrinterCommon.h"1617namespace llvm {1819class X86ATTInstPrinter final : public X86InstPrinterCommon {20public:21X86ATTInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII,22const MCRegisterInfo &MRI)23: X86InstPrinterCommon(MAI, MII, MRI), HasCustomInstComment(false) {}2425void printRegName(raw_ostream &OS, MCRegister Reg) const override;26void printInst(const MCInst *MI, uint64_t Address, StringRef Annot,27const MCSubtargetInfo &STI, raw_ostream &OS) override;28bool printVecCompareInstr(const MCInst *MI, raw_ostream &OS);2930// Autogenerated by tblgen, returns true if we successfully printed an31// alias.32bool printAliasInstr(const MCInst *MI, uint64_t Address, raw_ostream &OS);33void printCustomAliasOperand(const MCInst *MI, uint64_t Address,34unsigned OpIdx, unsigned PrintMethodIdx,35raw_ostream &O);3637// Autogenerated by tblgen.38std::pair<const char *, uint64_t> getMnemonic(const MCInst *MI) override;39void printInstruction(const MCInst *MI, uint64_t Address, raw_ostream &OS);40static const char *getRegisterName(MCRegister Reg);4142void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &OS) override;43void printMemReference(const MCInst *MI, unsigned Op, raw_ostream &OS);44void printMemOffset(const MCInst *MI, unsigned OpNo, raw_ostream &OS);45void printSrcIdx(const MCInst *MI, unsigned Op, raw_ostream &O);46void printDstIdx(const MCInst *MI, unsigned Op, raw_ostream &O);47void printU8Imm(const MCInst *MI, unsigned Op, raw_ostream &OS);48void printSTiRegOperand(const MCInst *MI, unsigned OpNo, raw_ostream &OS);4950void printbytemem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {51printMemReference(MI, OpNo, O);52}53void printwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {54printMemReference(MI, OpNo, O);55}56void printdwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {57printMemReference(MI, OpNo, O);58}59void printqwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {60printMemReference(MI, OpNo, O);61}62void printxmmwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {63printMemReference(MI, OpNo, O);64}65void printymmwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {66printMemReference(MI, OpNo, O);67}68void printzmmwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {69printMemReference(MI, OpNo, O);70}71void printtbytemem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {72printMemReference(MI, OpNo, O);73}7475void printSrcIdx8(const MCInst *MI, unsigned OpNo, raw_ostream &O) {76printSrcIdx(MI, OpNo, O);77}78void printSrcIdx16(const MCInst *MI, unsigned OpNo, raw_ostream &O) {79printSrcIdx(MI, OpNo, O);80}81void printSrcIdx32(const MCInst *MI, unsigned OpNo, raw_ostream &O) {82printSrcIdx(MI, OpNo, O);83}84void printSrcIdx64(const MCInst *MI, unsigned OpNo, raw_ostream &O) {85printSrcIdx(MI, OpNo, O);86}87void printDstIdx8(const MCInst *MI, unsigned OpNo, raw_ostream &O) {88printDstIdx(MI, OpNo, O);89}90void printDstIdx16(const MCInst *MI, unsigned OpNo, raw_ostream &O) {91printDstIdx(MI, OpNo, O);92}93void printDstIdx32(const MCInst *MI, unsigned OpNo, raw_ostream &O) {94printDstIdx(MI, OpNo, O);95}96void printDstIdx64(const MCInst *MI, unsigned OpNo, raw_ostream &O) {97printDstIdx(MI, OpNo, O);98}99void printMemOffs8(const MCInst *MI, unsigned OpNo, raw_ostream &O) {100printMemOffset(MI, OpNo, O);101}102void printMemOffs16(const MCInst *MI, unsigned OpNo, raw_ostream &O) {103printMemOffset(MI, OpNo, O);104}105void printMemOffs32(const MCInst *MI, unsigned OpNo, raw_ostream &O) {106printMemOffset(MI, OpNo, O);107}108void printMemOffs64(const MCInst *MI, unsigned OpNo, raw_ostream &O) {109printMemOffset(MI, OpNo, O);110}111112private:113bool HasCustomInstComment;114};115116} // end namespace llvm117118#endif // LLVM_LIB_TARGET_X86_MCTARGETDESC_X86ATTINSTPRINTER_H119120121