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: X86IntelInstPrinter(const MCAsmInfo & MAI,const MCInstrInfo & MII,const MCRegisterInfo & MRI)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 printopaquemem(const MCInst * MI,unsigned OpNo,raw_ostream & O)43 void printopaquemem(const MCInst *MI, unsigned OpNo, raw_ostream &O) { 44 O << "OPAQUE PTR "; 45 printMemReference(MI, OpNo, O); 46 } 47 printi8mem(const MCInst * MI,unsigned OpNo,raw_ostream & O)48 void printi8mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) { 49 O << "BYTE PTR "; 50 printMemReference(MI, OpNo, O); 51 } printi16mem(const MCInst * MI,unsigned OpNo,raw_ostream & O)52 void printi16mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) { 53 O << "WORD PTR "; 54 printMemReference(MI, OpNo, O); 55 } printi32mem(const MCInst * MI,unsigned OpNo,raw_ostream & O)56 void printi32mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) { 57 O << "DWORD PTR "; 58 printMemReference(MI, OpNo, O); 59 } printi64mem(const MCInst * MI,unsigned OpNo,raw_ostream & O)60 void printi64mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) { 61 O << "QWORD PTR "; 62 printMemReference(MI, OpNo, O); 63 } printi128mem(const MCInst * MI,unsigned OpNo,raw_ostream & O)64 void printi128mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) { 65 O << "XMMWORD PTR "; 66 printMemReference(MI, OpNo, O); 67 } printi256mem(const MCInst * MI,unsigned OpNo,raw_ostream & O)68 void printi256mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) { 69 O << "YMMWORD PTR "; 70 printMemReference(MI, OpNo, O); 71 } printf32mem(const MCInst * MI,unsigned OpNo,raw_ostream & O)72 void printf32mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) { 73 O << "DWORD PTR "; 74 printMemReference(MI, OpNo, O); 75 } printf64mem(const MCInst * MI,unsigned OpNo,raw_ostream & O)76 void printf64mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) { 77 O << "QWORD PTR "; 78 printMemReference(MI, OpNo, O); 79 } printf80mem(const MCInst * MI,unsigned OpNo,raw_ostream & O)80 void printf80mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) { 81 O << "XWORD PTR "; 82 printMemReference(MI, OpNo, O); 83 } printf128mem(const MCInst * MI,unsigned OpNo,raw_ostream & O)84 void printf128mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) { 85 O << "XMMWORD PTR "; 86 printMemReference(MI, OpNo, O); 87 } printf256mem(const MCInst * MI,unsigned OpNo,raw_ostream & O)88 void printf256mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) { 89 O << "YMMWORD PTR "; 90 printMemReference(MI, OpNo, O); 91 } 92 }; 93 94 } 95 96 #endif 97