Expand description
Portable SIMD types for implementing vectorized functions that work across different architectures.
Compared to std::simd it offers the following benefits:
- Works on stable Rust
- Includes infrastructure for dispatching vectorized operations using the optimal instruction set as determined at runtime.
- Includes higher order functions for vectorized maps, folds etc.
§Supported architectures
SIMD wrappers are provided for the following architectures:
- Arm Neon
- AVX 2 / FMA
- AVX-512 (requires
avx512
feature and nightly Rust) - WebAssembly SIMD
There is also a scalar fallback that works on all platforms, but provides no performance benefit over non-SIMD code.
Modules§
- Architecture-specific functionality.
- Dispatch SIMD operations using the preferred SIMD instruction set for the current system, as determined at runtime.
- Higher order functions (map, fold etc.) that use vectorized operations.
- Functions for testing the availability of instruction sets at runtime.
- Slice-like types without the restrictions on aliasing.
Traits§
- Trait for SIMD vectors containing single-precision floats.
- Trait for SIMD vectors containing 32-bit integers.
- Trait implemented by SIMD masks.
- Base trait for SIMD vectors.
Functions§
- Return the number of SIMD vectors required to hold
count
elements.