Struct Lanes16Word8
#[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§
§impl Lanes16Word8
impl Lanes16Word8
pub const fn splat(x: u8) -> Lanes16Word8
pub const fn splat(x: u8) -> Lanes16Word8
Broadcast one byte into all sixteen lanes.
pub fn from_bytes(s: &[u8]) -> Lanes16Word8
pub fn from_bytes(s: &[u8]) -> Lanes16Word8
Pack the first sixteen bytes of a slice (shorter slices zero-fill).
pub fn shuffle(self, idx: Lanes16Word8) -> Lanes16Word8
pub fn shuffle(self, idx: Lanes16Word8) -> Lanes16Word8
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).
pub fn bitand(self, o: Lanes16Word8) -> Lanes16Word8
pub fn bitand(self, o: Lanes16Word8) -> Lanes16Word8
Lane-wise AND (_mm_and_si128) — the low-nibble mask; auto-vectorizes to pand.
pub fn shr_bytes(self, n: u32) -> Lanes16Word8
pub fn shr_bytes(self, n: u32) -> Lanes16Word8
Per-byte logical shift right by n — the high-nibble extract (v >> 4).
pub fn interleave_lo(self, o: Lanes16Word8) -> Lanes16Word8
pub fn interleave_lo(self, o: Lanes16Word8) -> Lanes16Word8
Interleave the low eight bytes (_mm_unpacklo_epi8): [a0,b0,a1,b1,…,a7,b7].
pub fn interleave_hi(self, o: Lanes16Word8) -> Lanes16Word8
pub fn interleave_hi(self, o: Lanes16Word8) -> Lanes16Word8
Interleave the high eight bytes (_mm_unpackhi_epi8): [a8,b8,…,a15,b15].
pub fn byte_add(self, o: Lanes16Word8) -> Lanes16Word8
pub fn byte_add(self, o: Lanes16Word8) -> Lanes16Word8
Per-byte wrapping add (_mm_add_epi8) — the ASCII→nibble decode (lo + 9·hibit).
pub fn maddubs(self, o: Lanes16Word8) -> Lanes16Word8
pub fn maddubs(self, o: Lanes16Word8) -> Lanes16Word8
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.
pub fn packus(self, o: Lanes16Word8) -> Lanes16Word8
pub fn packus(self, o: Lanes16Word8) -> Lanes16Word8
Pack two 8×i16 vectors to 16×u8 with unsigned saturation (packuswb): self’s eight 16-bit
lanes → bytes 0–7, o’s → bytes 8–15. Narrows the maddubs output back to bytes.
Trait Implementations§
§impl BitAnd for Lanes16Word8
impl BitAnd for Lanes16Word8
§type Output = Lanes16Word8
type Output = Lanes16Word8
& operator.§fn bitand(self, o: Lanes16Word8) -> Lanes16Word8
fn bitand(self, o: Lanes16Word8) -> Lanes16Word8
& operation. Read more§impl Clone for Lanes16Word8
impl Clone for Lanes16Word8
§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 more§impl Debug for Lanes16Word8
impl Debug for Lanes16Word8
§impl Hash for Lanes16Word8
impl Hash for Lanes16Word8
§impl PartialEq for Lanes16Word8
impl PartialEq for Lanes16Word8
impl Copy for Lanes16Word8
impl Eq for Lanes16Word8
impl StructuralPartialEq for Lanes16Word8
Auto Trait Implementations§
impl Freeze for Lanes16Word8
impl RefUnwindSafe for Lanes16Word8
impl Send for Lanes16Word8
impl Sync for Lanes16Word8
impl Unpin for Lanes16Word8
impl UnsafeUnpin for Lanes16Word8
impl UnwindSafe for Lanes16Word8
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.