summaryrefslogtreecommitdiff
path: root/debian/patches
diff options
context:
space:
mode:
authorGravatar Benjamin Barenblat <bbaren@google.com>2020-07-22 08:15:04 -0400
committerGravatar Benjamin Barenblat <bbaren@google.com>2020-07-23 17:21:45 -0400
commit5462cf0a89d2990c074cdd64033c9ba149f6541d (patch)
treeffe009ce79d84a2cd2cc02d354fc7428b9916235 /debian/patches
parentb6e356b70dc8494c11f980c7b9c0f738f839463c (diff)
Configure SwissTable to target older processors
On Intel and compatibles, SwissTable can benefit from SSE2 and SSSE3 if available. Currently, though, it determines availability through a compile-time check, which pins binary packages to the CPU of the builder. Correct this: - Disable SSE2 and SSSE3 on i386. SSSE3 has never been available on i386 CPUs, and Debian supports some i386 CPUs that lack the extension (e.g., the Athlon XP). - Disable SSSE3 on amd64. SSSE3 did not appear until the mid-'00s, and Debian supports all amd64 CPUs, even going back to the original Opteron. Keep SSE2 enabled, since all amd64 CPUs support SSE2.
Diffstat (limited to 'debian/patches')
-rw-r--r--debian/patches/configure.diff43
1 files changed, 38 insertions, 5 deletions
diff --git a/debian/patches/configure.diff b/debian/patches/configure.diff
index fd29fa59..bb88ae7d 100644
--- a/debian/patches/configure.diff
+++ b/debian/patches/configure.diff
@@ -11,6 +11,13 @@ Configure Abseil for Debian.
(rather than aliases for the std:: versions), and compile everything in an
inline namespace.
+ - Disable Intel SSE2 on i386, since Debian supports some i386 processors
+ without that extension. Keep it enabled on amd64, since all amd64 processors
+ have it.
+
+ - Disable Intel SSSE3 entirely, since no i386 processor supports it and Debian
+ supports amd64 processors without it.
+
--- a/CMake/AbseilHelpers.cmake
+++ b/CMake/AbseilHelpers.cmake
@@ -215,6 +215,9 @@
@@ -25,7 +32,7 @@ Configure Abseil for Debian.
add_library(${_NAME} INTERFACE)
--- a/absl/base/options.h
+++ b/absl/base/options.h
-@@ -100,7 +100,7 @@ ABSL_OPTION_USE_STD_ANY
+@@ -100,7 +100,7 @@
// User code should not inspect this macro. To check in the preprocessor if
// absl::any is a typedef of std::any, use the feature macro ABSL_USES_STD_ANY.
@@ -34,7 +41,7 @@ Configure Abseil for Debian.
// ABSL_OPTION_USE_STD_OPTIONAL
-@@ -127,7 +127,7 @@ ABSL_OPTION_USE_STD_OPTIONAL
+@@ -127,7 +127,7 @@
// absl::optional is a typedef of std::optional, use the feature macro
// ABSL_USES_STD_OPTIONAL.
@@ -43,7 +50,7 @@ Configure Abseil for Debian.
// ABSL_OPTION_USE_STD_STRING_VIEW
-@@ -154,7 +154,7 @@ ABSL_OPTION_USE_STD_STRING_VIEW
+@@ -154,7 +154,7 @@
// absl::string_view is a typedef of std::string_view, use the feature macro
// ABSL_USES_STD_STRING_VIEW.
@@ -52,7 +59,7 @@ Configure Abseil for Debian.
// ABSL_OPTION_USE_STD_VARIANT
//
-@@ -180,7 +180,7 @@ ABSL_OPTION_USE_STD_VARIANT
+@@ -180,7 +180,7 @@
// absl::variant is a typedef of std::variant, use the feature macro
// ABSL_USES_STD_VARIANT.
@@ -61,7 +68,7 @@ Configure Abseil for Debian.
// ABSL_OPTION_USE_INLINE_NAMESPACE
-@@ -206,6 +206,6 @@ ABSL_OPTION_INLINE_NAMESPACE_NAME
+@@ -206,6 +206,6 @@
// allowed.
#define ABSL_OPTION_USE_INLINE_NAMESPACE 1
@@ -69,3 +76,29 @@ Configure Abseil for Debian.
+#define ABSL_OPTION_INLINE_NAMESPACE_NAME debian0
#endif // ABSL_BASE_OPTIONS_H_
+--- a/absl/container/internal/have_sse.h
++++ b/absl/container/internal/have_sse.h
+@@ -17,22 +17,14 @@
+ #define ABSL_CONTAINER_INTERNAL_HAVE_SSE_H_
+
+ #ifndef SWISSTABLE_HAVE_SSE2
+-#if defined(__SSE2__) || \
+- (defined(_MSC_VER) && \
+- (defined(_M_X64) || (defined(_M_IX86) && _M_IX86_FP >= 2)))
++#if defined(__x86_64__) || (defined(_MSC_VER) && defined(_M_X64))
+ #define SWISSTABLE_HAVE_SSE2 1
+ #else
+ #define SWISSTABLE_HAVE_SSE2 0
+ #endif
+ #endif
+
+-#ifndef SWISSTABLE_HAVE_SSSE3
+-#ifdef __SSSE3__
+-#define SWISSTABLE_HAVE_SSSE3 1
+-#else
+ #define SWISSTABLE_HAVE_SSSE3 0
+-#endif
+-#endif
+
+ #if SWISSTABLE_HAVE_SSSE3 && !SWISSTABLE_HAVE_SSE2
+ #error "Bad configuration!"