From 93a86e2840d1254340dadcd561a872eba61340f7 Mon Sep 17 00:00:00 2001 From: hendricks266 Date: Wed, 4 May 2016 00:25:27 +0000 Subject: [PATCH] Enable LIBDIVIDE_USE_SSE2 under x86_64 builds or if the binary is built with SSE2 optimizations. git-svn-id: https://svn.eduke32.com/eduke32@5716 1a8010ca-5511-0410-912e-c29ae57300e0 --- polymer/eduke32/build/include/libdivide.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/polymer/eduke32/build/include/libdivide.h b/polymer/eduke32/build/include/libdivide.h index 3b94cbf4e..266867624 100644 --- a/polymer/eduke32/build/include/libdivide.h +++ b/polymer/eduke32/build/include/libdivide.h @@ -31,10 +31,8 @@ #define __has_builtin(x) 0 // Compatibility with non-clang compilers. #endif -#ifdef __ICC -#define HAS_INT128_T 0 -#else -#define HAS_INT128_T __LP64__ +#if defined(__SIZEOF_INT128__) +#define HAS_INT128_T 1 #endif #if defined(__x86_64__) || defined(_WIN64) || defined(_M_64) @@ -49,6 +47,10 @@ #define LIBDIVIDE_GCC_STYLE_ASM 1 #endif +#if LIBDIVIDE_IS_X86_64 || defined __SSE2__ || (defined _M_IX86_FP && _M_IX86_FP == 2) +#define LIBDIVIDE_USE_SSE2 1 +#endif + /* Explanation of "more" field: bit 6 is whether to use shift path. If we are using the shift path, bit 7 is whether the divisor is negative in the signed case; in the unsigned case it is 0. Bits 0-4 is shift value (for shift path or mult path). In 32 bit case, bit 5 is always 0. We use bit 7 as the "negative divisor indicator" so that we can use sign extension to efficiently go to a full-width -1.