vsimd/
table.rs

1use crate::isa::{NEON, SSSE3, WASM128};
2use crate::pod::POD;
3use crate::Scalable;
4
5#[inline(always)]
6pub fn u8x16xn_lookup<S, V>(s: S, lut: V, x: V) -> V
7where
8    S: Scalable<V>,
9    V: POD,
10{
11    if matches_isa!(S, SSSE3) {
12        return s.u8x16xn_swizzle(lut, x);
13    }
14
15    if matches_isa!(S, NEON | WASM128) {
16        let idx = s.and(x, s.u8xn_splat(0x8f));
17        return s.u8x16xn_swizzle(lut, idx);
18    }
19
20    unreachable!()
21}