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}