chunkset_c.c 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /* chunkset.c -- inline functions to copy small data chunks.
  2. * For conditions of distribution and use, see copyright notice in zlib.h
  3. */
  4. #include "zbuild.h"
  5. typedef uint64_t chunk_t;
  6. #define CHUNK_SIZE 8
  7. #define HAVE_CHUNKMEMSET_4
  8. #define HAVE_CHUNKMEMSET_8
  9. static inline void chunkmemset_4(uint8_t *from, chunk_t *chunk) {
  10. uint8_t *dest = (uint8_t *)chunk;
  11. memcpy(dest, from, sizeof(uint32_t));
  12. memcpy(dest+4, from, sizeof(uint32_t));
  13. }
  14. static inline void chunkmemset_8(uint8_t *from, chunk_t *chunk) {
  15. memcpy(chunk, from, sizeof(uint64_t));
  16. }
  17. static inline void loadchunk(uint8_t const *s, chunk_t *chunk) {
  18. memcpy(chunk, (uint8_t *)s, sizeof(uint64_t));
  19. }
  20. static inline void storechunk(uint8_t *out, chunk_t *chunk) {
  21. memcpy(out, chunk, sizeof(uint64_t));
  22. }
  23. #define CHUNKSIZE chunksize_c
  24. #define CHUNKCOPY chunkcopy_c
  25. #define CHUNKUNROLL chunkunroll_c
  26. #define CHUNKMEMSET chunkmemset_c
  27. #define CHUNKMEMSET_SAFE chunkmemset_safe_c
  28. #include "chunkset_tpl.h"
  29. #define INFLATE_FAST inflate_fast_c
  30. #include "inffast_tpl.h"