require-sse2-on-i386
authorDebian Julia Team <pkg-julia-devel@lists.alioth.debian.org>
Sat, 14 Dec 2019 02:21:17 +0000 (02:21 +0000)
committerMo Zhou <cdluminate@gmail.com>
Sat, 14 Dec 2019 02:21:17 +0000 (02:21 +0000)
Gbp-Pq: Name require-sse2-on-i386.patch

src/codegen.cpp

index a0109f09b0c28c26da21fdab051c9798694625c1..075be8478aef049ae9b95682ec7582cdc663d404 100644 (file)
@@ -18,6 +18,9 @@
 #endif
 
 #include <setjmp.h>
+#ifdef __i386__
+#include <cpuid.h>
+#endif
 #include <string>
 #include <sstream>
 #include <fstream>
@@ -7629,6 +7632,15 @@ static void init_julia_llvm_env(Module *m)
 
 extern "C" void *jl_init_llvm(void)
 {
+#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
+
     const char *const argv_tailmerge[] = {"", "-enable-tail-merge=0"}; // NOO TOUCHIE; NO TOUCH! See #922
     cl::ParseCommandLineOptions(sizeof(argv_tailmerge)/sizeof(argv_tailmerge[0]), argv_tailmerge, "disable-tail-merge\n");
 #if defined(_OS_WINDOWS_) && defined(_CPU_X86_64_)