LLVM 24.0.0git
WebAssembly.h
Go to the documentation of this file.
1//===-- WebAssembly.h - Top-level interface for WebAssembly ----*- C++ -*-===//
2//
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
6//
7//===----------------------------------------------------------------------===//
8///
9/// \file
10/// This file contains the entry points for global functions defined in
11/// the LLVM WebAssembly back-end.
12///
13//===----------------------------------------------------------------------===//
14
15#ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLY_H
16#define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLY_H
17
24#include "llvm/IR/Analysis.h"
25#include "llvm/IR/PassManager.h"
26#include "llvm/PassRegistry.h"
28
29namespace llvm {
30
32class ModulePass;
33class FunctionPass;
34
35// LLVM IR passes.
37 : public RequiredPassInfoMixin<WebAssemblyLowerEmscriptenEHSjLjPass> {
38 bool EnableEmEH;
39
40public:
41 WebAssemblyLowerEmscriptenEHSjLjPass(bool EnableEmEH = false)
42 : EnableEmEH(EnableEmEH) {}
44};
45
47
49 : public RequiredPassInfoMixin<WebAssemblyAddMissingPrototypesPass> {
50public:
52};
53
55
57 : public RequiredPassInfoMixin<WebAssemblyFixFunctionBitcastsPass> {
58public:
60};
61
63
65 : public OptionalPassInfoMixin<WebAssemblyOptimizeReturnedPass> {
66public:
68};
69
71
73 : public RequiredPassInfoMixin<WebAssemblyRefTypeMem2LocalPass> {
74public:
76};
77
79
81 : public RequiredPassInfoMixin<WebAssemblyReduceToAnyAllTruePass> {
82private:
83 Module *CachedModule = nullptr;
84 bool ModuleHasInterestingIntrinsics = false;
86
87public:
90};
91
92FunctionPass *
93createWebAssemblyReduceToAnyAllTrueLegacyPass(WebAssemblyTargetMachine &TM);
94
105
108
109// GlobalISel
112 const WebAssemblySubtarget &,
114
116 : public RequiredPassInfoMixin<WebAssemblyPostLegalizerCombinerPass> {
117public:
120};
121
123
125 : public RequiredPassInfoMixin<WebAssemblyPreLegalizerCombinerPass> {
126public:
129};
130
132
133// ISel and immediate followup passes.
139
141 CodeGenOptLevel OptLevel);
142
144 : public RequiredPassInfoMixin<WebAssemblyArgumentMovePass> {
145public:
148};
149
151
153 : public RequiredPassInfoMixin<WebAssemblySetP2AlignOperandsPass> {
154public:
157};
158
160
162 : public RequiredPassInfoMixin<WebAssemblyCleanCodeAfterTrapPass> {
163public:
166};
167
169
170// Late passes.
172 : public RequiredPassInfoMixin<WebAssemblyReplacePhysRegsPass> {
173public:
176};
177
179
181 : public RequiredPassInfoMixin<WebAssemblyNullifyDebugValueListsPass> {
182public:
185};
186
188
190 : public RequiredPassInfoMixin<WebAssemblyOptimizeLiveIntervalsPass> {
191public:
194};
195
197
199 : public RequiredPassInfoMixin<WebAssemblyMemIntrinsicResultsPass> {
200public:
203};
204
206
208 : public RequiredPassInfoMixin<WebAssemblyRegStackifyPass> {
209private:
210 bool Optimize = false;
211
212public:
214 : Optimize(OptLevel != CodeGenOptLevel::None) {}
217};
218
220
222 : public RequiredPassInfoMixin<WebAssemblyRegColoringPass> {
223public:
226};
227
229
231 : public RequiredPassInfoMixin<WebAssemblyFixBrTableDefaultsPass> {
232public:
235};
236
238
240 : public RequiredPassInfoMixin<WebAssemblyFixIrreducibleControlFlowPass> {
241public:
244};
245
247
249 : public RequiredPassInfoMixin<WebAssemblyLateEHPreparePass> {
250public:
253};
254
256
258 : public RequiredPassInfoMixin<WebAssemblyCFGSortPass> {
259public:
262};
263
265
267 : public RequiredPassInfoMixin<WebAssemblyCFGStackifyPass> {
268public:
271};
272
274
276 : public RequiredPassInfoMixin<WebAssemblyExplicitLocalsPass> {
277public:
280};
281
283
285 : public RequiredPassInfoMixin<WebAssemblyLowerBrUnlessPass> {
286public:
289};
290
292
294 : public RequiredPassInfoMixin<WebAssemblyRegNumberingPass> {
295public:
298};
299
301
303 : public RequiredPassInfoMixin<WebAssemblyDebugFixupPass> {
304public:
307};
308
310
312 : public RequiredPassInfoMixin<WebAssemblyPeepholePass> {
313public:
316};
317
319
321 : public RequiredPassInfoMixin<WebAssemblyMCLowerPrePass> {
322public:
324};
325
327
328// PassRegistry initialization declarations.
360 PassRegistry &);
361
362namespace WebAssembly {
364 // Followed by a local index (ULEB).
366 // Followed by an absolute global index (ULEB). DEPRECATED.
368 // Followed by the index from the bottom of the Wasm stack.
370 // Followed by a compilation unit relative global index (uint32_t)
371 // that will have an associated relocation.
373 // Like TI_LOCAL, but indicates an indirect value (e.g. byval arg
374 // passed by pointer).
376};
377} // end namespace WebAssembly
378
379} // end namespace llvm
380
381#endif
This header defines various interfaces for pass management in LLVM.
#define F(x, y, z)
Definition MD5.cpp:54
FunctionAnalysisManager FAM
ModuleAnalysisManager MAM
This file declares the targeting of the RegisterBankInfo class for WebAssembly.
This file declares the WebAssembly-specific subclass of TargetSubtarget.
FunctionPass class - This class is used to implement most global optimizations.
Definition Pass.h:314
ModulePass class - This class is used to implement unstructured interprocedural optimizations and ana...
Definition Pass.h:255
A Module instance is used to store all the information related to an LLVM module.
Definition Module.h:68
PassRegistry - This class manages the registration and intitialization of the pass subsystem as appli...
A set of analyses that are preserved following a run of a transformation pass.
Definition Analysis.h:112
SelectionDAGISelPass(std::unique_ptr< SelectionDAGISel > Selector)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
WebAssemblyCoalesceFeaturesAndStripAtomicsPass(WebAssemblyTargetMachine &TM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
WebAssemblyISelDAGToDAGPass(WebAssemblyTargetMachine &TM, CodeGenOptLevel OptLevel)
This pass converts a legalized DAG into a WebAssembly-specific DAG, ready for instruction scheduling.
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
WebAssemblyLowerEmscriptenEHSjLjPass(bool EnableEmEH=false)
Definition WebAssembly.h:41
PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM)
WebAssemblyReduceToAnyAllTruePass(WebAssemblyTargetMachine &TM)
Definition WebAssembly.h:88
PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
WebAssemblyRegStackifyPass(CodeGenOptLevel OptLevel)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
This class provides the information for the target register banks.
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
Pass manager infrastructure for declaring and invalidating analyses.
This is an optimization pass for GlobalISel generic memory operations.
FunctionPass * createWebAssemblyExplicitLocalsLegacyPass()
FunctionPass * createWebAssemblyCleanCodeAfterTrapLegacyPass()
ModulePass * createWebAssemblyMCLowerPreLegacyPass()
void initializeWebAssemblySetP2AlignOperandsLegacyPass(PassRegistry &)
void initializeWebAssemblyRegStackifyLegacyPass(PassRegistry &)
void initializeWebAssemblyPeepholeLegacyPass(PassRegistry &)
void initializeWebAssemblyExceptionInfoWrapperPassPass(PassRegistry &)
FunctionPass * createWebAssemblyPreLegalizerCombinerLegacyPass()
FunctionPass * createWebAssemblyRegNumberingLegacyPass()
void initializeWebAssemblyDAGToDAGISelLegacyPass(PassRegistry &)
void initializeWebAssemblyCleanCodeAfterTrapLegacyPass(PassRegistry &)
AnalysisManager< MachineFunction > MachineFunctionAnalysisManager
FunctionPass * createWebAssemblySetP2AlignOperandsLegacyPass()
void initializeWebAssemblyPreLegalizerCombinerLegacyPass(PassRegistry &)
void initializeWebAssemblyMemIntrinsicResultsLegacyPass(PassRegistry &)
void initializeWebAssemblyRegNumberingLegacyPass(PassRegistry &)
void initializeWebAssemblyLateEHPrepareLegacyPass(PassRegistry &)
void initializeWebAssemblyNullifyDebugValueListsLegacyPass(PassRegistry &)
FunctionPass * createWebAssemblyArgumentMoveLegacyPass()
void initializeWebAssemblyRefTypeMem2LocalLegacyPass(PassRegistry &)
void initializeWebAssemblyFixFunctionBitcastsLegacyPass(PassRegistry &)
ModulePass * createWebAssemblyLowerEmscriptenEHSjLjLegacyPass(bool EnableEmEH)
void initializeWebAssemblyLowerBrUnlessLegacyPass(PassRegistry &)
FunctionPass * createWebAssemblyReduceToAnyAllTrueLegacyPass(WebAssemblyTargetMachine &TM)
FunctionPass * createWebAssemblyRegColoringLegacyPass()
FunctionPass * createWebAssemblyPostLegalizerCombinerLegacyPass()
FunctionPass * createWebAssemblyFixIrreducibleControlFlowLegacyPass()
void initializeWebAssemblyCoalesceFeaturesAndStripAtomicsLegacyPass(PassRegistry &)
void initializeWebAssemblyPostLegalizerCombinerLegacyPass(PassRegistry &)
CodeGenOptLevel
Code generation optimization level.
Definition CodeGen.h:227
ModulePass * createWebAssemblyCoalesceFeaturesAndStripAtomicsLegacyPass(WebAssemblyTargetMachine &TM)
FunctionPass * createWebAssemblyRefTypeMem2LocalLegacyPass()
void initializeWebAssemblyArgumentMoveLegacyPass(PassRegistry &)
void initializeWebAssemblyOptimizeReturnedLegacyPass(PassRegistry &)
void initializeWebAssemblyExplicitLocalsLegacyPass(PassRegistry &)
ModulePass * createWebAssemblyFixFunctionBitcastsLegacyPass()
FunctionPass * createWebAssemblyPeepholeLegacyPass()
FunctionPass * createWebAssemblyMemIntrinsicResultsLegacyPass()
void initializeWebAssemblyLowerEmscriptenEHSjLjLegacyPass(PassRegistry &)
FunctionPass * createWebAssemblyOptimizeReturnedLegacyPass()
void initializeWebAssemblyFixBrTableDefaultsLegacyPass(PassRegistry &)
void initializeWebAssemblyAddMissingPrototypesLegacyPass(PassRegistry &)
void initializeWebAssemblyCFGSortLegacyPass(PassRegistry &)
FunctionPass * createWebAssemblyDebugFixupLegacyPass()
FunctionPass * createWebAssemblyFixBrTableDefaultsLegacyPass()
FunctionPass * createWebAssemblyISelDagLegacyPass(WebAssemblyTargetMachine &TM, CodeGenOptLevel OptLevel)
FunctionPass * createWebAssemblyNullifyDebugValueListsLegacyPass()
InstructionSelector * createWebAssemblyInstructionSelector(const WebAssemblyTargetMachine &TM, const WebAssemblySubtarget &Subtarget, const WebAssemblyRegisterBankInfo &RBI)
FunctionPass * createWebAssemblyCFGStackifyLegacyPass()
void initializeWebAssemblyRegColoringLegacyPass(PassRegistry &)
FunctionPass * createWebAssemblyRegStackifyLegacyPass(CodeGenOptLevel OptLevel)
FunctionPass * createWebAssemblyOptimizeLiveIntervalsLegacyPass()
void initializeWebAssemblyFixIrreducibleControlFlowLegacyPass(PassRegistry &)
FunctionPass * createWebAssemblyLowerBrUnlessLegacyPass()
AnalysisManager< Function > FunctionAnalysisManager
Convenience typedef for the Function analysis manager.
ModulePass * createWebAssemblyAddMissingPrototypesLegacyPass()
FunctionPass * createWebAssemblyReplacePhysRegsLegacyPass()
void initializeWebAssemblyCFGStackifyLegacyPass(PassRegistry &)
void initializeWebAssemblyOptimizeLiveIntervalsLegacyPass(PassRegistry &)
FunctionPass * createWebAssemblyCFGSortLegacyPass()
void initializeWebAssemblyMCLowerPreLegacyPass(PassRegistry &)
void initializeWebAssemblyAsmPrinterPass(PassRegistry &)
void initializeWebAssemblyReplacePhysRegsLegacyPass(PassRegistry &)
AnalysisManager< Module > ModuleAnalysisManager
Convenience typedef for the Module analysis manager.
Definition MIRParser.h:39
FunctionPass * createWebAssemblyLateEHPrepareLegacyPass()
void initializeWebAssemblyDebugFixupLegacyPass(PassRegistry &)
A CRTP mix-in for passes that can be skipped.
A CRTP mix-in for passes that should not be skipped.