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
112 : public RequiredPassInfoMixin<WebAssemblyPostLegalizerCombinerPass> {
113public:
116};
117
119
121 : public RequiredPassInfoMixin<WebAssemblyPreLegalizerCombinerPass> {
122public:
125};
126
128
129// ISel and immediate followup passes.
135
137 CodeGenOptLevel OptLevel);
138
140 : public RequiredPassInfoMixin<WebAssemblyArgumentMovePass> {
141public:
144};
145
147
149 : public RequiredPassInfoMixin<WebAssemblySetP2AlignOperandsPass> {
150public:
153};
154
156
158 : public RequiredPassInfoMixin<WebAssemblyCleanCodeAfterTrapPass> {
159public:
162};
163
165
166// Late passes.
168 : public RequiredPassInfoMixin<WebAssemblyReplacePhysRegsPass> {
169public:
172};
173
175
177 : public RequiredPassInfoMixin<WebAssemblyNullifyDebugValueListsPass> {
178public:
181};
182
184
186 : public RequiredPassInfoMixin<WebAssemblyOptimizeLiveIntervalsPass> {
187public:
190};
191
193
195 : public RequiredPassInfoMixin<WebAssemblyMemIntrinsicResultsPass> {
196public:
199};
200
202
204 : public RequiredPassInfoMixin<WebAssemblyRegStackifyPass> {
205private:
206 bool Optimize = false;
207
208public:
210 : Optimize(OptLevel != CodeGenOptLevel::None) {}
213};
214
216
218 : public RequiredPassInfoMixin<WebAssemblyRegColoringPass> {
219public:
222};
223
225
227 : public RequiredPassInfoMixin<WebAssemblyFixBrTableDefaultsPass> {
228public:
231};
232
234
236 : public RequiredPassInfoMixin<WebAssemblyFixIrreducibleControlFlowPass> {
237public:
240};
241
243
245 : public RequiredPassInfoMixin<WebAssemblyLateEHPreparePass> {
246public:
249};
250
252
254 : public RequiredPassInfoMixin<WebAssemblyCFGSortPass> {
255public:
258};
259
261
263 : public RequiredPassInfoMixin<WebAssemblyCFGStackifyPass> {
264public:
267};
268
270
272 : public RequiredPassInfoMixin<WebAssemblyExplicitLocalsPass> {
273public:
276};
277
279
281 : public RequiredPassInfoMixin<WebAssemblyLowerBrUnlessPass> {
282public:
285};
286
288
290 : public RequiredPassInfoMixin<WebAssemblyRegNumberingPass> {
291public:
294};
295
297
299 : public RequiredPassInfoMixin<WebAssemblyDebugFixupPass> {
300public:
303};
304
306
308 : public RequiredPassInfoMixin<WebAssemblyPeepholePass> {
309public:
312};
313
315
317 : public RequiredPassInfoMixin<WebAssemblyMCLowerPrePass> {
318public:
320};
321
323
324// PassRegistry initialization declarations.
356 PassRegistry &);
357
358namespace WebAssembly {
360 // Followed by a local index (ULEB).
362 // Followed by an absolute global index (ULEB). DEPRECATED.
364 // Followed by the index from the bottom of the Wasm stack.
366 // Followed by a compilation unit relative global index (uint32_t)
367 // that will have an associated relocation.
369 // Like TI_LOCAL, but indicates an indirect value (e.g. byval arg
370 // passed by pointer).
372};
373} // end namespace WebAssembly
374
375} // end namespace llvm
376
377#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(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
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 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 &)
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:149
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()
ModulePass * createWebAssemblyLowerEmscriptenEHSjLjLegacyPass()
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.