eal: uninline power intrinsics
[dpdk.git] / lib / librte_eal / arm / include / rte_vect.h
index 9287a11..093e912 100644 (file)
@@ -9,11 +9,16 @@
 #include "generic/rte_vect.h"
 #include "rte_debug.h"
 #include "arm_neon.h"
+#ifdef __ARM_FEATURE_SVE
+#include <arm_sve.h>
+#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)