1 // WebAssemblyInstPrinter.h - Print wasm 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 /// \file 11 /// \brief This class prints an WebAssembly MCInst to wasm file syntax. 12 /// 13 //===----------------------------------------------------------------------===// 14 15 #ifndef LLVM_LIB_TARGET_WEBASSEMBLY_INSTPRINTER_WEBASSEMBLYINSTPRINTER_H 16 #define LLVM_LIB_TARGET_WEBASSEMBLY_INSTPRINTER_WEBASSEMBLYINSTPRINTER_H 17 18 #include "llvm/MC/MCInstPrinter.h" 19 #include "llvm/CodeGen/MachineValueType.h" 20 21 namespace llvm { 22 23 class MCOperand; 24 class MCSubtargetInfo; 25 26 class WebAssemblyInstPrinter final : public MCInstPrinter { 27 public: 28 WebAssemblyInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII, 29 const MCRegisterInfo &MRI); 30 31 void printRegName(raw_ostream &OS, unsigned RegNo) const override; 32 void printInst(const MCInst *MI, raw_ostream &OS, StringRef Annot, 33 const MCSubtargetInfo &STI) override; 34 35 // Used by tblegen code. 36 void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); 37 38 // Autogenerated by tblgen. 39 void printInstruction(const MCInst *MI, raw_ostream &O); 40 static const char *getRegisterName(unsigned RegNo); 41 }; 42 43 namespace WebAssembly { 44 45 const char *TypeToString(MVT Ty); 46 47 } // end namespace WebAssembly 48 49 } // end namespace llvm 50 51 #endif 52