aboutsummaryrefslogtreecommitdiffstats
path: root/main/snappy/optimize-mips-s390x.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/snappy/optimize-mips-s390x.patch')
-rw-r--r--main/snappy/optimize-mips-s390x.patch80
1 files changed, 0 insertions, 80 deletions
diff --git a/main/snappy/optimize-mips-s390x.patch b/main/snappy/optimize-mips-s390x.patch
deleted file mode 100644
index 07c95096aeb..00000000000
--- a/main/snappy/optimize-mips-s390x.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-diff --git a/snappy-stubs-internal.h b/snappy-stubs-internal.h
-index f834bdb..22407ef 100644
---- a/snappy-stubs-internal.h
-+++ b/snappy-stubs-internal.h
-@@ -123,7 +123,7 @@ static const int64 kint64max = static_cast<int64>(0x7FFFFFFFFFFFFFFFLL);
- // x86, PowerPC, and ARM64 can simply do these loads and stores native.
-
- #if defined(__i386__) || defined(__x86_64__) || defined(__powerpc__) || \
-- defined(__aarch64__)
-+ defined(__aarch64__) || defined(__s390x__)
-
- #define UNALIGNED_LOAD16(_p) (*reinterpret_cast<const uint16 *>(_p))
- #define UNALIGNED_LOAD32(_p) (*reinterpret_cast<const uint32 *>(_p))
-@@ -150,6 +150,8 @@ static const int64 kint64max = static_cast<int64>(0x7FFFFFFFFFFFFFFFLL);
- // (it ignores __attribute__((packed)) on individual variables). However,
- // we can tell it that a _struct_ is unaligned, which has the same effect,
- // so we do that.
-+//
-+// On pre-R6 MIPS just let the compiler use LWL/LWR, SWL/SWR etc.
-
- #elif defined(__arm__) && \
- !defined(__ARM_ARCH_4__) && \
-@@ -163,7 +165,8 @@ static const int64 kint64max = static_cast<int64>(0x7FFFFFFFFFFFFFFFLL);
- !defined(__ARM_ARCH_6K__) && \
- !defined(__ARM_ARCH_6Z__) && \
- !defined(__ARM_ARCH_6ZK__) && \
-- !defined(__ARM_ARCH_6T2__)
-+ !defined(__ARM_ARCH_6T2__) || \
-+ (defined(__mips__) && (!defined(__mips_isa_rev) || __mips_isa_rev < 6))
-
- #if __GNUC__
- #define ATTRIBUTE_PACKED __attribute__((__packed__))
-@@ -184,6 +187,11 @@ struct Unaligned32Struct {
- uint8 dummy; // To make the size non-power-of-two.
- } ATTRIBUTE_PACKED;
-
-+struct Unaligned64Struct {
-+ uint64 value;
-+ uint8 dummy; // To make the size non-power-of-two.
-+} ATTRIBUTE_PACKED;
-+
- } // namespace internal
- } // namespace base
-
-@@ -203,6 +211,7 @@ struct Unaligned32Struct {
- // See if that would be more efficient on platforms supporting it,
- // at least for copies.
-
-+#ifndef __mips__
- inline uint64 UNALIGNED_LOAD64(const void *p) {
- uint64 t;
- memcpy(&t, p, sizeof t);
-@@ -212,6 +221,13 @@ inline uint64 UNALIGNED_LOAD64(const void *p) {
- inline void UNALIGNED_STORE64(void *p, uint64 v) {
- memcpy(p, &v, sizeof v);
- }
-+#else
-+#define UNALIGNED_LOAD64(_p) \
-+ ((reinterpret_cast<const ::snappy::base::internal::Unaligned64Struct *>(_p))->value)
-+#define UNALIGNED_STORE64(_p, _val) \
-+ ((reinterpret_cast< ::snappy::base::internal::Unaligned64Struct *>(_p))->value = \
-+ (_val))
-+#endif
-
- #else
-
-@@ -274,6 +290,13 @@ inline void UNALIGNED_STORE64(void *p, uint64 v) {
- #define bswap_32(x) OSSwapInt32(x)
- #define bswap_64(x) OSSwapInt64(x)
-
-+#elif defined(__GNUC__)
-+/* musl provides suboptimal (generic) bswap_xx implementations in <byteswap.h> */
-+
-+#define bswap_16 __builtin_bswap16
-+#define bswap_32 __builtin_bswap32
-+#define bswap_64 __builtin_bswap64
-+
- #elif defined(HAVE_BYTESWAP_H)
- #include <byteswap.h>
-