From 08bca80c998bdae87060306350124714606a1604 Mon Sep 17 00:00:00 2001 From: Damjan Marion Date: Mon, 18 Jun 2018 22:21:40 +0200 Subject: ip: vectorized ip checksum Change-Id: Ida678e6f31daa8decb18189da712a350336326e2 Signed-off-by: Damjan Marion --- src/vppinfra/vector_avx2.h | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src/vppinfra/vector_avx2.h') diff --git a/src/vppinfra/vector_avx2.h b/src/vppinfra/vector_avx2.h index 6b298be8bfd..66c46f226aa 100644 --- a/src/vppinfra/vector_avx2.h +++ b/src/vppinfra/vector_avx2.h @@ -137,6 +137,34 @@ u32x8_hadd (u32x8 v1, u32x8 v2) return (u32x8) _mm256_hadd_epi32 ((__m256i) v1, (__m256i) v2); } +static_always_inline u16x16 +u16x16_mask_last (u16x16 v, u8 n_last) +{ + const u16x16 masks[17] = { + {0}, + {-1}, + {-1, -1}, + {-1, -1, -1}, + {-1, -1, -1, -1}, + {-1, -1, -1, -1, -1}, + {-1, -1, -1, -1, -1, -1}, + {-1, -1, -1, -1, -1, -1, -1}, + {-1, -1, -1, -1, -1, -1, -1, -1}, + {-1, -1, -1, -1, -1, -1, -1, -1, -1}, + {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + }; + + ASSERT (n_last < 17); + + return v & masks[16 - n_last]; +} + #endif /* included_vector_avx2_h */ /* -- cgit 1.2.3-korg