utils/simd/
mod.rs

1//! SIMD vector implementations.
2//!
3//! These should be replaced by [`portable_simd`](https://github.com/rust-lang/rust/issues/86656)
4//! once stabilized.
5
6mod array;
7#[cfg(feature = "all-simd")]
8pub use array::array4096;
9pub use array::{array128, array256};
10
11#[cfg(all(feature = "unsafe", any(target_arch = "x86", target_arch = "x86_64")))]
12#[path = "avx2.rs"]
13mod avx2_impl;
14#[cfg(all(feature = "unsafe", any(target_arch = "x86", target_arch = "x86_64")))]
15pub use avx2_impl::avx2;
16#[cfg(all(
17    feature = "unsafe",
18    feature = "all-simd",
19    any(target_arch = "x86", target_arch = "x86_64")
20))]
21pub use avx2_impl::{avx2x2, avx2x4, avx2x8};
22
23#[cfg(all(feature = "unsafe", any(target_arch = "x86", target_arch = "x86_64")))]
24#[path = "avx512.rs"]
25mod avx512_impl;
26#[cfg(all(feature = "unsafe", any(target_arch = "x86", target_arch = "x86_64")))]
27pub use avx512_impl::avx512;
28#[cfg(all(
29    feature = "unsafe",
30    feature = "all-simd",
31    any(target_arch = "x86", target_arch = "x86_64")
32))]
33pub use avx512_impl::{avx512x2, avx512x4, avx512x8};
34
35#[cfg(all(
36    feature = "unsafe",
37    any(target_arch = "aarch64", target_arch = "arm64ec"),
38))]
39#[path = "neon.rs"]
40mod neon_impl;
41#[cfg(all(
42    feature = "unsafe",
43    any(target_arch = "aarch64", target_arch = "arm64ec"),
44))]
45pub use neon_impl::neon;
46#[cfg(all(
47    feature = "unsafe",
48    feature = "all-simd",
49    any(target_arch = "aarch64", target_arch = "arm64ec"),
50))]
51pub use neon_impl::{neonx2, neonx4, neonx8};
52
53pub mod scalar;