Skip to main content

p3_binary_dft/
lib.rs

1#![doc = include_str!("../README.md")]
2#![no_std]
3
4extern crate alloc;
5
6// The byte-map kernels and the register they run on.
7//
8// A build without the instruction never reaches them, so it compiles none of them.
9//
10// Tests compile them on every target, against the scalar stand-in in the test module.
11//
12// Whatever needs an instruction the host may not have is gated again inside its own module.
13#[cfg(any(
14    test,
15    all(
16        target_arch = "x86_64",
17        target_feature = "gfni",
18        target_feature = "avx512f",
19        target_feature = "avx512bw"
20    )
21))]
22mod affine;
23mod butterfly;
24mod domain;
25mod encoder;
26mod interleaved;
27#[cfg(any(
28    test,
29    all(
30        target_arch = "x86_64",
31        target_feature = "gfni",
32        target_feature = "avx512f",
33        target_feature = "avx512bw"
34    ),
35    all(
36        target_arch = "aarch64",
37        target_feature = "neon",
38        target_endian = "little"
39    )
40))]
41mod lanes;
42mod lch;
43mod naive;
44#[cfg(any(
45    test,
46    all(
47        target_arch = "aarch64",
48        target_feature = "neon",
49        target_endian = "little"
50    )
51))]
52mod neon;
53mod poly;
54mod staging;
55mod subfield;
56#[cfg(test)]
57pub(crate) mod test_util;
58mod tower;
59mod traits;
60
61pub use butterfly::ButterflyField;
62pub use domain::*;
63pub use encoder::*;
64pub use interleaved::*;
65pub use lch::*;
66pub use naive::*;
67pub use poly::*;
68pub use subfield::*;
69pub use traits::*;