add 'is_all_zero(x)' for NEON 87/10687/2
authorAdrian Oanca <adrian.oanca@enea.com>
Tue, 20 Feb 2018 16:14:58 +0000 (17:14 +0100)
committerDamjan Marion <dmarion.lists@gmail.com>
Wed, 21 Feb 2018 10:43:06 +0000 (10:43 +0000)
Change-Id: I5045e0f3ac4698e820b69ad46b96763e404e6fe4
Signed-off-by: Adrian Oanca <adrian.oanca@enea.com>
src/vppinfra/vector_neon.h

index 6a3e64e..6ca9c0b 100644 (file)
 #define u16x8_sub_saturate(a,b) vsubq_u16(a,b)
 #define i16x8_sub_saturate(a,b) vsubq_s16(a,b)
 
+always_inline int
+u8x16_is_all_zero (u8x16 x)
+{
+  return !(vaddvq_u8 (x));
+}
+
+always_inline int
+u16x8_is_all_zero (u16x8 x)
+{
+  return !(vaddvq_u16 (x));
+}
+
+always_inline int
+u32x4_is_all_zero (u32x4 x)
+{
+  return !(vaddvq_u32 (x));
+}
+
+always_inline int
+u64x2_is_all_zero (u64x2 x)
+{
+  return !(vaddvq_u64 (x));
+}
+
 /* Converts all ones/zeros compare mask to bitmap. */
 always_inline u32
 u8x16_compare_byte_mask (u8x16 x)