]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/lib/Target/WebAssembly/WebAssemblyUtilities.h
Import Intel Processor Trace decoder library from
[FreeBSD/FreeBSD.git] / contrib / llvm / lib / Target / WebAssembly / WebAssemblyUtilities.h
1 //===-- WebAssemblyUtilities - WebAssembly Utility Functions ---*- 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 declaration of the WebAssembly-specific
12 /// utility functions.
13 ///
14 //===----------------------------------------------------------------------===//
15
16 #ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYUTILITIES_H
17 #define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYUTILITIES_H
18
19 namespace llvm {
20
21 class MachineBasicBlock;
22 class MachineInstr;
23 class MachineLoop;
24 class WebAssemblyFunctionInfo;
25
26 namespace WebAssembly {
27
28 bool isArgument(const MachineInstr &MI);
29 bool isCopy(const MachineInstr &MI);
30 bool isTee(const MachineInstr &MI);
31 bool isChild(const MachineInstr &MI, const WebAssemblyFunctionInfo &MFI);
32 bool isCallIndirect(const MachineInstr &MI);
33
34 } // end namespace WebAssembly
35
36 /// Return the "bottom" block of a loop. This differs from
37 /// MachineLoop::getBottomBlock in that it works even if the loop is
38 /// discontiguous.
39 MachineBasicBlock *LoopBottom(const MachineLoop *Loop);
40
41 } // end namespace llvm
42
43 #endif