aboutsummaryrefslogtreecommitdiffstats
path: root/src/vppinfra/vector.h
diff options
context:
space:
mode:
authorGabriel Ganne <gabriel.ganne@enea.com>2017-12-05 17:33:37 +0100
committerDamjan Marion <dmarion.lists@gmail.com>2018-02-08 20:32:31 +0000
commitb81831d122d59b55c7d42b39e4fd9e94b7d40aca (patch)
tree2427cad202283105a19387ab5f249f7be07acc97 /src/vppinfra/vector.h
parentc43b3f986476ffb4506b7115898e809a6e34f601 (diff)
add CLIB_HAVE_VEC128 with NEON intrinsics (VPP-1127)
Enable CLIB_HAVE_VEC128 if both aarch64 and __ARM_NEON ie. armv8 only, not armv7 Add more neon compare intrinsics wrappers. I only add simple intrinsics wrappers. More complex ones can be added later as they are needed, with performance tests on the corresponding feature to back them up. Remove wrongly added 128bits definitions defined on both armv7 and armv8 without concern for NEON instructions presence. Notable correspondinf code activations: * MHEAP_FLAG_SMALL_OBJECT_CACHE in mheap.c * ip4 fib mtrie leaves access * enable ixge plugin compilation for aarch64 (conf still disables it by default) Change-Id: I99953823627bdff6f222d232c78aa7b655aaf77a Signed-off-by: Gabriel Ganne <gabriel.ganne@enea.com>
Diffstat (limited to 'src/vppinfra/vector.h')
-rw-r--r--src/vppinfra/vector.h12
1 files changed, 4 insertions, 8 deletions
diff --git a/src/vppinfra/vector.h b/src/vppinfra/vector.h
index 5da1c19037b..e786275f5d4 100644
--- a/src/vppinfra/vector.h
+++ b/src/vppinfra/vector.h
@@ -46,6 +46,10 @@
#define CLIB_HAVE_VEC64
#endif
+#if defined (__aarch64__) && defined(__ARM_NEON)
+#define CLIB_HAVE_VEC128
+#endif
+
#if defined (__SSE2__) && __GNUC__ >= 4
#define CLIB_HAVE_VEC128
#endif
@@ -69,14 +73,6 @@
#define _vector_size(n) __attribute__ ((vector_size (n)))
-#if defined (__aarch64__) || defined (__arm__)
-typedef unsigned int u32x4 _vector_size (16);
-typedef u8 u8x16 _vector_size (16);
-typedef u16 u16x8 _vector_size (16);
-typedef u32 u32x4 _vector_size (16);
-typedef u64 u64x2 _vector_size (16);
-#endif
-
#ifdef CLIB_HAVE_VEC64
/* Signed 64 bit. */
typedef char i8x8 _vector_size (8);