/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 & (0-val)) * 0x077CB531U)) >> 27]; |
25 | 0 | } |
26 | 0 | } Unexecuted instantiation: zstd_common.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: zstd_preSplit.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: zstdmt_compress.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: zstd_decompress.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: zstd_decompress_block.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: entropy_common.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: fse_decompress.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: fse_compress.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: huf_compress.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: huf_decompress.c:ZSTD_countTrailingZeros32_fallback Unexecuted instantiation: zstd_ddict.c:ZSTD_countTrailingZeros32_fallback |
27 | | |
28 | | MEM_STATIC unsigned ZSTD_countTrailingZeros32(U32 val) |
29 | 31.1k | { |
30 | 31.1k | assert(val != 0); |
31 | | #if defined(_MSC_VER) |
32 | | # if STATIC_BMI2 |
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 | | __assume(0); /* Should not reach this code path */ |
41 | | } |
42 | | # endif |
43 | | #elif defined(__GNUC__) && (__GNUC__ >= 4) |
44 | | return (unsigned)__builtin_ctz(val); |
45 | | #elif defined(__ICCARM__) |
46 | | return (unsigned)__builtin_ctz(val); |
47 | | #else |
48 | | return ZSTD_countTrailingZeros32_fallback(val); |
49 | | #endif |
50 | 31.1k | } Unexecuted instantiation: zstd_common.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: zstd_preSplit.c:ZSTD_countTrailingZeros32 Unexecuted instantiation: zstdmt_compress.c:ZSTD_countTrailingZeros32 Unexecuted instantiation: zstd_decompress.c:ZSTD_countTrailingZeros32 Unexecuted instantiation: zstd_decompress_block.c:ZSTD_countTrailingZeros32 entropy_common.c:ZSTD_countTrailingZeros32 Line | Count | Source | 29 | 31.1k | { | 30 | 31.1k | assert(val != 0); | 31 | | #if defined(_MSC_VER) | 32 | | # if STATIC_BMI2 | 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 | | __assume(0); /* Should not reach this code path */ | 41 | | } | 42 | | # endif | 43 | | #elif defined(__GNUC__) && (__GNUC__ >= 4) | 44 | | return (unsigned)__builtin_ctz(val); | 45 | | #elif defined(__ICCARM__) | 46 | | return (unsigned)__builtin_ctz(val); | 47 | | #else | 48 | | return ZSTD_countTrailingZeros32_fallback(val); | 49 | | #endif | 50 | 31.1k | } |
Unexecuted instantiation: fse_decompress.c:ZSTD_countTrailingZeros32 Unexecuted instantiation: fse_compress.c:ZSTD_countTrailingZeros32 Unexecuted instantiation: huf_compress.c:ZSTD_countTrailingZeros32 Unexecuted instantiation: huf_decompress.c:ZSTD_countTrailingZeros32 Unexecuted instantiation: zstd_ddict.c:ZSTD_countTrailingZeros32 |
51 | | |
52 | | MEM_STATIC unsigned ZSTD_countLeadingZeros32_fallback(U32 val) |
53 | 0 | { |
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: zstd_common.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: zstd_preSplit.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: zstdmt_compress.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: zstd_decompress.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: zstd_decompress_block.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: entropy_common.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: fse_decompress.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: fse_compress.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: huf_compress.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: huf_decompress.c:ZSTD_countLeadingZeros32_fallback Unexecuted instantiation: zstd_ddict.c:ZSTD_countLeadingZeros32_fallback |
68 | | |
69 | | MEM_STATIC unsigned ZSTD_countLeadingZeros32(U32 val) |
70 | 753k | { |
71 | 753k | assert(val != 0); |
72 | | #if defined(_MSC_VER) |
73 | | # if STATIC_BMI2 |
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 | | __assume(0); /* Should not reach this code path */ |
82 | | } |
83 | | # endif |
84 | | #elif defined(__GNUC__) && (__GNUC__ >= 4) |
85 | | return (unsigned)__builtin_clz(val); |
86 | | #elif defined(__ICCARM__) |
87 | | return (unsigned)__builtin_clz(val); |
88 | | #else |
89 | | return ZSTD_countLeadingZeros32_fallback(val); |
90 | | #endif |
91 | 753k | } Unexecuted instantiation: zstd_common.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: zstd_preSplit.c:ZSTD_countLeadingZeros32 Unexecuted instantiation: zstdmt_compress.c:ZSTD_countLeadingZeros32 Unexecuted instantiation: zstd_decompress.c:ZSTD_countLeadingZeros32 zstd_decompress_block.c:ZSTD_countLeadingZeros32 Line | Count | Source | 70 | 178k | { | 71 | 178k | assert(val != 0); | 72 | | #if defined(_MSC_VER) | 73 | | # if STATIC_BMI2 | 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 | | __assume(0); /* Should not reach this code path */ | 82 | | } | 83 | | # endif | 84 | | #elif defined(__GNUC__) && (__GNUC__ >= 4) | 85 | | return (unsigned)__builtin_clz(val); | 86 | | #elif defined(__ICCARM__) | 87 | | return (unsigned)__builtin_clz(val); | 88 | | #else | 89 | | return ZSTD_countLeadingZeros32_fallback(val); | 90 | | #endif | 91 | 178k | } |
entropy_common.c:ZSTD_countLeadingZeros32 Line | Count | Source | 70 | 74.8k | { | 71 | 74.8k | assert(val != 0); | 72 | | #if defined(_MSC_VER) | 73 | | # if STATIC_BMI2 | 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 | | __assume(0); /* Should not reach this code path */ | 82 | | } | 83 | | # endif | 84 | | #elif defined(__GNUC__) && (__GNUC__ >= 4) | 85 | | return (unsigned)__builtin_clz(val); | 86 | | #elif defined(__ICCARM__) | 87 | | return (unsigned)__builtin_clz(val); | 88 | | #else | 89 | | return ZSTD_countLeadingZeros32_fallback(val); | 90 | | #endif | 91 | 74.8k | } |
fse_decompress.c:ZSTD_countLeadingZeros32 Line | Count | Source | 70 | 483k | { | 71 | 483k | assert(val != 0); | 72 | | #if defined(_MSC_VER) | 73 | | # if STATIC_BMI2 | 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 | | __assume(0); /* Should not reach this code path */ | 82 | | } | 83 | | # endif | 84 | | #elif defined(__GNUC__) && (__GNUC__ >= 4) | 85 | | return (unsigned)__builtin_clz(val); | 86 | | #elif defined(__ICCARM__) | 87 | | return (unsigned)__builtin_clz(val); | 88 | | #else | 89 | | return ZSTD_countLeadingZeros32_fallback(val); | 90 | | #endif | 91 | 483k | } |
Unexecuted instantiation: fse_compress.c:ZSTD_countLeadingZeros32 Unexecuted instantiation: huf_compress.c:ZSTD_countLeadingZeros32 huf_decompress.c:ZSTD_countLeadingZeros32 Line | Count | Source | 70 | 16.7k | { | 71 | 16.7k | assert(val != 0); | 72 | | #if defined(_MSC_VER) | 73 | | # if STATIC_BMI2 | 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 | | __assume(0); /* Should not reach this code path */ | 82 | | } | 83 | | # endif | 84 | | #elif defined(__GNUC__) && (__GNUC__ >= 4) | 85 | | return (unsigned)__builtin_clz(val); | 86 | | #elif defined(__ICCARM__) | 87 | | return (unsigned)__builtin_clz(val); | 88 | | #else | 89 | | return ZSTD_countLeadingZeros32_fallback(val); | 90 | | #endif | 91 | 16.7k | } |
Unexecuted instantiation: zstd_ddict.c:ZSTD_countLeadingZeros32 |
92 | | |
93 | | MEM_STATIC unsigned ZSTD_countTrailingZeros64(U64 val) |
94 | 26.3k | { |
95 | 26.3k | assert(val != 0); |
96 | | #if defined(_MSC_VER) && defined(_WIN64) |
97 | | # if STATIC_BMI2 |
98 | | return (unsigned)_tzcnt_u64(val); |
99 | | # else |
100 | | if (val != 0) { |
101 | | unsigned long r; |
102 | | _BitScanForward64(&r, val); |
103 | | return (unsigned)r; |
104 | | } else { |
105 | | __assume(0); /* Should not reach this code path */ |
106 | | } |
107 | | # endif |
108 | | #elif defined(__GNUC__) && (__GNUC__ >= 4) && defined(__LP64__) |
109 | | return (unsigned)__builtin_ctzll(val); |
110 | | #elif defined(__ICCARM__) |
111 | | return (unsigned)__builtin_ctzll(val); |
112 | | #else |
113 | | { |
114 | | U32 mostSignificantWord = (U32)(val >> 32); |
115 | | U32 leastSignificantWord = (U32)val; |
116 | | if (leastSignificantWord == 0) { |
117 | | return 32 + ZSTD_countTrailingZeros32(mostSignificantWord); |
118 | | } else { |
119 | | return ZSTD_countTrailingZeros32(leastSignificantWord); |
120 | | } |
121 | | } |
122 | | #endif |
123 | 26.3k | } Unexecuted instantiation: zstd_common.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: zstd_preSplit.c:ZSTD_countTrailingZeros64 Unexecuted instantiation: zstdmt_compress.c:ZSTD_countTrailingZeros64 Unexecuted instantiation: zstd_decompress.c:ZSTD_countTrailingZeros64 Unexecuted instantiation: zstd_decompress_block.c:ZSTD_countTrailingZeros64 Unexecuted instantiation: entropy_common.c:ZSTD_countTrailingZeros64 Unexecuted instantiation: fse_decompress.c:ZSTD_countTrailingZeros64 Unexecuted instantiation: fse_compress.c:ZSTD_countTrailingZeros64 Unexecuted instantiation: huf_compress.c:ZSTD_countTrailingZeros64 huf_decompress.c:ZSTD_countTrailingZeros64 Line | Count | Source | 94 | 26.3k | { | 95 | 26.3k | assert(val != 0); | 96 | | #if defined(_MSC_VER) && defined(_WIN64) | 97 | | # if STATIC_BMI2 | 98 | | return (unsigned)_tzcnt_u64(val); | 99 | | # else | 100 | | if (val != 0) { | 101 | | unsigned long r; | 102 | | _BitScanForward64(&r, val); | 103 | | return (unsigned)r; | 104 | | } else { | 105 | | __assume(0); /* Should not reach this code path */ | 106 | | } | 107 | | # endif | 108 | | #elif defined(__GNUC__) && (__GNUC__ >= 4) && defined(__LP64__) | 109 | | return (unsigned)__builtin_ctzll(val); | 110 | | #elif defined(__ICCARM__) | 111 | | return (unsigned)__builtin_ctzll(val); | 112 | | #else | 113 | | { | 114 | | U32 mostSignificantWord = (U32)(val >> 32); | 115 | | U32 leastSignificantWord = (U32)val; | 116 | | if (leastSignificantWord == 0) { | 117 | | return 32 + ZSTD_countTrailingZeros32(mostSignificantWord); | 118 | | } else { | 119 | | return ZSTD_countTrailingZeros32(leastSignificantWord); | 120 | | } | 121 | | } | 122 | | #endif | 123 | 26.3k | } |
Unexecuted instantiation: zstd_ddict.c:ZSTD_countTrailingZeros64 |
124 | | |
125 | | MEM_STATIC unsigned ZSTD_countLeadingZeros64(U64 val) |
126 | 0 | { |
127 | 0 | assert(val != 0); |
128 | | #if defined(_MSC_VER) && defined(_WIN64) |
129 | | # if STATIC_BMI2 |
130 | | return (unsigned)_lzcnt_u64(val); |
131 | | # else |
132 | | if (val != 0) { |
133 | | unsigned long r; |
134 | | _BitScanReverse64(&r, val); |
135 | | return (unsigned)(63 - r); |
136 | | } else { |
137 | | __assume(0); /* Should not reach this code path */ |
138 | | } |
139 | | # endif |
140 | | #elif defined(__GNUC__) && (__GNUC__ >= 4) |
141 | | return (unsigned)(__builtin_clzll(val)); |
142 | | #elif defined(__ICCARM__) |
143 | | return (unsigned)(__builtin_clzll(val)); |
144 | | #else |
145 | | { |
146 | | U32 mostSignificantWord = (U32)(val >> 32); |
147 | | U32 leastSignificantWord = (U32)val; |
148 | | if (mostSignificantWord == 0) { |
149 | | return 32 + ZSTD_countLeadingZeros32(leastSignificantWord); |
150 | | } else { |
151 | | return ZSTD_countLeadingZeros32(mostSignificantWord); |
152 | | } |
153 | | } |
154 | | #endif |
155 | 0 | } Unexecuted instantiation: zstd_common.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: zstd_preSplit.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: zstdmt_compress.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: zstd_decompress.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: zstd_decompress_block.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: entropy_common.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: fse_decompress.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: fse_compress.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: huf_compress.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: huf_decompress.c:ZSTD_countLeadingZeros64 Unexecuted instantiation: zstd_ddict.c:ZSTD_countLeadingZeros64 |
156 | | |
157 | | MEM_STATIC unsigned ZSTD_NbCommonBytes(size_t val) |
158 | 0 | { |
159 | 0 | if (MEM_isLittleEndian()) { |
160 | 0 | if (MEM_64bits()) { |
161 | 0 | return ZSTD_countTrailingZeros64((U64)val) >> 3; |
162 | 0 | } else { |
163 | 0 | return ZSTD_countTrailingZeros32((U32)val) >> 3; |
164 | 0 | } |
165 | 0 | } else { /* Big Endian CPU */ |
166 | 0 | if (MEM_64bits()) { |
167 | 0 | return ZSTD_countLeadingZeros64((U64)val) >> 3; |
168 | 0 | } else { |
169 | 0 | return ZSTD_countLeadingZeros32((U32)val) >> 3; |
170 | 0 | } |
171 | 0 | } |
172 | 0 | } Unexecuted instantiation: zstd_common.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: zstd_preSplit.c:ZSTD_NbCommonBytes Unexecuted instantiation: zstdmt_compress.c:ZSTD_NbCommonBytes Unexecuted instantiation: zstd_decompress.c:ZSTD_NbCommonBytes Unexecuted instantiation: zstd_decompress_block.c:ZSTD_NbCommonBytes Unexecuted instantiation: entropy_common.c:ZSTD_NbCommonBytes Unexecuted instantiation: fse_decompress.c:ZSTD_NbCommonBytes Unexecuted instantiation: fse_compress.c:ZSTD_NbCommonBytes Unexecuted instantiation: huf_compress.c:ZSTD_NbCommonBytes Unexecuted instantiation: huf_decompress.c:ZSTD_NbCommonBytes Unexecuted instantiation: zstd_ddict.c:ZSTD_NbCommonBytes |
173 | | |
174 | | MEM_STATIC unsigned ZSTD_highbit32(U32 val) /* compress, dictBuilder, decodeCorpus */ |
175 | 753k | { |
176 | 753k | assert(val != 0); |
177 | 753k | return 31 - ZSTD_countLeadingZeros32(val); |
178 | 753k | } Unexecuted instantiation: zstd_common.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: zstd_preSplit.c:ZSTD_highbit32 Unexecuted instantiation: zstdmt_compress.c:ZSTD_highbit32 Unexecuted instantiation: zstd_decompress.c:ZSTD_highbit32 zstd_decompress_block.c:ZSTD_highbit32 Line | Count | Source | 175 | 178k | { | 176 | 178k | assert(val != 0); | 177 | 178k | return 31 - ZSTD_countLeadingZeros32(val); | 178 | 178k | } |
entropy_common.c:ZSTD_highbit32 Line | Count | Source | 175 | 74.8k | { | 176 | 74.8k | assert(val != 0); | 177 | 74.8k | return 31 - ZSTD_countLeadingZeros32(val); | 178 | 74.8k | } |
fse_decompress.c:ZSTD_highbit32 Line | Count | Source | 175 | 483k | { | 176 | 483k | assert(val != 0); | 177 | 483k | return 31 - ZSTD_countLeadingZeros32(val); | 178 | 483k | } |
Unexecuted instantiation: fse_compress.c:ZSTD_highbit32 Unexecuted instantiation: huf_compress.c:ZSTD_highbit32 huf_decompress.c:ZSTD_highbit32 Line | Count | Source | 175 | 16.7k | { | 176 | 16.7k | assert(val != 0); | 177 | 16.7k | return 31 - ZSTD_countLeadingZeros32(val); | 178 | 16.7k | } |
Unexecuted instantiation: zstd_ddict.c:ZSTD_highbit32 |
179 | | |
180 | | /* ZSTD_rotateRight_*(): |
181 | | * Rotates a bitfield to the right by "count" bits. |
182 | | * https://en.wikipedia.org/w/index.php?title=Circular_shift&oldid=991635599#Implementing_circular_shifts |
183 | | */ |
184 | | MEM_STATIC |
185 | 0 | U64 ZSTD_rotateRight_U64(U64 const value, U32 count) { |
186 | 0 | assert(count < 64); |
187 | 0 | count &= 0x3F; /* for fickle pattern recognition */ |
188 | 0 | return (value >> count) | (U64)(value << ((0U - count) & 0x3F)); |
189 | 0 | } Unexecuted instantiation: zstd_common.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: zstd_preSplit.c:ZSTD_rotateRight_U64 Unexecuted instantiation: zstdmt_compress.c:ZSTD_rotateRight_U64 Unexecuted instantiation: zstd_decompress.c:ZSTD_rotateRight_U64 Unexecuted instantiation: zstd_decompress_block.c:ZSTD_rotateRight_U64 Unexecuted instantiation: entropy_common.c:ZSTD_rotateRight_U64 Unexecuted instantiation: fse_decompress.c:ZSTD_rotateRight_U64 Unexecuted instantiation: fse_compress.c:ZSTD_rotateRight_U64 Unexecuted instantiation: huf_compress.c:ZSTD_rotateRight_U64 Unexecuted instantiation: huf_decompress.c:ZSTD_rotateRight_U64 Unexecuted instantiation: zstd_ddict.c:ZSTD_rotateRight_U64 |
190 | | |
191 | | MEM_STATIC |
192 | 0 | U32 ZSTD_rotateRight_U32(U32 const value, U32 count) { |
193 | 0 | assert(count < 32); |
194 | 0 | count &= 0x1F; /* for fickle pattern recognition */ |
195 | 0 | return (value >> count) | (U32)(value << ((0U - count) & 0x1F)); |
196 | 0 | } Unexecuted instantiation: zstd_common.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: zstd_preSplit.c:ZSTD_rotateRight_U32 Unexecuted instantiation: zstdmt_compress.c:ZSTD_rotateRight_U32 Unexecuted instantiation: zstd_decompress.c:ZSTD_rotateRight_U32 Unexecuted instantiation: zstd_decompress_block.c:ZSTD_rotateRight_U32 Unexecuted instantiation: entropy_common.c:ZSTD_rotateRight_U32 Unexecuted instantiation: fse_decompress.c:ZSTD_rotateRight_U32 Unexecuted instantiation: fse_compress.c:ZSTD_rotateRight_U32 Unexecuted instantiation: huf_compress.c:ZSTD_rotateRight_U32 Unexecuted instantiation: huf_decompress.c:ZSTD_rotateRight_U32 Unexecuted instantiation: zstd_ddict.c:ZSTD_rotateRight_U32 |
197 | | |
198 | | MEM_STATIC |
199 | 0 | U16 ZSTD_rotateRight_U16(U16 const value, U32 count) { |
200 | 0 | assert(count < 16); |
201 | 0 | count &= 0x0F; /* for fickle pattern recognition */ |
202 | 0 | return (value >> count) | (U16)(value << ((0U - count) & 0x0F)); |
203 | 0 | } Unexecuted instantiation: zstd_common.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: zstd_preSplit.c:ZSTD_rotateRight_U16 Unexecuted instantiation: zstdmt_compress.c:ZSTD_rotateRight_U16 Unexecuted instantiation: zstd_decompress.c:ZSTD_rotateRight_U16 Unexecuted instantiation: zstd_decompress_block.c:ZSTD_rotateRight_U16 Unexecuted instantiation: entropy_common.c:ZSTD_rotateRight_U16 Unexecuted instantiation: fse_decompress.c:ZSTD_rotateRight_U16 Unexecuted instantiation: fse_compress.c:ZSTD_rotateRight_U16 Unexecuted instantiation: huf_compress.c:ZSTD_rotateRight_U16 Unexecuted instantiation: huf_decompress.c:ZSTD_rotateRight_U16 Unexecuted instantiation: zstd_ddict.c:ZSTD_rotateRight_U16 |
204 | | |
205 | | #endif /* ZSTD_BITS_H */ |