WebAssembly.h revision 341825
1138593Ssam//===-- WebAssembly.h - Top-level interface for WebAssembly  ----*- C++ -*-===//
2138593Ssam//
3138593Ssam//                     The LLVM Compiler Infrastructure
4138593Ssam//
5138593Ssam// This file is distributed under the University of Illinois Open Source
6138593Ssam// License. See LICENSE.TXT for details.
7138593Ssam//
8138593Ssam//===----------------------------------------------------------------------===//
9138593Ssam///
10138593Ssam/// \file
11138593Ssam/// This file contains the entry points for global functions defined in
12138593Ssam/// the LLVM WebAssembly back-end.
13138593Ssam///
14138593Ssam//===----------------------------------------------------------------------===//
15138593Ssam
16138593Ssam#ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLY_H
17138593Ssam#define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLY_H
18138593Ssam
19138593Ssam#include "llvm/PassRegistry.h"
20138593Ssam#include "llvm/Support/CodeGen.h"
21138593Ssam
22138593Ssamnamespace llvm {
23138593Ssam
24138593Ssamclass WebAssemblyTargetMachine;
25138593Ssamclass ModulePass;
26138593Ssamclass FunctionPass;
27138593Ssam
28138593Ssam// LLVM IR passes.
29138593SsamModulePass *createWebAssemblyLowerEmscriptenEHSjLj(bool DoEH, bool DoSjLj);
30138593SsamModulePass *createWebAssemblyLowerGlobalDtors();
31138593SsamModulePass *createWebAssemblyAddMissingPrototypes();
32138593SsamModulePass *createWebAssemblyFixFunctionBitcasts();
33138593SsamFunctionPass *createWebAssemblyOptimizeReturned();
34138593Ssam
35283016Sngie// ISel and immediate followup passes.
36138593SsamFunctionPass *createWebAssemblyISelDag(WebAssemblyTargetMachine &TM,
37138593Ssam                                       CodeGenOpt::Level OptLevel);
38138593SsamFunctionPass *createWebAssemblyArgumentMove();
39138593SsamFunctionPass *createWebAssemblySetP2AlignOperands();
40202289Semaste
41138593Ssam// Late passes.
42138593SsamFunctionPass *createWebAssemblyReplacePhysRegs();
43138593SsamFunctionPass *createWebAssemblyPrepareForLiveIntervals();
44138593SsamFunctionPass *createWebAssemblyOptimizeLiveIntervals();
45138593SsamFunctionPass *createWebAssemblyStoreResults();
46166956SsamFunctionPass *createWebAssemblyRegStackify();
47138593SsamFunctionPass *createWebAssemblyRegColoring();
48138593SsamFunctionPass *createWebAssemblyExplicitLocals();
49138593SsamFunctionPass *createWebAssemblyFixIrreducibleControlFlow();
50138593SsamFunctionPass *createWebAssemblyLateEHPrepare();
51138593SsamFunctionPass *createWebAssemblyCFGSort();
52138593SsamFunctionPass *createWebAssemblyCFGStackify();
53138593SsamFunctionPass *createWebAssemblyLowerBrUnless();
54138593SsamFunctionPass *createWebAssemblyRegNumbering();
55138593SsamFunctionPass *createWebAssemblyPeephole();
56191121SbrooksFunctionPass *createWebAssemblyCallIndirectFixup();
57138593Ssam
58138593Ssam// PassRegistry initialization declarations.
59138593Ssamvoid initializeWebAssemblyAddMissingPrototypesPass(PassRegistry &);
60166956Ssamvoid initializeWebAssemblyLowerEmscriptenEHSjLjPass(PassRegistry &);
61138593Ssamvoid initializeLowerGlobalDtorsPass(PassRegistry &);
62138593Ssamvoid initializeFixFunctionBitcastsPass(PassRegistry &);
63138593Ssamvoid initializeOptimizeReturnedPass(PassRegistry &);
64138593Ssamvoid initializeWebAssemblyArgumentMovePass(PassRegistry &);
65138593Ssamvoid initializeWebAssemblySetP2AlignOperandsPass(PassRegistry &);
66166956Ssamvoid initializeWebAssemblyReplacePhysRegsPass(PassRegistry &);
67138593Ssamvoid initializeWebAssemblyPrepareForLiveIntervalsPass(PassRegistry &);
68138593Ssamvoid initializeWebAssemblyOptimizeLiveIntervalsPass(PassRegistry &);
69138593Ssamvoid initializeWebAssemblyStoreResultsPass(PassRegistry &);
70138593Ssamvoid initializeWebAssemblyRegStackifyPass(PassRegistry &);
71138593Ssamvoid initializeWebAssemblyRegColoringPass(PassRegistry &);
72166956Ssamvoid initializeWebAssemblyExplicitLocalsPass(PassRegistry &);
73166956Ssamvoid initializeWebAssemblyFixIrreducibleControlFlowPass(PassRegistry &);
74166956Ssamvoid initializeWebAssemblyLateEHPreparePass(PassRegistry &);
75138593Ssamvoid initializeWebAssemblyExceptionInfoPass(PassRegistry &);
76138593Ssamvoid initializeWebAssemblyCFGSortPass(PassRegistry &);
77138593Ssamvoid initializeWebAssemblyCFGStackifyPass(PassRegistry &);
78138593Ssamvoid initializeWebAssemblyLowerBrUnlessPass(PassRegistry &);
79166956Ssamvoid initializeWebAssemblyRegNumberingPass(PassRegistry &);
80166956Ssamvoid initializeWebAssemblyPeepholePass(PassRegistry &);
81138593Ssamvoid initializeWebAssemblyCallIndirectFixupPass(PassRegistry &);
82138593Ssam
83138593Ssam} // end namespace llvm
84166956Ssam
85166956Ssam#endif
86166956Ssam