Skip to main content

sonic_simd/
lib.rs

1#![allow(non_camel_case_types)]
2#![no_std]
3
4pub mod bits;
5mod traits;
6
7// pick v128 simd
8cfg_if::cfg_if! {
9    if #[cfg(target_feature = "sse2")] {
10        mod sse2;
11        use self::sse2::*;
12    } else if #[cfg(all(target_feature="neon", target_arch="aarch64"))] {
13        pub mod neon;
14        use self::neon::*;
15    } else if #[cfg(all(target_arch = "wasm32", target_feature = "simd128"))] {
16        mod wasm128;
17        use self::wasm128::*;
18    } else {
19        mod v128;
20        use self::v128::*;
21    }
22}
23
24// pick v256 simd
25cfg_if::cfg_if! {
26    if #[cfg(target_feature = "avx2")] {
27        mod avx2;
28        use self::avx2::*;
29    } else {
30        mod v256;
31        use self::v256::*;
32    }
33}
34
35pub use self::traits::{BitMask, Mask, Simd};
36// pick v512 simd
37cfg_if::cfg_if! {
38    if #[cfg(all(target_feature = "avx512f", feature = "avx512"))] {
39        mod avx512;
40        use self::avx512::*;
41    } else {
42        mod v512;
43        use self::v512::*;
44    }
45}
46
47pub type u8x16 = Simd128u;
48pub type u8x32 = Simd256u;
49pub type u8x64 = Simd512u;
50
51pub type i8x16 = Simd128i;
52pub type i8x32 = Simd256i;
53pub type i8x64 = Simd512i;
54
55pub type m8x32 = Mask256;