#[repr(C, align(16))]pub struct Lanes16Word8(pub [u8; 16]);Expand description
Sixteen Word8 lanes = one 128-bit register (__m128i) — the BYTE-SHUFFLE carrier for SIMD text
codecs (hex encode/decode). Its vocabulary is shuffle (pshufb, a 16-entry byte LUT), byte AND,
per-byte shift, and the two byte interleaves — so a hex codec WRITTEN in Logos over it compiles to
the pshufb sequence (AOT, when SSSE3 is statically enabled) and runs the byte-identical scalar
spec on the interpreter. Lane i is byte i (index 0 low), matching _mm_loadu_si128.
Tuple Fields§
§0: [u8; 16]Implementations§
Source§impl Lanes16Word8
impl Lanes16Word8
Sourcepub fn from_bytes(s: &[u8]) -> Self
pub fn from_bytes(s: &[u8]) -> Self
Pack the first sixteen bytes of a slice (shorter slices zero-fill).
Sourcepub fn shuffle(self, idx: Self) -> Self
pub fn shuffle(self, idx: Self) -> Self
Byte shuffle (pshufb): out[i] = if idx[i] & 0x80 { 0 } else { self[idx[i] & 0x0f] } — a
16-entry byte lookup, the core of SIMD hex codecs (nibble → hex char; hyphen strip).
Sourcepub fn bitand(self, o: Self) -> Self
pub fn bitand(self, o: Self) -> Self
Lane-wise AND (_mm_and_si128) — the low-nibble mask; auto-vectorizes to pand.
Sourcepub fn shr_bytes(self, n: u32) -> Self
pub fn shr_bytes(self, n: u32) -> Self
Per-byte logical shift right by n — the high-nibble extract (v >> 4).
Sourcepub fn interleave_lo(self, o: Self) -> Self
pub fn interleave_lo(self, o: Self) -> Self
Interleave the low eight bytes (_mm_unpacklo_epi8): [a0,b0,a1,b1,…,a7,b7].
Sourcepub fn interleave_hi(self, o: Self) -> Self
pub fn interleave_hi(self, o: Self) -> Self
Interleave the high eight bytes (_mm_unpackhi_epi8): [a8,b8,…,a15,b15].
Sourcepub fn byte_add(self, o: Self) -> Self
pub fn byte_add(self, o: Self) -> Self
Per-byte wrapping add (_mm_add_epi8) — the ASCII→nibble decode (lo + 9·hibit).
Sourcepub fn maddubs(self, o: Self) -> Self
pub fn maddubs(self, o: Self) -> Self
Multiply-add adjacent byte pairs (pmaddubsw): self unsigned × o signed, summing pairs into
eight saturating i16 lanes stored little-endian. Weights [16,1,…] fuse each nibble pair into
the decoded byte (hex parse). Result carries 8 u16 in its 16 bytes; narrow with packus.
Trait Implementations§
Source§impl BitAnd for Lanes16Word8
impl BitAnd for Lanes16Word8
Source§impl Clone for Lanes16Word8
impl Clone for Lanes16Word8
Source§fn clone(&self) -> Lanes16Word8
fn clone(&self) -> Lanes16Word8
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for Lanes16Word8
impl Debug for Lanes16Word8
Source§impl Hash for Lanes16Word8
impl Hash for Lanes16Word8
Source§impl PartialEq for Lanes16Word8
impl PartialEq for Lanes16Word8
Source§fn eq(&self, other: &Lanes16Word8) -> bool
fn eq(&self, other: &Lanes16Word8) -> bool
self and other values to be equal, and is used by ==.