123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- //= X86IntelInstPrinter.h - Convert X86 MCInst to assembly syntax -*- C++ -*-=//
- //
- // 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 class prints an X86 MCInst to Intel style .s file syntax.
- //
- //===----------------------------------------------------------------------===//
- #ifndef LLVM_LIB_TARGET_X86_MCTARGETDESC_X86INTELINSTPRINTER_H
- #define LLVM_LIB_TARGET_X86_MCTARGETDESC_X86INTELINSTPRINTER_H
- #include "X86InstPrinterCommon.h"
- #include "llvm/Support/raw_ostream.h"
- namespace llvm {
- class X86IntelInstPrinter final : public X86InstPrinterCommon {
- public:
- X86IntelInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII,
- const MCRegisterInfo &MRI)
- : X86InstPrinterCommon(MAI, MII, MRI) {}
- void printRegName(raw_ostream &OS, unsigned RegNo) const override;
- void printInst(const MCInst *MI, uint64_t Address, StringRef Annot,
- const MCSubtargetInfo &STI, raw_ostream &OS) override;
- bool printVecCompareInstr(const MCInst *MI, raw_ostream &OS);
- // Autogenerated by tblgen, returns true if we successfully printed an
- // alias.
- bool printAliasInstr(const MCInst *MI, uint64_t Address, raw_ostream &OS);
- void printCustomAliasOperand(const MCInst *MI, uint64_t Address,
- unsigned OpIdx, unsigned PrintMethodIdx,
- raw_ostream &O);
- // Autogenerated by tblgen.
- std::pair<const char *, uint64_t> getMnemonic(const MCInst *MI) override;
- void printInstruction(const MCInst *MI, uint64_t Address, raw_ostream &O);
- static const char *getRegisterName(unsigned RegNo);
- void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O) override;
- void printMemReference(const MCInst *MI, unsigned Op, raw_ostream &O);
- void printMemOffset(const MCInst *MI, unsigned OpNo, raw_ostream &O);
- void printSrcIdx(const MCInst *MI, unsigned OpNo, raw_ostream &O);
- void printDstIdx(const MCInst *MI, unsigned OpNo, raw_ostream &O);
- void printU8Imm(const MCInst *MI, unsigned Op, raw_ostream &O);
- void printSTiRegOperand(const MCInst *MI, unsigned OpNo, raw_ostream &OS);
- void printbytemem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
- O << "byte ptr ";
- printMemReference(MI, OpNo, O);
- }
- void printwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
- O << "word ptr ";
- printMemReference(MI, OpNo, O);
- }
- void printdwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
- O << "dword ptr ";
- printMemReference(MI, OpNo, O);
- }
- void printqwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
- O << "qword ptr ";
- printMemReference(MI, OpNo, O);
- }
- void printxmmwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
- O << "xmmword ptr ";
- printMemReference(MI, OpNo, O);
- }
- void printymmwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
- O << "ymmword ptr ";
- printMemReference(MI, OpNo, O);
- }
- void printzmmwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
- O << "zmmword ptr ";
- printMemReference(MI, OpNo, O);
- }
- void printtbytemem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
- O << "tbyte ptr ";
- printMemReference(MI, OpNo, O);
- }
- void printSrcIdx8(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
- O << "byte ptr ";
- printSrcIdx(MI, OpNo, O);
- }
- void printSrcIdx16(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
- O << "word ptr ";
- printSrcIdx(MI, OpNo, O);
- }
- void printSrcIdx32(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
- O << "dword ptr ";
- printSrcIdx(MI, OpNo, O);
- }
- void printSrcIdx64(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
- O << "qword ptr ";
- printSrcIdx(MI, OpNo, O);
- }
- void printDstIdx8(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
- O << "byte ptr ";
- printDstIdx(MI, OpNo, O);
- }
- void printDstIdx16(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
- O << "word ptr ";
- printDstIdx(MI, OpNo, O);
- }
- void printDstIdx32(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
- O << "dword ptr ";
- printDstIdx(MI, OpNo, O);
- }
- void printDstIdx64(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
- O << "qword ptr ";
- printDstIdx(MI, OpNo, O);
- }
- void printMemOffs8(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
- O << "byte ptr ";
- printMemOffset(MI, OpNo, O);
- }
- void printMemOffs16(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
- O << "word ptr ";
- printMemOffset(MI, OpNo, O);
- }
- void printMemOffs32(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
- O << "dword ptr ";
- printMemOffset(MI, OpNo, O);
- }
- void printMemOffs64(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
- O << "qword ptr ";
- printMemOffset(MI, OpNo, O);
- }
- };
- } // end namespace llvm
- #endif // LLVM_LIB_TARGET_X86_MCTARGETDESC_X86INTELINSTPRINTER_H
|