aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--vpp/vnet/main.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/vpp/vnet/main.c b/vpp/vnet/main.c
index 290b5c03f32..04ee6b7607c 100644
--- a/vpp/vnet/main.c
+++ b/vpp/vnet/main.c
@@ -63,6 +63,35 @@ int main (int argc, char * argv[])
u32 size;
void vlib_set_get_handoff_structure_cb (void *cb);
+#if __x86_64__
+ const char * msg = "ERROR: This binary requires CPU with %s extensions.\n";
+#define _(a,b) \
+ if (!__builtin_cpu_supports(a)) \
+ { \
+ fprintf(stderr, msg, b); \
+ exit(1); \
+ }
+
+#if __AVX2__
+ _("avx2", "AVX2")
+#endif
+#if __AVX__
+ _("avx", "AVX")
+#endif
+#if __SSE4_2__
+ _("sse4.2", "SSE4.2")
+#endif
+#if __SSE4_1__
+ _("sse4.1", "SSE4.1")
+#endif
+#if __SSSE3__
+ _("ssse3", "SSSE3")
+#endif
+#if __SSE3__
+ _("sse3", "SSE3")
+#endif
+#endif
+
/*
* Load startup config from file.
* usage: vpp -c /etc/vpp/startup.conf