-
Notifications
You must be signed in to change notification settings - Fork 43
Re-introduce some 64x2 instructions #101
Comments
I'm not sure we actually ever updated the docs to reflect that any of these instructions had been removed in the first place. The entire CG blessed the operations that were present during the in-person meeting, so I think we should make sure to go back at some point and get the CG's blessing for any operations we've added since then, including any 64x2 operations we want to get back into the proposal. |
@ngzhian Thanks. what kind of workloads use the newly introduced common i64x2 instructions? |
It's true we didn't end up updating the Spec, I think the intent here is to remove the operations we decide should not be included as a part of v1 in the spec. Aside from these, the ones that were included after the poll were the Load and Splat instructions, and the swizzle which have direct mappings to instructions, and are ergonomic variants of operations that already exist in the current subset of operations, so I'm not sure these need an explicit CG Poll. It would be good to keep this issue just to polling interest for just the 64x2 options listed by @ngzhian above, so we can put this class of operations to vote at an upcoming CG meeting. I'd look at this more as a pre-poll to get consensus from the folks involved in the SIMD proposal. |
@arunetm the SIMD-oriented Mersenne Twister implementation uses a lot i64x2 shifts, many hash algorithms like Blake2b use a lot of i64x2 shifts and and. f64x2 instructions feature heavily in matrix operations, machine learning models, optimization/solvers (the specific workload depends on what it is doing). |
Got it. Thanks ngzhian! |
A poll was held at CG meeting today, the consensus was for Option 3 of WebAssembly#101. This means we have all the f64x2 instructions, and some of the more common i64x2 that have been benchmarked. This change reflects that option in the proposal text, binary text, and implementation status.
A poll was held at CG meeting today, the consensus was for Option 3 of WebAssembly#101. This means we have all the f64x2 instructions, and some of the more common i64x2 that have been benchmarked. This change reflects that option in the proposal text, binary text, and implementation status. Fixes WebAssembly#101.
A poll was held at CG meeting today, the consensus was for Option 3 of WebAssembly#101. This means we have all the f64x2 instructions, and some of the more common i64x2 that have been benchmarked. This change reflects that option in the proposal text, binary text, and implementation status. Fixes WebAssembly#101.
A poll was held at CG meeting today, the consensus was for Option 3 of WebAssembly#101. This means we have all the f64x2 instructions, and some of the more common i64x2 that have been benchmarked. This change reflects that option in the proposal text, binary text, and implementation status. Fixes WebAssembly#101.
In #81, we wanted some performance data to support the inclusion of 64x2 instructions. In https://github.com/ngzhian/simd-benchmarks we documented steps to run benchmarks, and the results of running those benchmarks.
I would like to suggest the inclusion of 64x2 instructions back into the spec because we see real world workloads that benefit from these 64x2 instructions.
However, we don't see all 64x2 instructions getting the same usage and exposure, as such, we might want to consider including only a subset of these instructions.
Option 1, all 64x2 instructions 👀
Option 2, only f64x2 instructions 🚀
Option 3, f64x2 instructions and common i64x2 instructions 🎉
I can put up a PR for changes to the docs when one of these options is decided.
Feel free to vote on this issue, eyes 👀 for 1, rocket 🚀 for 2, tada 🎉 for 3.
The text was updated successfully, but these errors were encountered: