-
Notifications
You must be signed in to change notification settings - Fork 693
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Materialize the section on "Long SIMD". #57
Conversation
approaches; which of them might be supported by the model? | ||
* What is the relationship to the "short SIMD" API? "None" may be an | ||
acceptable answer, but it's something to think about. | ||
* What non-determinism does this model introduce into the overall platform? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What happens when code uses long SIMD on a hardware platform which doesn't support it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good question. I added it.
This is meant to address the original concern in WebAssembly/spec#41
Materialize the section on "Long SIMD".
Since I'm unable to comment on #1075, I'd like to say that fixed-width packed SIMD has a complicated relationship with RISC-V. I'm working on V8 for RISC-V (and presumably somebody will end up working on SpiderMonkey for RISC-V). There is a Packed SIMD extension for RISC-V, but interest in implementing it is mixed. The preferred method of addressing vectors seems to be the Vector extension, which is variable-width and handles element counts which are not a multiple of the stride in hardware, rather than relying on software. There are five major things that come to mind:
|
I'm sure RISC-V is very nice... but realistically only x86 and ARM matter for the immediate term :( What's more compelling perhaps is that ARM is getting variable-width SIMD soon via "Scalable Vector Extension" (and I was chatting some people from the ARM compilers team at an LLVM developer meetup, who were enthusiastic about it). LLVM doesn't support variable-width SIMD yet, but it is being worked on currently. In the long run, it's probably the most future-proof way of adding these instructions. A target that only has fixed width SIMD can use that to implement variable-width Wasm instructions, but it's a bit harder going the other way round. |
The right place to discuss SIMD, and bring up limitations to the proposed approach, is in the SIMD repo. Tracking issues are purposefully closed because they're informative, for tracking purpose, and not for discussion. The repo is where development and discussion happen. |
This is meant to address the original concern in
WebAssembly/spec#41