Coverage Report

Created: 2026-10-17 07:13

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
603k
static inline uint32_t partial_hsum(__m128i x) {
15
603k
    __m128i second_int = _mm_srli_si128(x, 8);
16
603k
    __m128i sum = _mm_add_epi32(x, second_int);
17
603k
    return _mm_cvtsi128_si32(sum);
18
603k
}
adler32_ssse3.c:partial_hsum
Line
Count
Source
14
578k
static inline uint32_t partial_hsum(__m128i x) {
15
    __m128i second_int = _mm_srli_si128(x, 8);
16
578k
    __m128i sum = _mm_add_epi32(x, second_int);
17
578k
    return _mm_cvtsi128_si32(sum);
18
578k
}
adler32_sse42.c:partial_hsum
Line
Count
Source
14
24.6k
static inline uint32_t partial_hsum(__m128i x) {
15
    __m128i second_int = _mm_srli_si128(x, 8);
16
24.6k
    __m128i sum = _mm_add_epi32(x, second_int);
17
24.6k
    return _mm_cvtsi128_si32(sum);
18
24.6k
}
19
20
603k
static inline uint32_t hsum(__m128i x) {
21
603k
    __m128i sum1 = _mm_unpackhi_epi64(x, x);
22
603k
    __m128i sum2 = _mm_add_epi32(x, sum1);
23
    __m128i sum3 = _mm_shuffle_epi32(sum2, 0x01);
24
603k
    __m128i sum4 = _mm_add_epi32(sum2, sum3);
25
603k
    return _mm_cvtsi128_si32(sum4);
26
603k
}
adler32_ssse3.c:hsum
Line
Count
Source
20
578k
static inline uint32_t hsum(__m128i x) {
21
578k
    __m128i sum1 = _mm_unpackhi_epi64(x, x);
22
578k
    __m128i sum2 = _mm_add_epi32(x, sum1);
23
    __m128i sum3 = _mm_shuffle_epi32(sum2, 0x01);
24
578k
    __m128i sum4 = _mm_add_epi32(sum2, sum3);
25
578k
    return _mm_cvtsi128_si32(sum4);
26
578k
}
adler32_sse42.c:hsum
Line
Count
Source
20
24.6k
static inline uint32_t hsum(__m128i x) {
21
24.6k
    __m128i sum1 = _mm_unpackhi_epi64(x, x);
22
24.6k
    __m128i sum2 = _mm_add_epi32(x, sum1);
23
    __m128i sum3 = _mm_shuffle_epi32(sum2, 0x01);
24
24.6k
    __m128i sum4 = _mm_add_epi32(sum2, sum3);
25
24.6k
    return _mm_cvtsi128_si32(sum4);
26
24.6k
}
27
#endif
28
29
#endif