Coverage Report

Created: 2026-10-17 06:55

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/rust/registry/src/index.crates.io-1949cf8c6b5b557f/sha1-0.11.0/src/compress.rs
Line
Count
Source
1
cfg_if::cfg_if! {
2
    if #[cfg(sha1_backend = "soft")] {
3
        mod soft;
4
        pub(crate) use soft::compress;
5
    } else if #[cfg(sha1_backend = "aarch64-sha2")] {
6
        mod aarch64_sha2;
7
8
        #[cfg(not(target_feature = "sha2"))]
9
        compile_error!("aarch64-sha2 backend requires sha2 target feature");
10
11
        pub(crate) fn compress(state: &mut [u32; 5], blocks: &[[u8; 64]]) {
12
            // SAFETY: we checked above that the required target features are enabled
13
            unsafe { aarch64_sha2::compress(state, blocks) }
14
        }
15
    } else if #[cfg(sha1_backend = "x86-sha")] {
16
        mod x86_sha;
17
18
        #[cfg(not(all(
19
            target_feature = "sha",
20
            target_feature = "sse2",
21
            target_feature = "ssse3",
22
            target_feature = "sse4.1",
23
        )))]
24
        compile_error!("x86-sha backend requires sha, sse2, ssse3, sse4.1 target features");
25
26
        pub(crate) fn compress(state: &mut [u32; 5], blocks: &[[u8; 64]]) {
27
            // SAFETY: we checked above that the required target features are enabled
28
            unsafe { x86_sha::compress(state, blocks) }
29
        }
30
    } else if #[cfg(target_arch = "loongarch64")] {
31
        mod loongarch64_asm;
32
        pub(crate) use loongarch64_asm::compress;
33
    } else {
34
        mod soft;
35
36
        cfg_if::cfg_if! {
37
            if #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] {
38
                mod x86_sha;
39
                cpufeatures::new!(shani_cpuid, "sha", "sse2", "ssse3", "sse4.1");
40
            } else if #[cfg(target_arch = "aarch64")] {
41
                mod aarch64_sha2;
42
                cpufeatures::new!(sha2_hwcap, "sha2");
43
            }
44
        }
45
46
0
        pub(crate) fn compress(state: &mut [u32; 5], blocks: &[[u8; 64]]) {
47
            cfg_if::cfg_if! {
48
                if #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] {
49
0
                    if shani_cpuid::get() {
50
                        // SAFETY: we checked that required target features are available
51
0
                        return unsafe { x86_sha::compress(state, blocks) };
52
0
                    }
53
                } else if #[cfg(target_arch = "aarch64")] {
54
                    if sha2_hwcap::get() {
55
                        // SAFETY: we checked that `sha2` target feature is available
56
                        return unsafe { aarch64_sha2::compress(state, blocks) };
57
                    }
58
                }
59
            }
60
61
0
            soft::compress(state, blocks);
62
0
        }
63
    }
64
}