mod avx2;
#[cfg(feature = "simd512")]
mod avx512;
mod sse42;
pub use avx2::{
add_assign_avx2, add_assign_scalar_avx2, mul_add_avx2, mul_assign_avx2,
mul_elementwise_assign_avx2, mul_elementwise_avx2, mul_into_avx2, sub_assign_avx2,
sub_assign_scalar_avx2,
};
#[cfg(feature = "simd512")]
pub use avx512::{
add_assign_avx512, add_assign_scalar_avx512, mul_add_avx512, mul_assign_avx512,
mul_elementwise_assign_avx512, mul_elementwise_avx512, mul_into_avx512, sub_assign_avx512,
sub_assign_scalar_avx512,
};
pub use sse42::{
add_assign_scalar_sse42, add_assign_sse42, mul_add_sse42, mul_assign_sse42,
mul_elementwise_assign_sse42, mul_elementwise_sse42, mul_into_sse42, sub_assign_scalar_sse42,
sub_assign_sse42,
};
use crate::field::goldilocks;
#[allow(clippy::cast_possible_wrap)]
const P: i64 = goldilocks::MODULUS as i64;
#[allow(clippy::cast_possible_wrap)]
const PM1: i64 = (goldilocks::MODULUS - 1) as i64;
const EPS: i64 = 0xFFFF_FFFF;