vector functions cleanup and improvements
Remove functions which have native C equivalent (i.e. _is_equal can be
replaced with ==, _add with +)
Add SSE4.2, AVX-512 implementations of splat, load_unaligned, store_unaligned,
is_all_zero, is_equal, is_all_equal
Change-Id: Ie80b0e482e7a76248ad79399c2576468532354cd
Signed-off-by: Damjan Marion <damarion@cisco.com>
diff --git a/src/vppinfra/vhash.h b/src/vppinfra/vhash.h
index 5ab4229..85dfb78 100644
--- a/src/vppinfra/vhash.h
+++ b/src/vppinfra/vhash.h
@@ -412,7 +412,7 @@
{
u32 k = vhash_get_key_word (h, key_word_index, vi);
u32x4 x = { k, k, k, k };
- return u32x4_is_equal (bucket[key_word_index].as_u32x4, x);
+ return (bucket[key_word_index].as_u32x4 == x);
}
#define vhash_bucket_compare_4(h,wi,vi,b0,b1,b2,b3,cmp0,cmp1,cmp2,cmp3) \
@@ -423,10 +423,10 @@
u32x4 _k2 = u32x4_splat_word (_k4, 2); \
u32x4 _k3 = u32x4_splat_word (_k4, 3); \
\
- cmp0 = u32x4_is_equal (b0->key[wi].as_u32x4, _k0); \
- cmp1 = u32x4_is_equal (b1->key[wi].as_u32x4, _k1); \
- cmp2 = u32x4_is_equal (b2->key[wi].as_u32x4, _k2); \
- cmp3 = u32x4_is_equal (b3->key[wi].as_u32x4, _k3); \
+ cmp0 = (b0->key[wi].as_u32x4 == _k0); \
+ cmp1 = (b1->key[wi].as_u32x4 == _k1); \
+ cmp2 = (b2->key[wi].as_u32x4 == _k2); \
+ cmp3 = (b3->key[wi].as_u32x4 == _k3); \
} while (0)
u32 vhash_get_overflow (vhash_t * h, u32 key_hash, u32 vi, u32 n_key_u32s);