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 MCSubtargetInfo; 24 25 class WebAssemblyInstPrinter final : public MCInstPrinter { 26 uint64_t ControlFlowCounter; 27 SmallVector<std::pair<uint64_t, bool>, 0> ControlFlowStack; 28 29 public: 30 WebAssemblyInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII, 31 const MCRegisterInfo &MRI); 32 33 void printRegName(raw_ostream &OS, unsigned RegNo) const override; 34 void printInst(const MCInst *MI, raw_ostream &OS, StringRef Annot, 35 const MCSubtargetInfo &STI) override; 36 37 // Used by tblegen code. 38 void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); 39 40 // Autogenerated by tblgen. 41 void printInstruction(const MCInst *MI, raw_ostream &O); 42 static const char *getRegisterName(unsigned RegNo); 43 }; 44 45 namespace WebAssembly { 46 47 const char *TypeToString(MVT Ty); 48 49 } // end namespace WebAssembly 50 51 } // end namespace llvm 52 53 #endif 54