The simd-everywhere team has announced the availability of the first release of SIMD Everywhere (SIMDe), version 0.5.0, representing more than three years of work by over a dozen developers.
SIMDe is a permissively-licensed (MIT) header-only library which provides fast, portable implementations of SIMD intrinsics for platforms which aren’t natively supported by the API in question.
For example, with SIMDe you can use SSE on ARM, POWER, WebAssembly, or almost any platform with a C compiler. That includes, of course, x86 CPUs which don’t support the ISA extension in question (e.g., calling AVX-512F functions on a CPU which doesn’t natively support them).
If the target natively supports the SIMD extension in question there is no performance penalty for using SIMDe. Otherwise, accelerated implementations, such as NEON on ARM, AltiVec on POWER, WASM SIMD on WebAssembly, etc., are used when available to provide good performance.
SIMDe has already been used to port several packages to additional architectures through either upstream support or distribution packages, particularly on Debian.
The 0.5.0 release is SIMDe’s first release and is under MIT license. It includes complete implementations of:
- MMX
- SSE
- SSE2
- SSE3
- SSSE3
- SSE4.1
- AVX
- FMA
- GFNI
It also has rapidly progressing implementations of many other extensions including NEON, AVX2, SVML, and several AVX-512 extensions (AVX-512F, AVX-512BW, AVX-512VL, etc.).
See the announcement and the GitHub repo for more information and code.