[WebAssembly] Factor out a TypeToString function, since we need it in multiple places.
[oota-llvm.git] / lib / Target / WebAssembly / WebAssemblyInstrInfo.h
1 //=- WebAssemblyInstrInfo.h - WebAssembly Instruction Information -*- 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 file contains the WebAssembly implementation of the
12 /// TargetInstrInfo class.
13 ///
14 //===----------------------------------------------------------------------===//
15
16 #ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYINSTRINFO_H
17 #define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYINSTRINFO_H
18
19 #include "WebAssemblyRegisterInfo.h"
20 #include "llvm/Target/TargetInstrInfo.h"
21
22 #define GET_INSTRINFO_HEADER
23 #include "WebAssemblyGenInstrInfo.inc"
24
25 namespace llvm {
26
27 class WebAssemblySubtarget;
28
29 class WebAssemblyInstrInfo final : public WebAssemblyGenInstrInfo {
30   const WebAssemblyRegisterInfo RI;
31
32 public:
33   explicit WebAssemblyInstrInfo(const WebAssemblySubtarget &STI);
34
35   const WebAssemblyRegisterInfo &getRegisterInfo() const { return RI; }
36
37   void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI,
38                    DebugLoc DL, unsigned DestReg, unsigned SrcReg,
39                    bool KillSrc) const override;
40
41   bool AnalyzeBranch(MachineBasicBlock &MBB, MachineBasicBlock *&TBB,
42                      MachineBasicBlock *&FBB,
43                      SmallVectorImpl<MachineOperand> &Cond,
44                      bool AllowModify = false) const override;
45   unsigned RemoveBranch(MachineBasicBlock &MBB) const override;
46   unsigned InsertBranch(MachineBasicBlock &MBB, MachineBasicBlock *TBB,
47                         MachineBasicBlock *FBB, ArrayRef<MachineOperand> Cond,
48                         DebugLoc DL) const override;
49   bool
50   ReverseBranchCondition(SmallVectorImpl<MachineOperand> &Cond) const override;
51 };
52
53 } // end namespace llvm
54
55 #endif