X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fip%2Fvtep.h;h=8b2c7fe723fd6251705662c4f5e626868e9e3f86;hb=7cd35f5d688d9e3bddf66602655274dae944b086;hp=0fdc4c5a346f319dfed9b5777aef554e0a1579c5;hpb=e4031131ccddd7c4eb683b36f1a97a65dcff008a;p=vpp.git diff --git a/src/vnet/ip/vtep.h b/src/vnet/ip/vtep.h index 0fdc4c5a346..8b2c7fe723f 100644 --- a/src/vnet/ip/vtep.h +++ b/src/vnet/ip/vtep.h @@ -117,6 +117,7 @@ typedef struct int idx; } vtep4_cache_t; +#ifdef CLIB_HAVE_VEC512 always_inline u8 vtep4_check_vector (vtep_table_t * t, vlib_buffer_t * b0, ip4_header_t * ip40, vtep4_key_t * last_k4, vtep4_cache_t * vtep4_u512) @@ -128,30 +129,27 @@ vtep4_check_vector (vtep_table_t * t, vlib_buffer_t * b0, ip4_header_t * ip40, if (PREDICT_TRUE (k4.as_u64 == last_k4->as_u64)) return VTEP_CHECK_PASS_UNCHANGED; -#ifdef CLIB_HAVE_VEC512 u64x8 k4_u64x8 = u64x8_splat (k4.as_u64); - u64x8 cache = u64x8_load_aligned (vtep4_u512->vtep4_cache); - u8 result = u64x8_mask_is_equal (cache, k4_u64x8); + u64x8 cache = u64x8_load_unaligned (vtep4_u512->vtep4_cache); + u8 result = u64x8_is_equal_mask (cache, k4_u64x8); if (PREDICT_TRUE (result != 0)) { - k4.as_u64 = + last_k4->as_u64 = vtep4_u512->vtep4_cache[count_trailing_zeros (result)].as_u64; return VTEP_CHECK_PASS_UNCHANGED; } -#endif if (PREDICT_FALSE (!hash_get (t->vtep4, k4.as_u64))) return VTEP_CHECK_FAIL; - last_k4->as_u64 = k4.as_u64; - -#ifdef CLIB_HAVE_VEC512 vtep4_u512->vtep4_cache[vtep4_u512->idx].as_u64 = k4.as_u64; vtep4_u512->idx = (vtep4_u512->idx + 1) & 0x7; -#endif + + last_k4->as_u64 = k4.as_u64; return VTEP_CHECK_PASS; } +#endif always_inline u8 vtep6_check (vtep_table_t * t, vlib_buffer_t * b0, ip6_header_t * ip60,