Path: blob/main/contrib/llvm-project/llvm/lib/Target/WebAssembly/WebAssembly.h
35266 views
//===-- WebAssembly.h - Top-level interface for WebAssembly ----*- C++ -*-===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//7///8/// \file9/// This file contains the entry points for global functions defined in10/// the LLVM WebAssembly back-end.11///12//===----------------------------------------------------------------------===//1314#ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLY_H15#define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLY_H1617#include "llvm/PassRegistry.h"18#include "llvm/Support/CodeGen.h"1920namespace llvm {2122class WebAssemblyTargetMachine;23class ModulePass;24class FunctionPass;2526// LLVM IR passes.27ModulePass *createWebAssemblyLowerEmscriptenEHSjLj();28ModulePass *createWebAssemblyAddMissingPrototypes();29ModulePass *createWebAssemblyFixFunctionBitcasts();30FunctionPass *createWebAssemblyOptimizeReturned();31FunctionPass *createWebAssemblyLowerRefTypesIntPtrConv();32FunctionPass *createWebAssemblyRefTypeMem2Local();3334// ISel and immediate followup passes.35FunctionPass *createWebAssemblyISelDag(WebAssemblyTargetMachine &TM,36CodeGenOptLevel OptLevel);37FunctionPass *createWebAssemblyArgumentMove();38FunctionPass *createWebAssemblySetP2AlignOperands();39FunctionPass *createWebAssemblyCleanCodeAfterTrap();4041// Late passes.42FunctionPass *createWebAssemblyReplacePhysRegs();43FunctionPass *createWebAssemblyNullifyDebugValueLists();44FunctionPass *createWebAssemblyOptimizeLiveIntervals();45FunctionPass *createWebAssemblyMemIntrinsicResults();46FunctionPass *createWebAssemblyRegStackify();47FunctionPass *createWebAssemblyRegColoring();48FunctionPass *createWebAssemblyFixBrTableDefaults();49FunctionPass *createWebAssemblyFixIrreducibleControlFlow();50FunctionPass *createWebAssemblyLateEHPrepare();51FunctionPass *createWebAssemblyCFGSort();52FunctionPass *createWebAssemblyCFGStackify();53FunctionPass *createWebAssemblyExplicitLocals();54FunctionPass *createWebAssemblyLowerBrUnless();55FunctionPass *createWebAssemblyRegNumbering();56FunctionPass *createWebAssemblyDebugFixup();57FunctionPass *createWebAssemblyPeephole();58ModulePass *createWebAssemblyMCLowerPrePass();5960// PassRegistry initialization declarations.61void initializeFixFunctionBitcastsPass(PassRegistry &);62void initializeOptimizeReturnedPass(PassRegistry &);63void initializeWebAssemblyRefTypeMem2LocalPass(PassRegistry &);64void initializeWebAssemblyAddMissingPrototypesPass(PassRegistry &);65void initializeWebAssemblyArgumentMovePass(PassRegistry &);66void initializeWebAssemblyCleanCodeAfterTrapPass(PassRegistry &);67void initializeWebAssemblyCFGSortPass(PassRegistry &);68void initializeWebAssemblyCFGStackifyPass(PassRegistry &);69void initializeWebAssemblyDAGToDAGISelLegacyPass(PassRegistry &);70void initializeWebAssemblyDebugFixupPass(PassRegistry &);71void initializeWebAssemblyExceptionInfoPass(PassRegistry &);72void initializeWebAssemblyExplicitLocalsPass(PassRegistry &);73void initializeWebAssemblyFixBrTableDefaultsPass(PassRegistry &);74void initializeWebAssemblyFixIrreducibleControlFlowPass(PassRegistry &);75void initializeWebAssemblyLateEHPreparePass(PassRegistry &);76void initializeWebAssemblyLowerBrUnlessPass(PassRegistry &);77void initializeWebAssemblyLowerEmscriptenEHSjLjPass(PassRegistry &);78void initializeWebAssemblyLowerRefTypesIntPtrConvPass(PassRegistry &);79void initializeWebAssemblyMCLowerPrePassPass(PassRegistry &);80void initializeWebAssemblyMemIntrinsicResultsPass(PassRegistry &);81void initializeWebAssemblyNullifyDebugValueListsPass(PassRegistry &);82void initializeWebAssemblyOptimizeLiveIntervalsPass(PassRegistry &);83void initializeWebAssemblyPeepholePass(PassRegistry &);84void initializeWebAssemblyRegColoringPass(PassRegistry &);85void initializeWebAssemblyRegNumberingPass(PassRegistry &);86void initializeWebAssemblyRegStackifyPass(PassRegistry &);87void initializeWebAssemblyReplacePhysRegsPass(PassRegistry &);88void initializeWebAssemblySetP2AlignOperandsPass(PassRegistry &);8990namespace WebAssembly {91enum TargetIndex {92// Followed by a local index (ULEB).93TI_LOCAL,94// Followed by an absolute global index (ULEB). DEPRECATED.95TI_GLOBAL_FIXED,96// Followed by the index from the bottom of the Wasm stack.97TI_OPERAND_STACK,98// Followed by a compilation unit relative global index (uint32_t)99// that will have an associated relocation.100TI_GLOBAL_RELOC,101// Like TI_LOCAL, but indicates an indirect value (e.g. byval arg102// passed by pointer).103TI_LOCAL_INDIRECT104};105} // end namespace WebAssembly106107} // end namespace llvm108109#endif110111112