A header-only library providing portable implementations of SIMD intrinsics for hardware without native support.
SIMDe is a header-only library that provides portable implementations of SIMD (Single Instruction, Multiple Data) intrinsics for systems lacking native support. It solves the problem of writing architecture-specific SIMD code by allowing developers to use intrinsics like SSE or AVX on non-x86 hardware such as ARM, enabling cross-platform performance optimization without rewriting.
Developers and engineers working on performance-critical applications who need to write SIMD-accelerated code that runs across multiple CPU architectures, such as x86, ARM, and WebAssembly.
SIMDe uniquely offers full-featured emulation of SIMD instruction sets with zero overhead when native support exists, unlike abstraction layers that limit functionality. It supports gradual porting and extensive compiler optimization hooks, making it the most flexible solution for cross-platform SIMD development.
Implementations of SIMD instruction sets for systems which don't natively support them.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Enables running SIMD code like SSE on ARM without rewriting, as the README states it allows 'calling SSE functions on ARM' for effortless porting.
When hardware supports intrinsics natively, SIMDe uses them directly with no performance penalty, ensuring optimal speed as emphasized in the project description.
Supports mixing portable and native intrinsics in the same codebase, allowing incremental optimization and easier migration for legacy code.
Provides complete implementations for major sets like SSE, AVX, and NEON, minimizing the need for manual fallbacks and covering a wide range of extensions.
Some intrinsics, such as simde_mm256_test* and simde_mm256_zeroall, have no portable implementation and rely on native support or missing headers like <math.h>, limiting functionality in emulated mode.
Enabling SIMDE_ENABLE_NATIVE_ALIASES can cause incorrect results on Windows x86 for MMX and SSE functions, as noted in the Caveats section, introducing portability risks.
Requires aggressive optimization flags (-O3) and specific compiler support for features like OpenMP SIMD to achieve best performance, which may not be available in all environments.