Coverage Report

Created: 2025-11-09 06:41

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/zlib-ng/arch/x86/adler32_ssse3_p.h
Line
Count
Source
1
/* adler32_ssse3_p.h -- adler32 ssse3 utility functions
2
 * Copyright (C) 2022 Adam Stylinski
3
 * For conditions of distribution and use, see copyright notice in zlib.h
4
 */
5
6
#ifndef ADLER32_SSSE3_P_H_
7
#define ADLER32_SSSE3_P_H_
8
9
#ifdef X86_SSSE3
10
11
#include <immintrin.h>
12
#include <stdint.h>
13
14
520k
static inline uint32_t partial_hsum(__m128i x) {
15
520k
    __m128i second_int = _mm_srli_si128(x, 8);
16
520k
    __m128i sum = _mm_add_epi32(x, second_int);
17
520k
    return _mm_cvtsi128_si32(sum);
18
520k
}
adler32_ssse3.c:partial_hsum
Line
Count
Source
14
502k
static inline uint32_t partial_hsum(__m128i x) {
15
    __m128i second_int = _mm_srli_si128(x, 8);
16
502k
    __m128i sum = _mm_add_epi32(x, second_int);
17
502k
    return _mm_cvtsi128_si32(sum);
18
502k
}
adler32_sse42.c:partial_hsum
Line
Count
Source
14
17.4k
static inline uint32_t partial_hsum(__m128i x) {
15
    __m128i second_int = _mm_srli_si128(x, 8);
16
17.4k
    __m128i sum = _mm_add_epi32(x, second_int);
17
17.4k
    return _mm_cvtsi128_si32(sum);
18
17.4k
}
19
20
520k
static inline uint32_t hsum(__m128i x) {
21
520k
    __m128i sum1 = _mm_unpackhi_epi64(x, x);
22
520k
    __m128i sum2 = _mm_add_epi32(x, sum1);
23
    __m128i sum3 = _mm_shuffle_epi32(sum2, 0x01);
24
520k
    __m128i sum4 = _mm_add_epi32(sum2, sum3);
25
520k
    return _mm_cvtsi128_si32(sum4);
26
520k
}
adler32_ssse3.c:hsum
Line
Count
Source
20
502k
static inline uint32_t hsum(__m128i x) {
21
502k
    __m128i sum1 = _mm_unpackhi_epi64(x, x);
22
502k
    __m128i sum2 = _mm_add_epi32(x, sum1);
23
    __m128i sum3 = _mm_shuffle_epi32(sum2, 0x01);
24
502k
    __m128i sum4 = _mm_add_epi32(sum2, sum3);
25
502k
    return _mm_cvtsi128_si32(sum4);
26
502k
}
adler32_sse42.c:hsum
Line
Count
Source
20
17.4k
static inline uint32_t hsum(__m128i x) {
21
17.4k
    __m128i sum1 = _mm_unpackhi_epi64(x, x);
22
17.4k
    __m128i sum2 = _mm_add_epi32(x, sum1);
23
    __m128i sum3 = _mm_shuffle_epi32(sum2, 0x01);
24
17.4k
    __m128i sum4 = _mm_add_epi32(sum2, sum3);
25
17.4k
    return _mm_cvtsi128_si32(sum4);
26
17.4k
}
27
#endif
28
29
#endif