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 21namespace llvm { 22 23class MCOperand; 24class MCSubtargetInfo; 25 26class WebAssemblyInstPrinter final : public MCInstPrinter { 27public: 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 43namespace WebAssembly { 44 45const char *TypeToString(MVT Ty); 46 47} // end namespace WebAssembly 48 49} // end namespace llvm 50 51#endif 52