//! SME2 lookup-table primitives.
//!
//! Provides bulk table-indexed permutes using LUTI4. SVL=64 means each
//! LUTI4.B issues 64 byte lookups in one cycle, where NEON `tbl` would
//! take four `tbl` instructions to cover the same span.
use crateStream;
use crate::;
/// Apply a 16-entry byte table to a stream of u8 indices.
///
/// `out[i] = table[idx[i] & 0xF]`. Indices outside 0..15 wrap modulo 16.
///
/// Returns `FeatureNotAvailable(Sme2)` if the chip lacks LUTI support.
/// All-asm core: pre-load the table into Z2 from a 64-byte image
/// (table replicated 4 times), then SVE TBL over `chunks` SVL-sized
/// blocks of input. No predicate needed โ caller handles the tail.
///
/// SVE TBL is available in streaming mode (SSVE) and is the cleanest
/// per-byte indexed permute available; SME2's LUTI4 has a multi-vector
/// register-tuple semantics that wins for register-resident tables but
/// is unnecessary friction when the table fits in one Z register.
unsafe
// ---------------------------------------------------------------------------
// Tests
// ---------------------------------------------------------------------------
Homonyms
cyb/evy/forks/naga/src/back/hlsl/mod.rs
struct Baz { m: mat3x2, } struct Baz { float2 m_0; float2 m_1; float2 m_2; }; float3x2 GetMatmOnBaz(Baz obj) { return float3x2(obj.m_0, obj.m_1, obj.m_2); }