From: Sébastien Villemot Date: Sun, 25 Oct 2020 14:04:33 +0000 (+0000) Subject: Julia requires SSE2 on i386 X-Git-Tag: archive/raspbian/1.5.3+dfsg-1+rpi1~3^2^2~14 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=a2f6b6e9a45f48b9f013c6a10cb94b52728f7bfb;p=julia.git Julia requires SSE2 on i386 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 for the list of supported CPU extension flags. Last-Update: 2015-11-01 Gbp-Pq: Name require-sse2-on-i386.patch --- diff --git a/src/codegen.cpp b/src/codegen.cpp index 3427fdf..a097991 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -21,6 +21,9 @@ #endif #include +#ifdef __i386__ +#include +#endif #include #include #include @@ -7418,6 +7421,14 @@ extern "C" void jl_init_llvm(void) #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