FD.io VPP
v19.04.4-rc0-5-ge88582fac
Vector Packet Processing
|
Go to the source code of this file.
Macros | |
#define | foreach_sse42_vec128i _(i,8,16,epi8) _(i,16,8,epi16) _(i,32,4,epi32) _(i,64,2,epi64x) |
#define | foreach_sse42_vec128u _(u,8,16,epi8) _(u,16,8,epi16) _(u,32,4,epi32) _(u,64,2,epi64x) |
#define | foreach_sse42_vec128f _(f,32,4,ps) _(f,64,2,pd) |
#define | CLIB_VEC128_SPLAT_DEFINED |
#define | CLIB_HAVE_VEC128_UNALIGNED_LOAD_STORE |
#define | u8x16_word_shift_left(a, n) (u8x16) _mm_slli_si128((__m128i) a, n) |
#define | u8x16_word_shift_right(a, n) (u8x16) _mm_srli_si128((__m128i) a, n) |
#define | i8x16_word_shift_left(a, n) ((i8x16) u8x16_word_shift_left((u8x16) (a), (n))) |
#define | i8x16_word_shift_right(a, n) ((i8x16) u8x16_word_shift_right((u8x16) (a), (n))) |
#define | u16x8_word_shift_left(a, n) ((u16x8) u8x16_word_shift_left((u8x16) (a), (n) * sizeof (u16))) |
#define | i16x8_word_shift_left(a, n) ((u16x8) u8x16_word_shift_left((u8x16) (a), (n) * sizeof (u16))) |
#define | u16x8_word_shift_right(a, n) ((u16x8) u8x16_word_shift_right((u8x16) (a), (n) * sizeof (u16))) |
#define | i16x8_word_shift_right(a, n) ((i16x8) u8x16_word_shift_right((u8x16) (a), (n) * sizeof (u16))) |
#define | u32x4_word_shift_left(a, n) ((u32x4) u8x16_word_shift_left((u8x16) (a), (n) * sizeof (u32))) |
#define | i32x4_word_shift_left(a, n) ((u32x4) u8x16_word_shift_left((u8x16) (a), (n) * sizeof (u32))) |
#define | u32x4_word_shift_right(a, n) ((u32x4) u8x16_word_shift_right((u8x16) (a), (n) * sizeof (u32))) |
#define | i32x4_word_shift_right(a, n) ((i32x4) u8x16_word_shift_right((u8x16) (a), (n) * sizeof (u32))) |
#define | u64x2_word_shift_left(a, n) ((u64x2) u8x16_word_shift_left((u8x16) (a), (n) * sizeof (u64))) |
#define | i64x2_word_shift_left(a, n) ((u64x2) u8x16_word_shift_left((u8x16) (a), (n) * sizeof (u64))) |
#define | u64x2_word_shift_right(a, n) ((u64x2) u8x16_word_shift_right((u8x16) (a), (n) * sizeof (u64))) |
#define | i64x2_word_shift_right(a, n) ((i64x2) u8x16_word_shift_right((u8x16) (a), (n) * sizeof (u64))) |
#define | u32x4_select(A, MASK) |
#define | u32x4_splat_word(x, i) |
#define | u8x16_align_right(a, b, imm) (u8x16) _mm_alignr_epi8 ((__m128i) a, (__m128i) b, imm) |
#define | CLIB_HAVE_VEC128_MSB_MASK |
Functions | |
static u8x16 | u8x16_interleave_hi (u8x16 a, u8x16 b) |
static u8x16 | u8x16_interleave_lo (u8x16 a, u8x16 b) |
static u16x8 | u16x8_interleave_hi (u16x8 a, u16x8 b) |
static u16x8 | u16x8_interleave_lo (u16x8 a, u16x8 b) |
static u32x4 | u32x4_interleave_hi (u32x4 a, u32x4 b) |
static u32x4 | u32x4_interleave_lo (u32x4 a, u32x4 b) |
static u64x2 | u64x2_interleave_hi (u64x2 a, u64x2 b) |
static u64x2 | u64x2_interleave_lo (u64x2 a, u64x2 b) |
static u8x8 | u8x8_interleave_hi (u8x8 a, u8x8 b) |
static u8x8 | u8x8_interleave_lo (u8x8 a, u8x8 b) |
static u16x4 | u16x4_interleave_hi (u16x4 a, u16x4 b) |
static u16x4 | u16x4_interleave_lo (u16x4 a, u16x4 b) |
static u32x2 | u32x2_interleave_hi (u32x2 a, u32x2 b) |
static u32x2 | u32x2_interleave_lo (u32x2 a, u32x2 b) |
static u8x16 | u16x8_pack (u16x8 lo, u16x8 hi) |
static i8x16 | i16x8_pack (i16x8 lo, i16x8 hi) |
static u16x8 | u32x4_pack (u32x4 lo, u32x4 hi) |
static u8x8 | u16x4_pack (u16x4 lo, u16x4 hi) |
static i8x8 | i16x4_pack (i16x4 lo, i16x4 hi) |
static u16x4 | u32x2_pack (u32x2 lo, u32x2 hi) |
static i16x4 | i32x2_pack (i32x2 lo, i32x2 hi) |
static u64x2 | u64x2_read_lo (u64x2 x, u64 *a) |
static u64x2 | u64x2_read_hi (u64x2 x, u64 *a) |
static void | u64x2_write_lo (u64x2 x, u64 *a) |
static void | u64x2_write_hi (u64x2 x, u64 *a) |
adds_epu static subs_epu i16x8 | i16x8_mul_lo (i16x8 x, i16x8 y) |
static u16x8 | u16x8_mul_lo (u16x8 x, u16x8 y) |
static i16x8 | i16x8_mul_hi (i16x8 x, i16x8 y) |
static u16x8 | u16x8_mul_hi (u16x8 x, u16x8 y) |
static u32x2 | u32x2_shift_left (u32x2 x, u32x2 i) |
static u16x4 | u16x4_shift_right (u16x4 x, u16x4 i) |
static u32x2 | u32x2_shift_right (u32x2 x, u32x2 i) |
static i16x4 | i16x4_shift_left (i16x4 x, i16x4 i) |
static i32x2 | i32x2_shift_left (i32x2 x, i32x2 i) |
static i16x4 | i16x4_shift_right (i16x4 x, i16x4 i) |
static i32x2 | i32x2_shift_right (i32x2 x, i32x2 i) |
static u32 | u32x4_get0 (u32x4 x) |
static u32x4 | u32x4_set0 (u32 x) |
static i32x4 | i32x4_set0 (i32 x) |
static i32 | i32x4_get0 (i32x4 x) |
static u32 | u8x16_compare_byte_mask (u8x16 x) |
static u32 | u32x4_compare_word_mask (u32x4 x) |
static u32 | u8x16_zero_byte_mask (u8x16 x) |
static u32 | u16x8_zero_byte_mask (u16x8 x) |
static u32 | u32x4_zero_byte_mask (u32x4 x) |
static u32 | u8x16_max_scalar (u8x16 x) |
static u8 | u8x16_min_scalar (u8x16 x) |
static i16 | i16x8_max_scalar (i16x8 x) |
static i16 | i16x8_min_scalar (i16x8 x) |
static_always_inline u32 | u32x4_min_scalar (u32x4 v) |
static_always_inline u32 | u32x4_max_scalar (u32x4 v) |
static_always_inline u32 | i32x4_min_scalar (i32x4 v) |
static_always_inline u32 | i32x4_max_scalar (i32x4 v) |
static_always_inline u16 | u8x16_msb_mask (u8x16 v) |
static_always_inline u16x8 | u16x8_byte_swap (u16x8 v) |
static_always_inline u32x4 | u32x4_hadd (u32x4 v1, u32x4 v2) |
static_always_inline u8x16 | u8x16_shuffle (u8x16 v, u8x16 m) |
static_always_inline u32x4 | u32x4_shuffle (u32x4 v, const int a, const int b, const int c, const int d) |
epu8_epi32 epu16_epi32 epu32_epi64 epi8_epi32 epi16_epi32 epi32_epi64 static_always_inline u64x2 | u64x2_gather (void *p0, void *p1) |
static_always_inline u32x4 | u32x4_gather (void *p0, void *p1, void *p2, void *p3, void *p4) |
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) |
static_always_inline void | u64x2_scatter_one (u64x2 r, int index, void *p) |
static_always_inline void | u32x4_scatter_one (u32x4 r, int index, void *p) |
static_always_inline u8x16 | u8x16_is_greater (u8x16 v1, u8x16 v2) |
static_always_inline u8x16 | u8x16_blend (u8x16 v1, u8x16 v2, u8x16 mask) |
Variables | |
add_saturate | |
adds_epu | sub_saturate |
left | |
sll | right |
sll srl srl sll sra u16x4 | i |
u8 | u32x4_compare_word_mask_table [256] |
u32x4 | |
epu8_epi32 epu16_epi32 | u64x2 |
epu8_epi32 epu16_epi32 epu32_epi64 | i32x4 |
epu8_epi32 epu16_epi32 epu32_epi64 epi8_epi32 epi16_epi32 | i64x2 |
#define CLIB_HAVE_VEC128_MSB_MASK |
Definition at line 616 of file vector_sse42.h.
#define CLIB_HAVE_VEC128_UNALIGNED_LOAD_STORE |
Definition at line 98 of file vector_sse42.h.
#define CLIB_VEC128_SPLAT_DEFINED |
Definition at line 97 of file vector_sse42.h.
#define foreach_sse42_vec128f _(f,32,4,ps) _(f,64,2,pd) |
Definition at line 49 of file vector_sse42.h.
Definition at line 45 of file vector_sse42.h.
#define foreach_sse42_vec128u _(u,8,16,epi8) _(u,16,8,epi16) _(u,32,4,epi32) _(u,64,2,epi64x) |
Definition at line 47 of file vector_sse42.h.
#define i16x8_word_shift_left | ( | a, | |
n | |||
) | ((u16x8) u8x16_word_shift_left((u8x16) (a), (n) * sizeof (u16))) |
Definition at line 373 of file vector_sse42.h.
#define i16x8_word_shift_right | ( | a, | |
n | |||
) | ((i16x8) u8x16_word_shift_right((u8x16) (a), (n) * sizeof (u16))) |
Definition at line 377 of file vector_sse42.h.
#define i32x4_word_shift_left | ( | a, | |
n | |||
) | ((u32x4) u8x16_word_shift_left((u8x16) (a), (n) * sizeof (u32))) |
Definition at line 382 of file vector_sse42.h.
#define i32x4_word_shift_right | ( | a, | |
n | |||
) | ((i32x4) u8x16_word_shift_right((u8x16) (a), (n) * sizeof (u32))) |
Definition at line 386 of file vector_sse42.h.
#define i64x2_word_shift_left | ( | a, | |
n | |||
) | ((u64x2) u8x16_word_shift_left((u8x16) (a), (n) * sizeof (u64))) |
Definition at line 391 of file vector_sse42.h.
#define i64x2_word_shift_right | ( | a, | |
n | |||
) | ((i64x2) u8x16_word_shift_right((u8x16) (a), (n) * sizeof (u64))) |
Definition at line 395 of file vector_sse42.h.
#define i8x16_word_shift_left | ( | a, | |
n | |||
) | ((i8x16) u8x16_word_shift_left((u8x16) (a), (n))) |
Definition at line 366 of file vector_sse42.h.
#define i8x16_word_shift_right | ( | a, | |
n | |||
) | ((i8x16) u8x16_word_shift_right((u8x16) (a), (n))) |
Definition at line 368 of file vector_sse42.h.
#define u16x8_word_shift_left | ( | a, | |
n | |||
) | ((u16x8) u8x16_word_shift_left((u8x16) (a), (n) * sizeof (u16))) |
Definition at line 371 of file vector_sse42.h.
#define u16x8_word_shift_right | ( | a, | |
n | |||
) | ((u16x8) u8x16_word_shift_right((u8x16) (a), (n) * sizeof (u16))) |
Definition at line 375 of file vector_sse42.h.
#define u32x4_select | ( | A, | |
MASK | |||
) |
Definition at line 452 of file vector_sse42.h.
#define u32x4_splat_word | ( | x, | |
i | |||
) |
Definition at line 462 of file vector_sse42.h.
#define u32x4_word_shift_left | ( | a, | |
n | |||
) | ((u32x4) u8x16_word_shift_left((u8x16) (a), (n) * sizeof (u32))) |
Definition at line 380 of file vector_sse42.h.
#define u32x4_word_shift_right | ( | a, | |
n | |||
) | ((u32x4) u8x16_word_shift_right((u8x16) (a), (n) * sizeof (u32))) |
Definition at line 384 of file vector_sse42.h.
#define u64x2_word_shift_left | ( | a, | |
n | |||
) | ((u64x2) u8x16_word_shift_left((u8x16) (a), (n) * sizeof (u64))) |
Definition at line 389 of file vector_sse42.h.
#define u64x2_word_shift_right | ( | a, | |
n | |||
) | ((u64x2) u8x16_word_shift_right((u8x16) (a), (n) * sizeof (u64))) |
Definition at line 393 of file vector_sse42.h.
Definition at line 575 of file vector_sse42.h.
Definition at line 363 of file vector_sse42.h.
Definition at line 364 of file vector_sse42.h.
|
inlinestatic |
Definition at line 213 of file vector_sse42.h.
|
inlinestatic |
Definition at line 340 of file vector_sse42.h.
|
inlinestatic |
Definition at line 352 of file vector_sse42.h.
Definition at line 558 of file vector_sse42.h.
Definition at line 567 of file vector_sse42.h.
Definition at line 284 of file vector_sse42.h.
Definition at line 272 of file vector_sse42.h.
Definition at line 194 of file vector_sse42.h.
|
inlinestatic |
Definition at line 225 of file vector_sse42.h.
|
inlinestatic |
Definition at line 346 of file vector_sse42.h.
|
inlinestatic |
Definition at line 358 of file vector_sse42.h.
static_always_inline u32 i32x4_max_scalar | ( | i32x4 | v | ) |
Definition at line 603 of file vector_sse42.h.
static_always_inline u32 i32x4_min_scalar | ( | i32x4 | v | ) |
Definition at line 595 of file vector_sse42.h.
|
inlinestatic |
Definition at line 163 of file vector_sse42.h.
|
inlinestatic |
Definition at line 169 of file vector_sse42.h.
|
inlinestatic |
Definition at line 207 of file vector_sse42.h.
|
inlinestatic |
Definition at line 328 of file vector_sse42.h.
static_always_inline u16x8 u16x8_byte_swap | ( | u16x8 | v | ) |
Definition at line 621 of file vector_sse42.h.
|
inlinestatic |
Definition at line 114 of file vector_sse42.h.
|
inlinestatic |
Definition at line 120 of file vector_sse42.h.
|
inlinestatic |
Definition at line 290 of file vector_sse42.h.
|
inlinestatic |
Definition at line 278 of file vector_sse42.h.
|
inlinestatic |
Definition at line 188 of file vector_sse42.h.
|
inlinestatic |
Definition at line 524 of file vector_sse42.h.
|
inlinestatic |
Definition at line 175 of file vector_sse42.h.
|
inlinestatic |
Definition at line 181 of file vector_sse42.h.
|
inlinestatic |
Definition at line 219 of file vector_sse42.h.
|
inlinestatic |
Definition at line 322 of file vector_sse42.h.
|
inlinestatic |
Definition at line 334 of file vector_sse42.h.
static_always_inline u32x4 u32x4_gather | ( | void * | p0, |
void * | p1, | ||
void * | p2, | ||
void * | p3, | ||
void * | p4 | ||
) |
Definition at line 684 of file vector_sse42.h.
static_always_inline u32x4 u32x4_hadd | ( | u32x4 | v1, |
u32x4 | v2 | ||
) |
Definition at line 630 of file vector_sse42.h.
Definition at line 126 of file vector_sse42.h.
Definition at line 132 of file vector_sse42.h.
static_always_inline u32 u32x4_max_scalar | ( | u32x4 | v | ) |
Definition at line 587 of file vector_sse42.h.
static_always_inline u32 u32x4_min_scalar | ( | u32x4 | v | ) |
Definition at line 200 of file vector_sse42.h.
static_always_inline void u32x4_scatter | ( | u32x4 | r, |
void * | p0, | ||
void * | p1, | ||
void * | p2, | ||
void * | p3 | ||
) |
Definition at line 699 of file vector_sse42.h.
static_always_inline void u32x4_scatter_one | ( | u32x4 | r, |
int | index, | ||
void * | p | ||
) |
Definition at line 714 of file vector_sse42.h.
static_always_inline u32x4 u32x4_shuffle | ( | u32x4 | v, |
const int | a, | ||
const int | b, | ||
const int | c, | ||
const int | d | ||
) |
epu8_epi32 epu16_epi32 epu32_epi64 epi8_epi32 epi16_epi32 epi32_epi64 static_always_inline u64x2 u64x2_gather | ( | void * | p0, |
void * | p1 | ||
) |
Definition at line 677 of file vector_sse42.h.
Definition at line 138 of file vector_sse42.h.
Definition at line 144 of file vector_sse42.h.
Definition at line 238 of file vector_sse42.h.
Definition at line 232 of file vector_sse42.h.
static_always_inline void u64x2_scatter | ( | u64x2 | r, |
void * | p0, | ||
void * | p1 | ||
) |
Definition at line 692 of file vector_sse42.h.
static_always_inline void u64x2_scatter_one | ( | u64x2 | r, |
int | index, | ||
void * | p | ||
) |
Definition at line 708 of file vector_sse42.h.
Definition at line 250 of file vector_sse42.h.
Definition at line 244 of file vector_sse42.h.
static_always_inline u8x16 u8x16_blend | ( | u8x16 | v1, |
u8x16 | v2, | ||
u8x16 | mask | ||
) |
|
inlinestatic |
|
inlinestatic |
Definition at line 102 of file vector_sse42.h.
|
inlinestatic |
Definition at line 108 of file vector_sse42.h.
static_always_inline u8x16 u8x16_is_greater | ( | u8x16 | v1, |
u8x16 | v2 | ||
) |
|
inlinestatic |
Definition at line 538 of file vector_sse42.h.
|
inlinestatic |
Definition at line 548 of file vector_sse42.h.
static_always_inline u16 u8x16_msb_mask | ( | u8x16 | v | ) |
Definition at line 611 of file vector_sse42.h.
static_always_inline u8x16 u8x16_shuffle | ( | u8x16 | v, |
u8x16 | m | ||
) |
Definition at line 636 of file vector_sse42.h.
|
inlinestatic |
|
inlinestatic |
Definition at line 151 of file vector_sse42.h.
|
inlinestatic |
Definition at line 157 of file vector_sse42.h.
add_saturate |
Definition at line 268 of file vector_sse42.h.
sll srl srl sll sra u16x4 i |
Definition at line 317 of file vector_sse42.h.
epu8_epi32 epu16_epi32 epu32_epi64 epi8_epi32 i32x4 |
Definition at line 668 of file vector_sse42.h.
epu8_epi32 epu16_epi32 epu32_epi64 epi8_epi32 epi16_epi32 i64x2 |
Definition at line 672 of file vector_sse42.h.
sll srl srl left |
Definition at line 305 of file vector_sse42.h.
sll srl srl sll right |
Definition at line 307 of file vector_sse42.h.
adds_epu sub_saturate |
Definition at line 270 of file vector_sse42.h.
epu8_epi32 u32x4 |
Definition at line 661 of file vector_sse42.h.
u8 u32x4_compare_word_mask_table[256] |
epu8_epi32 epu16_epi32 u64x2 |
Definition at line 665 of file vector_sse42.h.