WebAssembly.h revision 321369
1168404Spjd//===-- WebAssembly.h - Top-level interface for WebAssembly  ----*- C++ -*-===//
2168404Spjd//
3168404Spjd//                     The LLVM Compiler Infrastructure
4168404Spjd//
5168404Spjd// This file is distributed under the University of Illinois Open Source
6168404Spjd// License. See LICENSE.TXT for details.
7168404Spjd//
8168404Spjd//===----------------------------------------------------------------------===//
9168404Spjd///
10168404Spjd/// \file
11168404Spjd/// \brief This file contains the entry points for global functions defined in
12168404Spjd/// the LLVM WebAssembly back-end.
13168404Spjd///
14168404Spjd//===----------------------------------------------------------------------===//
15168404Spjd
16168404Spjd#ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLY_H
17168404Spjd#define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLY_H
18168404Spjd
19168404Spjd#include "llvm/PassRegistry.h"
20168404Spjd#include "llvm/Support/CodeGen.h"
21168404Spjd
22168404Spjdnamespace llvm {
23168404Spjd
24168404Spjdclass WebAssemblyTargetMachine;
25168404Spjdclass ModulePass;
26168404Spjdclass FunctionPass;
27168404Spjd
28168404Spjd// LLVM IR passes.
29168404SpjdModulePass *createWebAssemblyLowerEmscriptenEHSjLj(bool DoEH, bool DoSjLj);
30168404Spjdvoid initializeWebAssemblyLowerEmscriptenEHSjLjPass(PassRegistry &);
31168404SpjdModulePass *createWebAssemblyFixFunctionBitcasts();
32168404SpjdFunctionPass *createWebAssemblyOptimizeReturned();
33168404Spjd
34168404Spjd// ISel and immediate followup passes.
35168404SpjdFunctionPass *createWebAssemblyISelDag(WebAssemblyTargetMachine &TM,
36168404Spjd                                       CodeGenOpt::Level OptLevel);
37168404SpjdFunctionPass *createWebAssemblyArgumentMove();
38168404SpjdFunctionPass *createWebAssemblySetP2AlignOperands();
39168404Spjd
40168404Spjd// Late passes.
41168404SpjdFunctionPass *createWebAssemblyReplacePhysRegs();
42168404SpjdFunctionPass *createWebAssemblyPrepareForLiveIntervals();
43168404SpjdFunctionPass *createWebAssemblyOptimizeLiveIntervals();
44168404SpjdFunctionPass *createWebAssemblyStoreResults();
45168404SpjdFunctionPass *createWebAssemblyRegStackify();
46168404SpjdFunctionPass *createWebAssemblyRegColoring();
47168404SpjdFunctionPass *createWebAssemblyExplicitLocals();
48168404SpjdFunctionPass *createWebAssemblyFixIrreducibleControlFlow();
49168404SpjdFunctionPass *createWebAssemblyCFGSort();
50168404SpjdFunctionPass *createWebAssemblyCFGStackify();
51168404SpjdFunctionPass *createWebAssemblyLowerBrUnless();
52168404SpjdFunctionPass *createWebAssemblyRegNumbering();
53168404SpjdFunctionPass *createWebAssemblyPeephole();
54168404SpjdFunctionPass *createWebAssemblyCallIndirectFixup();
55168404Spjd
56168404Spjd} // end namespace llvm
57168404Spjd
58168404Spjd#endif
59168404Spjd