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
*createWebAssemblyLowerGlobalDtors();
30 ModulePass
*createWebAssemblyAddMissingPrototypes();
31 ModulePass
*createWebAssemblyFixFunctionBitcasts();
32 FunctionPass
*createWebAssemblyOptimizeReturned();
33 FunctionPass
*createWebAssemblyLowerRefTypesIntPtrConv();
35 // ISel and immediate followup passes.
36 FunctionPass
*createWebAssemblyISelDag(WebAssemblyTargetMachine
&TM
,
37 CodeGenOpt::Level OptLevel
);
38 FunctionPass
*createWebAssemblyArgumentMove();
39 FunctionPass
*createWebAssemblySetP2AlignOperands();
42 FunctionPass
*createWebAssemblyReplacePhysRegs();
43 FunctionPass
*createWebAssemblyNullifyDebugValueLists();
44 FunctionPass
*createWebAssemblyPrepareForLiveIntervals();
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 initializeWebAssemblyAddMissingPrototypesPass(PassRegistry
&);
63 void initializeWebAssemblyLowerEmscriptenEHSjLjPass(PassRegistry
&);
64 void initializeLowerGlobalDtorsPass(PassRegistry
&);
65 void initializeFixFunctionBitcastsPass(PassRegistry
&);
66 void initializeOptimizeReturnedPass(PassRegistry
&);
67 void initializeWebAssemblyArgumentMovePass(PassRegistry
&);
68 void initializeWebAssemblySetP2AlignOperandsPass(PassRegistry
&);
69 void initializeWebAssemblyReplacePhysRegsPass(PassRegistry
&);
70 void initializeWebAssemblyNullifyDebugValueListsPass(PassRegistry
&);
71 void initializeWebAssemblyPrepareForLiveIntervalsPass(PassRegistry
&);
72 void initializeWebAssemblyOptimizeLiveIntervalsPass(PassRegistry
&);
73 void initializeWebAssemblyMemIntrinsicResultsPass(PassRegistry
&);
74 void initializeWebAssemblyRegStackifyPass(PassRegistry
&);
75 void initializeWebAssemblyRegColoringPass(PassRegistry
&);
76 void initializeWebAssemblyFixBrTableDefaultsPass(PassRegistry
&);
77 void initializeWebAssemblyFixIrreducibleControlFlowPass(PassRegistry
&);
78 void initializeWebAssemblyLateEHPreparePass(PassRegistry
&);
79 void initializeWebAssemblyExceptionInfoPass(PassRegistry
&);
80 void initializeWebAssemblyCFGSortPass(PassRegistry
&);
81 void initializeWebAssemblyCFGStackifyPass(PassRegistry
&);
82 void initializeWebAssemblyExplicitLocalsPass(PassRegistry
&);
83 void initializeWebAssemblyLowerBrUnlessPass(PassRegistry
&);
84 void initializeWebAssemblyRegNumberingPass(PassRegistry
&);
85 void initializeWebAssemblyDebugFixupPass(PassRegistry
&);
86 void initializeWebAssemblyPeepholePass(PassRegistry
&);
87 void initializeWebAssemblyMCLowerPrePassPass(PassRegistry
&);
88 void initializeWebAssemblyLowerRefTypesIntPtrConvPass(PassRegistry
&);
90 namespace WebAssembly
{
92 // Followed by a local index (ULEB).
94 // Followed by an absolute global index (ULEB). DEPRECATED.
96 // Followed by the index from the bottom of the Wasm stack.
98 // Followed by a compilation unit relative global index (uint32_t)
99 // that will have an associated relocation.
101 // Like TI_LOCAL, but indicates an indirect value (e.g. byval arg
102 // passed by pointer).
105 } // end namespace WebAssembly
107 } // end namespace llvm