/src/c-blosc2/internal-complibs/zlib-ng-2.0.7/chunkset.c
Line | Count | Source |
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 | | |
5 | | #include "zbuild.h" |
6 | | #include "zutil.h" |
7 | | |
8 | | // We need sizeof(chunk_t) to be 8, no matter what. |
9 | | #if defined(UNALIGNED64_OK) |
10 | | typedef uint64_t chunk_t; |
11 | | #elif defined(UNALIGNED_OK) |
12 | | typedef struct chunk_t { uint32_t u32[2]; } chunk_t; |
13 | | #else |
14 | | typedef struct chunk_t { uint8_t u8[8]; } chunk_t; |
15 | | #endif |
16 | | |
17 | | #define CHUNK_SIZE 8 |
18 | | |
19 | | #define HAVE_CHUNKMEMSET_4 |
20 | | #define HAVE_CHUNKMEMSET_8 |
21 | | |
22 | 529 | static inline void chunkmemset_4(uint8_t *from, chunk_t *chunk) { |
23 | 529 | uint8_t *dest = (uint8_t *)chunk; |
24 | 529 | memcpy(dest, from, sizeof(uint32_t)); |
25 | 529 | memcpy(dest+4, from, sizeof(uint32_t)); |
26 | 529 | } |
27 | | |
28 | 38 | static inline void chunkmemset_8(uint8_t *from, chunk_t *chunk) { |
29 | 38 | memcpy(chunk, from, sizeof(uint64_t)); |
30 | 38 | } |
31 | | |
32 | 73.5k | static inline void loadchunk(uint8_t const *s, chunk_t *chunk) { |
33 | 73.5k | memcpy(chunk, (uint8_t *)s, sizeof(uint64_t)); |
34 | 73.5k | } |
35 | | |
36 | 74.5k | static inline void storechunk(uint8_t *out, chunk_t *chunk) { |
37 | 74.5k | memcpy(out, chunk, sizeof(uint64_t)); |
38 | 74.5k | } |
39 | | |
40 | | #define CHUNKSIZE chunksize_c |
41 | 397 | #define CHUNKCOPY chunkcopy_c |
42 | 29.5k | #define CHUNKCOPY_SAFE chunkcopy_safe_c |
43 | 397 | #define CHUNKUNROLL chunkunroll_c |
44 | 6.57k | #define CHUNKMEMSET chunkmemset_c |
45 | | #define CHUNKMEMSET_SAFE chunkmemset_safe_c |
46 | | |
47 | | #include "chunkset_tpl.h" |