From 61ccbf7f30a7d9dab34c38c5ecf459f5916329b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sa=C3=BAl=20Cabrera?= Date: Tue, 24 Feb 2026 10:20:03 -0500 Subject: [PATCH] fuzz: Enable winch-aarch64 As of https://github.com/bytecodealliance/wasmtime/pull/11051, Winch supports all of Core Wasm on aarch64. This commit enables fuzzing respectively. --- crates/fuzzing/src/generators/config.rs | 10 +++++++++- crates/fuzzing/src/oracles/diff_wasmtime.rs | 2 +- crates/fuzzing/src/oracles/engine.rs | 4 ++-- fuzz/fuzz_targets/differential.rs | 2 +- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/crates/fuzzing/src/generators/config.rs b/crates/fuzzing/src/generators/config.rs index 1663e963c58a..cb3544982e2d 100644 --- a/crates/fuzzing/src/generators/config.rs +++ b/crates/fuzzing/src/generators/config.rs @@ -671,7 +671,7 @@ impl WasmtimeConfig { // config features are enabled based on the compiler strategy, and we // don't want to make the same fuzz input DNA generate different test // cases on different targets. - if cfg!(not(target_arch = "x86_64")) { + if cfg!(not(any(target_arch = "x86_64", target_arch = "aarch64"))) { log::warn!( "want to compile with Winch but host architecture does not support it" ); @@ -700,6 +700,14 @@ impl WasmtimeConfig { config.config.simd_enabled = false; } + // Account for the proposals that are currently only + // supported on x64. + if cfg!(target_arch = "aarch64") { + config.config.simd_enabled = false; + config.config.wide_arithmetic_enabled = false; + config.config.threads_enabled = false; + } + // Tuning the following engine options is currently not supported // by Winch. self.signals_based_traps = true; diff --git a/crates/fuzzing/src/oracles/diff_wasmtime.rs b/crates/fuzzing/src/oracles/diff_wasmtime.rs index 0a1cc04d3f03..60f7ee6fafae 100644 --- a/crates/fuzzing/src/oracles/diff_wasmtime.rs +++ b/crates/fuzzing/src/oracles/diff_wasmtime.rs @@ -273,7 +273,7 @@ mod tests { #[test] fn smoke_winch() { - if !cfg!(target_arch = "x86_64") { + if !cfg!(target_arch = "x86_64") || !cfg!(target_arch = "aarch64") { return; } crate::oracles::engine::smoke_test_engine(|u, config| { diff --git a/crates/fuzzing/src/oracles/engine.rs b/crates/fuzzing/src/oracles/engine.rs index 57857a6ec6da..dacbe7148e0c 100644 --- a/crates/fuzzing/src/oracles/engine.rs +++ b/crates/fuzzing/src/oracles/engine.rs @@ -28,9 +28,9 @@ pub fn build( )?), "wasmi" => Box::new(WasmiEngine::new(config)), - #[cfg(target_arch = "x86_64")] + #[cfg(any(target_arch = "x86_64", target_arch = "aarch64"))] "winch" => Box::new(WasmtimeEngine::new(u, config, CompilerStrategy::Winch)?), - #[cfg(not(target_arch = "x86_64"))] + #[cfg(not(any(target_arch = "x86_64", target_arch = "aarch64")))] "winch" => return Ok(None), #[cfg(feature = "fuzz-spec-interpreter")] diff --git a/fuzz/fuzz_targets/differential.rs b/fuzz/fuzz_targets/differential.rs index 9d02f9b1aeb7..b949e7794a40 100644 --- a/fuzz/fuzz_targets/differential.rs +++ b/fuzz/fuzz_targets/differential.rs @@ -271,7 +271,7 @@ impl RuntimeStats { let total = v8 + spec + wasmi + wasmtime + winch + pulley; println!( "\twasmi: {:.02}%, spec: {:.02}%, wasmtime: {:.02}%, v8: {:.02}%, \ - winch: {:.02}, \ + winch: {:.02}%, \ pulley: {:.02}%", wasmi as f64 / total as f64 * 100f64, spec as f64 / total as f64 * 100f64,