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