1 //= X86IntelInstPrinter.h - Convert X86 MCInst to assembly syntax -*- C++ -*-=// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 // 10 // This class prints an X86 MCInst to Intel style .s file syntax. 11 // 12 //===----------------------------------------------------------------------===// 13 14 #ifndef X86_INTEL_INST_PRINTER_H 15 #define X86_INTEL_INST_PRINTER_H 16 17 #include "llvm/MC/MCInstPrinter.h" 18 #include "llvm/Support/raw_ostream.h" 19 20 namespace llvm { 21 22 class MCOperand; 23 24 class X86IntelInstPrinter : public MCInstPrinter { 25 public: 26 X86IntelInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII, 27 const MCRegisterInfo &MRI) 28 : MCInstPrinter(MAI, MII, MRI) {} 29 30 virtual void printRegName(raw_ostream &OS, unsigned RegNo) const; 31 virtual void printInst(const MCInst *MI, raw_ostream &OS, StringRef Annot); 32 33 // Autogenerated by tblgen. 34 void printInstruction(const MCInst *MI, raw_ostream &O); 35 static const char *getRegisterName(unsigned RegNo); 36 37 void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); 38 void printMemReference(const MCInst *MI, unsigned Op, raw_ostream &O); 39 void printSSECC(const MCInst *MI, unsigned Op, raw_ostream &O); 40 void printAVXCC(const MCInst *MI, unsigned Op, raw_ostream &O); 41 void printPCRelImm(const MCInst *MI, unsigned OpNo, raw_ostream &O); 42 43 void printopaquemem(const MCInst *MI, unsigned OpNo, raw_ostream &O) { 44 O << "opaque ptr "; 45 printMemReference(MI, OpNo, O); 46 } 47 48 void printi8mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) { 49 O << "byte ptr "; 50 printMemReference(MI, OpNo, O); 51 } 52 void printi16mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) { 53 O << "word ptr "; 54 printMemReference(MI, OpNo, O); 55 } 56 void printi32mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) { 57 O << "dword ptr "; 58 printMemReference(MI, OpNo, O); 59 } 60 void printi64mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) { 61 O << "qword ptr "; 62 printMemReference(MI, OpNo, O); 63 } 64 void printi128mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) { 65 O << "xmmword ptr "; 66 printMemReference(MI, OpNo, O); 67 } 68 void printi256mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) { 69 O << "ymmword ptr "; 70 printMemReference(MI, OpNo, O); 71 } 72 void printi512mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) { 73 O << "zmmword ptr "; 74 printMemReference(MI, OpNo, O); 75 } 76 void printf32mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) { 77 O << "dword ptr "; 78 printMemReference(MI, OpNo, O); 79 } 80 void printf64mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) { 81 O << "qword ptr "; 82 printMemReference(MI, OpNo, O); 83 } 84 void printf80mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) { 85 O << "xword ptr "; 86 printMemReference(MI, OpNo, O); 87 } 88 void printf128mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) { 89 O << "xmmword ptr "; 90 printMemReference(MI, OpNo, O); 91 } 92 void printf256mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) { 93 O << "ymmword ptr "; 94 printMemReference(MI, OpNo, O); 95 } 96 void printf512mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) { 97 O << "zmmword ptr "; 98 printMemReference(MI, OpNo, O); 99 } 100 }; 101 102 } 103 104 #endif 105