blob: 319c8ee1d5d9edc64bc7e019a5183ab921da4a28 [file] [log] [blame]
Dan Gohman10e730a2015-06-29 23:51:55 +00001// 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/Support/raw_ostream.h"
20
21namespace llvm {
22
23class MCOperand;
24class MCSubtargetInfo;
25
Dan Gohmanfd4a88c2015-11-25 16:29:24 +000026class WebAssemblyInstPrinter final : public MCInstPrinter {
Dan Gohman10e730a2015-06-29 23:51:55 +000027public:
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;
JF Bastienb9073fb2015-07-22 21:28:15 +000034
JF Bastienaf111db2015-08-24 22:16:48 +000035 // Used by tblegen code.
36 void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
37
JF Bastienb9073fb2015-07-22 21:28:15 +000038 // Autogenerated by tblgen.
39 void printInstruction(const MCInst *MI, raw_ostream &O);
40 static const char *getRegisterName(unsigned RegNo);
Dan Gohman10e730a2015-06-29 23:51:55 +000041};
42
43} // end namespace llvm
44
45#endif