/src/zstd/lib/common/bits.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * Copyright (c) Meta Platforms, Inc. and affiliates. |
3 | | * All rights reserved. |
4 | | * |
5 | | * This source code is licensed under both the BSD-style license (found in the |
6 | | * LICENSE file in the root directory of this source tree) and the GPLv2 (found |
7 | | * in the COPYING file in the root directory of this source tree). |
8 | | * You may select, at your option, one of the above-listed licenses. |
9 | | */ |
10 | | |
11 | | #ifndef ZSTD_BITS_H |
12 | | #define ZSTD_BITS_H |
13 | | |
14 | | #include "mem.h" |
15 | | |
16 | | MEM_STATIC unsigned ZSTD_countTrailingZeros32_fallback(U32 val) |
17 | 0 | { |
18 | 0 | assert(val != 0); |
19 | 0 | { |
20 | 0 | static const U32 DeBruijnBytePos[32] = {0, 1, 28, 2, 29, 14, 24, 3, |
21 | 0 | 30, 22, 20, 15, 25, 17, 4, 8, |
22 | 0 | 31, 27, 13, 23, 21, 19, 16, 7, |
23 | 0 | 26, 12, 18, 6, 11, 5, 10, 9}; |
24 | 0 | return DeBruijnBytePos[((U32) ((val & -(S32) val) * 0x077CB531U)) >> 27]; |
25 | 0 | } |
26 | 0 | } Unexecuted instantiation: sequence_producer.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: entropy_common.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: fse_decompress.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: zstd_common.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: fse_compress.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: huf_compress.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: zstd_compress.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: zstd_compress_literals.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: zstd_compress_sequences.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: zstd_compress_superblock.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: zstd_double_fast.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: zstd_fast.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: zstd_lazy.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: zstd_ldm.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: zstd_opt.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: zstdmt_compress.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: huf_decompress.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: zstd_ddict.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: zstd_decompress.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: zstd_decompress_block.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: cover.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: fastcover.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: zdict.c:ZSTD_countTrailingZeros32_fallback |
27 | | |
28 | | MEM_STATIC unsigned ZSTD_countTrailingZeros32(U32 val) |
29 | 4.74k | { |
30 | 4.74k | assert(val != 0); |
31 | | # if defined(_MSC_VER) |
32 | | # if STATIC_BMI2 == 1 |
33 | | return (unsigned)_tzcnt_u32(val); |
34 | | # else |
35 | | if (val != 0) { |
36 | | unsigned long r; |
37 | | _BitScanForward(&r, val); |
38 | | return (unsigned)r; |
39 | | } else { |
40 | | /* Should not reach this code path */ |
41 | | __assume(0); |
42 | | } |
43 | | # endif |
44 | | # elif defined(__GNUC__) && (__GNUC__ >= 4) |
45 | 4.74k | return (unsigned)__builtin_ctz(val); |
46 | | # elif defined(__ICCARM__) |
47 | | return (unsigned)__builtin_ctz(val); |
48 | | # else |
49 | | return ZSTD_countTrailingZeros32_fallback(val); |
50 | | # endif |
51 | 4.74k | } Unexecuted instantiation: sequence_producer.c:ZSTD_countTrailingZeros32 entropy_common.c:ZSTD_countTrailingZeros32 Line | Count | Source | 29 | 4.74k | { | 30 | 4.74k | assert(val != 0); | 31 | | # if defined(_MSC_VER) | 32 | | # if STATIC_BMI2 == 1 | 33 | | return (unsigned)_tzcnt_u32(val); | 34 | | # else | 35 | | if (val != 0) { | 36 | | unsigned long r; | 37 | | _BitScanForward(&r, val); | 38 | | return (unsigned)r; | 39 | | } else { | 40 | | /* Should not reach this code path */ | 41 | | __assume(0); | 42 | | } | 43 | | # endif | 44 | | # elif defined(__GNUC__) && (__GNUC__ >= 4) | 45 | 4.74k | return (unsigned)__builtin_ctz(val); | 46 | | # elif defined(__ICCARM__) | 47 | | return (unsigned)__builtin_ctz(val); | 48 | | # else | 49 | | return ZSTD_countTrailingZeros32_fallback(val); | 50 | | # endif | 51 | 4.74k | } |
Unexecuted instantiation: fse_decompress.c:ZSTD_countTrailingZeros32 Unexecuted instantiation: zstd_common.c:ZSTD_countTrailingZeros32 Unexecuted instantiation: fse_compress.c:ZSTD_countTrailingZeros32 Unexecuted instantiation: huf_compress.c:ZSTD_countTrailingZeros32 Unexecuted instantiation: zstd_compress.c:ZSTD_countTrailingZeros32 Unexecuted instantiation: zstd_compress_literals.c:ZSTD_countTrailingZeros32 Unexecuted instantiation: zstd_compress_sequences.c:ZSTD_countTrailingZeros32 Unexecuted instantiation: zstd_compress_superblock.c:ZSTD_countTrailingZeros32 Unexecuted instantiation: zstd_double_fast.c:ZSTD_countTrailingZeros32 Unexecuted instantiation: zstd_fast.c:ZSTD_countTrailingZeros32 Unexecuted instantiation: zstd_lazy.c:ZSTD_countTrailingZeros32 Unexecuted instantiation: zstd_ldm.c:ZSTD_countTrailingZeros32 Unexecuted instantiation: zstd_opt.c:ZSTD_countTrailingZeros32 Unexecuted instantiation: zstdmt_compress.c:ZSTD_countTrailingZeros32 Unexecuted instantiation: huf_decompress.c:ZSTD_countTrailingZeros32 Unexecuted instantiation: zstd_ddict.c:ZSTD_countTrailingZeros32 Unexecuted instantiation: zstd_decompress.c:ZSTD_countTrailingZeros32 Unexecuted instantiation: zstd_decompress_block.c:ZSTD_countTrailingZeros32 Unexecuted instantiation: cover.c:ZSTD_countTrailingZeros32 Unexecuted instantiation: fastcover.c:ZSTD_countTrailingZeros32 Unexecuted instantiation: zdict.c:ZSTD_countTrailingZeros32 |
52 | | |
53 | 0 | MEM_STATIC unsigned ZSTD_countLeadingZeros32_fallback(U32 val) { |
54 | 0 | assert(val != 0); |
55 | 0 | { |
56 | 0 | static const U32 DeBruijnClz[32] = {0, 9, 1, 10, 13, 21, 2, 29, |
57 | 0 | 11, 14, 16, 18, 22, 25, 3, 30, |
58 | 0 | 8, 12, 20, 28, 15, 17, 24, 7, |
59 | 0 | 19, 27, 23, 6, 26, 5, 4, 31}; |
60 | 0 | val |= val >> 1; |
61 | 0 | val |= val >> 2; |
62 | 0 | val |= val >> 4; |
63 | 0 | val |= val >> 8; |
64 | 0 | val |= val >> 16; |
65 | 0 | return 31 - DeBruijnClz[(val * 0x07C4ACDDU) >> 27]; |
66 | 0 | } |
67 | 0 | } Unexecuted instantiation: sequence_producer.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: entropy_common.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: fse_decompress.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: zstd_common.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: fse_compress.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: huf_compress.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: zstd_compress.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: zstd_compress_literals.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: zstd_compress_sequences.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: zstd_compress_superblock.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: zstd_double_fast.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: zstd_fast.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: zstd_lazy.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: zstd_ldm.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: zstd_opt.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: zstdmt_compress.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: huf_decompress.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: zstd_ddict.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: zstd_decompress.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: zstd_decompress_block.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: cover.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: fastcover.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: zdict.c:ZSTD_countLeadingZeros32_fallback |
68 | | |
69 | | MEM_STATIC unsigned ZSTD_countLeadingZeros32(U32 val) |
70 | 143k | { |
71 | 143k | assert(val != 0); |
72 | | # if defined(_MSC_VER) |
73 | | # if STATIC_BMI2 == 1 |
74 | | return (unsigned)_lzcnt_u32(val); |
75 | | # else |
76 | | if (val != 0) { |
77 | | unsigned long r; |
78 | | _BitScanReverse(&r, val); |
79 | | return (unsigned)(31 - r); |
80 | | } else { |
81 | | /* Should not reach this code path */ |
82 | | __assume(0); |
83 | | } |
84 | | # endif |
85 | | # elif defined(__GNUC__) && (__GNUC__ >= 4) |
86 | 143k | return (unsigned)__builtin_clz(val); |
87 | | # elif defined(__ICCARM__) |
88 | | return (unsigned)__builtin_clz(val); |
89 | | # else |
90 | | return ZSTD_countLeadingZeros32_fallback(val); |
91 | | # endif |
92 | 143k | } Unexecuted instantiation: sequence_producer.c:ZSTD_countLeadingZeros32 entropy_common.c:ZSTD_countLeadingZeros32 Line | Count | Source | 70 | 21.5k | { | 71 | 21.5k | assert(val != 0); | 72 | | # if defined(_MSC_VER) | 73 | | # if STATIC_BMI2 == 1 | 74 | | return (unsigned)_lzcnt_u32(val); | 75 | | # else | 76 | | if (val != 0) { | 77 | | unsigned long r; | 78 | | _BitScanReverse(&r, val); | 79 | | return (unsigned)(31 - r); | 80 | | } else { | 81 | | /* Should not reach this code path */ | 82 | | __assume(0); | 83 | | } | 84 | | # endif | 85 | | # elif defined(__GNUC__) && (__GNUC__ >= 4) | 86 | 21.5k | return (unsigned)__builtin_clz(val); | 87 | | # elif defined(__ICCARM__) | 88 | | return (unsigned)__builtin_clz(val); | 89 | | # else | 90 | | return ZSTD_countLeadingZeros32_fallback(val); | 91 | | # endif | 92 | 21.5k | } |
fse_decompress.c:ZSTD_countLeadingZeros32 Line | Count | Source | 70 | 112k | { | 71 | 112k | assert(val != 0); | 72 | | # if defined(_MSC_VER) | 73 | | # if STATIC_BMI2 == 1 | 74 | | return (unsigned)_lzcnt_u32(val); | 75 | | # else | 76 | | if (val != 0) { | 77 | | unsigned long r; | 78 | | _BitScanReverse(&r, val); | 79 | | return (unsigned)(31 - r); | 80 | | } else { | 81 | | /* Should not reach this code path */ | 82 | | __assume(0); | 83 | | } | 84 | | # endif | 85 | | # elif defined(__GNUC__) && (__GNUC__ >= 4) | 86 | 112k | return (unsigned)__builtin_clz(val); | 87 | | # elif defined(__ICCARM__) | 88 | | return (unsigned)__builtin_clz(val); | 89 | | # else | 90 | | return ZSTD_countLeadingZeros32_fallback(val); | 91 | | # endif | 92 | 112k | } |
Unexecuted instantiation: zstd_common.c:ZSTD_countLeadingZeros32 Unexecuted instantiation: fse_compress.c:ZSTD_countLeadingZeros32 Unexecuted instantiation: huf_compress.c:ZSTD_countLeadingZeros32 Unexecuted instantiation: zstd_compress.c:ZSTD_countLeadingZeros32 Unexecuted instantiation: zstd_compress_literals.c:ZSTD_countLeadingZeros32 Unexecuted instantiation: zstd_compress_sequences.c:ZSTD_countLeadingZeros32 Unexecuted instantiation: zstd_compress_superblock.c:ZSTD_countLeadingZeros32 Unexecuted instantiation: zstd_double_fast.c:ZSTD_countLeadingZeros32 Unexecuted instantiation: zstd_fast.c:ZSTD_countLeadingZeros32 Unexecuted instantiation: zstd_lazy.c:ZSTD_countLeadingZeros32 Unexecuted instantiation: zstd_ldm.c:ZSTD_countLeadingZeros32 Unexecuted instantiation: zstd_opt.c:ZSTD_countLeadingZeros32 Unexecuted instantiation: zstdmt_compress.c:ZSTD_countLeadingZeros32 huf_decompress.c:ZSTD_countLeadingZeros32 Line | Count | Source | 70 | 9.81k | { | 71 | 9.81k | assert(val != 0); | 72 | | # if defined(_MSC_VER) | 73 | | # if STATIC_BMI2 == 1 | 74 | | return (unsigned)_lzcnt_u32(val); | 75 | | # else | 76 | | if (val != 0) { | 77 | | unsigned long r; | 78 | | _BitScanReverse(&r, val); | 79 | | return (unsigned)(31 - r); | 80 | | } else { | 81 | | /* Should not reach this code path */ | 82 | | __assume(0); | 83 | | } | 84 | | # endif | 85 | | # elif defined(__GNUC__) && (__GNUC__ >= 4) | 86 | 9.81k | return (unsigned)__builtin_clz(val); | 87 | | # elif defined(__ICCARM__) | 88 | | return (unsigned)__builtin_clz(val); | 89 | | # else | 90 | | return ZSTD_countLeadingZeros32_fallback(val); | 91 | | # endif | 92 | 9.81k | } |
Unexecuted instantiation: zstd_ddict.c:ZSTD_countLeadingZeros32 Unexecuted instantiation: zstd_decompress.c:ZSTD_countLeadingZeros32 Unexecuted instantiation: zstd_decompress_block.c:ZSTD_countLeadingZeros32 Unexecuted instantiation: cover.c:ZSTD_countLeadingZeros32 Unexecuted instantiation: fastcover.c:ZSTD_countLeadingZeros32 Unexecuted instantiation: zdict.c:ZSTD_countLeadingZeros32 |
93 | | |
94 | | MEM_STATIC unsigned ZSTD_countTrailingZeros64(U64 val) |
95 | 1.25M | { |
96 | 1.25M | assert(val != 0); |
97 | | # if defined(_MSC_VER) && defined(_WIN64) |
98 | | # if STATIC_BMI2 == 1 |
99 | | return (unsigned)_tzcnt_u64(val); |
100 | | # else |
101 | | if (val != 0) { |
102 | | unsigned long r; |
103 | | _BitScanForward64(&r, val); |
104 | | return (unsigned)r; |
105 | | } else { |
106 | | /* Should not reach this code path */ |
107 | | __assume(0); |
108 | | } |
109 | | # endif |
110 | | # elif defined(__GNUC__) && (__GNUC__ >= 4) && defined(__LP64__) |
111 | 1.25M | return (unsigned)__builtin_ctzll(val); |
112 | | # elif defined(__ICCARM__) |
113 | | return (unsigned)__builtin_ctzll(val); |
114 | | # else |
115 | | { |
116 | | U32 mostSignificantWord = (U32)(val >> 32); |
117 | | U32 leastSignificantWord = (U32)val; |
118 | | if (leastSignificantWord == 0) { |
119 | | return 32 + ZSTD_countTrailingZeros32(mostSignificantWord); |
120 | | } else { |
121 | | return ZSTD_countTrailingZeros32(leastSignificantWord); |
122 | | } |
123 | | } |
124 | | # endif |
125 | 1.25M | } Unexecuted instantiation: sequence_producer.c:ZSTD_countTrailingZeros64 Unexecuted instantiation: entropy_common.c:ZSTD_countTrailingZeros64 Unexecuted instantiation: fse_decompress.c:ZSTD_countTrailingZeros64 Unexecuted instantiation: zstd_common.c:ZSTD_countTrailingZeros64 Unexecuted instantiation: fse_compress.c:ZSTD_countTrailingZeros64 Unexecuted instantiation: huf_compress.c:ZSTD_countTrailingZeros64 Unexecuted instantiation: zstd_compress.c:ZSTD_countTrailingZeros64 Unexecuted instantiation: zstd_compress_literals.c:ZSTD_countTrailingZeros64 Unexecuted instantiation: zstd_compress_sequences.c:ZSTD_countTrailingZeros64 Unexecuted instantiation: zstd_compress_superblock.c:ZSTD_countTrailingZeros64 Unexecuted instantiation: zstd_double_fast.c:ZSTD_countTrailingZeros64 Unexecuted instantiation: zstd_fast.c:ZSTD_countTrailingZeros64 Unexecuted instantiation: zstd_lazy.c:ZSTD_countTrailingZeros64 Unexecuted instantiation: zstd_ldm.c:ZSTD_countTrailingZeros64 Unexecuted instantiation: zstd_opt.c:ZSTD_countTrailingZeros64 Unexecuted instantiation: zstdmt_compress.c:ZSTD_countTrailingZeros64 huf_decompress.c:ZSTD_countTrailingZeros64 Line | Count | Source | 95 | 1.25M | { | 96 | 1.25M | assert(val != 0); | 97 | | # if defined(_MSC_VER) && defined(_WIN64) | 98 | | # if STATIC_BMI2 == 1 | 99 | | return (unsigned)_tzcnt_u64(val); | 100 | | # else | 101 | | if (val != 0) { | 102 | | unsigned long r; | 103 | | _BitScanForward64(&r, val); | 104 | | return (unsigned)r; | 105 | | } else { | 106 | | /* Should not reach this code path */ | 107 | | __assume(0); | 108 | | } | 109 | | # endif | 110 | | # elif defined(__GNUC__) && (__GNUC__ >= 4) && defined(__LP64__) | 111 | 1.25M | return (unsigned)__builtin_ctzll(val); | 112 | | # elif defined(__ICCARM__) | 113 | | return (unsigned)__builtin_ctzll(val); | 114 | | # else | 115 | | { | 116 | | U32 mostSignificantWord = (U32)(val >> 32); | 117 | | U32 leastSignificantWord = (U32)val; | 118 | | if (leastSignificantWord == 0) { | 119 | | return 32 + ZSTD_countTrailingZeros32(mostSignificantWord); | 120 | | } else { | 121 | | return ZSTD_countTrailingZeros32(leastSignificantWord); | 122 | | } | 123 | | } | 124 | | # endif | 125 | 1.25M | } |
Unexecuted instantiation: zstd_ddict.c:ZSTD_countTrailingZeros64 Unexecuted instantiation: zstd_decompress.c:ZSTD_countTrailingZeros64 Unexecuted instantiation: zstd_decompress_block.c:ZSTD_countTrailingZeros64 Unexecuted instantiation: cover.c:ZSTD_countTrailingZeros64 Unexecuted instantiation: fastcover.c:ZSTD_countTrailingZeros64 Unexecuted instantiation: zdict.c:ZSTD_countTrailingZeros64 |
126 | | |
127 | | MEM_STATIC unsigned ZSTD_countLeadingZeros64(U64 val) |
128 | 0 | { |
129 | 0 | assert(val != 0); |
130 | | # if defined(_MSC_VER) && defined(_WIN64) |
131 | | # if STATIC_BMI2 == 1 |
132 | | return (unsigned)_lzcnt_u64(val); |
133 | | # else |
134 | | if (val != 0) { |
135 | | unsigned long r; |
136 | | _BitScanReverse64(&r, val); |
137 | | return (unsigned)(63 - r); |
138 | | } else { |
139 | | /* Should not reach this code path */ |
140 | | __assume(0); |
141 | | } |
142 | | # endif |
143 | | # elif defined(__GNUC__) && (__GNUC__ >= 4) |
144 | 0 | return (unsigned)(__builtin_clzll(val)); |
145 | | # elif defined(__ICCARM__) |
146 | | return (unsigned)(__builtin_clzll(val)); |
147 | | # else |
148 | | { |
149 | | U32 mostSignificantWord = (U32)(val >> 32); |
150 | | U32 leastSignificantWord = (U32)val; |
151 | | if (mostSignificantWord == 0) { |
152 | | return 32 + ZSTD_countLeadingZeros32(leastSignificantWord); |
153 | | } else { |
154 | | return ZSTD_countLeadingZeros32(mostSignificantWord); |
155 | | } |
156 | | } |
157 | | # endif |
158 | 0 | } Unexecuted instantiation: sequence_producer.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: entropy_common.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: fse_decompress.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: zstd_common.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: fse_compress.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: huf_compress.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: zstd_compress.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: zstd_compress_literals.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: zstd_compress_sequences.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: zstd_compress_superblock.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: zstd_double_fast.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: zstd_fast.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: zstd_lazy.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: zstd_ldm.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: zstd_opt.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: zstdmt_compress.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: huf_decompress.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: zstd_ddict.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: zstd_decompress.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: zstd_decompress_block.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: cover.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: fastcover.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: zdict.c:ZSTD_countLeadingZeros64 |
159 | | |
160 | | MEM_STATIC unsigned ZSTD_NbCommonBytes(size_t val) |
161 | 0 | { |
162 | 0 | if (MEM_isLittleEndian()) { |
163 | 0 | if (MEM_64bits()) { |
164 | 0 | return ZSTD_countTrailingZeros64((U64)val) >> 3; |
165 | 0 | } else { |
166 | 0 | return ZSTD_countTrailingZeros32((U32)val) >> 3; |
167 | 0 | } |
168 | 0 | } else { /* Big Endian CPU */ |
169 | 0 | if (MEM_64bits()) { |
170 | 0 | return ZSTD_countLeadingZeros64((U64)val) >> 3; |
171 | 0 | } else { |
172 | 0 | return ZSTD_countLeadingZeros32((U32)val) >> 3; |
173 | 0 | } |
174 | 0 | } |
175 | 0 | } Unexecuted instantiation: sequence_producer.c:ZSTD_NbCommonBytes Unexecuted instantiation: entropy_common.c:ZSTD_NbCommonBytes Unexecuted instantiation: fse_decompress.c:ZSTD_NbCommonBytes Unexecuted instantiation: zstd_common.c:ZSTD_NbCommonBytes Unexecuted instantiation: fse_compress.c:ZSTD_NbCommonBytes Unexecuted instantiation: huf_compress.c:ZSTD_NbCommonBytes Unexecuted instantiation: zstd_compress.c:ZSTD_NbCommonBytes Unexecuted instantiation: zstd_compress_literals.c:ZSTD_NbCommonBytes Unexecuted instantiation: zstd_compress_sequences.c:ZSTD_NbCommonBytes Unexecuted instantiation: zstd_compress_superblock.c:ZSTD_NbCommonBytes Unexecuted instantiation: zstd_double_fast.c:ZSTD_NbCommonBytes Unexecuted instantiation: zstd_fast.c:ZSTD_NbCommonBytes Unexecuted instantiation: zstd_lazy.c:ZSTD_NbCommonBytes Unexecuted instantiation: zstd_ldm.c:ZSTD_NbCommonBytes Unexecuted instantiation: zstd_opt.c:ZSTD_NbCommonBytes Unexecuted instantiation: zstdmt_compress.c:ZSTD_NbCommonBytes Unexecuted instantiation: huf_decompress.c:ZSTD_NbCommonBytes Unexecuted instantiation: zstd_ddict.c:ZSTD_NbCommonBytes Unexecuted instantiation: zstd_decompress.c:ZSTD_NbCommonBytes Unexecuted instantiation: zstd_decompress_block.c:ZSTD_NbCommonBytes Unexecuted instantiation: cover.c:ZSTD_NbCommonBytes Unexecuted instantiation: fastcover.c:ZSTD_NbCommonBytes Unexecuted instantiation: zdict.c:ZSTD_NbCommonBytes |
176 | | |
177 | | MEM_STATIC unsigned ZSTD_highbit32(U32 val) /* compress, dictBuilder, decodeCorpus */ |
178 | 143k | { |
179 | 143k | assert(val != 0); |
180 | 143k | return 31 - ZSTD_countLeadingZeros32(val); |
181 | 143k | } Unexecuted instantiation: sequence_producer.c:ZSTD_highbit32 entropy_common.c:ZSTD_highbit32 Line | Count | Source | 178 | 21.5k | { | 179 | 21.5k | assert(val != 0); | 180 | 21.5k | return 31 - ZSTD_countLeadingZeros32(val); | 181 | 21.5k | } |
fse_decompress.c:ZSTD_highbit32 Line | Count | Source | 178 | 112k | { | 179 | 112k | assert(val != 0); | 180 | 112k | return 31 - ZSTD_countLeadingZeros32(val); | 181 | 112k | } |
Unexecuted instantiation: zstd_common.c:ZSTD_highbit32 Unexecuted instantiation: fse_compress.c:ZSTD_highbit32 Unexecuted instantiation: huf_compress.c:ZSTD_highbit32 Unexecuted instantiation: zstd_compress.c:ZSTD_highbit32 Unexecuted instantiation: zstd_compress_literals.c:ZSTD_highbit32 Unexecuted instantiation: zstd_compress_sequences.c:ZSTD_highbit32 Unexecuted instantiation: zstd_compress_superblock.c:ZSTD_highbit32 Unexecuted instantiation: zstd_double_fast.c:ZSTD_highbit32 Unexecuted instantiation: zstd_fast.c:ZSTD_highbit32 Unexecuted instantiation: zstd_lazy.c:ZSTD_highbit32 Unexecuted instantiation: zstd_ldm.c:ZSTD_highbit32 Unexecuted instantiation: zstd_opt.c:ZSTD_highbit32 Unexecuted instantiation: zstdmt_compress.c:ZSTD_highbit32 huf_decompress.c:ZSTD_highbit32 Line | Count | Source | 178 | 9.81k | { | 179 | 9.81k | assert(val != 0); | 180 | 9.81k | return 31 - ZSTD_countLeadingZeros32(val); | 181 | 9.81k | } |
Unexecuted instantiation: zstd_ddict.c:ZSTD_highbit32 Unexecuted instantiation: zstd_decompress.c:ZSTD_highbit32 Unexecuted instantiation: zstd_decompress_block.c:ZSTD_highbit32 Unexecuted instantiation: cover.c:ZSTD_highbit32 Unexecuted instantiation: fastcover.c:ZSTD_highbit32 Unexecuted instantiation: zdict.c:ZSTD_highbit32 |
182 | | |
183 | | /* ZSTD_rotateRight_*(): |
184 | | * Rotates a bitfield to the right by "count" bits. |
185 | | * https://en.wikipedia.org/w/index.php?title=Circular_shift&oldid=991635599#Implementing_circular_shifts |
186 | | */ |
187 | | MEM_STATIC |
188 | 0 | U64 ZSTD_rotateRight_U64(U64 const value, U32 count) { |
189 | 0 | assert(count < 64); |
190 | 0 | count &= 0x3F; /* for fickle pattern recognition */ |
191 | 0 | return (value >> count) | (U64)(value << ((0U - count) & 0x3F)); |
192 | 0 | } Unexecuted instantiation: sequence_producer.c:ZSTD_rotateRight_U64 Unexecuted instantiation: entropy_common.c:ZSTD_rotateRight_U64 Unexecuted instantiation: fse_decompress.c:ZSTD_rotateRight_U64 Unexecuted instantiation: zstd_common.c:ZSTD_rotateRight_U64 Unexecuted instantiation: fse_compress.c:ZSTD_rotateRight_U64 Unexecuted instantiation: huf_compress.c:ZSTD_rotateRight_U64 Unexecuted instantiation: zstd_compress.c:ZSTD_rotateRight_U64 Unexecuted instantiation: zstd_compress_literals.c:ZSTD_rotateRight_U64 Unexecuted instantiation: zstd_compress_sequences.c:ZSTD_rotateRight_U64 Unexecuted instantiation: zstd_compress_superblock.c:ZSTD_rotateRight_U64 Unexecuted instantiation: zstd_double_fast.c:ZSTD_rotateRight_U64 Unexecuted instantiation: zstd_fast.c:ZSTD_rotateRight_U64 Unexecuted instantiation: zstd_lazy.c:ZSTD_rotateRight_U64 Unexecuted instantiation: zstd_ldm.c:ZSTD_rotateRight_U64 Unexecuted instantiation: zstd_opt.c:ZSTD_rotateRight_U64 Unexecuted instantiation: zstdmt_compress.c:ZSTD_rotateRight_U64 Unexecuted instantiation: huf_decompress.c:ZSTD_rotateRight_U64 Unexecuted instantiation: zstd_ddict.c:ZSTD_rotateRight_U64 Unexecuted instantiation: zstd_decompress.c:ZSTD_rotateRight_U64 Unexecuted instantiation: zstd_decompress_block.c:ZSTD_rotateRight_U64 Unexecuted instantiation: cover.c:ZSTD_rotateRight_U64 Unexecuted instantiation: fastcover.c:ZSTD_rotateRight_U64 Unexecuted instantiation: zdict.c:ZSTD_rotateRight_U64 |
193 | | |
194 | | MEM_STATIC |
195 | 0 | U32 ZSTD_rotateRight_U32(U32 const value, U32 count) { |
196 | 0 | assert(count < 32); |
197 | 0 | count &= 0x1F; /* for fickle pattern recognition */ |
198 | 0 | return (value >> count) | (U32)(value << ((0U - count) & 0x1F)); |
199 | 0 | } Unexecuted instantiation: sequence_producer.c:ZSTD_rotateRight_U32 Unexecuted instantiation: entropy_common.c:ZSTD_rotateRight_U32 Unexecuted instantiation: fse_decompress.c:ZSTD_rotateRight_U32 Unexecuted instantiation: zstd_common.c:ZSTD_rotateRight_U32 Unexecuted instantiation: fse_compress.c:ZSTD_rotateRight_U32 Unexecuted instantiation: huf_compress.c:ZSTD_rotateRight_U32 Unexecuted instantiation: zstd_compress.c:ZSTD_rotateRight_U32 Unexecuted instantiation: zstd_compress_literals.c:ZSTD_rotateRight_U32 Unexecuted instantiation: zstd_compress_sequences.c:ZSTD_rotateRight_U32 Unexecuted instantiation: zstd_compress_superblock.c:ZSTD_rotateRight_U32 Unexecuted instantiation: zstd_double_fast.c:ZSTD_rotateRight_U32 Unexecuted instantiation: zstd_fast.c:ZSTD_rotateRight_U32 Unexecuted instantiation: zstd_lazy.c:ZSTD_rotateRight_U32 Unexecuted instantiation: zstd_ldm.c:ZSTD_rotateRight_U32 Unexecuted instantiation: zstd_opt.c:ZSTD_rotateRight_U32 Unexecuted instantiation: zstdmt_compress.c:ZSTD_rotateRight_U32 Unexecuted instantiation: huf_decompress.c:ZSTD_rotateRight_U32 Unexecuted instantiation: zstd_ddict.c:ZSTD_rotateRight_U32 Unexecuted instantiation: zstd_decompress.c:ZSTD_rotateRight_U32 Unexecuted instantiation: zstd_decompress_block.c:ZSTD_rotateRight_U32 Unexecuted instantiation: cover.c:ZSTD_rotateRight_U32 Unexecuted instantiation: fastcover.c:ZSTD_rotateRight_U32 Unexecuted instantiation: zdict.c:ZSTD_rotateRight_U32 |
200 | | |
201 | | MEM_STATIC |
202 | 0 | U16 ZSTD_rotateRight_U16(U16 const value, U32 count) { |
203 | 0 | assert(count < 16); |
204 | 0 | count &= 0x0F; /* for fickle pattern recognition */ |
205 | 0 | return (value >> count) | (U16)(value << ((0U - count) & 0x0F)); |
206 | 0 | } Unexecuted instantiation: sequence_producer.c:ZSTD_rotateRight_U16 Unexecuted instantiation: entropy_common.c:ZSTD_rotateRight_U16 Unexecuted instantiation: fse_decompress.c:ZSTD_rotateRight_U16 Unexecuted instantiation: zstd_common.c:ZSTD_rotateRight_U16 Unexecuted instantiation: fse_compress.c:ZSTD_rotateRight_U16 Unexecuted instantiation: huf_compress.c:ZSTD_rotateRight_U16 Unexecuted instantiation: zstd_compress.c:ZSTD_rotateRight_U16 Unexecuted instantiation: zstd_compress_literals.c:ZSTD_rotateRight_U16 Unexecuted instantiation: zstd_compress_sequences.c:ZSTD_rotateRight_U16 Unexecuted instantiation: zstd_compress_superblock.c:ZSTD_rotateRight_U16 Unexecuted instantiation: zstd_double_fast.c:ZSTD_rotateRight_U16 Unexecuted instantiation: zstd_fast.c:ZSTD_rotateRight_U16 Unexecuted instantiation: zstd_lazy.c:ZSTD_rotateRight_U16 Unexecuted instantiation: zstd_ldm.c:ZSTD_rotateRight_U16 Unexecuted instantiation: zstd_opt.c:ZSTD_rotateRight_U16 Unexecuted instantiation: zstdmt_compress.c:ZSTD_rotateRight_U16 Unexecuted instantiation: huf_decompress.c:ZSTD_rotateRight_U16 Unexecuted instantiation: zstd_ddict.c:ZSTD_rotateRight_U16 Unexecuted instantiation: zstd_decompress.c:ZSTD_rotateRight_U16 Unexecuted instantiation: zstd_decompress_block.c:ZSTD_rotateRight_U16 Unexecuted instantiation: cover.c:ZSTD_rotateRight_U16 Unexecuted instantiation: fastcover.c:ZSTD_rotateRight_U16 Unexecuted instantiation: zdict.c:ZSTD_rotateRight_U16 |
207 | | |
208 | | #endif /* ZSTD_BITS_H */ |