Bug: https://github.com/JuliaLang/julia/issues/7185
Forwarded: no
Last-Update: 2015-11-01
This patch adds an explicit error message if the CPU does not support SSE2.
The CPU features are queried using the x86 CPUID opcode. The wrapper function
__get_cpuid() is provided by GCC and Clang. See <cpuid.h> for the list of
supported CPU extension flags.
Last-Update: 2015-11-01
Gbp-Pq: Name require-sse2-on-i386.patch
#endif
#include <setjmp.h>
+#ifdef __i386__
+#include <cpuid.h>
+#endif
#include <string>
#include <sstream>
#include <fstream>
#ifdef USE_POLLY
polly::initializePollyPasses(Registry);
#endif
+#ifdef __i386__
+ unsigned int eax = 0, ebx = 0, ecx = 0, edx = 0;
+ __get_cpuid(1, &eax, &ebx, &ecx, &edx);
+ if (!(edx & bit_SSE2)) {
+ fprintf(stderr, "Your processor does not have SSE2 extension, which is required by Julia. Exiting.\n");
+ exit(EXIT_FAILURE);
+ }
+#endif
// Parse command line flags after initialization
const char *const argv_tailmerge[] = {"", "-enable-tail-merge=0"}; // NOO TOUCHIE; NO TOUCH! See #922