Home | History | Annotate | Download | only in InstPrinter
      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