WebAssembly.h revision 344779
1//===-- WebAssembly.h - Top-level interface for WebAssembly  ----*- 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/// This file contains the entry points for global functions defined in
12/// the LLVM WebAssembly back-end.
13///
14//===----------------------------------------------------------------------===//
15
16#ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLY_H
17#define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLY_H
18
19#include "llvm/PassRegistry.h"
20#include "llvm/Support/CodeGen.h"
21
22namespace llvm {
23
24class WebAssemblyTargetMachine;
25class ModulePass;
26class FunctionPass;
27
28// LLVM IR passes.
29ModulePass *createWebAssemblyLowerEmscriptenEHSjLj(bool DoEH, bool DoSjLj);
30ModulePass *createWebAssemblyLowerGlobalDtors();
31ModulePass *createWebAssemblyAddMissingPrototypes();
32ModulePass *createWebAssemblyFixFunctionBitcasts();
33FunctionPass *createWebAssemblyOptimizeReturned();
34
35// ISel and immediate followup passes.
36FunctionPass *createWebAssemblyISelDag(WebAssemblyTargetMachine &TM,
37                                       CodeGenOpt::Level OptLevel);
38FunctionPass *createWebAssemblyArgumentMove();
39FunctionPass *createWebAssemblySetP2AlignOperands();
40
41// Late passes.
42FunctionPass *createWebAssemblyEHRestoreStackPointer();
43FunctionPass *createWebAssemblyReplacePhysRegs();
44FunctionPass *createWebAssemblyPrepareForLiveIntervals();
45FunctionPass *createWebAssemblyOptimizeLiveIntervals();
46FunctionPass *createWebAssemblyMemIntrinsicResults();
47FunctionPass *createWebAssemblyRegStackify();
48FunctionPass *createWebAssemblyRegColoring();
49FunctionPass *createWebAssemblyExplicitLocals();
50FunctionPass *createWebAssemblyFixIrreducibleControlFlow();
51FunctionPass *createWebAssemblyLateEHPrepare();
52FunctionPass *createWebAssemblyCFGSort();
53FunctionPass *createWebAssemblyCFGStackify();
54FunctionPass *createWebAssemblyLowerBrUnless();
55FunctionPass *createWebAssemblyRegNumbering();
56FunctionPass *createWebAssemblyPeephole();
57FunctionPass *createWebAssemblyCallIndirectFixup();
58
59// PassRegistry initialization declarations.
60void initializeWebAssemblyAddMissingPrototypesPass(PassRegistry &);
61void initializeWebAssemblyLowerEmscriptenEHSjLjPass(PassRegistry &);
62void initializeLowerGlobalDtorsPass(PassRegistry &);
63void initializeFixFunctionBitcastsPass(PassRegistry &);
64void initializeOptimizeReturnedPass(PassRegistry &);
65void initializeWebAssemblyArgumentMovePass(PassRegistry &);
66void initializeWebAssemblySetP2AlignOperandsPass(PassRegistry &);
67void initializeWebAssemblyEHRestoreStackPointerPass(PassRegistry &);
68void initializeWebAssemblyReplacePhysRegsPass(PassRegistry &);
69void initializeWebAssemblyPrepareForLiveIntervalsPass(PassRegistry &);
70void initializeWebAssemblyOptimizeLiveIntervalsPass(PassRegistry &);
71void initializeWebAssemblyMemIntrinsicResultsPass(PassRegistry &);
72void initializeWebAssemblyRegStackifyPass(PassRegistry &);
73void initializeWebAssemblyRegColoringPass(PassRegistry &);
74void initializeWebAssemblyExplicitLocalsPass(PassRegistry &);
75void initializeWebAssemblyFixIrreducibleControlFlowPass(PassRegistry &);
76void initializeWebAssemblyLateEHPreparePass(PassRegistry &);
77void initializeWebAssemblyExceptionInfoPass(PassRegistry &);
78void initializeWebAssemblyCFGSortPass(PassRegistry &);
79void initializeWebAssemblyCFGStackifyPass(PassRegistry &);
80void initializeWebAssemblyLowerBrUnlessPass(PassRegistry &);
81void initializeWebAssemblyRegNumberingPass(PassRegistry &);
82void initializeWebAssemblyPeepholePass(PassRegistry &);
83void initializeWebAssemblyCallIndirectFixupPass(PassRegistry &);
84
85} // end namespace llvm
86
87#endif
88