1285163Sdim//===-- WebAssembly.h - Top-level interface for WebAssembly ----*- C++ -*-===// 2285163Sdim// 3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4353358Sdim// See https://llvm.org/LICENSE.txt for license information. 5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6285163Sdim// 7285163Sdim//===----------------------------------------------------------------------===// 8285163Sdim/// 9285163Sdim/// \file 10341825Sdim/// This file contains the entry points for global functions defined in 11285163Sdim/// the LLVM WebAssembly back-end. 12285163Sdim/// 13285163Sdim//===----------------------------------------------------------------------===// 14285163Sdim 15285163Sdim#ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLY_H 16285163Sdim#define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLY_H 17285163Sdim 18314564Sdim#include "llvm/PassRegistry.h" 19285163Sdim#include "llvm/Support/CodeGen.h" 20285163Sdim 21285163Sdimnamespace llvm { 22285163Sdim 23285163Sdimclass WebAssemblyTargetMachine; 24314564Sdimclass ModulePass; 25285163Sdimclass FunctionPass; 26285163Sdim 27309124Sdim// LLVM IR passes. 28314564SdimModulePass *createWebAssemblyLowerEmscriptenEHSjLj(bool DoEH, bool DoSjLj); 29327952SdimModulePass *createWebAssemblyLowerGlobalDtors(); 30341825SdimModulePass *createWebAssemblyAddMissingPrototypes(); 31314564SdimModulePass *createWebAssemblyFixFunctionBitcasts(); 32296417SdimFunctionPass *createWebAssemblyOptimizeReturned(); 33296417Sdim 34309124Sdim// ISel and immediate followup passes. 35285163SdimFunctionPass *createWebAssemblyISelDag(WebAssemblyTargetMachine &TM, 36285163Sdim CodeGenOpt::Level OptLevel); 37296417SdimFunctionPass *createWebAssemblyArgumentMove(); 38309124SdimFunctionPass *createWebAssemblySetP2AlignOperands(); 39285163Sdim 40309124Sdim// Late passes. 41309124SdimFunctionPass *createWebAssemblyReplacePhysRegs(); 42309124SdimFunctionPass *createWebAssemblyPrepareForLiveIntervals(); 43309124SdimFunctionPass *createWebAssemblyOptimizeLiveIntervals(); 44344779SdimFunctionPass *createWebAssemblyMemIntrinsicResults(); 45296417SdimFunctionPass *createWebAssemblyRegStackify(); 46296417SdimFunctionPass *createWebAssemblyRegColoring(); 47309124SdimFunctionPass *createWebAssemblyFixIrreducibleControlFlow(); 48341825SdimFunctionPass *createWebAssemblyLateEHPrepare(); 49321369SdimFunctionPass *createWebAssemblyCFGSort(); 50296417SdimFunctionPass *createWebAssemblyCFGStackify(); 51353358SdimFunctionPass *createWebAssemblyExplicitLocals(); 52296417SdimFunctionPass *createWebAssemblyLowerBrUnless(); 53296417SdimFunctionPass *createWebAssemblyRegNumbering(); 54296417SdimFunctionPass *createWebAssemblyPeephole(); 55314564SdimFunctionPass *createWebAssemblyCallIndirectFixup(); 56296417Sdim 57341825Sdim// PassRegistry initialization declarations. 58341825Sdimvoid initializeWebAssemblyAddMissingPrototypesPass(PassRegistry &); 59341825Sdimvoid initializeWebAssemblyLowerEmscriptenEHSjLjPass(PassRegistry &); 60341825Sdimvoid initializeLowerGlobalDtorsPass(PassRegistry &); 61341825Sdimvoid initializeFixFunctionBitcastsPass(PassRegistry &); 62341825Sdimvoid initializeOptimizeReturnedPass(PassRegistry &); 63341825Sdimvoid initializeWebAssemblyArgumentMovePass(PassRegistry &); 64341825Sdimvoid initializeWebAssemblySetP2AlignOperandsPass(PassRegistry &); 65341825Sdimvoid initializeWebAssemblyReplacePhysRegsPass(PassRegistry &); 66341825Sdimvoid initializeWebAssemblyPrepareForLiveIntervalsPass(PassRegistry &); 67341825Sdimvoid initializeWebAssemblyOptimizeLiveIntervalsPass(PassRegistry &); 68344779Sdimvoid initializeWebAssemblyMemIntrinsicResultsPass(PassRegistry &); 69341825Sdimvoid initializeWebAssemblyRegStackifyPass(PassRegistry &); 70341825Sdimvoid initializeWebAssemblyRegColoringPass(PassRegistry &); 71341825Sdimvoid initializeWebAssemblyFixIrreducibleControlFlowPass(PassRegistry &); 72341825Sdimvoid initializeWebAssemblyLateEHPreparePass(PassRegistry &); 73341825Sdimvoid initializeWebAssemblyExceptionInfoPass(PassRegistry &); 74341825Sdimvoid initializeWebAssemblyCFGSortPass(PassRegistry &); 75341825Sdimvoid initializeWebAssemblyCFGStackifyPass(PassRegistry &); 76353358Sdimvoid initializeWebAssemblyExplicitLocalsPass(PassRegistry &); 77341825Sdimvoid initializeWebAssemblyLowerBrUnlessPass(PassRegistry &); 78341825Sdimvoid initializeWebAssemblyRegNumberingPass(PassRegistry &); 79341825Sdimvoid initializeWebAssemblyPeepholePass(PassRegistry &); 80341825Sdimvoid initializeWebAssemblyCallIndirectFixupPass(PassRegistry &); 81341825Sdim 82360784Sdimnamespace WebAssembly { 83360784Sdimenum TargetIndex { TI_LOCAL_START, TI_GLOBAL_START, TI_OPERAND_STACK_START }; 84360784Sdim} // end namespace WebAssembly 85360784Sdim 86285163Sdim} // end namespace llvm 87285163Sdim 88285163Sdim#endif 89