-
Notifications
You must be signed in to change notification settings - Fork 3.3k
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
256-bit AVX intrinsics support #21684
Labels
Comments
Given our precedent for providing emulation of SSE and Neon intrinsics, it seems reasonable to provide emulation for AVX intrinsics as well. We don't have any work planned for this, but contributions would be welcome. |
jiepan-intel
added a commit
to jiepan-intel/emscripten
that referenced
this issue
Aug 19, 2024
Since webassenbly only supports 128-bit fixed vector length, one 256-bit AVX intrinsic is emulated by two 128-bit instrinsics.
jiepan-intel
added a commit
to jiepan-intel/emscripten
that referenced
this issue
Aug 19, 2024
Since webassenbly only supports 128-bit fixed vector length, one 256-bit AVX intrinsic is emulated by two 128-bit instrinsics.
jiepan-intel
added a commit
to jiepan-intel/emscripten
that referenced
this issue
Aug 22, 2024
Since webassembly only supports 128-bit fixed vector length, one 256-bit AVX intrinsic is emulated by two 128-bit instrinsics.
The current header fails to work with the C compiler, proposed fix in #22850 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Compile existing x86 SSE/AVX SIMD code into WASM SIMD is very attractive, developer can reuse existing library without rewrite it.
However currently only 128-bit subset of the AVX intrinsics are supported, many existing code cannot meet this restriction.
Adding 256-bit AVX intrinsics support will expand the applicable scenarios and may also increase performance.
Does emscripten have a plan for this?
Currently Google Highway supports WASM_EMU256 (a 2x unrolled version of wasm128) target,
A re-vectorize optimization phase is being developed in Google V8 JS engine, which can pack two SIMD128 nodes into one SIMD256 node.
Sample code for AVX intrinsics support:
The text was updated successfully, but these errors were encountered: