]> git.ipfire.org Git - thirdparty/zlib-ng.git/commitdiff
Clean up crc32_fold structure and clearly define the size of the fold buffer.
authorNathan Moinvaziri <nathan@nathanm.com>
Sun, 2 Jan 2022 23:27:00 +0000 (15:27 -0800)
committerHans Kristian Rosbach <hk-github@circlestorm.org>
Mon, 17 Jan 2022 08:11:53 +0000 (09:11 +0100)
arch/x86/crc32_fold_pclmulqdq.c
crc32_fold.h
deflate.h
inflate.h

index 1434357a875bdc70968926e1bfaeb5c3f7c3f743..a01cdf775cec4b402a6867ce4831d5f9ede09b2d 100644 (file)
@@ -244,7 +244,7 @@ static inline void crc32_fold_save_partial(__m128i *fold, __m128i foldp) {
 Z_INTERNAL uint32_t crc32_fold_reset_pclmulqdq(crc32_fold *crc) {
     __m128i xmm_crc0 = _mm_cvtsi32_si128(0x9db42487);
     __m128i xmm_zero = _mm_setzero_si128();
-    crc32_fold_save((__m128i *)&crc->fold, xmm_crc0, xmm_zero, xmm_zero, xmm_zero);
+    crc32_fold_save((__m128i *)crc->fold, xmm_crc0, xmm_zero, xmm_zero, xmm_zero);
     return 0;
 }
 
@@ -254,7 +254,7 @@ Z_INTERNAL void crc32_fold_copy_pclmulqdq(crc32_fold *crc, uint8_t *dst, const u
     __m128i xmm_crc0, xmm_crc1, xmm_crc2, xmm_crc3, xmm_crc_part;
     char ALIGNED_(16) partial_buf[16] = { 0 };
 
-    crc32_fold_load((__m128i *)&crc->fold, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3);
+    crc32_fold_load((__m128i *)crc->fold, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3);
 
     if (len < 16) {
         if (len == 0)
@@ -375,8 +375,8 @@ Z_INTERNAL void crc32_fold_copy_pclmulqdq(crc32_fold *crc, uint8_t *dst, const u
 partial:
     partial_fold((size_t)len, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3, &xmm_crc_part);
 done:
-    crc32_fold_save((__m128i *)&crc->fold, xmm_crc0, xmm_crc1, xmm_crc2, xmm_crc3);
-    crc32_fold_save_partial((__m128i *)&crc->fold, xmm_crc_part);
+    crc32_fold_save((__m128i *)crc->fold, xmm_crc0, xmm_crc1, xmm_crc2, xmm_crc3);
+    crc32_fold_save_partial((__m128i *)crc->fold, xmm_crc_part);
 }
 
 static const unsigned ALIGNED_(16) crc_k[] = {
@@ -402,7 +402,7 @@ Z_INTERNAL uint32_t crc32_fold_final_pclmulqdq(crc32_fold *crc) {
     __m128i xmm_crc0, xmm_crc1, xmm_crc2, xmm_crc3;
     __m128i x_tmp0, x_tmp1, x_tmp2, crc_fold;
 
-    crc32_fold_load((__m128i *)&crc->fold, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3);
+    crc32_fold_load((__m128i *)crc->fold, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3);
 
     /*
      * k1
index ec6d13d1573e5547f736588c37d6a45101b1a940..8bd0b6bc2ab8765be57bca458b3ed67ca5f09a2e 100644 (file)
@@ -5,8 +5,11 @@
 #ifndef CRC32_FOLD_H_
 #define CRC32_FOLD_H_
 
+#define CRC32_FOLD_BUFFER_SIZE (16 * 5)
+/* sizeof(__m128i) * (4 folds & 1 partial fold) */
+
 typedef struct crc32_fold_s {
-    uint32_t ALIGNED_(16) fold[4 * 5];
+    uint8_t fold[CRC32_FOLD_BUFFER_SIZE];
     uint32_t value;
 } crc32_fold;
 
index 030db4f098d921fd2852963f1fdd26a5a8fa1d96..7f4eb43f9f47c0708a78bd6fdd0697ae46146ebe 100644 (file)
--- a/deflate.h
+++ b/deflate.h
@@ -211,7 +211,7 @@ struct internal_state {
 
     int nice_match; /* Stop searching when current match exceeds this */
 
-    crc32_fold ALIGNED_(16) crc_fold;
+    struct crc32_fold_s ALIGNED_(16) crc_fold;
 
                 /* used by trees.c: */
     /* Didn't use ct_data typedef below to suppress compiler warning */
index d33ea2a708b5c5aa6a00b56a3dd3572697aa8aad..3f57e7840820486f126e47f9ddc170ae8240309f 100644 (file)
--- a/inflate.h
+++ b/inflate.h
@@ -103,7 +103,7 @@ struct inflate_state {
     uint32_t wnext;             /* window write index */
     unsigned char *window;      /* allocated sliding window, if needed */
 
-    crc32_fold ALIGNED_(16) crc_fold;
+    struct crc32_fold_s ALIGNED_(16) crc_fold;
 
         /* bit accumulator */
     uint32_t hold;              /* input bit accumulator */