]> git.ipfire.org Git - thirdparty/zlib-ng.git/commitdiff
Fix for PowerPC64 little-endian.
authorMika Lindqvist <postmaster@raasu.org>
Fri, 9 Jun 2023 19:03:18 +0000 (22:03 +0300)
committerHans Kristian Rosbach <hk-github@circlestorm.org>
Sun, 11 Jun 2023 19:54:25 +0000 (21:54 +0200)
arch/power/adler32_vmx.c
arch/power/compare256_power9.c

index ef1649b5890927730ab8f00e08b783bc8b47a6f7..3470c28a12f7b75fb5381bfcb47e6752d82bc894 100644 (file)
@@ -1,6 +1,6 @@
 /* adler32_vmx.c -- compute the Adler-32 checksum of a data stream
  * Copyright (C) 1995-2011 Mark Adler
- * Copyright (C) 2017-2021 Mika T. Lindqvist <postmaster@raasu.org>
+ * Copyright (C) 2017-2023 Mika T. Lindqvist <postmaster@raasu.org>
  * Copyright (C) 2021 Adam Stylinski <kungfujesus06@gmail.com>
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
@@ -8,6 +8,7 @@
 #ifdef PPC_VMX
 #include <altivec.h>
 #include "zbuild.h"
+#include "zendian.h"
 #include "adler32_p.h"
 
 #define vmx_zero()  (vec_splat_u32(0))
@@ -34,7 +35,11 @@ static void vmx_accum32(uint32_t *s, const uint8_t *buf, size_t len) {
     vector unsigned int  adacc, s2acc;
     vector unsigned int pair_vec = vec_ld(0, s);
     adacc = vec_perm(pair_vec, pair_vec, s0_perm);
+#if BYTE_ORDER == LITTLE_ENDIAN
+    s2acc = vec_sro(pair_vec, shift_vec);
+#else
     s2acc = vec_slo(pair_vec, shift_vec);
+#endif
 
     vector unsigned int zero = vmx_zero();
     vector unsigned int s3acc = zero;
index 9b3e6170146daf924e37286631d5650c13a7d83a..be094350f886e16f68afebe209fca70b9631ac5a 100644 (file)
@@ -10,7 +10,7 @@
 
 /* Older versions of GCC misimplemented semantics for these bit counting builtins.
  * https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=3f30f2d1dbb3228b8468b26239fe60c2974ce2ac */
-#if defined(__GNUC__) && (__GNUC__ < 12)
+#if defined(__GNUC__) && (__GNUC__ < 13)
 #  define zng_vec_vctzlsbb(vc, len) __asm__ volatile("vctzlsbb %0, %1\n\t" : "=r" (len) : "v" (vc))
 #  define zng_vec_vclzlsbb(vc, len) __asm__ volatile("vclzlsbb %0, %1\n\t" : "=r" (len) : "v" (vc))
 #else