Coverage Report

Created: 2025-09-04 06:50

/src/zlib-ng/zmemory.h
Line
Count
Source (jump to first uncovered line)
1
/* zmemory.h -- Private inline functions used internally in zlib-ng
2
 * For conditions of distribution and use, see copyright notice in zlib.h
3
 */
4
5
#ifndef _ZMEMORY_H
6
#define _ZMEMORY_H
7
8
#if defined(__GNUC__) && (__GNUC__ >= 4)
9
#  define HAVE_MAY_ALIAS
10
#endif
11
12
0
static inline uint16_t zng_memread_2(const void *ptr) {
13
0
#if defined(HAVE_MAY_ALIAS)
14
0
    typedef struct { uint16_t val; } __attribute__ ((__packed__, __may_alias__)) unaligned_uint16_t;
15
0
    return ((const unaligned_uint16_t *)ptr)->val;
16
#else
17
    uint16_t val;
18
    memcpy(&val, ptr, sizeof(val));
19
    return val;
20
#endif
21
0
}
Unexecuted instantiation: adler32.c:zng_memread_2
Unexecuted instantiation: crc32.c:zng_memread_2
Unexecuted instantiation: functable.c:zng_memread_2
Unexecuted instantiation: chunkset_sse2.c:zng_memread_2
Unexecuted instantiation: chorba_sse2.c:zng_memread_2
Unexecuted instantiation: compare256_sse2.c:zng_memread_2
Unexecuted instantiation: slide_hash_sse2.c:zng_memread_2
Unexecuted instantiation: chunkset_ssse3.c:zng_memread_2
Unexecuted instantiation: chorba_sse41.c:zng_memread_2
Unexecuted instantiation: slide_hash_avx2.c:zng_memread_2
Unexecuted instantiation: chunkset_avx2.c:zng_memread_2
Unexecuted instantiation: compare256_avx2.c:zng_memread_2
Unexecuted instantiation: adler32_avx512.c:zng_memread_2
Unexecuted instantiation: chunkset_avx512.c:zng_memread_2
Unexecuted instantiation: compare256_avx512.c:zng_memread_2
Unexecuted instantiation: adler32_avx512_vnni.c:zng_memread_2
Unexecuted instantiation: adler32_c.c:zng_memread_2
Unexecuted instantiation: adler32_fold_c.c:zng_memread_2
Unexecuted instantiation: crc32_fold_c.c:zng_memread_2
Unexecuted instantiation: crc32_chorba_c.c:zng_memread_2
22
23
0
static inline uint32_t zng_memread_4(const void *ptr) {
24
0
#if defined(HAVE_MAY_ALIAS)
25
0
    typedef struct { uint32_t val; } __attribute__ ((__packed__, __may_alias__)) unaligned_uint32_t;
26
0
    return ((const unaligned_uint32_t *)ptr)->val;
27
#else
28
    uint32_t val;
29
    memcpy(&val, ptr, sizeof(val));
30
    return val;
31
#endif
32
0
}
Unexecuted instantiation: adler32.c:zng_memread_4
Unexecuted instantiation: crc32.c:zng_memread_4
Unexecuted instantiation: functable.c:zng_memread_4
Unexecuted instantiation: chunkset_sse2.c:zng_memread_4
Unexecuted instantiation: chorba_sse2.c:zng_memread_4
Unexecuted instantiation: compare256_sse2.c:zng_memread_4
Unexecuted instantiation: slide_hash_sse2.c:zng_memread_4
Unexecuted instantiation: chunkset_ssse3.c:zng_memread_4
Unexecuted instantiation: chorba_sse41.c:zng_memread_4
Unexecuted instantiation: slide_hash_avx2.c:zng_memread_4
Unexecuted instantiation: chunkset_avx2.c:zng_memread_4
Unexecuted instantiation: compare256_avx2.c:zng_memread_4
Unexecuted instantiation: adler32_avx512.c:zng_memread_4
Unexecuted instantiation: chunkset_avx512.c:zng_memread_4
Unexecuted instantiation: compare256_avx512.c:zng_memread_4
Unexecuted instantiation: adler32_avx512_vnni.c:zng_memread_4
Unexecuted instantiation: adler32_c.c:zng_memread_4
Unexecuted instantiation: adler32_fold_c.c:zng_memread_4
Unexecuted instantiation: crc32_fold_c.c:zng_memread_4
Unexecuted instantiation: crc32_chorba_c.c:zng_memread_4
33
34
0
static inline uint64_t zng_memread_8(const void *ptr) {
35
0
#if defined(HAVE_MAY_ALIAS)
36
0
    typedef struct { uint64_t val; } __attribute__ ((__packed__, __may_alias__)) unaligned_uint64_t;
37
0
    return ((const unaligned_uint64_t *)ptr)->val;
38
#else
39
    uint64_t val;
40
    memcpy(&val, ptr, sizeof(val));
41
    return val;
42
#endif
43
0
}
Unexecuted instantiation: adler32.c:zng_memread_8
Unexecuted instantiation: crc32.c:zng_memread_8
Unexecuted instantiation: functable.c:zng_memread_8
Unexecuted instantiation: chunkset_sse2.c:zng_memread_8
Unexecuted instantiation: chorba_sse2.c:zng_memread_8
Unexecuted instantiation: compare256_sse2.c:zng_memread_8
Unexecuted instantiation: slide_hash_sse2.c:zng_memread_8
Unexecuted instantiation: chunkset_ssse3.c:zng_memread_8
Unexecuted instantiation: chorba_sse41.c:zng_memread_8
Unexecuted instantiation: slide_hash_avx2.c:zng_memread_8
Unexecuted instantiation: chunkset_avx2.c:zng_memread_8
Unexecuted instantiation: compare256_avx2.c:zng_memread_8
Unexecuted instantiation: adler32_avx512.c:zng_memread_8
Unexecuted instantiation: chunkset_avx512.c:zng_memread_8
Unexecuted instantiation: compare256_avx512.c:zng_memread_8
Unexecuted instantiation: adler32_avx512_vnni.c:zng_memread_8
Unexecuted instantiation: adler32_c.c:zng_memread_8
Unexecuted instantiation: adler32_fold_c.c:zng_memread_8
Unexecuted instantiation: crc32_fold_c.c:zng_memread_8
Unexecuted instantiation: crc32_chorba_c.c:zng_memread_8
44
45
0
static inline void zng_memwrite_2(void *ptr, uint16_t val) {
46
0
#if defined(HAVE_MAY_ALIAS)
47
0
    typedef struct { uint16_t val; } __attribute__ ((__packed__, __may_alias__)) unaligned_uint16_t;
48
0
    ((unaligned_uint16_t *)ptr)->val = val;
49
0
#else
50
0
    memcpy(ptr, &val, sizeof(val));
51
0
#endif
52
0
}
Unexecuted instantiation: adler32.c:zng_memwrite_2
Unexecuted instantiation: crc32.c:zng_memwrite_2
Unexecuted instantiation: functable.c:zng_memwrite_2
Unexecuted instantiation: chunkset_sse2.c:zng_memwrite_2
Unexecuted instantiation: chorba_sse2.c:zng_memwrite_2
Unexecuted instantiation: compare256_sse2.c:zng_memwrite_2
Unexecuted instantiation: slide_hash_sse2.c:zng_memwrite_2
Unexecuted instantiation: chunkset_ssse3.c:zng_memwrite_2
Unexecuted instantiation: chorba_sse41.c:zng_memwrite_2
Unexecuted instantiation: slide_hash_avx2.c:zng_memwrite_2
Unexecuted instantiation: chunkset_avx2.c:zng_memwrite_2
Unexecuted instantiation: compare256_avx2.c:zng_memwrite_2
Unexecuted instantiation: adler32_avx512.c:zng_memwrite_2
Unexecuted instantiation: chunkset_avx512.c:zng_memwrite_2
Unexecuted instantiation: compare256_avx512.c:zng_memwrite_2
Unexecuted instantiation: adler32_avx512_vnni.c:zng_memwrite_2
Unexecuted instantiation: adler32_c.c:zng_memwrite_2
Unexecuted instantiation: adler32_fold_c.c:zng_memwrite_2
Unexecuted instantiation: crc32_fold_c.c:zng_memwrite_2
Unexecuted instantiation: crc32_chorba_c.c:zng_memwrite_2
53
54
0
static inline void zng_memwrite_4(void *ptr, uint32_t val) {
55
0
#if defined(HAVE_MAY_ALIAS)
56
0
    typedef struct { uint32_t val; } __attribute__ ((__packed__, __may_alias__)) unaligned_uint32_t;
57
0
    ((unaligned_uint32_t *)ptr)->val = val;
58
0
#else
59
0
    memcpy(ptr, &val, sizeof(val));
60
0
#endif
61
0
}
Unexecuted instantiation: adler32.c:zng_memwrite_4
Unexecuted instantiation: crc32.c:zng_memwrite_4
Unexecuted instantiation: functable.c:zng_memwrite_4
Unexecuted instantiation: chunkset_sse2.c:zng_memwrite_4
Unexecuted instantiation: chorba_sse2.c:zng_memwrite_4
Unexecuted instantiation: compare256_sse2.c:zng_memwrite_4
Unexecuted instantiation: slide_hash_sse2.c:zng_memwrite_4
Unexecuted instantiation: chunkset_ssse3.c:zng_memwrite_4
Unexecuted instantiation: chorba_sse41.c:zng_memwrite_4
Unexecuted instantiation: slide_hash_avx2.c:zng_memwrite_4
Unexecuted instantiation: chunkset_avx2.c:zng_memwrite_4
Unexecuted instantiation: compare256_avx2.c:zng_memwrite_4
Unexecuted instantiation: adler32_avx512.c:zng_memwrite_4
Unexecuted instantiation: chunkset_avx512.c:zng_memwrite_4
Unexecuted instantiation: compare256_avx512.c:zng_memwrite_4
Unexecuted instantiation: adler32_avx512_vnni.c:zng_memwrite_4
Unexecuted instantiation: adler32_c.c:zng_memwrite_4
Unexecuted instantiation: adler32_fold_c.c:zng_memwrite_4
Unexecuted instantiation: crc32_fold_c.c:zng_memwrite_4
Unexecuted instantiation: crc32_chorba_c.c:zng_memwrite_4
62
63
0
static inline void zng_memwrite_8(void *ptr, uint64_t val) {
64
0
#if defined(HAVE_MAY_ALIAS)
65
0
    typedef struct { uint64_t val; } __attribute__ ((__packed__, __may_alias__)) unaligned_uint64_t;
66
0
    ((unaligned_uint64_t *)ptr)->val = val;
67
0
#else
68
0
    memcpy(ptr, &val, sizeof(val));
69
0
#endif
70
0
}
Unexecuted instantiation: adler32.c:zng_memwrite_8
Unexecuted instantiation: crc32.c:zng_memwrite_8
Unexecuted instantiation: functable.c:zng_memwrite_8
Unexecuted instantiation: chunkset_sse2.c:zng_memwrite_8
Unexecuted instantiation: chorba_sse2.c:zng_memwrite_8
Unexecuted instantiation: compare256_sse2.c:zng_memwrite_8
Unexecuted instantiation: slide_hash_sse2.c:zng_memwrite_8
Unexecuted instantiation: chunkset_ssse3.c:zng_memwrite_8
Unexecuted instantiation: chorba_sse41.c:zng_memwrite_8
Unexecuted instantiation: slide_hash_avx2.c:zng_memwrite_8
Unexecuted instantiation: chunkset_avx2.c:zng_memwrite_8
Unexecuted instantiation: compare256_avx2.c:zng_memwrite_8
Unexecuted instantiation: adler32_avx512.c:zng_memwrite_8
Unexecuted instantiation: chunkset_avx512.c:zng_memwrite_8
Unexecuted instantiation: compare256_avx512.c:zng_memwrite_8
Unexecuted instantiation: adler32_avx512_vnni.c:zng_memwrite_8
Unexecuted instantiation: adler32_c.c:zng_memwrite_8
Unexecuted instantiation: adler32_fold_c.c:zng_memwrite_8
Unexecuted instantiation: crc32_fold_c.c:zng_memwrite_8
Unexecuted instantiation: crc32_chorba_c.c:zng_memwrite_8
71
72
/* Use zng_memread_* instead of memcmp to avoid older compilers not converting memcmp
73
   calls to unaligned comparisons when unaligned access is supported. Use memcmp only when
74
   unaligned support is not available to avoid an extra call to memcpy. */
75
0
static inline int32_t zng_memcmp_2(const void *src0, const void *src1) {
76
0
#if defined(HAVE_MAY_ALIAS)
77
0
    return zng_memread_2(src0) != zng_memread_2(src1);
78
#else
79
    return memcmp(src0, src1, 2);
80
#endif
81
0
}
Unexecuted instantiation: adler32.c:zng_memcmp_2
Unexecuted instantiation: crc32.c:zng_memcmp_2
Unexecuted instantiation: functable.c:zng_memcmp_2
Unexecuted instantiation: chunkset_sse2.c:zng_memcmp_2
Unexecuted instantiation: chorba_sse2.c:zng_memcmp_2
Unexecuted instantiation: compare256_sse2.c:zng_memcmp_2
Unexecuted instantiation: slide_hash_sse2.c:zng_memcmp_2
Unexecuted instantiation: chunkset_ssse3.c:zng_memcmp_2
Unexecuted instantiation: chorba_sse41.c:zng_memcmp_2
Unexecuted instantiation: slide_hash_avx2.c:zng_memcmp_2
Unexecuted instantiation: chunkset_avx2.c:zng_memcmp_2
Unexecuted instantiation: compare256_avx2.c:zng_memcmp_2
Unexecuted instantiation: adler32_avx512.c:zng_memcmp_2
Unexecuted instantiation: chunkset_avx512.c:zng_memcmp_2
Unexecuted instantiation: compare256_avx512.c:zng_memcmp_2
Unexecuted instantiation: adler32_avx512_vnni.c:zng_memcmp_2
Unexecuted instantiation: adler32_c.c:zng_memcmp_2
Unexecuted instantiation: adler32_fold_c.c:zng_memcmp_2
Unexecuted instantiation: crc32_fold_c.c:zng_memcmp_2
Unexecuted instantiation: crc32_chorba_c.c:zng_memcmp_2
82
83
0
static inline int32_t zng_memcmp_4(const void *src0, const void *src1) {
84
0
#if defined(HAVE_MAY_ALIAS)
85
0
    return zng_memread_4(src0) != zng_memread_4(src1);
86
#else
87
    return memcmp(src0, src1, 4);
88
#endif
89
0
}
Unexecuted instantiation: adler32.c:zng_memcmp_4
Unexecuted instantiation: crc32.c:zng_memcmp_4
Unexecuted instantiation: functable.c:zng_memcmp_4
Unexecuted instantiation: chunkset_sse2.c:zng_memcmp_4
Unexecuted instantiation: chorba_sse2.c:zng_memcmp_4
Unexecuted instantiation: compare256_sse2.c:zng_memcmp_4
Unexecuted instantiation: slide_hash_sse2.c:zng_memcmp_4
Unexecuted instantiation: chunkset_ssse3.c:zng_memcmp_4
Unexecuted instantiation: chorba_sse41.c:zng_memcmp_4
Unexecuted instantiation: slide_hash_avx2.c:zng_memcmp_4
Unexecuted instantiation: chunkset_avx2.c:zng_memcmp_4
Unexecuted instantiation: compare256_avx2.c:zng_memcmp_4
Unexecuted instantiation: adler32_avx512.c:zng_memcmp_4
Unexecuted instantiation: chunkset_avx512.c:zng_memcmp_4
Unexecuted instantiation: compare256_avx512.c:zng_memcmp_4
Unexecuted instantiation: adler32_avx512_vnni.c:zng_memcmp_4
Unexecuted instantiation: adler32_c.c:zng_memcmp_4
Unexecuted instantiation: adler32_fold_c.c:zng_memcmp_4
Unexecuted instantiation: crc32_fold_c.c:zng_memcmp_4
Unexecuted instantiation: crc32_chorba_c.c:zng_memcmp_4
90
91
0
static inline int32_t zng_memcmp_8(const void *src0, const void *src1) {
92
0
#if defined(HAVE_MAY_ALIAS)
93
0
    return zng_memread_8(src0) != zng_memread_8(src1);
94
#else
95
    return memcmp(src0, src1, 8);
96
#endif
97
0
}
Unexecuted instantiation: adler32.c:zng_memcmp_8
Unexecuted instantiation: crc32.c:zng_memcmp_8
Unexecuted instantiation: functable.c:zng_memcmp_8
Unexecuted instantiation: chunkset_sse2.c:zng_memcmp_8
Unexecuted instantiation: chorba_sse2.c:zng_memcmp_8
Unexecuted instantiation: compare256_sse2.c:zng_memcmp_8
Unexecuted instantiation: slide_hash_sse2.c:zng_memcmp_8
Unexecuted instantiation: chunkset_ssse3.c:zng_memcmp_8
Unexecuted instantiation: chorba_sse41.c:zng_memcmp_8
Unexecuted instantiation: slide_hash_avx2.c:zng_memcmp_8
Unexecuted instantiation: chunkset_avx2.c:zng_memcmp_8
Unexecuted instantiation: compare256_avx2.c:zng_memcmp_8
Unexecuted instantiation: adler32_avx512.c:zng_memcmp_8
Unexecuted instantiation: chunkset_avx512.c:zng_memcmp_8
Unexecuted instantiation: compare256_avx512.c:zng_memcmp_8
Unexecuted instantiation: adler32_avx512_vnni.c:zng_memcmp_8
Unexecuted instantiation: adler32_c.c:zng_memcmp_8
Unexecuted instantiation: adler32_fold_c.c:zng_memcmp_8
Unexecuted instantiation: crc32_fold_c.c:zng_memcmp_8
Unexecuted instantiation: crc32_chorba_c.c:zng_memcmp_8
98
99
#endif