binius_field/arch/
arch_optimal.rs

1// Copyright 2024-2025 Irreducible Inc.
2
3use cfg_if::cfg_if;
4
5use crate::{BinaryField1b, PackedSubfield};
6
7cfg_if! {
8	if #[cfg(target_arch = "x86_64")] {
9		cfg_if! {
10			if #[cfg(target_feature = "avx512f")] {
11				pub type OptimalPackedB128 = crate::PackedBinaryGhash4x128b;
12
13			} else if #[cfg(target_feature = "avx2")] {
14				pub type OptimalPackedB128 = crate::PackedBinaryGhash2x128b;
15
16			} else if #[cfg(target_feature = "sse2")] {
17				pub type OptimalPackedB128 = crate::PackedBinaryGhash1x128b;
18			}
19		}
20	} else if #[cfg(all(target_arch = "aarch64", target_feature = "neon", target_feature = "aes"))] {
21		pub type OptimalPackedB128 = crate::PackedBinaryGhash1x128b;
22
23	} else {
24		pub type OptimalPackedB128 = crate::PackedBinaryGhash1x128b;
25	}
26}
27
28pub type OptimalB128 = crate::BinaryField128bGhash;
29pub type OptimalPackedB1 = PackedSubfield<OptimalPackedB128, BinaryField1b>;