X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvppinfra%2Fvector_neon.h;h=7570dddf1ab2368c1f64be6b3e80e26bf76c3619;hb=318de5de9765afb75522ad68da5f5a0371480098;hp=7ca3c2c4221a6563518b749dd1a855a4d8fd9f42;hpb=536953d529ea4449fb38efc3fa2a3503551b2e6d;p=vpp.git diff --git a/src/vppinfra/vector_neon.h b/src/vppinfra/vector_neon.h index 7ca3c2c4221..7570dddf1ab 100644 --- a/src/vppinfra/vector_neon.h +++ b/src/vppinfra/vector_neon.h @@ -118,6 +118,36 @@ foreach_neon_vec128i foreach_neon_vec128u #undef _ /* *INDENT-ON* */ +static_always_inline u16x8 +u16x8_byte_swap (u16x8 v) +{ + return (u16x8) vrev16q_u8 ((u8x16) v); +} + +static_always_inline u8x16 +u8x16_shuffle (u8x16 v, u8x16 m) +{ + return (u8x16) vqtbl1q_u8 (v, m); +} + +static_always_inline u32x4 +u32x4_hadd (u32x4 v1, u32x4 v2) +{ + return (u32x4) vpaddq_u32 (v1, v2); +} + +static_always_inline u64x2 +u32x4_extend_to_u64x2 (u32x4 v) +{ + return vmovl_u32 (vget_low_u32 (v)); +} + +static_always_inline u64x2 +u32x4_extend_to_u64x2_high (u32x4 v) +{ + return vmovl_high_u32 (vrev64q_u32 (v)); +} + #define CLIB_HAVE_VEC128_UNALIGNED_LOAD_STORE #define CLIB_VEC128_SPLAT_DEFINED #endif /* included_vector_neon_h */