summaryrefslogtreecommitdiff
path: root/functable.c
diff options
context:
space:
mode:
authorMatheus Castanho <msc@linux.ibm.com>2020-05-27 10:06:09 -0300
committerHans Kristian Rosbach <hk-github@circlestorm.org>2020-06-08 14:47:17 +0200
commit3fbfd99cf665e23e879c3d9c2d9bd8e0a9cae87a (patch)
tree9316ce6c190ebec904d0f22687e847540ce27d49 /functable.c
parentb81f4ee96dcbdf1db34b00727b6f1829a2ba1edb (diff)
Add optimized slide_hash for POWER processors
This commit introduces a new slide_hash function that uses VSX vector instructions to slide 8 hash elements at a time, instead of just one as the standard code does.
Diffstat (limited to 'functable.c')
-rw-r--r--functable.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/functable.c b/functable.c
index aad8766..e25da33 100644
--- a/functable.c
+++ b/functable.c
@@ -35,6 +35,8 @@ extern Pos quick_insert_string_acle(deflate_state *const s, const Pos str);
void slide_hash_sse2(deflate_state *s);
#elif defined(ARM_NEON_SLIDEHASH)
void slide_hash_neon(deflate_state *s);
+#elif defined(POWER8)
+void slide_hash_power8(deflate_state *s);
#endif
#ifdef X86_AVX2
void slide_hash_avx2(deflate_state *s);
@@ -174,6 +176,10 @@ ZLIB_INTERNAL void slide_hash_stub(deflate_state *s) {
if (x86_cpu_has_avx2)
functable.slide_hash = &slide_hash_avx2;
#endif
+#ifdef POWER8
+ if (power_cpu_has_arch_2_07)
+ functable.slide_hash = &slide_hash_power8;
+#endif
functable.slide_hash(s);
}