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> {
38public:
40};
41
43
45 : public RequiredPassInfoMixin<WebAssemblyAddMissingPrototypesPass> {
46public:
48};
49
51
53 : public RequiredPassInfoMixin<WebAssemblyFixFunctionBitcastsPass> {
54public:
56};
57
59
61 : public OptionalPassInfoMixin<WebAssemblyOptimizeReturnedPass> {
62public:
64};
65
67
69 : public RequiredPassInfoMixin<WebAssemblyRefTypeMem2LocalPass> {
70public:
72};
73
75
77 : public RequiredPassInfoMixin<WebAssemblyReduceToAnyAllTruePass> {
78private:
79 Module *CachedModule = nullptr;
80 bool ModuleHasInterestingIntrinsics = false;
82
83public:
86};
87
88FunctionPass *
89createWebAssemblyReduceToAnyAllTrueLegacyPass(WebAssemblyTargetMachine &TM);
90
101
104
105// GlobalISel
108 const WebAssemblySubtarget &,
110
113
116
117// ISel and immediate followup passes.
123
125 CodeGenOptLevel OptLevel);
126
128 : public RequiredPassInfoMixin<WebAssemblyArgumentMovePass> {
129public:
132};
133
135
137 : public RequiredPassInfoMixin<WebAssemblySetP2AlignOperandsPass> {
138public:
141};
142
144
146 : public RequiredPassInfoMixin<WebAssemblyCleanCodeAfterTrapPass> {
147public:
150};
151
153
154// Late passes.
156 : public RequiredPassInfoMixin<WebAssemblyReplacePhysRegsPass> {
157public:
160};
161
163
165 : public RequiredPassInfoMixin<WebAssemblyNullifyDebugValueListsPass> {
166public:
169};
170
172
174 : public RequiredPassInfoMixin<WebAssemblyOptimizeLiveIntervalsPass> {
175public:
178};
179
181
183 : public RequiredPassInfoMixin<WebAssemblyMemIntrinsicResultsPass> {
184public:
187};
188
190
192 : public RequiredPassInfoMixin<WebAssemblyRegStackifyPass> {
193private:
194 bool Optimize = false;
195
196public:
198 : Optimize(OptLevel != CodeGenOptLevel::None) {}
201};
202
204
206 : public RequiredPassInfoMixin<WebAssemblyRegColoringPass> {
207public:
210};
211
213
215 : public RequiredPassInfoMixin<WebAssemblyFixBrTableDefaultsPass> {
216public:
219};
220
222
224 : public RequiredPassInfoMixin<WebAssemblyFixIrreducibleControlFlowPass> {
225public:
228};
229
231
233 : public RequiredPassInfoMixin<WebAssemblyLateEHPreparePass> {
234public:
237};
238
240
242 : public RequiredPassInfoMixin<WebAssemblyCFGSortPass> {
243public:
246};
247
249
251 : public RequiredPassInfoMixin<WebAssemblyCFGStackifyPass> {
252public:
255};
256
258
260 : public RequiredPassInfoMixin<WebAssemblyExplicitLocalsPass> {
261public:
264};
265
267
269 : public RequiredPassInfoMixin<WebAssemblyLowerBrUnlessPass> {
270public:
273};
274
276
278 : public RequiredPassInfoMixin<WebAssemblyRegNumberingPass> {
279public:
282};
283
285
287 : public RequiredPassInfoMixin<WebAssemblyDebugFixupPass> {
288public:
291};
292
294
296 : public RequiredPassInfoMixin<WebAssemblyPeepholePass> {
297public:
300};
301
303
305 : public RequiredPassInfoMixin<WebAssemblyMCLowerPrePass> {
306public:
308};
309
311
312// PassRegistry initialization declarations.
342 PassRegistry &);
343
344namespace WebAssembly {
346 // Followed by a local index (ULEB).
348 // Followed by an absolute global index (ULEB). DEPRECATED.
350 // Followed by the index from the bottom of the Wasm stack.
352 // Followed by a compilation unit relative global index (uint32_t)
353 // that will have an associated relocation.
355 // Like TI_LOCAL, but indicates an indirect value (e.g. byval arg
356 // passed by pointer).
358};
359} // end namespace WebAssembly
360
361} // end namespace llvm
362
363#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:67
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)
Definition WebAssembly.h:97
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)
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(Function &F, FunctionAnalysisManager &FAM)
WebAssemblyReduceToAnyAllTruePass(WebAssemblyTargetMachine &TM)
Definition WebAssembly.h:84
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 initializeWebAssemblyPostLegalizerCombinerPass(PassRegistry &)
void initializeWebAssemblyExceptionInfoWrapperPassPass(PassRegistry &)
FunctionPass * createWebAssemblyRegNumberingLegacyPass()
void initializeWebAssemblyDAGToDAGISelLegacyPass(PassRegistry &)
void initializeWebAssemblyCleanCodeAfterTrapLegacyPass(PassRegistry &)
AnalysisManager< MachineFunction > MachineFunctionAnalysisManager
FunctionPass * createWebAssemblySetP2AlignOperandsLegacyPass()
void initializeWebAssemblyMemIntrinsicResultsLegacyPass(PassRegistry &)
void initializeWebAssemblyRegNumberingLegacyPass(PassRegistry &)
void initializeWebAssemblyLateEHPrepareLegacyPass(PassRegistry &)
void initializeWebAssemblyNullifyDebugValueListsLegacyPass(PassRegistry &)
FunctionPass * createWebAssemblyArgumentMoveLegacyPass()
void initializeWebAssemblyRefTypeMem2LocalLegacyPass(PassRegistry &)
void initializeWebAssemblyFixFunctionBitcastsLegacyPass(PassRegistry &)
void initializeWebAssemblyLowerBrUnlessLegacyPass(PassRegistry &)
FunctionPass * createWebAssemblyReduceToAnyAllTrueLegacyPass(WebAssemblyTargetMachine &TM)
FunctionPass * createWebAssemblyRegColoringLegacyPass()
FunctionPass * createWebAssemblyFixIrreducibleControlFlowLegacyPass()
void initializeWebAssemblyCoalesceFeaturesAndStripAtomicsLegacyPass(PassRegistry &)
CodeGenOptLevel
Code generation optimization level.
Definition CodeGen.h:82
ModulePass * createWebAssemblyCoalesceFeaturesAndStripAtomicsLegacyPass(WebAssemblyTargetMachine &TM)
FunctionPass * createWebAssemblyRefTypeMem2LocalLegacyPass()
void initializeWebAssemblyArgumentMoveLegacyPass(PassRegistry &)
void initializeWebAssemblyOptimizeReturnedLegacyPass(PassRegistry &)
void initializeWebAssemblyExplicitLocalsLegacyPass(PassRegistry &)
ModulePass * createWebAssemblyFixFunctionBitcastsLegacyPass()
FunctionPass * createWebAssemblyPeepholeLegacyPass()
void initializeWebAssemblyPreLegalizerCombinerPass(PassRegistry &)
FunctionPass * createWebAssemblyMemIntrinsicResultsLegacyPass()
void initializeWebAssemblyLowerEmscriptenEHSjLjLegacyPass(PassRegistry &)
FunctionPass * createWebAssemblyOptimizeReturnedLegacyPass()
ModulePass * createWebAssemblyLowerEmscriptenEHSjLjLegacyPass()
void initializeWebAssemblyFixBrTableDefaultsLegacyPass(PassRegistry &)
FunctionPass * createWebAssemblyPreLegalizerCombiner()
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 &)
FunctionPass * createWebAssemblyPostLegalizerCombiner()
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.