-
Notifications
You must be signed in to change notification settings - Fork 314
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 Wasmsimd
proposal #1395wasmi_ir
: add support for the Wasmsimd
proposal #1409- Fix compile time regression for
wasmi_ir
crate #1412 - Add Wasm
simd
proposal's official Wasm spec testsuite tests #1413 - Fix
wasmi_core
'sno_std
build whensimd
is enabled #1414 - Add
wasmi
Wasmsimd
proposal support skeleton #1415 - Do _not_ visit Wasm
relaxed-simd
proposal operators in translation #1416 - Add
Val[Type]::V128
to Wasmi crates #1418 - Add support for
V128
towasmi_wast
crate #1419 - Fix
VisitSimdOperator
trait propagation in Wasmi translation #1420 - Add support for most Wasm
simd
instructions to thewasmi
crate #1421 - Implement SIMD comparison instruction translation and execution #1422
- Fix some SIMD instruction execution issues #1423
- Implement SIMD
replace_lane
instruction translation and execution #1424 - Implement
v128.storeN_lane
SIMD instruction translation and execution #1425 - Implement translation and execution of some SIMD load instructions #1426
- Implement translation and execution for
v128.loadN_lane
instructions #1427 - Enable Wasm
simd
fuzzing #1428 - Fix some SIMD bugs found by fuzzing #1429
- Update README and document Wasmi crate features #1430