-
Notifications
You must be signed in to change notification settings - Fork 319
Description
This is about adding support for the simd Wasm proposal.
The simd Wasm proposal has been stabilized (Phase 5) since a long time now. Many Wasm producers already can produce simd capable Wasm binaries and it is likely to gain even more traction.
Wasmi originally did not intend to support simd and was hoping for an eventual uptake of the alternative flexible-vectors Wasm proposal. However, it seems unlikely at this point that the alternative design will see significant development in the near to medium future.
Having simd support in wasmi is the final missing Wasm proposal required to make Wasmi Wasm 2.0 compatible which would be great for advertisement. Obviously, simd users could use Wasmi. In some past tests we actually saw decreased file sizes by using simd proposal when generating Wasm, so it might also have a nice side benefit. Especially Wasm based game engines that rely on Wasmi might find simd support very useful.
Due to the massive size of the Wasm simd proposal it will be put behind a crate feature flag simd. This is important for users who do not need simd support as this will significantly impact Wasmi compile time and Wasm execution performance as well as memory usage during Wasm execution.
Subtasks
- Prepare Wasmi for efficient handling of 128-bit registers #1392
wasmi_core: add support for the Wasmsimdproposal #1395wasmi_ir: add support for the Wasmsimdproposal #1409- Fix compile time regression for
wasmi_ircrate #1412 - Add Wasm
simdproposal's official Wasm spec testsuite tests #1413 - Fix
wasmi_core'sno_stdbuild whensimdis enabled #1414 - Add
wasmiWasmsimdproposal support skeleton #1415 - Do _not_ visit Wasm
relaxed-simdproposal operators in translation #1416 - Add
Val[Type]::V128to Wasmi crates #1418 - Add support for
V128towasmi_wastcrate #1419 - Fix
VisitSimdOperatortrait propagation in Wasmi translation #1420 - Add support for most Wasm
simdinstructions to thewasmicrate #1421 - Implement SIMD comparison instruction translation and execution #1422
- Fix some SIMD instruction execution issues #1423
- Implement SIMD
replace_laneinstruction translation and execution #1424 - Implement
v128.storeN_laneSIMD instruction translation and execution #1425 - Implement translation and execution of some SIMD load instructions #1426
- Implement translation and execution for
v128.loadN_laneinstructions #1427 - Enable Wasm
simdfuzzing #1428 - Fix some SIMD bugs found by fuzzing #1429
- Update README and document Wasmi crate features #1430