1 //===-- WebAssembly.h - Top-level interface for WebAssembly ----*- C++ -*-===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
10 /// This file contains the entry points for global functions defined in
11 /// the LLVM WebAssembly back-end.
13 //===----------------------------------------------------------------------===//
15 #ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLY_H
16 #define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLY_H
18 #include "llvm/PassRegistry.h"
19 #include "llvm/Support/CodeGen.h"
23 class WebAssemblyTargetMachine
;
28 ModulePass
*createWebAssemblyLowerEmscriptenEHSjLj();
29 ModulePass
*createWebAssemblyAddMissingPrototypes();
30 ModulePass
*createWebAssemblyFixFunctionBitcasts();
31 FunctionPass
*createWebAssemblyOptimizeReturned();
32 FunctionPass
*createWebAssemblyLowerRefTypesIntPtrConv();
33 FunctionPass
*createWebAssemblyRefTypeMem2Local();
35 // ISel and immediate followup passes.
36 FunctionPass
*createWebAssemblyISelDag(WebAssemblyTargetMachine
&TM
,
37 CodeGenOptLevel OptLevel
);
38 FunctionPass
*createWebAssemblyArgumentMove();
39 FunctionPass
*createWebAssemblySetP2AlignOperands();
40 FunctionPass
*createWebAssemblyCleanCodeAfterTrap();
43 FunctionPass
*createWebAssemblyReplacePhysRegs();
44 FunctionPass
*createWebAssemblyNullifyDebugValueLists();
45 FunctionPass
*createWebAssemblyOptimizeLiveIntervals();
46 FunctionPass
*createWebAssemblyMemIntrinsicResults();
47 FunctionPass
*createWebAssemblyRegStackify();
48 FunctionPass
*createWebAssemblyRegColoring();
49 FunctionPass
*createWebAssemblyFixBrTableDefaults();
50 FunctionPass
*createWebAssemblyFixIrreducibleControlFlow();
51 FunctionPass
*createWebAssemblyLateEHPrepare();
52 FunctionPass
*createWebAssemblyCFGSort();
53 FunctionPass
*createWebAssemblyCFGStackify();
54 FunctionPass
*createWebAssemblyExplicitLocals();
55 FunctionPass
*createWebAssemblyLowerBrUnless();
56 FunctionPass
*createWebAssemblyRegNumbering();
57 FunctionPass
*createWebAssemblyDebugFixup();
58 FunctionPass
*createWebAssemblyPeephole();
59 ModulePass
*createWebAssemblyMCLowerPrePass();
61 // PassRegistry initialization declarations.
62 void initializeFixFunctionBitcastsPass(PassRegistry
&);
63 void initializeOptimizeReturnedPass(PassRegistry
&);
64 void initializeWebAssemblyRefTypeMem2LocalPass(PassRegistry
&);
65 void initializeWebAssemblyAddMissingPrototypesPass(PassRegistry
&);
66 void initializeWebAssemblyArgumentMovePass(PassRegistry
&);
67 void initializeWebAssemblyCleanCodeAfterTrapPass(PassRegistry
&);
68 void initializeWebAssemblyCFGSortPass(PassRegistry
&);
69 void initializeWebAssemblyCFGStackifyPass(PassRegistry
&);
70 void initializeWebAssemblyDAGToDAGISelLegacyPass(PassRegistry
&);
71 void initializeWebAssemblyDebugFixupPass(PassRegistry
&);
72 void initializeWebAssemblyExceptionInfoPass(PassRegistry
&);
73 void initializeWebAssemblyExplicitLocalsPass(PassRegistry
&);
74 void initializeWebAssemblyFixBrTableDefaultsPass(PassRegistry
&);
75 void initializeWebAssemblyFixIrreducibleControlFlowPass(PassRegistry
&);
76 void initializeWebAssemblyLateEHPreparePass(PassRegistry
&);
77 void initializeWebAssemblyLowerBrUnlessPass(PassRegistry
&);
78 void initializeWebAssemblyLowerEmscriptenEHSjLjPass(PassRegistry
&);
79 void initializeWebAssemblyLowerRefTypesIntPtrConvPass(PassRegistry
&);
80 void initializeWebAssemblyMCLowerPrePassPass(PassRegistry
&);
81 void initializeWebAssemblyMemIntrinsicResultsPass(PassRegistry
&);
82 void initializeWebAssemblyNullifyDebugValueListsPass(PassRegistry
&);
83 void initializeWebAssemblyOptimizeLiveIntervalsPass(PassRegistry
&);
84 void initializeWebAssemblyPeepholePass(PassRegistry
&);
85 void initializeWebAssemblyRegColoringPass(PassRegistry
&);
86 void initializeWebAssemblyRegNumberingPass(PassRegistry
&);
87 void initializeWebAssemblyRegStackifyPass(PassRegistry
&);
88 void initializeWebAssemblyReplacePhysRegsPass(PassRegistry
&);
89 void initializeWebAssemblySetP2AlignOperandsPass(PassRegistry
&);
91 namespace WebAssembly
{
93 // Followed by a local index (ULEB).
95 // Followed by an absolute global index (ULEB). DEPRECATED.
97 // Followed by the index from the bottom of the Wasm stack.
99 // Followed by a compilation unit relative global index (uint32_t)
100 // that will have an associated relocation.
102 // Like TI_LOCAL, but indicates an indirect value (e.g. byval arg
103 // passed by pointer).
106 } // end namespace WebAssembly
108 } // end namespace llvm