]> git.ipfire.org Git - thirdparty/zlib-ng.git/commitdiff
Slide 32 hash entries per loop iteration when using AVX2.
authorMika T. Lindqvist <postmaster@raasu.org>
Sat, 31 Jan 2026 19:44:33 +0000 (21:44 +0200)
committerHans Kristian Rosbach <hk-github@circlestorm.org>
Tue, 3 Feb 2026 18:01:42 +0000 (19:01 +0100)
arch/x86/slide_hash_avx2.c

index 523dda88fee39a89cef5317c18b25a1a378c9e1e..241ea305e3ddb73838841f77d8bee211a51178dd 100644 (file)
 
 static inline void slide_hash_chain(Pos *table, uint32_t entries, const __m256i wsize) {
     table += entries;
-    table -= 16;
+    table -= 32;
 
     do {
-        __m256i value, result;
+        __m256i value1, value2, result1, result2;
 
-        value = _mm256_load_si256((__m256i *)table);
-        result = _mm256_subs_epu16(value, wsize);
-        _mm256_store_si256((__m256i *)table, result);
+        value1 = _mm256_load_si256((__m256i *)table);
+        value2 = _mm256_load_si256((__m256i *)(table+16));
+        result1 = _mm256_subs_epu16(value1, wsize);
+        result2 = _mm256_subs_epu16(value2, wsize);
+        _mm256_store_si256((__m256i *)table, result1);
+        _mm256_store_si256((__m256i *)(table+16), result2);
 
-        table -= 16;
-        entries -= 16;
+        table -= 32;
+        entries -= 32;
     } while (entries > 0);
 }