Loading...
Searching...
No Matches
WasmExecutor.h
Go to the documentation of this file.
#ifndef HALIDE_WASM_EXECUTOR_H
#define HALIDE_WASM_EXECUTOR_H
/** \file
*
* Support for running Halide-compiled Wasm code in-process.
* Bindings for parameters, extern calls, etc. are established and the
* Wasm code is executed. Allows calls to realize to work
* exactly as if native code had been run, but via a JavaScript/Wasm VM.
* Currently, only the WABT interpreter is supported.
*/
#include "Argument.h"
#include "Parameter.h"
#include "Type.h"
#include <map>
#include <string>
#include <vector>
namespace Halide {
struct JITExtern;
struct Target;
namespace Internal {
struct JITModule;
struct WasmModuleContents;
/** Handle to compiled wasm code which can be called later. */
struct WasmModule {
Internal::IntrusivePtr<WasmModuleContents> contents;
/** If the given target can be executed via the wasm executor, return true. */
static bool can_jit_target(const Target &target);
/** Compile generated wasm code with a set of externs. */
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);
/** Run generated previously compiled wasm code with a set of arguments. */
int run(const void *const *args);
};
} // namespace Internal
} // namespace Halide
#endif // HALIDE_WASM_EXECUTOR_H
Argument.h
Defines a type used for expressing the type signature of a generated halide pipeline.
Parameter.h
Defines the internal representation of parameters to halide piplines.
Type.h
Defines halide types.
Halide::Module
A halide module.
Definition Module.h:142
Halide::Internal
Definition AbstractGenerator.h:24
Halide
This file defines the class FunctionDAG, which is our representation of a Halide pipeline,...
Definition AbstractGenerator.h:19
Halide::Internal::IntrusivePtr
Intrusive shared pointers have a reference count (a RefCount object) stored in the class itself.
Definition IntrusivePtr.h:71
Halide::Internal::JITModule
Definition JITModule.h:146
Halide::Internal::WasmModule
Handle to compiled wasm code which can be called later.
Definition WasmExecutor.h:32
Halide::Internal::WasmModule::compile
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.
Halide::Internal::WasmModule::can_jit_target
static bool can_jit_target(const Target &target)
If the given target can be executed via the wasm executor, return true.
Halide::Internal::WasmModule::contents
Internal::IntrusivePtr< WasmModuleContents > contents
Definition WasmExecutor.h:33
Halide::Internal::WasmModule::run
int run(const void *const *args)
Run generated previously compiled wasm code with a set of arguments.
Halide::JITExtern
Definition Pipeline.h:582
Halide::Target
A struct representing a target machine and os to generate code for.
Definition Target.h:19