Coverage Report

Created: 2026-01-10 07:01

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/rust/registry/src/index.crates.io-1949cf8c6b5b557f/half-2.7.1/src/leading_zeros.rs
Line
Count
Source
1
// https://doc.rust-lang.org/std/primitive.u16.html#method.leading_zeros
2
3
#[cfg(not(any(all(
4
    target_arch = "spirv",
5
    not(all(
6
        target_feature = "IntegerFunctions2INTEL",
7
        target_feature = "SPV_INTEL_shader_integer_functions2"
8
    ))
9
))))]
10
#[inline]
11
0
pub(crate) const fn leading_zeros_u16(x: u16) -> u32 {
12
0
    x.leading_zeros()
13
0
}
Unexecuted instantiation: half::leading_zeros::leading_zeros_u16
Unexecuted instantiation: half::leading_zeros::leading_zeros_u16
Unexecuted instantiation: half::leading_zeros::leading_zeros_u16
Unexecuted instantiation: half::leading_zeros::leading_zeros_u16
14
15
#[cfg(all(
16
    target_arch = "spirv",
17
    not(all(
18
        target_feature = "IntegerFunctions2INTEL",
19
        target_feature = "SPV_INTEL_shader_integer_functions2"
20
    ))
21
))]
22
#[inline]
23
pub(crate) const fn leading_zeros_u16(x: u16) -> u32 {
24
    leading_zeros_u16_fallback(x)
25
}
26
27
#[cfg(any(
28
    test,
29
    all(
30
        target_arch = "spirv",
31
        not(all(
32
            target_feature = "IntegerFunctions2INTEL",
33
            target_feature = "SPV_INTEL_shader_integer_functions2"
34
        ))
35
    )
36
))]
37
#[inline]
38
const fn leading_zeros_u16_fallback(mut x: u16) -> u32 {
39
    use crunchy::unroll;
40
    let mut c = 0;
41
    let msb = 1 << 15;
42
    unroll! { for i in 0 .. 16 {
43
        if x & msb == 0 {
44
            c += 1;
45
        } else {
46
            return c;
47
        }
48
        #[allow(unused_assignments)]
49
        if i < 15 {
50
            x <<= 1;
51
        }
52
    }}
53
    c
54
}
55
56
#[cfg(test)]
57
mod test {
58
59
    #[test]
60
    fn leading_zeros_u16_fallback() {
61
        for x in [44, 97, 304, 1179, 23571] {
62
            assert_eq!(super::leading_zeros_u16_fallback(x), x.leading_zeros());
63
        }
64
    }
65
}