/* memory chunking */
extern uint32_t chunksize_c(void);
-extern uint8_t* chunkcopy_c(uint8_t *out, uint8_t const *from, unsigned len);
-extern uint8_t* chunkunroll_c(uint8_t *out, unsigned *dist, unsigned *len);
-extern uint8_t* chunkmemset_c(uint8_t *out, unsigned dist, unsigned len);
extern uint8_t* chunkmemset_safe_c(uint8_t *out, unsigned dist, unsigned len, unsigned left);
#ifdef X86_SSE2_CHUNKSET
extern uint32_t chunksize_sse2(void);
-extern uint8_t* chunkcopy_sse2(uint8_t *out, uint8_t const *from, unsigned len);
-extern uint8_t* chunkunroll_sse2(uint8_t *out, unsigned *dist, unsigned *len);
-extern uint8_t* chunkmemset_sse2(uint8_t *out, unsigned dist, unsigned len);
extern uint8_t* chunkmemset_safe_sse2(uint8_t *out, unsigned dist, unsigned len, unsigned left);
#endif
#ifdef X86_SSE41
-extern uint8_t* chunkmemset_sse41(uint8_t *out, unsigned dist, unsigned len);
extern uint8_t* chunkmemset_safe_sse41(uint8_t *out, unsigned dist, unsigned len, unsigned left);
#endif
#ifdef X86_AVX_CHUNKSET
extern uint32_t chunksize_avx(void);
-extern uint8_t* chunkcopy_avx(uint8_t *out, uint8_t const *from, unsigned len);
-extern uint8_t* chunkunroll_avx(uint8_t *out, unsigned *dist, unsigned *len);
-extern uint8_t* chunkmemset_avx(uint8_t *out, unsigned dist, unsigned len);
extern uint8_t* chunkmemset_safe_avx(uint8_t *out, unsigned dist, unsigned len, unsigned left);
#endif
#ifdef ARM_NEON_CHUNKSET
extern uint32_t chunksize_neon(void);
-extern uint8_t* chunkcopy_neon(uint8_t *out, uint8_t const *from, unsigned len);
-extern uint8_t* chunkunroll_neon(uint8_t *out, unsigned *dist, unsigned *len);
-extern uint8_t* chunkmemset_neon(uint8_t *out, unsigned dist, unsigned len);
extern uint8_t* chunkmemset_safe_neon(uint8_t *out, unsigned dist, unsigned len, unsigned left);
#endif
#ifdef POWER8_VSX_CHUNKSET
extern uint32_t chunksize_power8(void);
-extern uint8_t* chunkcopy_power8(uint8_t *out, uint8_t const *from, unsigned len);
-extern uint8_t* chunkunroll_power8(uint8_t *out, unsigned *dist, unsigned *len);
-extern uint8_t* chunkmemset_power8(uint8_t *out, unsigned dist, unsigned len);
extern uint8_t* chunkmemset_safe_power8(uint8_t *out, unsigned dist, unsigned len, unsigned left);
#endif
ft.chunksize = &chunksize_power8;
#endif
- // chunkcopy_stub:
- ft.chunkcopy = &chunkcopy_c;
-#ifdef X86_SSE2_CHUNKSET
-# if !defined(__x86_64__) && !defined(_M_X64) && !defined(X86_NOCHECK_SSE2)
- if (x86_cpu_has_sse2)
-# endif
- ft.chunkcopy = &chunkcopy_sse2;
-#endif
-#ifdef X86_AVX_CHUNKSET
- if (x86_cpu_has_avx2)
- ft.chunkcopy = &chunkcopy_avx;
-#endif
-#ifdef ARM_NEON_CHUNKSET
- if (arm_cpu_has_neon)
- ft.chunkcopy = &chunkcopy_neon;
-#endif
-#ifdef POWER8_VSX_CHUNKSET
- if (power_cpu_has_arch_2_07)
- ft.chunkcopy = &chunkcopy_power8;
-#endif
-
- // chunkunroll_stub:
- ft.chunkunroll = &chunkunroll_c;
-#ifdef X86_SSE2_CHUNKSET
-# if !defined(__x86_64__) && !defined(_M_X64) && !defined(X86_NOCHECK_SSE2)
- if (x86_cpu_has_sse2)
-# endif
- ft.chunkunroll = &chunkunroll_sse2;
-#endif
-#ifdef X86_AVX_CHUNKSET
- if (x86_cpu_has_avx2)
- ft.chunkunroll = &chunkunroll_avx;
-#endif
-#ifdef ARM_NEON_CHUNKSET
- if (arm_cpu_has_neon)
- ft.chunkunroll = &chunkunroll_neon;
-#endif
-#ifdef POWER8_VSX_CHUNKSET
- if (power_cpu_has_arch_2_07)
- ft.chunkunroll = &chunkunroll_power8;
-#endif
-
- // chunkmemset_stub:
- ft.chunkmemset = &chunkmemset_c;
+ // chunkmemset_safe_stub:
+ ft.chunkmemset_safe = &chunkmemset_safe_c;
#ifdef X86_SSE2_CHUNKSET
# if !defined(__x86_64__) && !defined(_M_X64) && !defined(X86_NOCHECK_SSE2)
if (x86_cpu_has_sse2)
# endif
- ft.chunkmemset = &chunkmemset_sse2;
+ ft.chunkmemset_safe = &chunkmemset_safe_sse2;
#endif
#if defined(X86_SSE41) && defined(X86_SSE2)
if (x86_cpu_has_sse41)
- ft.chunkmemset = &chunkmemset_sse41;
+ ft.chunkmemset_safe = &chunkmemset_safe_sse41;
#endif
#ifdef X86_AVX_CHUNKSET
if (x86_cpu_has_avx2)
- ft.chunkmemset = &chunkmemset_avx;
+ ft.chunkmemset_safe = &chunkmemset_safe_avx;
#endif
#ifdef ARM_NEON_CHUNKSET
if (arm_cpu_has_neon)
- ft.chunkmemset = &chunkmemset_neon;
+ ft.chunkmemset_safe = &chunkmemset_safe_neon;
#endif
#ifdef POWER8_VSX_CHUNKSET
if (power_cpu_has_arch_2_07)
- ft.chunkmemset = &chunkmemset_power8;
+ ft.chunkmemset_safe = &chunkmemset_safe_power8;
#endif
- // chunkmemset_safe_stub:
- ft.chunkmemset_safe = &chunkmemset_safe_c;
+ // inflate_fast_stub:
+ ft.inflate_fast = &inflate_fast_c;
#ifdef X86_SSE2_CHUNKSET
# if !defined(__x86_64__) && !defined(_M_X64) && !defined(X86_NOCHECK_SSE2)
if (x86_cpu_has_sse2)
# endif
- ft.chunkmemset_safe = &chunkmemset_safe_sse2;
+ ft.inflate_fast = &inflate_fast_sse2;
#endif
#if defined(X86_SSE41) && defined(X86_SSE2)
if (x86_cpu_has_sse41)
- ft.chunkmemset_safe = &chunkmemset_safe_sse41;
+ ft.inflate_fast = &inflate_fast_sse41;
#endif
#ifdef X86_AVX_CHUNKSET
if (x86_cpu_has_avx2)
- ft.chunkmemset_safe = &chunkmemset_safe_avx;
+ ft.inflate_fast = &inflate_fast_avx;
#endif
#ifdef ARM_NEON_CHUNKSET
if (arm_cpu_has_neon)
- ft.chunkmemset_safe = &chunkmemset_safe_neon;
+ ft.inflate_fast = &inflate_fast_neon;
#endif
#ifdef POWER8_VSX_CHUNKSET
if (power_cpu_has_arch_2_07)
- ft.chunkmemset_safe = &chunkmemset_safe_power8;
+ ft.inflate_fast = &inflate_fast_power8;
#endif
// crc32_stub:
functable.crc32_fold_final = ft.crc32_fold_final;
functable.compare256 = ft.compare256;
functable.chunksize = ft.chunksize;
- functable.chunkcopy = ft.chunkcopy;
- functable.chunkunroll = ft.chunkunroll;
- functable.chunkmemset = ft.chunkmemset;
functable.chunkmemset_safe = ft.chunkmemset_safe;
+ functable.inflate_fast = ft.inflate_fast;
functable.insert_string = ft.insert_string;
functable.longest_match = ft.longest_match;
functable.longest_match_slow = ft.longest_match_slow;
return functable.chunksize();
}
-static uint8_t* chunkcopy_stub(uint8_t* out, uint8_t const* from, unsigned len) {
- init_functable();
- return functable.chunkcopy(out, from, len);
-}
-
-static uint8_t* chunkunroll_stub(uint8_t* out, unsigned* dist, unsigned* len) {
- init_functable();
- return functable.chunkunroll(out, dist, len);
-}
-
-static uint8_t* chunkmemset_stub(uint8_t* out, unsigned dist, unsigned len) {
+static uint8_t* chunkmemset_safe_stub(uint8_t* out, unsigned dist, unsigned len, unsigned left) {
init_functable();
- return functable.chunkmemset(out, dist, len);
+ return functable.chunkmemset_safe(out, dist, len, left);
}
-static uint8_t* chunkmemset_safe_stub(uint8_t* out, unsigned dist, unsigned len, unsigned left) {
+static void inflate_fast_stub(void *strm, uint32_t start) {
init_functable();
- return functable.chunkmemset_safe(out, dist, len, left);
+ functable.inflate_fast(strm, start);
}
static uint32_t crc32_stub(uint32_t crc, const uint8_t* buf, size_t len) {
return functable.compare256(src0, src1);
}
-Z_INTERNAL void inflate_fast_stub(void *strm, uint32_t start) {
- functable.inflate_fast = &inflate_fast_c;
-
-#ifdef X86_SSE2_CHUNKSET
-# if !defined(__x86_64__) && !defined(_M_X64) && !defined(X86_NOCHECK_SSE2)
- if (x86_cpu_has_sse2)
-# endif
- functable.inflate_fast = &inflate_fast_sse2;
-#endif
-#if defined(X86_SSE41) && defined(X86_SSE2)
- if (x86_cpu_has_sse41)
- functable.inflate_fast = &inflate_fast_sse41;
-#endif
-#ifdef X86_AVX_CHUNKSET
- if (x86_cpu_has_avx2)
- functable.inflate_fast = &inflate_fast_avx;
-#endif
-#ifdef ARM_NEON_CHUNKSET
- if (arm_cpu_has_neon)
- functable.inflate_fast = &inflate_fast_neon;
-#endif
-#ifdef POWER8_VSX_CHUNKSET
- if (power_cpu_has_arch_2_07)
- functable.inflate_fast = &inflate_fast_power8;
-#endif
-
- functable.inflate_fast(strm, start);
-}
-
/* functable init */
Z_INTERNAL Z_TLS struct functable_s functable = {
adler32_stub,
crc32_fold_final_stub,
compare256_stub,
chunksize_stub,
- chunkcopy_stub,
- chunkunroll_stub,
- chunkmemset_stub,
chunkmemset_safe_stub,
inflate_fast_stub,
insert_string_stub,