Coverage Report

Created: 2026-09-14 06:49

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/avm/avm_dsp/simd/v128_intrinsics_x86.h
Line
Count
Source
1
/*
2
 * Copyright (c) 2021, Alliance for Open Media. All rights reserved
3
 *
4
 * This source code is subject to the terms of the BSD 3-Clause Clear License
5
 * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear
6
 * License was not distributed with this source code in the LICENSE file, you
7
 * can obtain it at aomedia.org/license/software-license/bsd-3-c-c/.  If the
8
 * Alliance for Open Media Patent License 1.0 was not distributed with this
9
 * source code in the PATENTS file, you can obtain it at
10
 * aomedia.org/license/patent-license/.
11
 */
12
13
#ifndef AVM_AVM_DSP_SIMD_V128_INTRINSICS_X86_H_
14
#define AVM_AVM_DSP_SIMD_V128_INTRINSICS_X86_H_
15
16
#include <stdint.h>
17
#include "avm_dsp/simd/v64_intrinsics_x86.h"
18
19
typedef __m128i v128;
20
21
3
SIMD_INLINE uint32_t v128_low_u32(v128 a) {
22
3
  return (uint32_t)_mm_cvtsi128_si32(a);
23
3
}
Unexecuted instantiation: cdef_block_sse2.c:v128_low_u32
Unexecuted instantiation: cdef_block_ssse3.c:v128_low_u32
Unexecuted instantiation: cdef_block_sse4.c:v128_low_u32
cdef_block_avx2.c:v128_low_u32
Line
Count
Source
21
3
SIMD_INLINE uint32_t v128_low_u32(v128 a) {
22
3
  return (uint32_t)_mm_cvtsi128_si32(a);
23
3
}
24
25
9.72k
SIMD_INLINE v64 v128_low_v64(v128 a) {
26
9.72k
  return _mm_unpacklo_epi64(a, v64_zero());
27
9.72k
}
Unexecuted instantiation: cdef_block_sse2.c:v128_low_v64
Unexecuted instantiation: cdef_block_ssse3.c:v128_low_v64
Unexecuted instantiation: cdef_block_sse4.c:v128_low_v64
cdef_block_avx2.c:v128_low_v64
Line
Count
Source
25
9.72k
SIMD_INLINE v64 v128_low_v64(v128 a) {
26
9.72k
  return _mm_unpacklo_epi64(a, v64_zero());
27
9.72k
}
28
29
9.72k
SIMD_INLINE v64 v128_high_v64(v128 a) { return _mm_srli_si128(a, 8); }
Unexecuted instantiation: cdef_block_sse2.c:v128_high_v64
Unexecuted instantiation: cdef_block_ssse3.c:v128_high_v64
Unexecuted instantiation: cdef_block_sse4.c:v128_high_v64
cdef_block_avx2.c:v128_high_v64
Line
Count
Source
29
9.72k
SIMD_INLINE v64 v128_high_v64(v128 a) { return _mm_srli_si128(a, 8); }
30
31
64.0k
SIMD_INLINE v128 v128_from_v64(v64 a, v64 b) {
32
64.0k
  return _mm_unpacklo_epi64(b, a);
33
64.0k
}
Unexecuted instantiation: cdef_block_sse2.c:v128_from_v64
Unexecuted instantiation: cdef_block_ssse3.c:v128_from_v64
Unexecuted instantiation: cdef_block_sse4.c:v128_from_v64
cdef_block_avx2.c:v128_from_v64
Line
Count
Source
31
64.0k
SIMD_INLINE v128 v128_from_v64(v64 a, v64 b) {
32
64.0k
  return _mm_unpacklo_epi64(b, a);
33
64.0k
}
34
35
0
SIMD_INLINE v128 v128_from_64(uint64_t a, uint64_t b) {
36
0
  return v128_from_v64(v64_from_64(a), v64_from_64(b));
37
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_from_64
Unexecuted instantiation: cdef_block_ssse3.c:v128_from_64
Unexecuted instantiation: cdef_block_sse4.c:v128_from_64
Unexecuted instantiation: cdef_block_avx2.c:v128_from_64
38
39
54
SIMD_INLINE v128 v128_from_32(uint32_t a, uint32_t b, uint32_t c, uint32_t d) {
40
54
  return _mm_set_epi32(a, b, c, d);
41
54
}
Unexecuted instantiation: cdef_block_sse2.c:v128_from_32
Unexecuted instantiation: cdef_block_ssse3.c:v128_from_32
Unexecuted instantiation: cdef_block_sse4.c:v128_from_32
cdef_block_avx2.c:v128_from_32
Line
Count
Source
39
54
SIMD_INLINE v128 v128_from_32(uint32_t a, uint32_t b, uint32_t c, uint32_t d) {
40
54
  return _mm_set_epi32(a, b, c, d);
41
54
}
42
43
225k
SIMD_INLINE v128 v128_load_unaligned(const void *p) {
44
#if defined(__SSSE3__)
45
  return _mm_lddqu_si128((__m128i *)p);
46
#else
47
  return _mm_loadu_si128((__m128i *)p);
48
#endif
49
225k
}
Unexecuted instantiation: cdef_block_sse2.c:v128_load_unaligned
Unexecuted instantiation: cdef_block_ssse3.c:v128_load_unaligned
Unexecuted instantiation: cdef_block_sse4.c:v128_load_unaligned
cdef_block_avx2.c:v128_load_unaligned
Line
Count
Source
43
225k
SIMD_INLINE v128 v128_load_unaligned(const void *p) {
44
225k
#if defined(__SSSE3__)
45
225k
  return _mm_lddqu_si128((__m128i *)p);
46
#else
47
  return _mm_loadu_si128((__m128i *)p);
48
#endif
49
225k
}
50
51
30.2k
SIMD_INLINE v128 v128_load_aligned(const void *p) {
52
30.2k
  return v128_load_unaligned(p);
53
30.2k
}
Unexecuted instantiation: cdef_block_sse2.c:v128_load_aligned
Unexecuted instantiation: cdef_block_ssse3.c:v128_load_aligned
Unexecuted instantiation: cdef_block_sse4.c:v128_load_aligned
cdef_block_avx2.c:v128_load_aligned
Line
Count
Source
51
30.2k
SIMD_INLINE v128 v128_load_aligned(const void *p) {
52
30.2k
  return v128_load_unaligned(p);
53
30.2k
}
54
55
0
SIMD_INLINE void v128_store_aligned(void *p, v128 a) {
56
0
  _mm_store_si128((__m128i *)p, a);
57
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_store_aligned
Unexecuted instantiation: cdef_block_ssse3.c:v128_store_aligned
Unexecuted instantiation: cdef_block_sse4.c:v128_store_aligned
Unexecuted instantiation: cdef_block_avx2.c:v128_store_aligned
58
59
79.2k
SIMD_INLINE void v128_store_unaligned(void *p, v128 a) {
60
79.2k
  _mm_storeu_si128((__m128i *)p, a);
61
79.2k
}
Unexecuted instantiation: cdef_block_sse2.c:v128_store_unaligned
Unexecuted instantiation: cdef_block_ssse3.c:v128_store_unaligned
Unexecuted instantiation: cdef_block_sse4.c:v128_store_unaligned
cdef_block_avx2.c:v128_store_unaligned
Line
Count
Source
59
79.2k
SIMD_INLINE void v128_store_unaligned(void *p, v128 a) {
60
79.2k
  _mm_storeu_si128((__m128i *)p, a);
61
79.2k
}
62
63
// The following function requires an immediate.
64
// Some compilers will check this during optimisation, others wont.
65
#if defined(__OPTIMIZE__) && __OPTIMIZE__ && !defined(__clang__)
66
#if defined(__SSSE3__)
67
SIMD_INLINE v128 v128_align(v128 a, v128 b, const unsigned int c) {
68
  return c ? _mm_alignr_epi8(a, b, c) : b;
69
}
70
#else
71
#define v128_align(a, b, c) \
72
  ((c) ? _mm_or_si128(_mm_srli_si128(b, c), _mm_slli_si128(a, 16 - (c))) : (b))
73
#endif
74
#else
75
#if defined(__SSSE3__)
76
6
#define v128_align(a, b, c) ((c) ? _mm_alignr_epi8(a, b, (uint8_t)(c)) : (b))
77
#else
78
#define v128_align(a, b, c) \
79
0
  ((c) ? _mm_or_si128(_mm_srli_si128(b, c), _mm_slli_si128(a, 16 - (c))) : (b))
80
#endif
81
#endif
82
83
0
SIMD_INLINE v128 v128_zero() { return _mm_setzero_si128(); }
Unexecuted instantiation: cdef_block_sse2.c:v128_zero
Unexecuted instantiation: cdef_block_ssse3.c:v128_zero
Unexecuted instantiation: cdef_block_sse4.c:v128_zero
Unexecuted instantiation: cdef_block_avx2.c:v128_zero
84
85
0
SIMD_INLINE v128 v128_dup_8(uint8_t x) { return _mm_set1_epi8(x); }
Unexecuted instantiation: cdef_block_sse2.c:v128_dup_8
Unexecuted instantiation: cdef_block_ssse3.c:v128_dup_8
Unexecuted instantiation: cdef_block_sse4.c:v128_dup_8
Unexecuted instantiation: cdef_block_avx2.c:v128_dup_8
86
87
24
SIMD_INLINE v128 v128_dup_16(uint16_t x) { return _mm_set1_epi16(x); }
Unexecuted instantiation: cdef_block_sse2.c:v128_dup_16
Unexecuted instantiation: cdef_block_ssse3.c:v128_dup_16
Unexecuted instantiation: cdef_block_sse4.c:v128_dup_16
cdef_block_avx2.c:v128_dup_16
Line
Count
Source
87
24
SIMD_INLINE v128 v128_dup_16(uint16_t x) { return _mm_set1_epi16(x); }
88
89
6
SIMD_INLINE v128 v128_dup_32(uint32_t x) { return _mm_set1_epi32(x); }
Unexecuted instantiation: cdef_block_sse2.c:v128_dup_32
Unexecuted instantiation: cdef_block_ssse3.c:v128_dup_32
Unexecuted instantiation: cdef_block_sse4.c:v128_dup_32
cdef_block_avx2.c:v128_dup_32
Line
Count
Source
89
6
SIMD_INLINE v128 v128_dup_32(uint32_t x) { return _mm_set1_epi32(x); }
90
91
0
SIMD_INLINE v128 v128_dup_64(uint64_t x) {
92
0
  // _mm_set_pi64x and _mm_cvtsi64x_si64 missing in some compilers
93
0
  return _mm_set_epi32((uint32_t)(x >> 32), (uint32_t)x, (uint32_t)(x >> 32),
94
0
                       (uint32_t)x);
95
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_dup_64
Unexecuted instantiation: cdef_block_ssse3.c:v128_dup_64
Unexecuted instantiation: cdef_block_sse4.c:v128_dup_64
Unexecuted instantiation: cdef_block_avx2.c:v128_dup_64
96
97
0
SIMD_INLINE v128 v128_add_8(v128 a, v128 b) { return _mm_add_epi8(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_add_8
Unexecuted instantiation: cdef_block_ssse3.c:v128_add_8
Unexecuted instantiation: cdef_block_sse4.c:v128_add_8
Unexecuted instantiation: cdef_block_avx2.c:v128_add_8
98
99
192
SIMD_INLINE v128 v128_add_16(v128 a, v128 b) { return _mm_add_epi16(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_add_16
Unexecuted instantiation: cdef_block_ssse3.c:v128_add_16
Unexecuted instantiation: cdef_block_sse4.c:v128_add_16
cdef_block_avx2.c:v128_add_16
Line
Count
Source
99
192
SIMD_INLINE v128 v128_add_16(v128 a, v128 b) { return _mm_add_epi16(a, b); }
100
101
0
SIMD_INLINE v128 v128_sadd_u8(v128 a, v128 b) { return _mm_adds_epu8(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_sadd_u8
Unexecuted instantiation: cdef_block_ssse3.c:v128_sadd_u8
Unexecuted instantiation: cdef_block_sse4.c:v128_sadd_u8
Unexecuted instantiation: cdef_block_avx2.c:v128_sadd_u8
102
103
0
SIMD_INLINE v128 v128_sadd_s8(v128 a, v128 b) { return _mm_adds_epi8(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_sadd_s8
Unexecuted instantiation: cdef_block_ssse3.c:v128_sadd_s8
Unexecuted instantiation: cdef_block_sse4.c:v128_sadd_s8
Unexecuted instantiation: cdef_block_avx2.c:v128_sadd_s8
104
105
0
SIMD_INLINE v128 v128_sadd_s16(v128 a, v128 b) { return _mm_adds_epi16(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_sadd_s16
Unexecuted instantiation: cdef_block_ssse3.c:v128_sadd_s16
Unexecuted instantiation: cdef_block_sse4.c:v128_sadd_s16
Unexecuted instantiation: cdef_block_avx2.c:v128_sadd_s16
106
107
36
SIMD_INLINE v128 v128_add_32(v128 a, v128 b) { return _mm_add_epi32(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_add_32
Unexecuted instantiation: cdef_block_ssse3.c:v128_add_32
Unexecuted instantiation: cdef_block_sse4.c:v128_add_32
cdef_block_avx2.c:v128_add_32
Line
Count
Source
107
36
SIMD_INLINE v128 v128_add_32(v128 a, v128 b) { return _mm_add_epi32(a, b); }
108
109
0
SIMD_INLINE v128 v128_add_64(v128 a, v128 b) { return _mm_add_epi64(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_add_64
Unexecuted instantiation: cdef_block_ssse3.c:v128_add_64
Unexecuted instantiation: cdef_block_sse4.c:v128_add_64
Unexecuted instantiation: cdef_block_avx2.c:v128_add_64
110
111
0
SIMD_INLINE v128 v128_padd_s16(v128 a) {
112
0
  return _mm_madd_epi16(a, _mm_set1_epi16(1));
113
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_padd_s16
Unexecuted instantiation: cdef_block_ssse3.c:v128_padd_s16
Unexecuted instantiation: cdef_block_sse4.c:v128_padd_s16
Unexecuted instantiation: cdef_block_avx2.c:v128_padd_s16
114
115
0
SIMD_INLINE v128 v128_sub_8(v128 a, v128 b) { return _mm_sub_epi8(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_sub_8
Unexecuted instantiation: cdef_block_ssse3.c:v128_sub_8
Unexecuted instantiation: cdef_block_sse4.c:v128_sub_8
Unexecuted instantiation: cdef_block_avx2.c:v128_sub_8
116
117
0
SIMD_INLINE v128 v128_ssub_u8(v128 a, v128 b) { return _mm_subs_epu8(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_ssub_u8
Unexecuted instantiation: cdef_block_ssse3.c:v128_ssub_u8
Unexecuted instantiation: cdef_block_sse4.c:v128_ssub_u8
Unexecuted instantiation: cdef_block_avx2.c:v128_ssub_u8
118
119
0
SIMD_INLINE v128 v128_ssub_s8(v128 a, v128 b) { return _mm_subs_epi8(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_ssub_s8
Unexecuted instantiation: cdef_block_ssse3.c:v128_ssub_s8
Unexecuted instantiation: cdef_block_sse4.c:v128_ssub_s8
Unexecuted instantiation: cdef_block_avx2.c:v128_ssub_s8
120
121
24
SIMD_INLINE v128 v128_sub_16(v128 a, v128 b) { return _mm_sub_epi16(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_sub_16
Unexecuted instantiation: cdef_block_ssse3.c:v128_sub_16
Unexecuted instantiation: cdef_block_sse4.c:v128_sub_16
cdef_block_avx2.c:v128_sub_16
Line
Count
Source
121
24
SIMD_INLINE v128 v128_sub_16(v128 a, v128 b) { return _mm_sub_epi16(a, b); }
122
123
0
SIMD_INLINE v128 v128_ssub_s16(v128 a, v128 b) { return _mm_subs_epi16(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_ssub_s16
Unexecuted instantiation: cdef_block_ssse3.c:v128_ssub_s16
Unexecuted instantiation: cdef_block_sse4.c:v128_ssub_s16
Unexecuted instantiation: cdef_block_avx2.c:v128_ssub_s16
124
125
0
SIMD_INLINE v128 v128_ssub_u16(v128 a, v128 b) { return _mm_subs_epu16(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_ssub_u16
Unexecuted instantiation: cdef_block_ssse3.c:v128_ssub_u16
Unexecuted instantiation: cdef_block_sse4.c:v128_ssub_u16
Unexecuted instantiation: cdef_block_avx2.c:v128_ssub_u16
126
127
0
SIMD_INLINE v128 v128_sub_32(v128 a, v128 b) { return _mm_sub_epi32(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_sub_32
Unexecuted instantiation: cdef_block_ssse3.c:v128_sub_32
Unexecuted instantiation: cdef_block_sse4.c:v128_sub_32
Unexecuted instantiation: cdef_block_avx2.c:v128_sub_32
128
129
0
SIMD_INLINE v128 v128_sub_64(v128 a, v128 b) { return _mm_sub_epi64(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_sub_64
Unexecuted instantiation: cdef_block_ssse3.c:v128_sub_64
Unexecuted instantiation: cdef_block_sse4.c:v128_sub_64
Unexecuted instantiation: cdef_block_avx2.c:v128_sub_64
130
131
0
SIMD_INLINE v128 v128_abs_s16(v128 a) {
132
#if defined(__SSSE3__)
133
  return _mm_abs_epi16(a);
134
#else
135
  return _mm_max_epi16(a, _mm_sub_epi16(_mm_setzero_si128(), a));
136
#endif
137
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_abs_s16
Unexecuted instantiation: cdef_block_ssse3.c:v128_abs_s16
Unexecuted instantiation: cdef_block_sse4.c:v128_abs_s16
Unexecuted instantiation: cdef_block_avx2.c:v128_abs_s16
138
139
0
SIMD_INLINE v128 v128_abs_s8(v128 a) {
140
0
#if defined(__SSSE3__)
141
0
  return _mm_abs_epi8(a);
142
0
#else
143
0
  v128 sign = _mm_cmplt_epi8(a, _mm_setzero_si128());
144
0
  return _mm_xor_si128(sign, _mm_add_epi8(a, sign));
145
0
#endif
146
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_abs_s8
Unexecuted instantiation: cdef_block_ssse3.c:v128_abs_s8
Unexecuted instantiation: cdef_block_sse4.c:v128_abs_s8
Unexecuted instantiation: cdef_block_avx2.c:v128_abs_s8
147
148
0
SIMD_INLINE v128 v128_ziplo_8(v128 a, v128 b) {
149
0
  return _mm_unpacklo_epi8(b, a);
150
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_ziplo_8
Unexecuted instantiation: cdef_block_ssse3.c:v128_ziplo_8
Unexecuted instantiation: cdef_block_sse4.c:v128_ziplo_8
Unexecuted instantiation: cdef_block_avx2.c:v128_ziplo_8
151
152
0
SIMD_INLINE v128 v128_ziphi_8(v128 a, v128 b) {
153
0
  return _mm_unpackhi_epi8(b, a);
154
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_ziphi_8
Unexecuted instantiation: cdef_block_ssse3.c:v128_ziphi_8
Unexecuted instantiation: cdef_block_sse4.c:v128_ziphi_8
Unexecuted instantiation: cdef_block_avx2.c:v128_ziphi_8
155
156
30
SIMD_INLINE v128 v128_ziplo_16(v128 a, v128 b) {
157
30
  return _mm_unpacklo_epi16(b, a);
158
30
}
Unexecuted instantiation: cdef_block_sse2.c:v128_ziplo_16
Unexecuted instantiation: cdef_block_ssse3.c:v128_ziplo_16
Unexecuted instantiation: cdef_block_sse4.c:v128_ziplo_16
cdef_block_avx2.c:v128_ziplo_16
Line
Count
Source
156
30
SIMD_INLINE v128 v128_ziplo_16(v128 a, v128 b) {
157
30
  return _mm_unpacklo_epi16(b, a);
158
30
}
159
160
30
SIMD_INLINE v128 v128_ziphi_16(v128 a, v128 b) {
161
30
  return _mm_unpackhi_epi16(b, a);
162
30
}
Unexecuted instantiation: cdef_block_sse2.c:v128_ziphi_16
Unexecuted instantiation: cdef_block_ssse3.c:v128_ziphi_16
Unexecuted instantiation: cdef_block_sse4.c:v128_ziphi_16
cdef_block_avx2.c:v128_ziphi_16
Line
Count
Source
160
30
SIMD_INLINE v128 v128_ziphi_16(v128 a, v128 b) {
161
30
  return _mm_unpackhi_epi16(b, a);
162
30
}
163
164
24
SIMD_INLINE v128 v128_ziplo_32(v128 a, v128 b) {
165
24
  return _mm_unpacklo_epi32(b, a);
166
24
}
Unexecuted instantiation: cdef_block_sse2.c:v128_ziplo_32
Unexecuted instantiation: cdef_block_ssse3.c:v128_ziplo_32
Unexecuted instantiation: cdef_block_sse4.c:v128_ziplo_32
cdef_block_avx2.c:v128_ziplo_32
Line
Count
Source
164
24
SIMD_INLINE v128 v128_ziplo_32(v128 a, v128 b) {
165
24
  return _mm_unpacklo_epi32(b, a);
166
24
}
167
168
24
SIMD_INLINE v128 v128_ziphi_32(v128 a, v128 b) {
169
24
  return _mm_unpackhi_epi32(b, a);
170
24
}
Unexecuted instantiation: cdef_block_sse2.c:v128_ziphi_32
Unexecuted instantiation: cdef_block_ssse3.c:v128_ziphi_32
Unexecuted instantiation: cdef_block_sse4.c:v128_ziphi_32
cdef_block_avx2.c:v128_ziphi_32
Line
Count
Source
168
24
SIMD_INLINE v128 v128_ziphi_32(v128 a, v128 b) {
169
24
  return _mm_unpackhi_epi32(b, a);
170
24
}
171
172
24
SIMD_INLINE v128 v128_ziplo_64(v128 a, v128 b) {
173
24
  return _mm_unpacklo_epi64(b, a);
174
24
}
Unexecuted instantiation: cdef_block_sse2.c:v128_ziplo_64
Unexecuted instantiation: cdef_block_ssse3.c:v128_ziplo_64
Unexecuted instantiation: cdef_block_sse4.c:v128_ziplo_64
cdef_block_avx2.c:v128_ziplo_64
Line
Count
Source
172
24
SIMD_INLINE v128 v128_ziplo_64(v128 a, v128 b) {
173
24
  return _mm_unpacklo_epi64(b, a);
174
24
}
175
176
24
SIMD_INLINE v128 v128_ziphi_64(v128 a, v128 b) {
177
24
  return _mm_unpackhi_epi64(b, a);
178
24
}
Unexecuted instantiation: cdef_block_sse2.c:v128_ziphi_64
Unexecuted instantiation: cdef_block_ssse3.c:v128_ziphi_64
Unexecuted instantiation: cdef_block_sse4.c:v128_ziphi_64
cdef_block_avx2.c:v128_ziphi_64
Line
Count
Source
176
24
SIMD_INLINE v128 v128_ziphi_64(v128 a, v128 b) {
177
24
  return _mm_unpackhi_epi64(b, a);
178
24
}
179
180
0
SIMD_INLINE v128 v128_zip_8(v64 a, v64 b) { return _mm_unpacklo_epi8(b, a); }
Unexecuted instantiation: cdef_block_sse2.c:v128_zip_8
Unexecuted instantiation: cdef_block_ssse3.c:v128_zip_8
Unexecuted instantiation: cdef_block_sse4.c:v128_zip_8
Unexecuted instantiation: cdef_block_avx2.c:v128_zip_8
181
182
0
SIMD_INLINE v128 v128_zip_16(v64 a, v64 b) { return _mm_unpacklo_epi16(b, a); }
Unexecuted instantiation: cdef_block_sse2.c:v128_zip_16
Unexecuted instantiation: cdef_block_ssse3.c:v128_zip_16
Unexecuted instantiation: cdef_block_sse4.c:v128_zip_16
Unexecuted instantiation: cdef_block_avx2.c:v128_zip_16
183
184
0
SIMD_INLINE v128 v128_zip_32(v64 a, v64 b) { return _mm_unpacklo_epi32(b, a); }
Unexecuted instantiation: cdef_block_sse2.c:v128_zip_32
Unexecuted instantiation: cdef_block_ssse3.c:v128_zip_32
Unexecuted instantiation: cdef_block_sse4.c:v128_zip_32
Unexecuted instantiation: cdef_block_avx2.c:v128_zip_32
185
186
0
SIMD_INLINE v128 v128_unziphi_8(v128 a, v128 b) {
187
0
  return _mm_packs_epi16(_mm_srai_epi16(b, 8), _mm_srai_epi16(a, 8));
188
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_unziphi_8
Unexecuted instantiation: cdef_block_ssse3.c:v128_unziphi_8
Unexecuted instantiation: cdef_block_sse4.c:v128_unziphi_8
Unexecuted instantiation: cdef_block_avx2.c:v128_unziphi_8
189
190
0
SIMD_INLINE v128 v128_unziplo_8(v128 a, v128 b) {
191
0
#if defined(__SSSE3__)
192
0
#ifdef __x86_64__
193
0
  v128 order = _mm_cvtsi64_si128(0x0e0c0a0806040200LL);
194
0
#else
195
0
  v128 order = _mm_set_epi32(0, 0, 0x0e0c0a08, 0x06040200);
196
0
#endif
197
0
  return _mm_unpacklo_epi64(_mm_shuffle_epi8(b, order),
198
0
                            _mm_shuffle_epi8(a, order));
199
0
#else
200
0
  return v128_unziphi_8(_mm_slli_si128(a, 1), _mm_slli_si128(b, 1));
201
0
#endif
202
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_unziplo_8
Unexecuted instantiation: cdef_block_ssse3.c:v128_unziplo_8
Unexecuted instantiation: cdef_block_sse4.c:v128_unziplo_8
Unexecuted instantiation: cdef_block_avx2.c:v128_unziplo_8
203
204
0
SIMD_INLINE v128 v128_unziphi_16(v128 a, v128 b) {
205
0
  return _mm_packs_epi32(_mm_srai_epi32(b, 16), _mm_srai_epi32(a, 16));
206
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_unziphi_16
Unexecuted instantiation: cdef_block_ssse3.c:v128_unziphi_16
Unexecuted instantiation: cdef_block_sse4.c:v128_unziphi_16
Unexecuted instantiation: cdef_block_avx2.c:v128_unziphi_16
207
208
0
SIMD_INLINE v128 v128_unziplo_16(v128 a, v128 b) {
209
0
#if defined(__SSSE3__)
210
0
#ifdef __x86_64__
211
0
  v128 order = _mm_cvtsi64_si128(0x0d0c090805040100LL);
212
0
#else
213
0
  v128 order = _mm_set_epi32(0, 0, 0x0d0c0908, 0x05040100);
214
0
#endif
215
0
  return _mm_unpacklo_epi64(_mm_shuffle_epi8(b, order),
216
0
                            _mm_shuffle_epi8(a, order));
217
0
#else
218
0
  return v128_unziphi_16(_mm_slli_si128(a, 2), _mm_slli_si128(b, 2));
219
0
#endif
220
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_unziplo_16
Unexecuted instantiation: cdef_block_ssse3.c:v128_unziplo_16
Unexecuted instantiation: cdef_block_sse4.c:v128_unziplo_16
Unexecuted instantiation: cdef_block_avx2.c:v128_unziplo_16
221
222
0
SIMD_INLINE v128 v128_unziphi_32(v128 a, v128 b) {
223
0
  return _mm_castps_si128(_mm_shuffle_ps(
224
0
      _mm_castsi128_ps(b), _mm_castsi128_ps(a), _MM_SHUFFLE(3, 1, 3, 1)));
225
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_unziphi_32
Unexecuted instantiation: cdef_block_ssse3.c:v128_unziphi_32
Unexecuted instantiation: cdef_block_sse4.c:v128_unziphi_32
Unexecuted instantiation: cdef_block_avx2.c:v128_unziphi_32
226
227
0
SIMD_INLINE v128 v128_unziplo_32(v128 a, v128 b) {
228
0
  return _mm_castps_si128(_mm_shuffle_ps(
229
0
      _mm_castsi128_ps(b), _mm_castsi128_ps(a), _MM_SHUFFLE(2, 0, 2, 0)));
230
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_unziplo_32
Unexecuted instantiation: cdef_block_ssse3.c:v128_unziplo_32
Unexecuted instantiation: cdef_block_sse4.c:v128_unziplo_32
Unexecuted instantiation: cdef_block_avx2.c:v128_unziplo_32
231
232
0
SIMD_INLINE v128 v128_unpack_u8_s16(v64 a) {
233
0
  return _mm_unpacklo_epi8(a, _mm_setzero_si128());
234
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_unpack_u8_s16
Unexecuted instantiation: cdef_block_ssse3.c:v128_unpack_u8_s16
Unexecuted instantiation: cdef_block_sse4.c:v128_unpack_u8_s16
Unexecuted instantiation: cdef_block_avx2.c:v128_unpack_u8_s16
235
236
0
SIMD_INLINE v128 v128_unpacklo_u8_s16(v128 a) {
237
0
  return _mm_unpacklo_epi8(a, _mm_setzero_si128());
238
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_unpacklo_u8_s16
Unexecuted instantiation: cdef_block_ssse3.c:v128_unpacklo_u8_s16
Unexecuted instantiation: cdef_block_sse4.c:v128_unpacklo_u8_s16
Unexecuted instantiation: cdef_block_avx2.c:v128_unpacklo_u8_s16
239
240
0
SIMD_INLINE v128 v128_unpackhi_u8_s16(v128 a) {
241
0
  return _mm_unpackhi_epi8(a, _mm_setzero_si128());
242
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_unpackhi_u8_s16
Unexecuted instantiation: cdef_block_ssse3.c:v128_unpackhi_u8_s16
Unexecuted instantiation: cdef_block_sse4.c:v128_unpackhi_u8_s16
Unexecuted instantiation: cdef_block_avx2.c:v128_unpackhi_u8_s16
243
244
0
SIMD_INLINE v128 v128_unpack_s8_s16(v64 a) {
245
0
  return _mm_srai_epi16(_mm_unpacklo_epi8(a, a), 8);
246
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_unpack_s8_s16
Unexecuted instantiation: cdef_block_ssse3.c:v128_unpack_s8_s16
Unexecuted instantiation: cdef_block_sse4.c:v128_unpack_s8_s16
Unexecuted instantiation: cdef_block_avx2.c:v128_unpack_s8_s16
247
248
0
SIMD_INLINE v128 v128_unpacklo_s8_s16(v128 a) {
249
0
  return _mm_srai_epi16(_mm_unpacklo_epi8(a, a), 8);
250
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_unpacklo_s8_s16
Unexecuted instantiation: cdef_block_ssse3.c:v128_unpacklo_s8_s16
Unexecuted instantiation: cdef_block_sse4.c:v128_unpacklo_s8_s16
Unexecuted instantiation: cdef_block_avx2.c:v128_unpacklo_s8_s16
251
252
0
SIMD_INLINE v128 v128_unpackhi_s8_s16(v128 a) {
253
0
  return _mm_srai_epi16(_mm_unpackhi_epi8(a, a), 8);
254
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_unpackhi_s8_s16
Unexecuted instantiation: cdef_block_ssse3.c:v128_unpackhi_s8_s16
Unexecuted instantiation: cdef_block_sse4.c:v128_unpackhi_s8_s16
Unexecuted instantiation: cdef_block_avx2.c:v128_unpackhi_s8_s16
255
256
3
SIMD_INLINE v128 v128_pack_s32_s16(v128 a, v128 b) {
257
3
  return _mm_packs_epi32(b, a);
258
3
}
Unexecuted instantiation: cdef_block_sse2.c:v128_pack_s32_s16
Unexecuted instantiation: cdef_block_ssse3.c:v128_pack_s32_s16
Unexecuted instantiation: cdef_block_sse4.c:v128_pack_s32_s16
cdef_block_avx2.c:v128_pack_s32_s16
Line
Count
Source
256
3
SIMD_INLINE v128 v128_pack_s32_s16(v128 a, v128 b) {
257
3
  return _mm_packs_epi32(b, a);
258
3
}
259
260
0
SIMD_INLINE v128 v128_pack_s32_u16(v128 a, v128 b) {
261
0
#if defined(__SSE4_1__)
262
0
  return _mm_packus_epi32(b, a);
263
0
#else
264
0
  return v128_from_v64(v64_pack_s32_u16(v128_high_v64(a), v128_low_v64(a)),
265
0
                       v64_pack_s32_u16(v128_high_v64(b), v128_low_v64(b)));
266
0
#endif
267
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_pack_s32_u16
Unexecuted instantiation: cdef_block_ssse3.c:v128_pack_s32_u16
Unexecuted instantiation: cdef_block_sse4.c:v128_pack_s32_u16
Unexecuted instantiation: cdef_block_avx2.c:v128_pack_s32_u16
268
269
0
SIMD_INLINE v128 v128_pack_s16_u8(v128 a, v128 b) {
270
0
  return _mm_packus_epi16(b, a);
271
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_pack_s16_u8
Unexecuted instantiation: cdef_block_ssse3.c:v128_pack_s16_u8
Unexecuted instantiation: cdef_block_sse4.c:v128_pack_s16_u8
Unexecuted instantiation: cdef_block_avx2.c:v128_pack_s16_u8
272
273
3
SIMD_INLINE v128 v128_pack_s16_s8(v128 a, v128 b) {
274
3
  return _mm_packs_epi16(b, a);
275
3
}
Unexecuted instantiation: cdef_block_sse2.c:v128_pack_s16_s8
Unexecuted instantiation: cdef_block_ssse3.c:v128_pack_s16_s8
Unexecuted instantiation: cdef_block_sse4.c:v128_pack_s16_s8
cdef_block_avx2.c:v128_pack_s16_s8
Line
Count
Source
273
3
SIMD_INLINE v128 v128_pack_s16_s8(v128 a, v128 b) {
274
3
  return _mm_packs_epi16(b, a);
275
3
}
276
277
0
SIMD_INLINE v128 v128_unpack_u16_s32(v64 a) {
278
0
  return _mm_unpacklo_epi16(a, _mm_setzero_si128());
279
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_unpack_u16_s32
Unexecuted instantiation: cdef_block_ssse3.c:v128_unpack_u16_s32
Unexecuted instantiation: cdef_block_sse4.c:v128_unpack_u16_s32
Unexecuted instantiation: cdef_block_avx2.c:v128_unpack_u16_s32
280
281
0
SIMD_INLINE v128 v128_unpack_s16_s32(v64 a) {
282
0
  return _mm_srai_epi32(_mm_unpacklo_epi16(a, a), 16);
283
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_unpack_s16_s32
Unexecuted instantiation: cdef_block_ssse3.c:v128_unpack_s16_s32
Unexecuted instantiation: cdef_block_sse4.c:v128_unpack_s16_s32
Unexecuted instantiation: cdef_block_avx2.c:v128_unpack_s16_s32
284
285
0
SIMD_INLINE v128 v128_unpacklo_u16_s32(v128 a) {
286
0
  return _mm_unpacklo_epi16(a, _mm_setzero_si128());
287
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_unpacklo_u16_s32
Unexecuted instantiation: cdef_block_ssse3.c:v128_unpacklo_u16_s32
Unexecuted instantiation: cdef_block_sse4.c:v128_unpacklo_u16_s32
Unexecuted instantiation: cdef_block_avx2.c:v128_unpacklo_u16_s32
288
289
0
SIMD_INLINE v128 v128_unpacklo_s16_s32(v128 a) {
290
0
  return _mm_srai_epi32(_mm_unpacklo_epi16(a, a), 16);
291
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_unpacklo_s16_s32
Unexecuted instantiation: cdef_block_ssse3.c:v128_unpacklo_s16_s32
Unexecuted instantiation: cdef_block_sse4.c:v128_unpacklo_s16_s32
Unexecuted instantiation: cdef_block_avx2.c:v128_unpacklo_s16_s32
292
293
0
SIMD_INLINE v128 v128_unpackhi_u16_s32(v128 a) {
294
0
  return _mm_unpackhi_epi16(a, _mm_setzero_si128());
295
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_unpackhi_u16_s32
Unexecuted instantiation: cdef_block_ssse3.c:v128_unpackhi_u16_s32
Unexecuted instantiation: cdef_block_sse4.c:v128_unpackhi_u16_s32
Unexecuted instantiation: cdef_block_avx2.c:v128_unpackhi_u16_s32
296
297
0
SIMD_INLINE v128 v128_unpackhi_s16_s32(v128 a) {
298
0
  return _mm_srai_epi32(_mm_unpackhi_epi16(a, a), 16);
299
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_unpackhi_s16_s32
Unexecuted instantiation: cdef_block_ssse3.c:v128_unpackhi_s16_s32
Unexecuted instantiation: cdef_block_sse4.c:v128_unpackhi_s16_s32
Unexecuted instantiation: cdef_block_avx2.c:v128_unpackhi_s16_s32
300
301
18
SIMD_INLINE v128 v128_shuffle_8(v128 x, v128 pattern) {
302
#if defined(__SSSE3__)
303
  return _mm_shuffle_epi8(x, pattern);
304
#else
305
  v128 output;
306
  unsigned char *input = (unsigned char *)&x;
307
  unsigned char *index = (unsigned char *)&pattern;
308
  char *selected = (char *)&output;
309
  int counter;
310
311
0
  for (counter = 0; counter < 16; counter++) {
312
0
    selected[counter] = input[index[counter] & 15];
313
0
  }
314
315
  return output;
316
#endif
317
18
}
Unexecuted instantiation: cdef_block_sse2.c:v128_shuffle_8
Unexecuted instantiation: cdef_block_ssse3.c:v128_shuffle_8
Unexecuted instantiation: cdef_block_sse4.c:v128_shuffle_8
cdef_block_avx2.c:v128_shuffle_8
Line
Count
Source
301
18
SIMD_INLINE v128 v128_shuffle_8(v128 x, v128 pattern) {
302
18
#if defined(__SSSE3__)
303
18
  return _mm_shuffle_epi8(x, pattern);
304
#else
305
  v128 output;
306
  unsigned char *input = (unsigned char *)&x;
307
  unsigned char *index = (unsigned char *)&pattern;
308
  char *selected = (char *)&output;
309
  int counter;
310
311
  for (counter = 0; counter < 16; counter++) {
312
    selected[counter] = input[index[counter] & 15];
313
  }
314
315
  return output;
316
#endif
317
18
}
318
319
0
SIMD_INLINE int64_t v128_dotp_su8(v128 a, v128 b) {
320
0
  v128 t1 = _mm_madd_epi16(v128_unpackhi_s8_s16(a), v128_unpackhi_u8_s16(b));
321
0
  v128 t2 = _mm_madd_epi16(v128_unpacklo_s8_s16(a), v128_unpacklo_u8_s16(b));
322
0
  v128 t = v128_add_32(t1, t2);
323
0
  t = v128_add_32(t, _mm_srli_si128(t, 8));
324
0
  t = v128_add_32(t, _mm_srli_si128(t, 4));
325
0
  return (int32_t)v128_low_u32(t);
326
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_dotp_su8
Unexecuted instantiation: cdef_block_ssse3.c:v128_dotp_su8
Unexecuted instantiation: cdef_block_sse4.c:v128_dotp_su8
Unexecuted instantiation: cdef_block_avx2.c:v128_dotp_su8
327
328
0
SIMD_INLINE int64_t v128_dotp_s16(v128 a, v128 b) {
329
0
  v128 r = _mm_madd_epi16(a, b);
330
0
#if defined(__SSE4_1__) && defined(__x86_64__)
331
0
  v128 c = _mm_add_epi64(_mm_cvtepi32_epi64(r),
332
0
                         _mm_cvtepi32_epi64(_mm_srli_si128(r, 8)));
333
0
  return _mm_cvtsi128_si64(_mm_add_epi64(c, _mm_srli_si128(c, 8)));
334
0
#else
335
0
  return (int64_t)_mm_cvtsi128_si32(r) +
336
0
         (int64_t)_mm_cvtsi128_si32(_mm_srli_si128(r, 4)) +
337
0
         (int64_t)_mm_cvtsi128_si32(_mm_srli_si128(r, 8)) +
338
0
         (int64_t)_mm_cvtsi128_si32(_mm_srli_si128(r, 12));
339
0
#endif
340
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_dotp_s16
Unexecuted instantiation: cdef_block_ssse3.c:v128_dotp_s16
Unexecuted instantiation: cdef_block_sse4.c:v128_dotp_s16
Unexecuted instantiation: cdef_block_avx2.c:v128_dotp_s16
341
342
0
SIMD_INLINE uint64_t v128_hadd_u8(v128 a) {
343
0
  v128 t = _mm_sad_epu8(a, _mm_setzero_si128());
344
0
  return v64_low_u32(v128_low_v64(t)) + v64_low_u32(v128_high_v64(t));
345
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_hadd_u8
Unexecuted instantiation: cdef_block_ssse3.c:v128_hadd_u8
Unexecuted instantiation: cdef_block_sse4.c:v128_hadd_u8
Unexecuted instantiation: cdef_block_avx2.c:v128_hadd_u8
346
347
typedef v128 sad128_internal;
348
349
0
SIMD_INLINE sad128_internal v128_sad_u8_init() { return _mm_setzero_si128(); }
Unexecuted instantiation: cdef_block_sse2.c:v128_sad_u8_init
Unexecuted instantiation: cdef_block_ssse3.c:v128_sad_u8_init
Unexecuted instantiation: cdef_block_sse4.c:v128_sad_u8_init
Unexecuted instantiation: cdef_block_avx2.c:v128_sad_u8_init
350
351
/* Implementation dependent return value.  Result must be finalised with
352
   v128_sad_sum().
353
   The result for more than 32 v128_sad_u8() calls is undefined. */
354
0
SIMD_INLINE sad128_internal v128_sad_u8(sad128_internal s, v128 a, v128 b) {
355
0
  return _mm_add_epi64(s, _mm_sad_epu8(a, b));
356
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_sad_u8
Unexecuted instantiation: cdef_block_ssse3.c:v128_sad_u8
Unexecuted instantiation: cdef_block_sse4.c:v128_sad_u8
Unexecuted instantiation: cdef_block_avx2.c:v128_sad_u8
357
358
0
SIMD_INLINE uint32_t v128_sad_u8_sum(sad128_internal s) {
359
0
  return v128_low_u32(_mm_add_epi32(s, _mm_unpackhi_epi64(s, s)));
360
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_sad_u8_sum
Unexecuted instantiation: cdef_block_ssse3.c:v128_sad_u8_sum
Unexecuted instantiation: cdef_block_sse4.c:v128_sad_u8_sum
Unexecuted instantiation: cdef_block_avx2.c:v128_sad_u8_sum
361
362
typedef int32_t ssd128_internal;
363
364
0
SIMD_INLINE ssd128_internal v128_ssd_u8_init() { return 0; }
Unexecuted instantiation: cdef_block_sse2.c:v128_ssd_u8_init
Unexecuted instantiation: cdef_block_ssse3.c:v128_ssd_u8_init
Unexecuted instantiation: cdef_block_sse4.c:v128_ssd_u8_init
Unexecuted instantiation: cdef_block_avx2.c:v128_ssd_u8_init
365
366
/* Implementation dependent return value.  Result must be finalised with
367
 * v128_ssd_sum(). */
368
0
SIMD_INLINE ssd128_internal v128_ssd_u8(ssd128_internal s, v128 a, v128 b) {
369
0
  v128 z = _mm_setzero_si128();
370
0
  v128 l = _mm_sub_epi16(_mm_unpacklo_epi8(a, z), _mm_unpacklo_epi8(b, z));
371
0
  v128 h = _mm_sub_epi16(_mm_unpackhi_epi8(a, z), _mm_unpackhi_epi8(b, z));
372
0
  v128 rl = _mm_madd_epi16(l, l);
373
0
  v128 rh = _mm_madd_epi16(h, h);
374
0
  v128 r = _mm_add_epi32(rl, rh);
375
0
  r = _mm_add_epi32(r, _mm_srli_si128(r, 8));
376
0
  r = _mm_add_epi32(r, _mm_srli_si128(r, 4));
377
0
  return s + _mm_cvtsi128_si32(r);
378
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_ssd_u8
Unexecuted instantiation: cdef_block_ssse3.c:v128_ssd_u8
Unexecuted instantiation: cdef_block_sse4.c:v128_ssd_u8
Unexecuted instantiation: cdef_block_avx2.c:v128_ssd_u8
379
380
0
SIMD_INLINE int32_t v128_ssd_u8_sum(ssd128_internal s) { return s; }
Unexecuted instantiation: cdef_block_sse2.c:v128_ssd_u8_sum
Unexecuted instantiation: cdef_block_ssse3.c:v128_ssd_u8_sum
Unexecuted instantiation: cdef_block_sse4.c:v128_ssd_u8_sum
Unexecuted instantiation: cdef_block_avx2.c:v128_ssd_u8_sum
381
382
0
SIMD_INLINE v128 v128_or(v128 a, v128 b) { return _mm_or_si128(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_or
Unexecuted instantiation: cdef_block_ssse3.c:v128_or
Unexecuted instantiation: cdef_block_sse4.c:v128_or
Unexecuted instantiation: cdef_block_avx2.c:v128_or
383
384
0
SIMD_INLINE v128 v128_xor(v128 a, v128 b) { return _mm_xor_si128(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_xor
Unexecuted instantiation: cdef_block_ssse3.c:v128_xor
Unexecuted instantiation: cdef_block_sse4.c:v128_xor
Unexecuted instantiation: cdef_block_avx2.c:v128_xor
385
386
0
SIMD_INLINE v128 v128_and(v128 a, v128 b) { return _mm_and_si128(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_and
Unexecuted instantiation: cdef_block_ssse3.c:v128_and
Unexecuted instantiation: cdef_block_sse4.c:v128_and
Unexecuted instantiation: cdef_block_avx2.c:v128_and
387
388
0
SIMD_INLINE v128 v128_andn(v128 a, v128 b) { return _mm_andnot_si128(b, a); }
Unexecuted instantiation: cdef_block_sse2.c:v128_andn
Unexecuted instantiation: cdef_block_ssse3.c:v128_andn
Unexecuted instantiation: cdef_block_sse4.c:v128_andn
Unexecuted instantiation: cdef_block_avx2.c:v128_andn
389
390
0
SIMD_INLINE v128 v128_mul_s16(v64 a, v64 b) {
391
0
  v64 lo_bits = v64_mullo_s16(a, b);
392
0
  v64 hi_bits = v64_mulhi_s16(a, b);
393
0
  return v128_from_v64(v64_ziphi_16(hi_bits, lo_bits),
394
0
                       v64_ziplo_16(hi_bits, lo_bits));
395
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_mul_s16
Unexecuted instantiation: cdef_block_ssse3.c:v128_mul_s16
Unexecuted instantiation: cdef_block_sse4.c:v128_mul_s16
Unexecuted instantiation: cdef_block_avx2.c:v128_mul_s16
396
397
0
SIMD_INLINE v128 v128_mullo_s16(v128 a, v128 b) {
398
0
  return _mm_mullo_epi16(a, b);
399
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_mullo_s16
Unexecuted instantiation: cdef_block_ssse3.c:v128_mullo_s16
Unexecuted instantiation: cdef_block_sse4.c:v128_mullo_s16
Unexecuted instantiation: cdef_block_avx2.c:v128_mullo_s16
400
401
0
SIMD_INLINE v128 v128_mulhi_s16(v128 a, v128 b) {
402
0
  return _mm_mulhi_epi16(a, b);
403
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_mulhi_s16
Unexecuted instantiation: cdef_block_ssse3.c:v128_mulhi_s16
Unexecuted instantiation: cdef_block_sse4.c:v128_mulhi_s16
Unexecuted instantiation: cdef_block_avx2.c:v128_mulhi_s16
404
405
42
SIMD_INLINE v128 v128_mullo_s32(v128 a, v128 b) {
406
#if defined(__SSE4_1__)
407
  return _mm_mullo_epi32(a, b);
408
#else
409
  return _mm_unpacklo_epi32(
410
      _mm_shuffle_epi32(_mm_mul_epu32(a, b), 8),
411
      _mm_shuffle_epi32(
412
          _mm_mul_epu32(_mm_srli_si128(a, 4), _mm_srli_si128(b, 4)), 8));
413
#endif
414
42
}
Unexecuted instantiation: cdef_block_sse2.c:v128_mullo_s32
Unexecuted instantiation: cdef_block_ssse3.c:v128_mullo_s32
Unexecuted instantiation: cdef_block_sse4.c:v128_mullo_s32
cdef_block_avx2.c:v128_mullo_s32
Line
Count
Source
405
42
SIMD_INLINE v128 v128_mullo_s32(v128 a, v128 b) {
406
42
#if defined(__SSE4_1__)
407
42
  return _mm_mullo_epi32(a, b);
408
#else
409
  return _mm_unpacklo_epi32(
410
      _mm_shuffle_epi32(_mm_mul_epu32(a, b), 8),
411
      _mm_shuffle_epi32(
412
          _mm_mul_epu32(_mm_srli_si128(a, 4), _mm_srli_si128(b, 4)), 8));
413
#endif
414
42
}
415
416
0
SIMD_INLINE int64_t v128_dotp_s32(v128 a, v128 b) {
417
0
  v128 r = v128_mullo_s32(a, b);
418
0
  return (int64_t)_mm_cvtsi128_si32(r) +
419
0
         (int64_t)_mm_cvtsi128_si32(_mm_srli_si128(r, 4)) +
420
0
         (int64_t)_mm_cvtsi128_si32(_mm_srli_si128(r, 8)) +
421
0
         (int64_t)_mm_cvtsi128_si32(_mm_srli_si128(r, 12));
422
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_dotp_s32
Unexecuted instantiation: cdef_block_ssse3.c:v128_dotp_s32
Unexecuted instantiation: cdef_block_sse4.c:v128_dotp_s32
Unexecuted instantiation: cdef_block_avx2.c:v128_dotp_s32
423
424
42
SIMD_INLINE v128 v128_madd_s16(v128 a, v128 b) { return _mm_madd_epi16(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_madd_s16
Unexecuted instantiation: cdef_block_ssse3.c:v128_madd_s16
Unexecuted instantiation: cdef_block_sse4.c:v128_madd_s16
cdef_block_avx2.c:v128_madd_s16
Line
Count
Source
424
42
SIMD_INLINE v128 v128_madd_s16(v128 a, v128 b) { return _mm_madd_epi16(a, b); }
425
426
0
SIMD_INLINE v128 v128_madd_us8(v128 a, v128 b) {
427
0
#if defined(__SSSE3__)
428
0
  return _mm_maddubs_epi16(a, b);
429
0
#else
430
0
  return _mm_packs_epi32(
431
0
      _mm_madd_epi16(_mm_unpacklo_epi8(a, _mm_setzero_si128()),
432
0
                     _mm_srai_epi16(_mm_unpacklo_epi8(b, b), 8)),
433
0
      _mm_madd_epi16(_mm_unpackhi_epi8(a, _mm_setzero_si128()),
434
0
                     _mm_srai_epi16(_mm_unpackhi_epi8(b, b), 8)));
435
0
#endif
436
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_madd_us8
Unexecuted instantiation: cdef_block_ssse3.c:v128_madd_us8
Unexecuted instantiation: cdef_block_sse4.c:v128_madd_us8
Unexecuted instantiation: cdef_block_avx2.c:v128_madd_us8
437
438
0
SIMD_INLINE v128 v128_padd_u8(v128 a) {
439
0
  return v128_madd_us8(a, _mm_set1_epi8(1));
440
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_padd_u8
Unexecuted instantiation: cdef_block_ssse3.c:v128_padd_u8
Unexecuted instantiation: cdef_block_sse4.c:v128_padd_u8
Unexecuted instantiation: cdef_block_avx2.c:v128_padd_u8
441
442
0
SIMD_INLINE v128 v128_avg_u8(v128 a, v128 b) { return _mm_avg_epu8(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_avg_u8
Unexecuted instantiation: cdef_block_ssse3.c:v128_avg_u8
Unexecuted instantiation: cdef_block_sse4.c:v128_avg_u8
Unexecuted instantiation: cdef_block_avx2.c:v128_avg_u8
443
444
0
SIMD_INLINE v128 v128_rdavg_u8(v128 a, v128 b) {
445
0
  return _mm_sub_epi8(_mm_avg_epu8(a, b),
446
0
                      _mm_and_si128(_mm_xor_si128(a, b), v128_dup_8(1)));
447
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_rdavg_u8
Unexecuted instantiation: cdef_block_ssse3.c:v128_rdavg_u8
Unexecuted instantiation: cdef_block_sse4.c:v128_rdavg_u8
Unexecuted instantiation: cdef_block_avx2.c:v128_rdavg_u8
448
449
0
SIMD_INLINE v128 v128_rdavg_u16(v128 a, v128 b) {
450
0
  return _mm_sub_epi16(_mm_avg_epu16(a, b),
451
0
                       _mm_and_si128(_mm_xor_si128(a, b), v128_dup_16(1)));
452
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_rdavg_u16
Unexecuted instantiation: cdef_block_ssse3.c:v128_rdavg_u16
Unexecuted instantiation: cdef_block_sse4.c:v128_rdavg_u16
Unexecuted instantiation: cdef_block_avx2.c:v128_rdavg_u16
453
454
0
SIMD_INLINE v128 v128_avg_u16(v128 a, v128 b) { return _mm_avg_epu16(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_avg_u16
Unexecuted instantiation: cdef_block_ssse3.c:v128_avg_u16
Unexecuted instantiation: cdef_block_sse4.c:v128_avg_u16
Unexecuted instantiation: cdef_block_avx2.c:v128_avg_u16
455
456
0
SIMD_INLINE v128 v128_min_u8(v128 a, v128 b) { return _mm_min_epu8(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_min_u8
Unexecuted instantiation: cdef_block_ssse3.c:v128_min_u8
Unexecuted instantiation: cdef_block_sse4.c:v128_min_u8
Unexecuted instantiation: cdef_block_avx2.c:v128_min_u8
457
458
0
SIMD_INLINE v128 v128_max_u8(v128 a, v128 b) { return _mm_max_epu8(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_max_u8
Unexecuted instantiation: cdef_block_ssse3.c:v128_max_u8
Unexecuted instantiation: cdef_block_sse4.c:v128_max_u8
Unexecuted instantiation: cdef_block_avx2.c:v128_max_u8
459
460
0
SIMD_INLINE v128 v128_min_s8(v128 a, v128 b) {
461
0
#if defined(__SSE4_1__)
462
0
  return _mm_min_epi8(a, b);
463
0
#else
464
0
  v128 mask = _mm_cmplt_epi8(a, b);
465
0
  return _mm_or_si128(_mm_andnot_si128(mask, b), _mm_and_si128(mask, a));
466
0
#endif
467
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_min_s8
Unexecuted instantiation: cdef_block_ssse3.c:v128_min_s8
Unexecuted instantiation: cdef_block_sse4.c:v128_min_s8
Unexecuted instantiation: cdef_block_avx2.c:v128_min_s8
468
469
3
SIMD_INLINE uint32_t v128_movemask_8(v128 a) { return _mm_movemask_epi8(a); }
Unexecuted instantiation: cdef_block_sse2.c:v128_movemask_8
Unexecuted instantiation: cdef_block_ssse3.c:v128_movemask_8
Unexecuted instantiation: cdef_block_sse4.c:v128_movemask_8
cdef_block_avx2.c:v128_movemask_8
Line
Count
Source
469
3
SIMD_INLINE uint32_t v128_movemask_8(v128 a) { return _mm_movemask_epi8(a); }
470
471
0
SIMD_INLINE v128 v128_blend_8(v128 a, v128 b, v128 c) {
472
0
#if defined(__SSE4_1__)
473
0
  return _mm_blendv_epi8(a, b, c);
474
0
#else
475
0
  c = _mm_cmplt_epi8(c, v128_zero());
476
0
  return v128_or(v128_and(b, c), v128_andn(a, c));
477
0
#endif
478
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_blend_8
Unexecuted instantiation: cdef_block_ssse3.c:v128_blend_8
Unexecuted instantiation: cdef_block_sse4.c:v128_blend_8
Unexecuted instantiation: cdef_block_avx2.c:v128_blend_8
479
480
0
SIMD_INLINE v128 v128_max_s8(v128 a, v128 b) {
481
0
#if defined(__SSE4_1__)
482
0
  return _mm_max_epi8(a, b);
483
0
#else
484
0
  v128 mask = _mm_cmplt_epi8(b, a);
485
0
  return _mm_or_si128(_mm_andnot_si128(mask, b), _mm_and_si128(mask, a));
486
0
#endif
487
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_max_s8
Unexecuted instantiation: cdef_block_ssse3.c:v128_max_s8
Unexecuted instantiation: cdef_block_sse4.c:v128_max_s8
Unexecuted instantiation: cdef_block_avx2.c:v128_max_s8
488
489
0
SIMD_INLINE v128 v128_min_s16(v128 a, v128 b) { return _mm_min_epi16(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_min_s16
Unexecuted instantiation: cdef_block_ssse3.c:v128_min_s16
Unexecuted instantiation: cdef_block_sse4.c:v128_min_s16
Unexecuted instantiation: cdef_block_avx2.c:v128_min_s16
490
491
0
SIMD_INLINE v128 v128_max_s16(v128 a, v128 b) { return _mm_max_epi16(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_max_s16
Unexecuted instantiation: cdef_block_ssse3.c:v128_max_s16
Unexecuted instantiation: cdef_block_sse4.c:v128_max_s16
Unexecuted instantiation: cdef_block_avx2.c:v128_max_s16
492
493
0
SIMD_INLINE v128 v128_min_s32(v128 a, v128 b) {
494
0
#if defined(__SSE4_1__)
495
0
  return _mm_min_epi32(a, b);
496
0
#else
497
0
  v128 mask = _mm_cmplt_epi32(a, b);
498
0
  return _mm_or_si128(_mm_andnot_si128(mask, b), _mm_and_si128(mask, a));
499
0
#endif
500
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_min_s32
Unexecuted instantiation: cdef_block_ssse3.c:v128_min_s32
Unexecuted instantiation: cdef_block_sse4.c:v128_min_s32
Unexecuted instantiation: cdef_block_avx2.c:v128_min_s32
501
502
9
SIMD_INLINE v128 v128_max_s32(v128 a, v128 b) {
503
#if defined(__SSE4_1__)
504
  return _mm_max_epi32(a, b);
505
#else
506
  v128 mask = _mm_cmplt_epi32(b, a);
507
  return _mm_or_si128(_mm_andnot_si128(mask, b), _mm_and_si128(mask, a));
508
#endif
509
9
}
Unexecuted instantiation: cdef_block_sse2.c:v128_max_s32
Unexecuted instantiation: cdef_block_ssse3.c:v128_max_s32
Unexecuted instantiation: cdef_block_sse4.c:v128_max_s32
cdef_block_avx2.c:v128_max_s32
Line
Count
Source
502
9
SIMD_INLINE v128 v128_max_s32(v128 a, v128 b) {
503
9
#if defined(__SSE4_1__)
504
9
  return _mm_max_epi32(a, b);
505
#else
506
  v128 mask = _mm_cmplt_epi32(b, a);
507
  return _mm_or_si128(_mm_andnot_si128(mask, b), _mm_and_si128(mask, a));
508
#endif
509
9
}
510
511
0
SIMD_INLINE v128 v128_cmpgt_s8(v128 a, v128 b) { return _mm_cmpgt_epi8(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_cmpgt_s8
Unexecuted instantiation: cdef_block_ssse3.c:v128_cmpgt_s8
Unexecuted instantiation: cdef_block_sse4.c:v128_cmpgt_s8
Unexecuted instantiation: cdef_block_avx2.c:v128_cmpgt_s8
512
513
0
SIMD_INLINE v128 v128_cmplt_s8(v128 a, v128 b) { return _mm_cmplt_epi8(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_cmplt_s8
Unexecuted instantiation: cdef_block_ssse3.c:v128_cmplt_s8
Unexecuted instantiation: cdef_block_sse4.c:v128_cmplt_s8
Unexecuted instantiation: cdef_block_avx2.c:v128_cmplt_s8
514
515
0
SIMD_INLINE v128 v128_cmpeq_8(v128 a, v128 b) { return _mm_cmpeq_epi8(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_cmpeq_8
Unexecuted instantiation: cdef_block_ssse3.c:v128_cmpeq_8
Unexecuted instantiation: cdef_block_sse4.c:v128_cmpeq_8
Unexecuted instantiation: cdef_block_avx2.c:v128_cmpeq_8
516
517
0
SIMD_INLINE v128 v128_cmpgt_s16(v128 a, v128 b) {
518
0
  return _mm_cmpgt_epi16(a, b);
519
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_cmpgt_s16
Unexecuted instantiation: cdef_block_ssse3.c:v128_cmpgt_s16
Unexecuted instantiation: cdef_block_sse4.c:v128_cmpgt_s16
Unexecuted instantiation: cdef_block_avx2.c:v128_cmpgt_s16
520
521
0
SIMD_INLINE v128 v128_cmplt_s16(v128 a, v128 b) {
522
0
  return _mm_cmplt_epi16(a, b);
523
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_cmplt_s16
Unexecuted instantiation: cdef_block_ssse3.c:v128_cmplt_s16
Unexecuted instantiation: cdef_block_sse4.c:v128_cmplt_s16
Unexecuted instantiation: cdef_block_avx2.c:v128_cmplt_s16
524
525
6
SIMD_INLINE v128 v128_cmpeq_32(v128 a, v128 b) { return _mm_cmpeq_epi32(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_cmpeq_32
Unexecuted instantiation: cdef_block_ssse3.c:v128_cmpeq_32
Unexecuted instantiation: cdef_block_sse4.c:v128_cmpeq_32
cdef_block_avx2.c:v128_cmpeq_32
Line
Count
Source
525
6
SIMD_INLINE v128 v128_cmpeq_32(v128 a, v128 b) { return _mm_cmpeq_epi32(a, b); }
526
527
0
SIMD_INLINE v128 v128_cmpgt_s32(v128 a, v128 b) {
528
0
  return _mm_cmpgt_epi32(a, b);
529
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_cmpgt_s32
Unexecuted instantiation: cdef_block_ssse3.c:v128_cmpgt_s32
Unexecuted instantiation: cdef_block_sse4.c:v128_cmpgt_s32
Unexecuted instantiation: cdef_block_avx2.c:v128_cmpgt_s32
530
531
0
SIMD_INLINE v128 v128_cmplt_s32(v128 a, v128 b) {
532
0
  return _mm_cmplt_epi32(a, b);
533
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_cmplt_s32
Unexecuted instantiation: cdef_block_ssse3.c:v128_cmplt_s32
Unexecuted instantiation: cdef_block_sse4.c:v128_cmplt_s32
Unexecuted instantiation: cdef_block_avx2.c:v128_cmplt_s32
534
535
0
SIMD_INLINE v128 v128_cmpeq_16(v128 a, v128 b) { return _mm_cmpeq_epi16(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v128_cmpeq_16
Unexecuted instantiation: cdef_block_ssse3.c:v128_cmpeq_16
Unexecuted instantiation: cdef_block_sse4.c:v128_cmpeq_16
Unexecuted instantiation: cdef_block_avx2.c:v128_cmpeq_16
536
537
0
SIMD_INLINE v128 v128_shl_8(v128 a, unsigned int c) {
538
0
  return _mm_and_si128(_mm_set1_epi8((uint8_t)(0xff << c)),
539
0
                       _mm_sll_epi16(a, _mm_cvtsi32_si128(c)));
540
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_shl_8
Unexecuted instantiation: cdef_block_ssse3.c:v128_shl_8
Unexecuted instantiation: cdef_block_sse4.c:v128_shl_8
Unexecuted instantiation: cdef_block_avx2.c:v128_shl_8
541
542
0
SIMD_INLINE v128 v128_shr_u8(v128 a, unsigned int c) {
543
0
  return _mm_and_si128(_mm_set1_epi8((char)(0xff >> c)),
544
0
                       _mm_srl_epi16(a, _mm_cvtsi32_si128(c)));
545
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_shr_u8
Unexecuted instantiation: cdef_block_ssse3.c:v128_shr_u8
Unexecuted instantiation: cdef_block_sse4.c:v128_shr_u8
Unexecuted instantiation: cdef_block_avx2.c:v128_shr_u8
546
547
0
SIMD_INLINE v128 v128_shr_s8(v128 a, unsigned int c) {
548
0
  __m128i x = _mm_cvtsi32_si128(c + 8);
549
0
  return _mm_packs_epi16(_mm_sra_epi16(_mm_unpacklo_epi8(a, a), x),
550
0
                         _mm_sra_epi16(_mm_unpackhi_epi8(a, a), x));
551
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_shr_s8
Unexecuted instantiation: cdef_block_ssse3.c:v128_shr_s8
Unexecuted instantiation: cdef_block_sse4.c:v128_shr_s8
Unexecuted instantiation: cdef_block_avx2.c:v128_shr_s8
552
553
0
SIMD_INLINE v128 v128_shl_16(v128 a, unsigned int c) {
554
0
  return _mm_sll_epi16(a, _mm_cvtsi32_si128(c));
555
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_shl_16
Unexecuted instantiation: cdef_block_ssse3.c:v128_shl_16
Unexecuted instantiation: cdef_block_sse4.c:v128_shl_16
Unexecuted instantiation: cdef_block_avx2.c:v128_shl_16
556
557
0
SIMD_INLINE v128 v128_shr_u16(v128 a, unsigned int c) {
558
0
  return _mm_srl_epi16(a, _mm_cvtsi32_si128(c));
559
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_shr_u16
Unexecuted instantiation: cdef_block_ssse3.c:v128_shr_u16
Unexecuted instantiation: cdef_block_sse4.c:v128_shr_u16
Unexecuted instantiation: cdef_block_avx2.c:v128_shr_u16
560
561
24
SIMD_INLINE v128 v128_shr_s16(v128 a, unsigned int c) {
562
24
  return _mm_sra_epi16(a, _mm_cvtsi32_si128(c));
563
24
}
Unexecuted instantiation: cdef_block_sse2.c:v128_shr_s16
Unexecuted instantiation: cdef_block_ssse3.c:v128_shr_s16
Unexecuted instantiation: cdef_block_sse4.c:v128_shr_s16
cdef_block_avx2.c:v128_shr_s16
Line
Count
Source
561
24
SIMD_INLINE v128 v128_shr_s16(v128 a, unsigned int c) {
562
24
  return _mm_sra_epi16(a, _mm_cvtsi32_si128(c));
563
24
}
564
565
0
SIMD_INLINE v128 v128_shl_32(v128 a, unsigned int c) {
566
0
  return _mm_sll_epi32(a, _mm_cvtsi32_si128(c));
567
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_shl_32
Unexecuted instantiation: cdef_block_ssse3.c:v128_shl_32
Unexecuted instantiation: cdef_block_sse4.c:v128_shl_32
Unexecuted instantiation: cdef_block_avx2.c:v128_shl_32
568
569
0
SIMD_INLINE v128 v128_shr_u32(v128 a, unsigned int c) {
570
0
  return _mm_srl_epi32(a, _mm_cvtsi32_si128(c));
571
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_shr_u32
Unexecuted instantiation: cdef_block_ssse3.c:v128_shr_u32
Unexecuted instantiation: cdef_block_sse4.c:v128_shr_u32
Unexecuted instantiation: cdef_block_avx2.c:v128_shr_u32
572
573
0
SIMD_INLINE v128 v128_shr_s32(v128 a, unsigned int c) {
574
0
  return _mm_sra_epi32(a, _mm_cvtsi32_si128(c));
575
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_shr_s32
Unexecuted instantiation: cdef_block_ssse3.c:v128_shr_s32
Unexecuted instantiation: cdef_block_sse4.c:v128_shr_s32
Unexecuted instantiation: cdef_block_avx2.c:v128_shr_s32
576
577
0
SIMD_INLINE v128 v128_shl_64(v128 a, unsigned int c) {
578
0
  return _mm_sll_epi64(a, _mm_cvtsi32_si128(c));
579
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_shl_64
Unexecuted instantiation: cdef_block_ssse3.c:v128_shl_64
Unexecuted instantiation: cdef_block_sse4.c:v128_shl_64
Unexecuted instantiation: cdef_block_avx2.c:v128_shl_64
580
581
0
SIMD_INLINE v128 v128_shr_u64(v128 a, unsigned int c) {
582
0
  return _mm_srl_epi64(a, _mm_cvtsi32_si128(c));
583
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_shr_u64
Unexecuted instantiation: cdef_block_ssse3.c:v128_shr_u64
Unexecuted instantiation: cdef_block_sse4.c:v128_shr_u64
Unexecuted instantiation: cdef_block_avx2.c:v128_shr_u64
584
585
0
SIMD_INLINE v128 v128_shr_s64(v128 a, unsigned int c) {
586
0
  // _mm_sra_epi64 is missing in gcc?
587
0
  return v128_from_64((int64_t)v64_u64(v128_high_v64(a)) >> c,
588
0
                      (int64_t)v64_u64(v128_low_v64(a)) >> c);
589
0
  // return _mm_sra_epi64(a, _mm_cvtsi32_si128(c));
590
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_shr_s64
Unexecuted instantiation: cdef_block_ssse3.c:v128_shr_s64
Unexecuted instantiation: cdef_block_sse4.c:v128_shr_s64
Unexecuted instantiation: cdef_block_avx2.c:v128_shr_s64
591
592
/* These intrinsics require immediate values, so we must use #defines
593
   to enforce that. */
594
90
#define v128_shl_n_byte(a, c) _mm_slli_si128(a, (c) & 127)
595
90
#define v128_shr_n_byte(a, c) _mm_srli_si128(a, (c) & 127)
596
#define v128_shl_n_8(a, c) \
597
  _mm_and_si128(_mm_set1_epi8((uint8_t)(0xff << (c))), _mm_slli_epi16(a, c))
598
#define v128_shr_n_u8(a, c) \
599
  _mm_and_si128(_mm_set1_epi8(0xff >> (c)), _mm_srli_epi16(a, c))
600
#define v128_shr_n_s8(a, c)                                         \
601
  _mm_packs_epi16(_mm_srai_epi16(_mm_unpacklo_epi8(a, a), (c) + 8), \
602
                  _mm_srai_epi16(_mm_unpackhi_epi8(a, a), (c) + 8))
603
#define v128_shl_n_16(a, c) _mm_slli_epi16(a, c)
604
#define v128_shr_n_u16(a, c) _mm_srli_epi16(a, c)
605
0
#define v128_shr_n_s16(a, c) _mm_srai_epi16(a, c)
606
#define v128_shl_n_32(a, c) _mm_slli_epi32(a, c)
607
#define v128_shr_n_u32(a, c) _mm_srli_epi32(a, c)
608
#define v128_shr_n_s32(a, c) _mm_srai_epi32(a, c)
609
#define v128_shl_n_64(a, c) _mm_slli_epi64(a, c)
610
#define v128_shr_n_u64(a, c) _mm_srli_epi64(a, c)
611
#define v128_shr_n_s64(a, c) \
612
  v128_shr_s64(a, c)  // _mm_srai_epi64 missing in gcc?
613
614
typedef v128 sad128_internal_u16;
615
616
0
SIMD_INLINE sad128_internal_u16 v128_sad_u16_init() { return v128_zero(); }
Unexecuted instantiation: cdef_block_sse2.c:v128_sad_u16_init
Unexecuted instantiation: cdef_block_ssse3.c:v128_sad_u16_init
Unexecuted instantiation: cdef_block_sse4.c:v128_sad_u16_init
Unexecuted instantiation: cdef_block_avx2.c:v128_sad_u16_init
617
618
/* Implementation dependent return value.  Result must be finalised with
619
 * v128_sad_u16_sum(). */
620
SIMD_INLINE sad128_internal_u16 v128_sad_u16(sad128_internal_u16 s, v128 a,
621
0
                                             v128 b) {
622
0
#if defined(__SSE4_1__)
623
0
  v128 t = v128_sub_16(_mm_max_epu16(a, b), _mm_min_epu16(a, b));
624
0
#else
625
0
  v128 t = v128_cmplt_s16(v128_xor(a, v128_dup_16(32768)),
626
0
                          v128_xor(b, v128_dup_16(32768)));
627
0
  t = v128_sub_16(v128_or(v128_and(b, t), v128_andn(a, t)),
628
0
                  v128_or(v128_and(a, t), v128_andn(b, t)));
629
0
#endif
630
0
  return v128_add_32(
631
0
      s, v128_add_32(v128_unpackhi_u16_s32(t), v128_unpacklo_u16_s32(t)));
632
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_sad_u16
Unexecuted instantiation: cdef_block_ssse3.c:v128_sad_u16
Unexecuted instantiation: cdef_block_sse4.c:v128_sad_u16
Unexecuted instantiation: cdef_block_avx2.c:v128_sad_u16
633
634
0
SIMD_INLINE uint32_t v128_sad_u16_sum(sad128_internal_u16 s) {
635
0
  return v128_low_u32(s) + v128_low_u32(v128_shr_n_byte(s, 4)) +
636
0
         v128_low_u32(v128_shr_n_byte(s, 8)) +
637
0
         v128_low_u32(v128_shr_n_byte(s, 12));
638
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_sad_u16_sum
Unexecuted instantiation: cdef_block_ssse3.c:v128_sad_u16_sum
Unexecuted instantiation: cdef_block_sse4.c:v128_sad_u16_sum
Unexecuted instantiation: cdef_block_avx2.c:v128_sad_u16_sum
639
640
typedef v128 ssd128_internal_s16;
641
642
0
SIMD_INLINE ssd128_internal_s16 v128_ssd_s16_init() { return v128_zero(); }
Unexecuted instantiation: cdef_block_sse2.c:v128_ssd_s16_init
Unexecuted instantiation: cdef_block_ssse3.c:v128_ssd_s16_init
Unexecuted instantiation: cdef_block_sse4.c:v128_ssd_s16_init
Unexecuted instantiation: cdef_block_avx2.c:v128_ssd_s16_init
643
644
/* Implementation dependent return value.  Result must be finalised with
645
 * v128_ssd_s16_sum(). */
646
SIMD_INLINE ssd128_internal_s16 v128_ssd_s16(ssd128_internal_s16 s, v128 a,
647
0
                                             v128 b) {
648
0
  v128 d = v128_sub_16(a, b);
649
0
  d = v128_madd_s16(d, d);
650
0
  return v128_add_64(s, v128_add_64(_mm_unpackhi_epi32(d, v128_zero()),
651
0
                                    _mm_unpacklo_epi32(d, v128_zero())));
652
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_ssd_s16
Unexecuted instantiation: cdef_block_ssse3.c:v128_ssd_s16
Unexecuted instantiation: cdef_block_sse4.c:v128_ssd_s16
Unexecuted instantiation: cdef_block_avx2.c:v128_ssd_s16
653
654
0
SIMD_INLINE uint64_t v128_ssd_s16_sum(ssd128_internal_s16 s) {
655
0
  return v64_u64(v128_low_v64(s)) + v64_u64(v128_high_v64(s));
656
0
}
Unexecuted instantiation: cdef_block_sse2.c:v128_ssd_s16_sum
Unexecuted instantiation: cdef_block_ssse3.c:v128_ssd_s16_sum
Unexecuted instantiation: cdef_block_sse4.c:v128_ssd_s16_sum
Unexecuted instantiation: cdef_block_avx2.c:v128_ssd_s16_sum
657
658
#endif  // AVM_AVM_DSP_SIMD_V128_INTRINSICS_X86_H_