From: Adrian Oanca Date: Tue, 20 Feb 2018 16:14:58 +0000 (+0100) Subject: add 'is_all_zero(x)' for NEON X-Git-Tag: v18.04-rc1~284 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=2b53e4e525472f12ddb9bbe4ae0f6668fbe4e2cd;p=vpp.git add 'is_all_zero(x)' for NEON Change-Id: I5045e0f3ac4698e820b69ad46b96763e404e6fe4 Signed-off-by: Adrian Oanca --- diff --git a/src/vppinfra/vector_neon.h b/src/vppinfra/vector_neon.h index 6a3e64e946d..6ca9c0b90a0 100644 --- a/src/vppinfra/vector_neon.h +++ b/src/vppinfra/vector_neon.h @@ -21,6 +21,30 @@ #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)