Refuse to start if binary requires unavailable CPU extensions 73/473/3
authorDamjan Marion <damarion@cisco.com>
Thu, 3 Mar 2016 19:19:02 +0000 (20:19 +0100)
committerGerrit Code Review <gerrit@fd.io>
Thu, 3 Mar 2016 21:22:03 +0000 (21:22 +0000)
Change-Id: I4d0d152b6f5d4ba566398fcccaa6a1f96625f864
Signed-off-by: Damjan Marion <damarion@cisco.com>
vpp/vnet/main.c

index 290b5c0..04ee6b7 100644 (file)
@@ -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