FD.io VPP  v19.08.3-2-gbabecb413
Vector Packet Processing
vector_neon.h File Reference
+ Include dependency graph for vector_neon.h:

Go to the source code of this file.

Macros

#define u16x8_sub_saturate(a, b)   vsubq_u16(a,b)
 
#define i16x8_sub_saturate(a, b)   vsubq_s16(a,b)
 
#define vreinterpretq_u8_u8(a)   a
 
#define vminvq_u64(x)
 
#define foreach_neon_vec128i   _(i,8,16,s8) _(i,16,8,s16) _(i,32,4,s32) _(i,64,2,s64)
 
#define foreach_neon_vec128u   _(u,8,16,u8) _(u,16,8,u16) _(u,32,4,u32) _(u,64,2,u64)
 
#define foreach_neon_vec128f   _(f,32,4,f32) _(f,64,2,f64)
 
#define CLIB_HAVE_VEC128_MSB_MASK
 
#define CLIB_HAVE_VEC128_UNALIGNED_LOAD_STORE
 
#define CLIB_VEC128_SPLAT_DEFINED
 

Functions

static u32 u8x16_compare_byte_mask (u8x16 v)
 
foreach_neon_vec128i foreach_neon_vec128u static_always_inline u16x8 u16x8_byte_swap (u16x8 v)
 
static_always_inline u8x16 u8x16_shuffle (u8x16 v, u8x16 m)
 
static_always_inline u32x4 u32x4_hadd (u32x4 v1, u32x4 v2)
 
static_always_inline u64x2 u32x4_extend_to_u64x2 (u32x4 v)
 
static_always_inline u64x2 u32x4_extend_to_u64x2_high (u32x4 v)
 
static_always_inline u16 u8x16_msb_mask (u8x16 v)
 
static_always_inline u64x2 u64x2_gather (void *p0, void *p1)
 
static_always_inline u32x4 u32x4_gather (void *p0, void *p1, void *p2, void *p3)
 
static_always_inline void u64x2_scatter (u64x2 r, void *p0, void *p1)
 
static_always_inline void u32x4_scatter (u32x4 r, void *p0, void *p1, void *p2, void *p3)
 

Macro Definition Documentation

◆ CLIB_HAVE_VEC128_MSB_MASK

#define CLIB_HAVE_VEC128_MSB_MASK

Definition at line 179 of file vector_neon.h.

◆ CLIB_HAVE_VEC128_UNALIGNED_LOAD_STORE

#define CLIB_HAVE_VEC128_UNALIGNED_LOAD_STORE

Definition at line 181 of file vector_neon.h.

◆ CLIB_VEC128_SPLAT_DEFINED

#define CLIB_VEC128_SPLAT_DEFINED

Definition at line 182 of file vector_neon.h.

◆ foreach_neon_vec128f

#define foreach_neon_vec128f   _(f,32,4,f32) _(f,64,2,f64)

Definition at line 54 of file vector_neon.h.

◆ foreach_neon_vec128i

#define foreach_neon_vec128i   _(i,8,16,s8) _(i,16,8,s16) _(i,32,4,s32) _(i,64,2,s64)

Definition at line 50 of file vector_neon.h.

◆ foreach_neon_vec128u

#define foreach_neon_vec128u   _(u,8,16,u8) _(u,16,8,u16) _(u,32,4,u32) _(u,64,2,u64)

Definition at line 52 of file vector_neon.h.

◆ i16x8_sub_saturate

#define i16x8_sub_saturate (   a,
 
)    vsubq_s16(a,b)

Definition at line 22 of file vector_neon.h.

◆ u16x8_sub_saturate

#define u16x8_sub_saturate (   a,
 
)    vsubq_u16(a,b)

Definition at line 21 of file vector_neon.h.

◆ vminvq_u64

#define vminvq_u64 (   x)
Value:
({ \
u64 x0 = vgetq_lane_u64(x, 0); \
u64 x1 = vgetq_lane_u64(x, 1); \
x0 < x1 ? x0 : x1; \
})

Definition at line 26 of file vector_neon.h.

◆ vreinterpretq_u8_u8

#define vreinterpretq_u8_u8 (   a)    a

Definition at line 24 of file vector_neon.h.

Function Documentation

◆ u16x8_byte_swap()

Definition at line 101 of file vector_neon.h.

◆ u32x4_extend_to_u64x2()

static_always_inline u64x2 u32x4_extend_to_u64x2 ( u32x4  v)

Definition at line 119 of file vector_neon.h.

+ Here is the caller graph for this function:

◆ u32x4_extend_to_u64x2_high()

static_always_inline u64x2 u32x4_extend_to_u64x2_high ( u32x4  v)

Definition at line 125 of file vector_neon.h.

+ Here is the caller graph for this function:

◆ u32x4_gather()

static_always_inline u32x4 u32x4_gather ( void *  p0,
void *  p1,
void *  p2,
void *  p3 
)

Definition at line 154 of file vector_neon.h.

◆ u32x4_hadd()

static_always_inline u32x4 u32x4_hadd ( u32x4  v1,
u32x4  v2 
)

Definition at line 113 of file vector_neon.h.

◆ u32x4_scatter()

static_always_inline void u32x4_scatter ( u32x4  r,
void *  p0,
void *  p1,
void *  p2,
void *  p3 
)

Definition at line 171 of file vector_neon.h.

◆ u64x2_gather()

static_always_inline u64x2 u64x2_gather ( void *  p0,
void *  p1 
)

Definition at line 146 of file vector_neon.h.

◆ u64x2_scatter()

static_always_inline void u64x2_scatter ( u64x2  r,
void *  p0,
void *  p1 
)

Definition at line 164 of file vector_neon.h.

◆ u8x16_compare_byte_mask()

static u32 u8x16_compare_byte_mask ( u8x16  v)
inlinestatic

Definition at line 35 of file vector_neon.h.

◆ u8x16_msb_mask()

static_always_inline u16 u8x16_msb_mask ( u8x16  v)

Definition at line 132 of file vector_neon.h.

+ Here is the caller graph for this function:

◆ u8x16_shuffle()

static_always_inline u8x16 u8x16_shuffle ( u8x16  v,
u8x16  m 
)

Definition at line 107 of file vector_neon.h.

+ Here is the caller graph for this function: