diff options
author | Nathan Moinvaziri <nathan@nathanm.com> | 2020-05-22 21:35:26 -0700 |
---|---|---|
committer | Hans Kristian Rosbach <hk-github@circlestorm.org> | 2020-06-08 21:17:18 +0200 |
commit | f8801a00b02c8796c6dddde8a30adc18a1a80477 (patch) | |
tree | fda08e1bd900f39fd8be758f1c33ca1d2a586a6a /functable.c | |
parent | b360d95afdf1d74d64b1b27808375aaf0249ba59 (diff) |
Added Adler32 SSSE3 and AVX2 implementations to functable.
Co-authored-by: Brian Bockelman <bockelman@gmail.com>
Co-authored-by: Mika T. Lindqvist <postmaster@raasu.org>
Diffstat (limited to 'functable.c')
-rw-r--r-- | functable.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/functable.c b/functable.c index e25da33..4ba575c 100644 --- a/functable.c +++ b/functable.c @@ -47,6 +47,12 @@ extern uint32_t adler32_c(uint32_t adler, const unsigned char *buf, size_t len); #if (defined(__ARM_NEON__) || defined(__ARM_NEON)) && defined(ARM_NEON_ADLER32) extern uint32_t adler32_neon(uint32_t adler, const unsigned char *buf, size_t len); #endif +#ifdef X86_SSSE3_ADLER32 +extern uint32_t adler32_ssse3(uint32_t adler, const unsigned char *buf, size_t len); +#endif +#ifdef X86_AVX2_ADLER32 +extern uint32_t adler32_avx2(uint32_t adler, const unsigned char *buf, size_t len); +#endif /* CRC32 */ ZLIB_INTERNAL uint32_t crc32_generic(uint32_t, const unsigned char *, uint64_t); @@ -195,6 +201,14 @@ ZLIB_INTERNAL uint32_t adler32_stub(uint32_t adler, const unsigned char *buf, si # endif functable.adler32 = &adler32_neon; #endif +#ifdef X86_SSSE3_ADLER32 + if (x86_cpu_has_ssse3) + functable.adler32 = &adler32_ssse3; +#endif +#ifdef X86_AVX2_ADLER32 + if (x86_cpu_has_avx2) + functable.adler32 = &adler32_avx2; +#endif return functable.adler32(adler, buf, len); } |