Struct Lanes4Word64
#[repr(C, align(32))]pub struct Lanes4Word64(pub [u64; 4]);Expand description
Four lanes of Word64 (one 256-bit SIMD register) — the Poly1305 accumulator lane vector.
Carries [u64; 4]; ops have an AVX2 fast path proven byte-identical to the scalar lanes.
Tuple Fields§
§0: [u64; 4]Implementations§
§impl Lanes4Word64
impl Lanes4Word64
pub fn from_words(s: &[Word64]) -> Lanes4Word64
pub fn from_words(s: &[Word64]) -> Lanes4Word64
Pack the first four Word64s of a slice into a lane vector (shorter slices zero-fill).
pub fn hsum(self) -> u64
pub fn hsum(self) -> u64
The horizontal sum of the four lanes (wrapping in ℤ/2⁶⁴) — combines the per-lane partial products in a 4-way Poly1305 multiply. Reads the scalar array; no SIMD needed.
pub fn add(self, o: Lanes4Word64) -> Lanes4Word64
pub fn add(self, o: Lanes4Word64) -> Lanes4Word64
Lane-wise wrapping add in ℤ/2⁶⁴ (vpaddq). #[inline(always)] + compile-time
cfg(target_feature="avx2") (no runtime is_x86_feature_detected branch, no #[target_feature]
call boundary) so the 4-way Poly1305 accumulator stays register-resident under +avx2.
pub fn mul_lo32_wide(self, o: Lanes4Word64) -> Lanes4Word64
pub fn mul_lo32_wide(self, o: Lanes4Word64) -> Lanes4Word64
Lane-wise widening multiply of the low 32 bits: (aₗₒ·bₗₒ) per lane → a 64-bit product
(vpmuludq). #[inline(always)] + compile-time cfg(target_feature="avx2") so the Poly1305
4-way limb multiply inlines register-resident under +avx2.
pub fn splat(x: u64) -> Lanes4Word64
pub fn splat(x: u64) -> Lanes4Word64
Broadcast one u64 into all four lanes (Keccak’s ι round-constant XOR is a splat).
pub fn bitxor(self, o: Lanes4Word64) -> Lanes4Word64
pub fn bitxor(self, o: Lanes4Word64) -> Lanes4Word64
Lane-wise XOR (vpxor) — θ column parity, χ, and ι.
pub fn and(self, o: Lanes4Word64) -> Lanes4Word64
pub fn and(self, o: Lanes4Word64) -> Lanes4Word64
Lane-wise AND (vpand).
pub fn andnot(self, o: Lanes4Word64) -> Lanes4Word64
pub fn andnot(self, o: Lanes4Word64) -> Lanes4Word64
Lane-wise AND-NOT (¬self) & o (vpandn) — Keccak’s χ nonlinearity ¬bᵢ₊₁ ∧ bᵢ₊₂ in one op.
pub fn rotl(self, n: u32) -> Lanes4Word64
pub fn rotl(self, n: u32) -> Lanes4Word64
Lane-wise left rotation by n (mod 64) — Keccak’s ρ offsets and θ’s D term. (x<<n)|(x>>(64−n))
via vpsllq/vpsrlq (n = 0 is the identity — the 64−n = 64 shift zeroes).
Trait Implementations§
§impl Add for Lanes4Word64
impl Add for Lanes4Word64
§type Output = Lanes4Word64
type Output = Lanes4Word64
+ operator.§fn add(self, o: Lanes4Word64) -> Lanes4Word64
fn add(self, o: Lanes4Word64) -> Lanes4Word64
+ operation. Read more§impl BitAnd for Lanes4Word64
impl BitAnd for Lanes4Word64
§type Output = Lanes4Word64
type Output = Lanes4Word64
& operator.§fn bitand(self, o: Lanes4Word64) -> Lanes4Word64
fn bitand(self, o: Lanes4Word64) -> Lanes4Word64
& operation. Read more§impl BitXor for Lanes4Word64
impl BitXor for Lanes4Word64
§type Output = Lanes4Word64
type Output = Lanes4Word64
^ operator.§fn bitxor(self, o: Lanes4Word64) -> Lanes4Word64
fn bitxor(self, o: Lanes4Word64) -> Lanes4Word64
^ operation. Read more§impl Clone for Lanes4Word64
impl Clone for Lanes4Word64
§fn clone(&self) -> Lanes4Word64
fn clone(&self) -> Lanes4Word64
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for Lanes4Word64
impl Debug for Lanes4Word64
§impl Hash for Lanes4Word64
impl Hash for Lanes4Word64
§impl PartialEq for Lanes4Word64
impl PartialEq for Lanes4Word64
Source§impl WordRotate for Lanes4Word64
impl WordRotate for Lanes4Word64
impl Copy for Lanes4Word64
impl Eq for Lanes4Word64
impl StructuralPartialEq for Lanes4Word64
Auto Trait Implementations§
impl Freeze for Lanes4Word64
impl RefUnwindSafe for Lanes4Word64
impl Send for Lanes4Word64
impl Sync for Lanes4Word64
impl Unpin for Lanes4Word64
impl UnsafeUnpin for Lanes4Word64
impl UnwindSafe for Lanes4Word64
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.