vppinfra: add 512-bit vector definitions and types 80/9380/2
authorDamjan Marion <[email protected]>
Fri, 10 Nov 2017 19:20:32 +0000 (20:20 +0100)
committerDamjan Marion <[email protected]>
Fri, 10 Nov 2017 20:21:22 +0000 (20:21 +0000)
Change-Id: I245c034684ba8585c8f5bb5353027aba13f8a53e
Signed-off-by: Damjan Marion <[email protected]>
src/vppinfra/vector.h

index 491e7cf..5da1c19 100644 (file)
 #define CLIB_HAVE_VEC128
 #endif
 
+#if defined (__AVX__)
+#define CLIB_HAVE_VEC256
+#endif
+
+#if defined (__AVX512F__)
+#define CLIB_HAVE_VEC512
+#endif
+
 /* 128 implies 64 */
 #ifdef CLIB_HAVE_VEC128
 #define CLIB_HAVE_VEC64
@@ -116,6 +124,23 @@ typedef f32 f32x8 _vector_size (32);
 typedef f64 f64x4 _vector_size (32);
 #endif /* CLIB_HAVE_VEC128 */
 
+#ifdef CLIB_HAVE_VEC512
+/* Signed 512 bit. */
+typedef i8 i8x64 _vector_size (64);
+typedef i16 i16x32 _vector_size (64);
+typedef i32 i32x16 _vector_size (64);
+typedef long long i64x8 _vector_size (64);
+
+/* Unsigned 512 bit. */
+typedef u8 u8x64 _vector_size (64);
+typedef u16 u16x32 _vector_size (64);
+typedef u32 u32x16 _vector_size (64);
+typedef u64 u64x8 _vector_size (64);
+
+typedef f32 f32x16 _vector_size (64);
+typedef f64 f64x8 _vector_size (64);
+#endif /* CLIB_HAVE_VEC512 */
+
 /* Vector word sized types. */
 #ifndef CLIB_VECTOR_WORD_BITS
 #ifdef CLIB_HAVE_VEC128