X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_eal%2Farm%2Finclude%2Frte_vect.h;h=093e9122ae561b05fbc124e4e0426ac970e44c34;hb=56833cbd3538b8edac3b3705f835cc56de41cfb0;hp=9287a11173bb6c951ee551267fd2214f19e29c80;hpb=f35e5b3e07b2e7999f7d3085236cc366c9cb4da6;p=dpdk.git diff --git a/lib/librte_eal/arm/include/rte_vect.h b/lib/librte_eal/arm/include/rte_vect.h index 9287a11173..093e9122ae 100644 --- a/lib/librte_eal/arm/include/rte_vect.h +++ b/lib/librte_eal/arm/include/rte_vect.h @@ -9,11 +9,16 @@ #include "generic/rte_vect.h" #include "rte_debug.h" #include "arm_neon.h" +#ifdef __ARM_FEATURE_SVE +#include +#endif #ifdef __cplusplus extern "C" { #endif +#define RTE_VECT_DEFAULT_SIMD_BITWIDTH RTE_VECT_SIMD_MAX + typedef int32x4_t xmm_t; #define XMM_SIZE (sizeof(xmm_t)) @@ -28,7 +33,7 @@ typedef union rte_xmm { double pd[XMM_SIZE / sizeof(double)]; } __rte_aligned(16) rte_xmm_t; -#ifdef RTE_ARCH_ARM +#if defined(RTE_ARCH_ARM) && defined(RTE_ARCH_32) /* NEON intrinsic vqtbl1q_u8() is not supported in ARMv7-A(AArch32) */ static __inline uint8x16_t vqtbl1q_u8(uint8x16_t a, uint8x16_t b) @@ -62,7 +67,11 @@ vaddvq_u16(uint16x8_t a) #endif -#if RTE_CC_IS_GNU && (GCC_VERSION < 70000) +#if (defined(RTE_ARCH_ARM) && defined(RTE_ARCH_32)) || \ +(defined(RTE_ARCH_ARM64) && RTE_CC_IS_GNU && (GCC_VERSION < 70000)) +/* NEON intrinsic vcopyq_laneq_u32() is not supported in ARMv7-A(AArch32) + * On AArch64, this intrinsic is supported since GCC version 7. + */ static inline uint32x4_t vcopyq_laneq_u32(uint32x4_t a, const int lane_a, uint32x4_t b, const int lane_b)