Halide 14.0.0
Halide compiler and libraries
WasmExecutor.h
Go to the documentation of this file.
1#ifndef HALIDE_WASM_EXECUTOR_H
2#define HALIDE_WASM_EXECUTOR_H
3
4/** \file
5 *
6 * Support for running Halide-compiled Wasm code in-process.
7 * Bindings for parameters, extern calls, etc. are established and the
8 * Wasm code is executed. Allows calls to realize to work
9 * exactly as if native code had been run, but via a JavaScript/Wasm VM.
10 * Currently, only the WABT interpreter is supported.
11 */
12
13#include "Argument.h"
14#include "JITModule.h"
15#include "Parameter.h"
16#include "Type.h"
17
18namespace Halide {
19
20struct Target;
21
22namespace Internal {
23
24struct WasmModuleContents;
25
26/** Handle to compiled wasm code which can be called later. */
27struct WasmModule {
29
30 /** If the given target can be executed via the wasm executor, return true. */
31 static bool can_jit_target(const Target &target);
32
33 /** Compile generated wasm code with a set of externs. */
35 const Module &module,
36 const std::vector<Argument> &arguments,
37 const std::string &fn_name,
38 const std::map<std::string, JITExtern> &externs,
39 const std::vector<JITModule> &extern_deps);
40
41 /** Run generated previously compiled wasm code with a set of arguments. */
42 int run(const void **args);
43};
44
45} // namespace Internal
46} // namespace Halide
47
48#endif // HALIDE_WASM_EXECUTOR_H
Defines a type used for expressing the type signature of a generated halide pipeline.
Defines the struct representing lifetime and dependencies of a JIT compiled halide pipeline.
Defines the internal representation of parameters to halide piplines.
Defines halide types.
A halide module.
Definition: Module.h:172
This file defines the class FunctionDAG, which is our representation of a Halide pipeline,...
@ Internal
Not visible externally, similar to 'static' linkage in C.
Handle to compiled wasm code which can be called later.
Definition: WasmExecutor.h:27
static WasmModule compile(const Module &module, const std::vector< Argument > &arguments, const std::string &fn_name, const std::map< std::string, JITExtern > &externs, const std::vector< JITModule > &extern_deps)
Compile generated wasm code with a set of externs.
static bool can_jit_target(const Target &target)
If the given target can be executed via the wasm executor, return true.
Internal::IntrusivePtr< WasmModuleContents > contents
Definition: WasmExecutor.h:28
int run(const void **args)
Run generated previously compiled wasm code with a set of arguments.
A struct representing a target machine and os to generate code for.
Definition: Target.h:19