All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [git commit] package/xxhash: bump to version 0.7.2
@ 2019-12-08  7:35 Peter Korsgaard
  0 siblings, 0 replies; only message in thread
From: Peter Korsgaard @ 2019-12-08  7:35 UTC (permalink / raw)
  To: buildroot

commit: https://git.buildroot.net/buildroot/commit/?id=38ceccb5796cd34b430eb978a6cec56427aad0a2
branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master

- Remove patch (already in version)
- Update hash of LICENSE file and remove xxhsum.c from
  XXHASH_LICENSE_FILES as LICENSE contains both licenses
  (BSD-2-Clause and GPL-2.0+) since
  https://github.com/Cyan4973/xxHash/commit/330444389b5091db1fae1cc58c890b9f99b8b35d
- Update XXHASH_LICENSE to specify that BSD-2-Clause is for the library
  and GPL-2.0+ for xxhsum CLI

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
---
 ...Fix-VSX-POWER8-support-and-disable-POWER7.patch | 233 ---------------------
 package/xxhash/xxhash.hash                         |   5 +-
 package/xxhash/xxhash.mk                           |   6 +-
 3 files changed, 5 insertions(+), 239 deletions(-)

diff --git a/package/xxhash/0001-PPC64-Fix-VSX-POWER8-support-and-disable-POWER7.patch b/package/xxhash/0001-PPC64-Fix-VSX-POWER8-support-and-disable-POWER7.patch
deleted file mode 100644
index 11cb3414ed..0000000000
--- a/package/xxhash/0001-PPC64-Fix-VSX-POWER8-support-and-disable-POWER7.patch
+++ /dev/null
@@ -1,233 +0,0 @@
-From 512b8836658450e73ab9bd876f9500032e25b634 Mon Sep 17 00:00:00 2001
-From: "easyaspi314 (Devin)" <easyaspi314@users.noreply.github.com>
-Date: Tue, 20 Aug 2019 21:06:11 -0400
-Subject: [PATCH] [PPC64] Fix VSX, POWER8 support, and disable POWER7.
-
-The VSX codepath is now working on POWER8 and is fully enabled.
-
-The little endian code has been verified on POWER8E, although
-a big endian machine was not available.
-
-This uses vpermxor from POWER8 to shuffle on big endian.
-
-There are a few other fixes as well to unify endian memes.
-[Retrieved from:
-https://github.com/Cyan4973/xxHash/commit/512b8836658450e73ab9bd876f9500032e25b634]
-Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
----
- xxh3.h   | 115 ++++++++++++++++++++++++++++++++++++++++++++-----------
- xxhsum.c |   6 ++-
- 2 files changed, 96 insertions(+), 25 deletions(-)
-
-diff --git a/xxh3.h b/xxh3.h
-index 77dc955..d5fede8 100644
---- a/xxh3.h
-+++ b/xxh3.h
-@@ -91,7 +91,7 @@
-   && (defined(__ARM_NEON__) || defined(__ARM_NEON)) \
-   && defined(__LITTLE_ENDIAN__) /* ARM big endian is a thing */
- #    define XXH_VECTOR XXH_NEON
--#  elif defined(__PPC64__) && defined(__VSX__) && defined(__GNUC__)
-+#  elif defined(__PPC64__) && defined(__POWER8_VECTOR__) && defined(__GNUC__)
- #    define XXH_VECTOR XXH_VSX
- #  else
- #    define XXH_VECTOR XXH_SCALAR
-@@ -122,24 +122,85 @@
- #    define XXH_mult32to64(x, y) ((U64)((x) & 0xFFFFFFFF) * (U64)((y) & 0xFFFFFFFF))
- #endif
- 
--/* VSX stuff */
-+/* VSX stuff. It's a lot because VSX support is mediocre across compilers and
-+ * there is a lot of mischief with endianness. */
- #if XXH_VECTOR == XXH_VSX
- #  include <altivec.h>
- #  undef vector
- typedef __vector unsigned long long U64x2;
-+typedef __vector unsigned char U8x16;
- typedef __vector unsigned U32x4;
-+
-+#ifndef XXH_VSX_BE
-+#  ifdef __BIG_ENDIAN__
-+#    define XXH_VSX_BE 1
-+#  elif defined(__VEC_ELEMENT_REG_ORDER__) && __VEC_ELEMENT_REG_ORDER__ == __ORDER_BIG_ENDIAN__
-+#    warning "-maltivec=be is not recommended. Please use native endianness."
-+#    define XXH_VSX_BE 1
-+#  else
-+#    define XXH_VSX_BE 0
-+#  endif
-+#endif
-+
-+/* We need some helpers for big endian mode. */
-+#if XXH_VSX_BE
-+/* A wrapper for POWER9's vec_revb. */
-+#  ifdef __POWER9_VECTOR__
-+#    define XXH_vec_revb vec_revb
-+#  else
-+XXH_FORCE_INLINE U64x2 XXH_vec_revb(U64x2 val)
-+{
-+    U8x16 const vByteSwap = { 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00,
-+                              0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08 };
-+    return vec_perm(val, val, vByteSwap);
-+}
-+#  endif
-+
-+/* Power8 Crypto gives us vpermxor which is very handy for
-+ * PPC64EB.
-+ *
-+ * U8x16 vpermxor(U8x16 a, U8x16 b, U8x16 mask)
-+ * {
-+ *     U8x16 ret;
-+ *     for (int i = 0; i < 16; i++) {
-+ *         ret[i] = a[mask[i] & 0xF] ^ b[mask[i] >> 4];
-+ *     }
-+ *     return ret;
-+ * }
-+ *
-+ * Because both of the main loops load the key, swap, and xor it with data,
-+ * we can combine the key swap into this instruction.
-+ */
-+#  ifdef vec_permxor
-+#    define XXH_vec_permxor vec_permxor
-+#  else
-+#    define XXH_vec_permxor __builtin_crypto_vpermxor
-+#  endif
-+#endif
-+/*
-+ * Because we reinterpret the multiply, there are endian memes: vec_mulo actually becomes
-+ * vec_mule.
-+ *
-+ * Additionally, the intrinsic wasn't added until GCC 8, despite existing for a while.
-+ * Clang has an easy way to control this, we can just use the builtin which doesn't swap.
-+ * GCC needs inline assembly. */
-+#if __has_builtin(__builtin_altivec_vmuleuw)
-+#  define XXH_vec_mulo __builtin_altivec_vmulouw
-+#  define XXH_vec_mule __builtin_altivec_vmuleuw
-+#else
- /* Adapted from https://github.com/google/highwayhash/blob/master/highwayhash/hh_vsx.h. */
--XXH_FORCE_INLINE U64x2 XXH_vsxMultOdd(U32x4 a, U32x4 b) {
-+XXH_FORCE_INLINE U64x2 XXH_vec_mulo(U32x4 a, U32x4 b) {
-     U64x2 result;
-     __asm__("vmulouw %0, %1, %2" : "=v" (result) : "v" (a), "v" (b));
-     return result;
- }
--XXH_FORCE_INLINE U64x2 XXH_vsxMultEven(U32x4 a, U32x4 b) {
-+XXH_FORCE_INLINE U64x2 XXH_vec_mule(U32x4 a, U32x4 b) {
-     U64x2 result;
-     __asm__("vmuleuw %0, %1, %2" : "=v" (result) : "v" (a), "v" (b));
-     return result;
- }
- #endif
-+#endif
- 
- 
- /* ==========================================
-@@ -558,38 +619,41 @@ XXH3_accumulate_512(      void* XXH_RESTRICT acc,
-         }
-     }
- 
--#elif (XXH_VECTOR == XXH_VSX) && 0   /* <=========================== DISABLED : MUST BE VALIDATED */
--    /* note : vsx code path currently not tested in CI (limitation of cross-compiler and/or emulator)
--     *        for vsx code path to be shipped and supported, it is critical to create a CI test for it */
-+#elif (XXH_VECTOR == XXH_VSX)
-           U64x2* const xacc =        (U64x2*) acc;    /* presumed aligned */
-     U64x2 const* const xdata = (U64x2 const*) data;   /* no alignment restriction */
-     U64x2 const* const xkey  = (U64x2 const*) key;    /* no alignment restriction */
-     U64x2 const v32 = { 32,  32 };
--
-+#if XXH_VSX_BE
-+    U8x16 const vXorSwap  = { 0x07, 0x16, 0x25, 0x34, 0x43, 0x52, 0x61, 0x70,
-+                              0x8F, 0x9E, 0xAD, 0xBC, 0xCB, 0xDA, 0xE9, 0xF8 };
-+#endif
-     size_t i;
-     for (i = 0; i < STRIPE_LEN / sizeof(U64x2); i++) {
-         /* data_vec = xdata[i]; */
-         /* key_vec = xkey[i]; */
--#ifdef __BIG_ENDIAN__
-+#if XXH_VSX_BE
-         /* byteswap */
--        U64x2 const data_vec = vec_revb(vec_vsx_ld(0, xdata + i));  /* note : vec_revb is power9+ */
--        U64x2 const key_vec = vec_revb(vec_vsx_ld(0, xkey + i));    /* note : vec_revb is power9+ */
-+        U64x2 const data_vec = XXH_vec_revb(vec_vsx_ld(0, xdata + i));
-+        U64x2 const key_raw = vec_vsx_ld(0, xkey + i);
-+        /* See comment above. data_key = data_vec ^ swap(xkey[i]); */
-+        U64x2 const data_key = (U64x2)XXH_vec_permxor((U8x16)data_vec, (U8x16)key_raw, vXorSwap);
- #else
-         U64x2 const data_vec = vec_vsx_ld(0, xdata + i);
-         U64x2 const key_vec = vec_vsx_ld(0, xkey + i);
--#endif
-         U64x2 const data_key = data_vec ^ key_vec;
-+#endif
-         /* shuffled = (data_key << 32) | (data_key >> 32); */
-         U32x4 const shuffled = (U32x4)vec_rl(data_key, v32);
-         /* product = ((U64x2)data_key & 0xFFFFFFFF) * ((U64x2)shuffled & 0xFFFFFFFF); */
--        U64x2 const product = XXH_vsxMultOdd((U32x4)data_key, shuffled);
--
-+        U64x2 const product = XXH_vec_mulo((U32x4)data_key, shuffled);
-         xacc[i] += product;
- 
-         if (accWidth == XXH3_acc_64bits) {
-             xacc[i] += data_vec;
-         } else {  /* XXH3_acc_128bits */
--            U64x2 const data_swapped = vec_permi(data_vec, data_vec, 2);   /* <===== untested !!! */
-+            /* swap high and low halves */
-+            U64x2 const data_swapped = vec_xxpermdi(data_vec, data_vec, 2);
-             xacc[i] += data_swapped;
-         }
-     }
-@@ -716,26 +780,31 @@ XXH3_scrambleAcc(void* XXH_RESTRICT acc, const void* XXH_RESTRICT key)
-     U64x2 const v47 = { 47, 47 };
-     U32x4 const prime = { PRIME32_1, PRIME32_1, PRIME32_1, PRIME32_1 };
-     size_t i;
--
-+#if XXH_VSX_BE
-+    /* endian swap */
-+    U8x16 const vXorSwap  = { 0x07, 0x16, 0x25, 0x34, 0x43, 0x52, 0x61, 0x70,
-+                              0x8F, 0x9E, 0xAD, 0xBC, 0xCB, 0xDA, 0xE9, 0xF8 };
-+#endif
-     for (i = 0; i < STRIPE_LEN / sizeof(U64x2); i++) {
-         U64x2 const acc_vec  = xacc[i];
-         U64x2 const data_vec = acc_vec ^ (acc_vec >> v47);
-         /* key_vec = xkey[i]; */
--#ifdef __BIG_ENDIAN__
--        /* swap 32-bit words */
--        U64x2 const key_vec  = vec_rl(vec_vsx_ld(0, xkey + i), v32);
-+#if XXH_VSX_BE
-+        /* swap bytes words */
-+        U64x2 const key_raw  = vec_vsx_ld(0, xkey + i);
-+	U64x2 const data_key = (U64x2)XXH_vec_permxor((U8x16)data_vec, (U8x16)key_raw, vXorSwap);
- #else
-         U64x2 const key_vec  = vec_vsx_ld(0, xkey + i);
--#endif
-         U64x2 const data_key = data_vec ^ key_vec;
-+#endif
- 
-         /* data_key *= PRIME32_1 */
- 
-         /* prod_lo = ((U64x2)data_key & 0xFFFFFFFF) * ((U64x2)prime & 0xFFFFFFFF);  */
--        U64x2 const prod_lo  = XXH_vsxMultOdd((U32x4)data_key, prime);
-+        U64x2 const prod_even  = XXH_vec_mule((U32x4)data_key, prime);
-         /* prod_hi = ((U64x2)data_key >> 32) * ((U64x2)prime >> 32);  */
--        U64x2 const prod_hi  = XXH_vsxMultEven((U32x4)data_key, prime);
--        xacc[i] = prod_lo + (prod_hi << v32);
-+        U64x2 const prod_odd  = XXH_vec_mulo((U32x4)data_key, prime);
-+        xacc[i] = prod_odd + (prod_even << v32);
-     }
- 
- #else   /* scalar variant of Scrambler - universal */
-diff --git a/xxhsum.c b/xxhsum.c
-index 19685aa..c979966 100644
---- a/xxhsum.c
-+++ b/xxhsum.c
-@@ -224,8 +224,10 @@ static unsigned BMK_isLittleEndian(void)
- #    define ARCH "arm"
- #  endif
- #elif defined(__powerpc64__) || defined(__ppc64__) || defined(__PPC64__)
--#  if defined(__GNUC__) && defined(__VSX__)
--#    define ARCH "ppc64 + VSX"
-+#  if defined(__GNUC__) && defined(__POWER9_VECTOR__)
-+#    define ARCH "ppc64 + POWER9 vector"
-+#  elif defined(__GNUC__) && defined(__POWER8_VECTOR__)
-+#    define ARCH "ppc64 + POWER8 vector"
- #  else
- #    define ARCH "ppc64"
- #  endif
diff --git a/package/xxhash/xxhash.hash b/package/xxhash/xxhash.hash
index c36156b11e..097694364b 100644
--- a/package/xxhash/xxhash.hash
+++ b/package/xxhash/xxhash.hash
@@ -1,4 +1,3 @@
 # locally computed
-sha256  afa29766cfc0448ff4a1fd9f2c47e02c48d50be5b79749925d15d545008c3f81  xxhash-0.7.1.tar.gz
-sha256  86ec6953794503942b70fcd4f35b565d44f63f703b7037ce44dad965c4aaae91  LICENSE
-sha256  fd824b4aeb8dfe48a89d43bb844e4c1a9b3140e884e0fe47fb7534505d113afe  xxhsum.c
+sha256  7e93d28e81c3e95ff07674a400001d0cdf23b7842d49b211e5582d00d8e3ac3e  xxhash-0.7.2.tar.gz
+sha256  94df5da58df6c83bcc2fc0c84aaad71a0b0fe94625060d6cac000121dda37730  LICENSE
diff --git a/package/xxhash/xxhash.mk b/package/xxhash/xxhash.mk
index 289fb4f506..bd51c9bd1b 100644
--- a/package/xxhash/xxhash.mk
+++ b/package/xxhash/xxhash.mk
@@ -4,10 +4,10 @@
 #
 ################################################################################
 
-XXHASH_VERSION = 0.7.1
+XXHASH_VERSION = 0.7.2
 XXHASH_SITE = $(call github,Cyan4973,xxHash,v$(XXHASH_VERSION))
-XXHASH_LICENSE = BSD-2-Clause, GPL-2.0+
-XXHASH_LICENSE_FILES = LICENSE xxhsum.c
+XXHASH_LICENSE = BSD-2-Clause (library), GPL-2.0+ (xxhsum)
+XXHASH_LICENSE_FILES = LICENSE
 
 define XXHASH_BUILD_CMDS
 	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) xxhsum

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2019-12-08  7:35 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-08  7:35 [Buildroot] [git commit] package/xxhash: bump to version 0.7.2 Peter Korsgaard

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.