Add a compile command to Wasmtime.
This commit adds a `compile` command to the Wasmtime CLI. The command can be used to Ahead-Of-Time (AOT) compile WebAssembly modules. With the `all-arch` feature enabled, AOT compilation can be performed for non-native architectures (i.e. cross-compilation). The `Module::compile` method has been added to perform AOT compilation. A few of the CLI flags relating to "on by default" Wasm features have been changed to be "--disable-XYZ" flags. A simple example of using the `wasmtime compile` command: ```text $ wasmtime compile input.wasm $ wasmtime input.cwasm ```
This commit is contained in:
@@ -8,6 +8,9 @@ use crate::cdsl::settings::{SettingGroup, SettingGroupBuilder};
|
||||
use crate::shared::Definitions as SharedDefinitions;
|
||||
|
||||
fn define_settings(_shared: &SettingGroup) -> SettingGroup {
|
||||
// Note: Wasmtime's `compile` command exposes these settings as CLI options
|
||||
// If the settings change, please update src/commands/compile.rs to match.
|
||||
|
||||
let mut setting = SettingGroupBuilder::new("arm64");
|
||||
let has_lse = setting.add_bool("has_lse", "Large System Extensions", false);
|
||||
|
||||
|
||||
@@ -3,6 +3,9 @@ use crate::cdsl::settings::{PredicateNode, SettingGroup, SettingGroupBuilder};
|
||||
pub(crate) fn define(shared: &SettingGroup) -> SettingGroup {
|
||||
let mut settings = SettingGroupBuilder::new("x86");
|
||||
|
||||
// Note: Wasmtime's `compile` command exposes these settings as CLI options
|
||||
// If the settings change, please update src/commands/compile.rs to match.
|
||||
|
||||
// CPUID.01H:ECX
|
||||
let has_sse3 = settings.add_bool("has_sse3", "SSE3: CPUID.01H:ECX.SSE3[bit 0]", false);
|
||||
let has_ssse3 = settings.add_bool("has_ssse3", "SSSE3: CPUID.01H:ECX.SSSE3[bit 9]", false);
|
||||
@@ -85,7 +88,7 @@ pub(crate) fn define(shared: &SettingGroup) -> SettingGroup {
|
||||
settings.add_predicate("use_lzcnt", predicate!(has_lzcnt));
|
||||
|
||||
// Some shared boolean values are used in x86 instruction predicates, so we need to group them
|
||||
// in the same TargetIsa, for compabitibity with code generated by meta-python.
|
||||
// in the same TargetIsa, for compatibility with code generated by meta-python.
|
||||
// TODO Once all the meta generation code has been migrated from Python to Rust, we can put it
|
||||
// back in the shared SettingGroup, and use it in x86 instruction predicates.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user