#[repr(C, align(32))]pub struct Lanes16Word16(pub [u16; 16]);Expand description
Sixteen lanes of Word16 (one 256-bit SIMD register) — the NTT coefficient lane vector. Carries
[u16; 16]; the multiply-high is the SIGNED _mm256_mulhi_epi16 (the Montgomery butterfly’s
mulhi). Ops have an AVX2 fast path proven byte-identical to the scalar lanes.
Tuple Fields§
§0: [u16; 16]Implementations§
Source§impl Lanes16Word16
impl Lanes16Word16
Sourcepub fn from_words(s: &[Word16]) -> Self
pub fn from_words(s: &[Word16]) -> Self
Pack the first sixteen Word16s of a slice into a lane vector (shorter slices zero-fill).
Sourcepub fn mullo(self, o: Self) -> Self
pub fn mullo(self, o: Self) -> Self
Lane-wise low 16 bits of the product (vpmullw) — interpretation-independent.
Sourcepub fn mulhi(self, o: Self) -> Self
pub fn mulhi(self, o: Self) -> Self
Lane-wise high 16 bits of the SIGNED product (vpmulhw) — the Montgomery butterfly’s mulhi.
Sourcepub fn ntt_bcast_lo(self, h: usize) -> Self
pub fn ntt_bcast_lo(self, h: usize) -> Self
Broadcast each 2h-block’s low h lanes into both of its halves — the within-vector NTT
butterfly’s source-low duplication, at stride h ∈ {8,4,2}. h=8→vperm2i128(v,v,0x00);
h=4→vpshufd(v,0x44); h=2→vpshufd(v,0xA0) (all per-128-bit-lane, so the multiple
blocks packed in one register are handled at once).
Sourcepub fn ntt_bcast_hi(self, h: usize) -> Self
pub fn ntt_bcast_hi(self, h: usize) -> Self
Broadcast each 2h-block’s high h lanes into both of its halves — the source-high
duplication. h=8→vperm2i128(v,v,0x11); h=4→vpshufd(v,0xEE); h=2→vpshufd(v,0xF5).
Trait Implementations§
Source§impl Add for Lanes16Word16
impl Add for Lanes16Word16
Source§impl Clone for Lanes16Word16
impl Clone for Lanes16Word16
Source§fn clone(&self) -> Lanes16Word16
fn clone(&self) -> Lanes16Word16
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more