nimsimd
Pleasant Nim bindings for SIMD instruction sets
Summary
| Latest Version | Unknown |
|---|---|
| License | MIT |
| CI Status | Failing |
| Downloads | 0 |
| Last Indexed | 2026-07-21 05:24 |
Tags
Installation
nimble install nimsimd
choosenim install nimsimd
git clone https://github.com/guzba/nimsimd
OS Compatibility
| Platform | Linux | macOS | Windows | FreeBSD | OpenBSD | NetBSD | Android | iOS | WASM | Embedded |
|---|---|---|---|---|---|---|---|---|---|---|
| nimsimd | ✓ | ✓ | ✓ | - | - | - | - | - | - | - |
Source
| Repository | https://github.com/guzba/nimsimd |
|---|---|
| Homepage | https://github.com/guzba/nimsimd |
| Registry Source | nimble_official |
README
nimsimd
nimble install nimsimd
This repo provides pleasant Nim bindings for various SIMD instructions.
Each SIMD instruction set is in its own file for importing.
x86
| Instruction Set | Bindings |
|---|---|
| SSE | ✅ |
| SSE2 | ✅ |
| SSE3 | ✅ |
| SSSE3 | ✅ |
| SSE4.1 | ✅ |
| SSE4.2 | ✅ |
| AVX | ✅ |
| AVX2 | ✅ |
| PCLMULQDQ | ✅ |
| BMI1 | ✅ |
| BMI2 | ✅ |
| F16C | ✅ |
| MOVBE | ✅ |
| MOVBE | ✅ |
| POPCNT | ✅ |
| FMA | ✅ |
Compiler flags
Some instruction sets require additional compiler flags to compile. I suggest
putting any code that uses these instructions into its own .nim file and adding a localPassc pragma to the top of that file as needed, such as:
import nimsimd/sse42
when defined(gcc) or defined(clang):
{.localPassc: "-msse4.2".}
...
Runtime check
You can also check if instruction sets are available at runtime:
import nimsimd/runtimecheck
echo checkInstructionSets({SSE41, PCLMULQDQ})
ARM
NEON bindings are started but experimental. Much to learn here about versioning and compilers.
Uses of nimsimd
- Pixie uses SIMD for faster 2D drawing.
- Crunchy uses SIMD for faster hashing and checksums.
- Noisy uses SIMD to accelerate generating coherent noise.
Testing
nimble test