Simde
Implementations of SIMD instruction sets for systems which don't natively support them.
Install / Use
/learn @simd-everywhere/SimdeREADME
SIMD Everywhere
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --> <!-- ALL-CONTRIBUTORS-BADGE:END -->The SIMDe header-only library provides fast, portable implementations of SIMD intrinsics on hardware which doesn't natively support them, such as calling SSE functions on ARM. There is no performance penalty if the hardware supports the native implementation (e.g., SSE/AVX runs at full speed on x86, NEON on ARM, etc.).
This makes porting code to other architectures much easier in a few key ways:
First, instead of forcing you to rewrite everything for each architecture, SIMDe lets you get a port up and running almost effortlessly. You can then start working on switching the most performance-critical sections to native intrinsics, improving performance gradually. SIMDe lets (for example) SSE/AVX and NEON code exist side-by-side, in the same implementation.
Second, SIMDe makes it easier to write code targeting ISA extensions you don't have convenient access to. You can run NEON code on your x86 machine without an emulator. Obviously you'll eventually want to test on the actual hardware you're targeting, but for most development, SIMDe can provide a much easier path.
SIMDe takes a very different approach from most other SIMD abstraction layers in that it aims to expose the entire functionality of the underlying instruction set. Instead of limiting functionality to the lowest common denominator, SIMDe tries to minimize the amount of effort required to port while still allowing you the space to optimize as needed.
The current focus is on writing complete portable implementations, though a large number of functions already have accelerated implementations using one (or more) of the following:
- SIMD intrinsics from other ISA extensions (e.g., using NEON to implement SSE).
- Compiler-specific vector extensions and built-ins such as
__builtin_shufflevectorand__builtin_convertvector - Compiler auto-vectorization hints, using:
You can try SIMDe online using Compiler Explorer and an amalgamated SIMDe header.
If you have any questions, please feel free to use the issue tracker or the mailing list.
Current Status
There are currently complete implementations of the following instruction set extensions:
- ARM
- x86 / x86_64
- WebAssembly
As well as partial support for many others, including AES-ni, CLMUL, SSE4.2, SVE, MSA in addition to several AVX-512 extensions. See the instruction-set-support label in the issue tracker for details on progress. If you'd like to be notified when an instruction set is available you may subscribe to the relevant issue.
If you have a project you're interested in using with SIMDe but we don't yet support all the functions you need, please file an issue with a list of what's missing so we know what to prioritize.
The default branch is protected so commits never reach it unless they have passed extensive CI checks. Status badges don't really make sense since they will always be green, but here are the links:
- GitHub Actions
- Cirrus CI
- Semaphore CI
- Circle CI
- AppVeyor
- Azure Pipelines
- Drone CI
- Travis CI
- Packit CI
If you're adding a new build I suggest Cirrus CI, which is where we currently have the most room given the number of builds currently on the platform and the quotas for free/open-source usage. Alternately, feel free to set up another provider (such as Codefresh, Shippable, Bitrise, Werkaer, etc.).
Notice: we plan on changing the name of the default branch from "master" to something else soon; we are just trying to wait to see what name git settles on so we can be consistent.
Contributing
First off, if you're reading this: thank you! Even considering contributing to SIMDe is very much appreciated!
SIMDe is a fairly large undertaking; there are a lot of functions to get through and a lot of opportunities for optimization on different platforms, so we're very happy for any help you can provide.
Programmers of all skill
Related Skills
openhue
338.0kControl Philips Hue lights and scenes via the OpenHue CLI.
sag
338.0kElevenLabs text-to-speech with mac-style say UX.
weather
338.0kGet current weather and forecasts via wttr.in or Open-Meteo
tweakcc
1.4kCustomize Claude Code's system prompts, create custom toolsets, input pattern highlighters, themes/thinking verbs/spinners, customize input box & user message styling, support AGENTS.md, unlock private/unreleased features, and much more. Supports both native/npm installs on all platforms.

