On 8 July 2017 at 00:26, Jerin Jacob <jerin.ja...@caviumnetworks.com> wrote: > vaddvq_u16() is not available for armv7. > Emulate the vaddvq_u16() using armv7 NEON intrinsics. > > Signed-off-by: Jerin Jacob <jerin.ja...@caviumnetworks.com> > --- > lib/librte_eal/common/include/arch/arm/rte_vect.h | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/lib/librte_eal/common/include/arch/arm/rte_vect.h > b/lib/librte_eal/common/include/arch/arm/rte_vect.h > index 0670ca2ee..69fd428f3 100644 > --- a/lib/librte_eal/common/include/arch/arm/rte_vect.h > +++ b/lib/librte_eal/common/include/arch/arm/rte_vect.h > @@ -77,6 +77,17 @@ vqtbl1q_u8(uint8x16_t a, uint8x16_t b) > > return vld1q_u8(rte_ret.u8); > } > + > +static inline uint16_t > +vaddvq_u16(uint16x8_t a) > +{ > + uint32x4_t m = vpaddlq_u16(a); > + uint64x2_t n = vpaddlq_u32(m); > + uint64x1_t o = vget_low_u64(n) + vget_high_u64(n); > + > + return vget_lane_u32((uint32x2_t)o, 0); > +} > + > #endif > > #if defined(RTE_TOOLCHAIN_GCC) && (GCC_VERSION < 70000) > -- > 2.13.2 >
Acked-by: Jianbo Liu <jianbo....@linaro.org>