Coverage Report

Created: 2026-10-28 07:01

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/avm/avm_dsp/simd/v64_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_V64_INTRINSICS_X86_H_
14
#define AVM_AVM_DSP_SIMD_V64_INTRINSICS_X86_H_
15
16
#include <emmintrin.h>
17
#if defined(__SSSE3__)
18
#include <tmmintrin.h>
19
#endif
20
#if defined(__SSE4_1__)
21
#include <smmintrin.h>
22
#endif
23
24
typedef __m128i v64;
25
26
0
SIMD_INLINE uint32_t v64_low_u32(v64 a) {
27
0
  return (uint32_t)_mm_cvtsi128_si32(a);
28
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_low_u32
Unexecuted instantiation: cdef_block_ssse3.c:v64_low_u32
Unexecuted instantiation: cdef_block_sse4.c:v64_low_u32
Unexecuted instantiation: cdef_block_avx2.c:v64_low_u32
29
30
0
SIMD_INLINE uint32_t v64_high_u32(v64 a) {
31
0
  return (uint32_t)_mm_cvtsi128_si32(_mm_srli_si128(a, 4));
32
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_high_u32
Unexecuted instantiation: cdef_block_ssse3.c:v64_high_u32
Unexecuted instantiation: cdef_block_sse4.c:v64_high_u32
Unexecuted instantiation: cdef_block_avx2.c:v64_high_u32
33
34
0
SIMD_INLINE int32_t v64_low_s32(v64 a) { return (int32_t)_mm_cvtsi128_si32(a); }
Unexecuted instantiation: cdef_block_sse2.c:v64_low_s32
Unexecuted instantiation: cdef_block_ssse3.c:v64_low_s32
Unexecuted instantiation: cdef_block_sse4.c:v64_low_s32
Unexecuted instantiation: cdef_block_avx2.c:v64_low_s32
35
36
0
SIMD_INLINE int32_t v64_high_s32(v64 a) {
37
0
  return (int32_t)_mm_cvtsi128_si32(_mm_srli_si128(a, 4));
38
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_high_s32
Unexecuted instantiation: cdef_block_ssse3.c:v64_high_s32
Unexecuted instantiation: cdef_block_sse4.c:v64_high_s32
Unexecuted instantiation: cdef_block_avx2.c:v64_high_s32
39
40
0
SIMD_INLINE v64 v64_from_16(uint16_t a, uint16_t b, uint16_t c, uint16_t d) {
41
0
  return _mm_packs_epi32(
42
0
      _mm_set_epi32((int16_t)a, (int16_t)b, (int16_t)c, (int16_t)d),
43
0
      _mm_setzero_si128());
44
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_from_16
Unexecuted instantiation: cdef_block_ssse3.c:v64_from_16
Unexecuted instantiation: cdef_block_sse4.c:v64_from_16
Unexecuted instantiation: cdef_block_avx2.c:v64_from_16
45
46
0
SIMD_INLINE v64 v64_from_32(uint32_t x, uint32_t y) {
47
0
  return _mm_set_epi32(0, 0, x, y);
48
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_from_32
Unexecuted instantiation: cdef_block_ssse3.c:v64_from_32
Unexecuted instantiation: cdef_block_sse4.c:v64_from_32
Unexecuted instantiation: cdef_block_avx2.c:v64_from_32
49
50
0
SIMD_INLINE v64 v64_from_64(uint64_t x) {
51
0
#ifdef __x86_64__
52
0
  return _mm_cvtsi64_si128(x);
53
0
#else
54
0
  return _mm_set_epi32(0, 0, x >> 32, (uint32_t)x);
55
0
#endif
56
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_from_64
Unexecuted instantiation: cdef_block_ssse3.c:v64_from_64
Unexecuted instantiation: cdef_block_sse4.c:v64_from_64
Unexecuted instantiation: cdef_block_avx2.c:v64_from_64
57
58
0
SIMD_INLINE uint64_t v64_u64(v64 x) {
59
0
  return (uint64_t)v64_low_u32(x) | ((uint64_t)v64_high_u32(x) << 32);
60
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_u64
Unexecuted instantiation: cdef_block_ssse3.c:v64_u64
Unexecuted instantiation: cdef_block_sse4.c:v64_u64
Unexecuted instantiation: cdef_block_avx2.c:v64_u64
61
62
0
SIMD_INLINE uint32_t u32_load_aligned(const void *p) {
63
0
  return *((uint32_t *)p);
64
0
}
Unexecuted instantiation: cdef_block_sse2.c:u32_load_aligned
Unexecuted instantiation: cdef_block_ssse3.c:u32_load_aligned
Unexecuted instantiation: cdef_block_sse4.c:u32_load_aligned
Unexecuted instantiation: cdef_block_avx2.c:u32_load_aligned
65
66
0
SIMD_INLINE uint32_t u32_load_unaligned(const void *p) {
67
0
  return *((uint32_t *)p);
68
0
}
Unexecuted instantiation: cdef_block_sse2.c:u32_load_unaligned
Unexecuted instantiation: cdef_block_ssse3.c:u32_load_unaligned
Unexecuted instantiation: cdef_block_sse4.c:u32_load_unaligned
Unexecuted instantiation: cdef_block_avx2.c:u32_load_unaligned
69
70
0
SIMD_INLINE void u32_store_aligned(void *p, uint32_t a) {
71
0
  *((uint32_t *)p) = a;
72
0
}
Unexecuted instantiation: cdef_block_sse2.c:u32_store_aligned
Unexecuted instantiation: cdef_block_ssse3.c:u32_store_aligned
Unexecuted instantiation: cdef_block_sse4.c:u32_store_aligned
Unexecuted instantiation: cdef_block_avx2.c:u32_store_aligned
73
74
0
SIMD_INLINE void u32_store_unaligned(void *p, uint32_t a) {
75
0
  *((uint32_t *)p) = a;
76
0
}
Unexecuted instantiation: cdef_block_sse2.c:u32_store_unaligned
Unexecuted instantiation: cdef_block_ssse3.c:u32_store_unaligned
Unexecuted instantiation: cdef_block_sse4.c:u32_store_unaligned
Unexecuted instantiation: cdef_block_avx2.c:u32_store_unaligned
77
78
1.21M
SIMD_INLINE v64 v64_load_aligned(const void *p) {
79
1.21M
  return _mm_loadl_epi64((__m128i *)p);
80
1.21M
}
Unexecuted instantiation: cdef_block_sse2.c:v64_load_aligned
Unexecuted instantiation: cdef_block_ssse3.c:v64_load_aligned
Unexecuted instantiation: cdef_block_sse4.c:v64_load_aligned
cdef_block_avx2.c:v64_load_aligned
Line
Count
Source
78
1.21M
SIMD_INLINE v64 v64_load_aligned(const void *p) {
79
1.21M
  return _mm_loadl_epi64((__m128i *)p);
80
1.21M
}
81
82
10.9M
SIMD_INLINE v64 v64_load_unaligned(const void *p) {
83
10.9M
  return _mm_loadl_epi64((__m128i *)p);
84
10.9M
}
Unexecuted instantiation: cdef_block_sse2.c:v64_load_unaligned
Unexecuted instantiation: cdef_block_ssse3.c:v64_load_unaligned
Unexecuted instantiation: cdef_block_sse4.c:v64_load_unaligned
cdef_block_avx2.c:v64_load_unaligned
Line
Count
Source
82
10.9M
SIMD_INLINE v64 v64_load_unaligned(const void *p) {
83
10.9M
  return _mm_loadl_epi64((__m128i *)p);
84
10.9M
}
85
86
1.21M
SIMD_INLINE void v64_store_aligned(void *p, v64 a) {
87
1.21M
  _mm_storel_epi64((__m128i *)p, a);
88
1.21M
}
Unexecuted instantiation: cdef_block_sse2.c:v64_store_aligned
Unexecuted instantiation: cdef_block_ssse3.c:v64_store_aligned
Unexecuted instantiation: cdef_block_sse4.c:v64_store_aligned
cdef_block_avx2.c:v64_store_aligned
Line
Count
Source
86
1.21M
SIMD_INLINE void v64_store_aligned(void *p, v64 a) {
87
1.21M
  _mm_storel_epi64((__m128i *)p, a);
88
1.21M
}
89
90
0
SIMD_INLINE void v64_store_unaligned(void *p, v64 a) {
91
0
  _mm_storel_epi64((__m128i *)p, a);
92
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_store_unaligned
Unexecuted instantiation: cdef_block_ssse3.c:v64_store_unaligned
Unexecuted instantiation: cdef_block_sse4.c:v64_store_unaligned
Unexecuted instantiation: cdef_block_avx2.c:v64_store_unaligned
93
94
#if defined(__OPTIMIZE__) && __OPTIMIZE__ && !defined(__clang__)
95
#define v64_align(a, b, c) \
96
  ((c) ? _mm_srli_si128(_mm_unpacklo_epi64(b, a), (c)) : b)
97
#else
98
#define v64_align(a, b, c)                                                    \
99
  ((c) ? v64_from_64((v64_u64(b) >> (c) * 8) | (v64_u64(a) << (8 - (c)) * 8)) \
100
       : (b))
101
#endif
102
103
608k
SIMD_INLINE v64 v64_zero(void) { return _mm_setzero_si128(); }
Unexecuted instantiation: cdef_block_sse2.c:v64_zero
Unexecuted instantiation: cdef_block_ssse3.c:v64_zero
Unexecuted instantiation: cdef_block_sse4.c:v64_zero
cdef_block_avx2.c:v64_zero
Line
Count
Source
103
608k
SIMD_INLINE v64 v64_zero(void) { return _mm_setzero_si128(); }
104
105
0
SIMD_INLINE v64 v64_dup_8(uint8_t x) { return _mm_set1_epi8(x); }
Unexecuted instantiation: cdef_block_sse2.c:v64_dup_8
Unexecuted instantiation: cdef_block_ssse3.c:v64_dup_8
Unexecuted instantiation: cdef_block_sse4.c:v64_dup_8
Unexecuted instantiation: cdef_block_avx2.c:v64_dup_8
106
107
0
SIMD_INLINE v64 v64_dup_16(uint16_t x) { return _mm_set1_epi16(x); }
Unexecuted instantiation: cdef_block_sse2.c:v64_dup_16
Unexecuted instantiation: cdef_block_ssse3.c:v64_dup_16
Unexecuted instantiation: cdef_block_sse4.c:v64_dup_16
Unexecuted instantiation: cdef_block_avx2.c:v64_dup_16
108
109
0
SIMD_INLINE v64 v64_dup_32(uint32_t x) { return _mm_set1_epi32(x); }
Unexecuted instantiation: cdef_block_sse2.c:v64_dup_32
Unexecuted instantiation: cdef_block_ssse3.c:v64_dup_32
Unexecuted instantiation: cdef_block_sse4.c:v64_dup_32
Unexecuted instantiation: cdef_block_avx2.c:v64_dup_32
110
111
0
SIMD_INLINE v64 v64_add_8(v64 a, v64 b) { return _mm_add_epi8(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_add_8
Unexecuted instantiation: cdef_block_ssse3.c:v64_add_8
Unexecuted instantiation: cdef_block_sse4.c:v64_add_8
Unexecuted instantiation: cdef_block_avx2.c:v64_add_8
112
113
0
SIMD_INLINE v64 v64_add_16(v64 a, v64 b) { return _mm_add_epi16(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_add_16
Unexecuted instantiation: cdef_block_ssse3.c:v64_add_16
Unexecuted instantiation: cdef_block_sse4.c:v64_add_16
Unexecuted instantiation: cdef_block_avx2.c:v64_add_16
114
115
0
SIMD_INLINE v64 v64_sadd_u8(v64 a, v64 b) { return _mm_adds_epu8(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_sadd_u8
Unexecuted instantiation: cdef_block_ssse3.c:v64_sadd_u8
Unexecuted instantiation: cdef_block_sse4.c:v64_sadd_u8
Unexecuted instantiation: cdef_block_avx2.c:v64_sadd_u8
116
117
0
SIMD_INLINE v64 v64_sadd_s8(v64 a, v64 b) { return _mm_adds_epi8(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_sadd_s8
Unexecuted instantiation: cdef_block_ssse3.c:v64_sadd_s8
Unexecuted instantiation: cdef_block_sse4.c:v64_sadd_s8
Unexecuted instantiation: cdef_block_avx2.c:v64_sadd_s8
118
119
0
SIMD_INLINE v64 v64_sadd_s16(v64 a, v64 b) { return _mm_adds_epi16(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_sadd_s16
Unexecuted instantiation: cdef_block_ssse3.c:v64_sadd_s16
Unexecuted instantiation: cdef_block_sse4.c:v64_sadd_s16
Unexecuted instantiation: cdef_block_avx2.c:v64_sadd_s16
120
121
0
SIMD_INLINE v64 v64_add_32(v64 a, v64 b) { return _mm_add_epi32(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_add_32
Unexecuted instantiation: cdef_block_ssse3.c:v64_add_32
Unexecuted instantiation: cdef_block_sse4.c:v64_add_32
Unexecuted instantiation: cdef_block_avx2.c:v64_add_32
122
123
0
SIMD_INLINE v64 v64_sub_8(v64 a, v64 b) { return _mm_sub_epi8(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_sub_8
Unexecuted instantiation: cdef_block_ssse3.c:v64_sub_8
Unexecuted instantiation: cdef_block_sse4.c:v64_sub_8
Unexecuted instantiation: cdef_block_avx2.c:v64_sub_8
124
125
0
SIMD_INLINE v64 v64_ssub_u8(v64 a, v64 b) { return _mm_subs_epu8(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_ssub_u8
Unexecuted instantiation: cdef_block_ssse3.c:v64_ssub_u8
Unexecuted instantiation: cdef_block_sse4.c:v64_ssub_u8
Unexecuted instantiation: cdef_block_avx2.c:v64_ssub_u8
126
127
0
SIMD_INLINE v64 v64_ssub_s8(v64 a, v64 b) { return _mm_subs_epi8(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_ssub_s8
Unexecuted instantiation: cdef_block_ssse3.c:v64_ssub_s8
Unexecuted instantiation: cdef_block_sse4.c:v64_ssub_s8
Unexecuted instantiation: cdef_block_avx2.c:v64_ssub_s8
128
129
0
SIMD_INLINE v64 v64_sub_16(v64 a, v64 b) { return _mm_sub_epi16(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_sub_16
Unexecuted instantiation: cdef_block_ssse3.c:v64_sub_16
Unexecuted instantiation: cdef_block_sse4.c:v64_sub_16
Unexecuted instantiation: cdef_block_avx2.c:v64_sub_16
130
131
0
SIMD_INLINE v64 v64_ssub_s16(v64 a, v64 b) { return _mm_subs_epi16(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_ssub_s16
Unexecuted instantiation: cdef_block_ssse3.c:v64_ssub_s16
Unexecuted instantiation: cdef_block_sse4.c:v64_ssub_s16
Unexecuted instantiation: cdef_block_avx2.c:v64_ssub_s16
132
133
0
SIMD_INLINE v64 v64_ssub_u16(v64 a, v64 b) { return _mm_subs_epu16(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_ssub_u16
Unexecuted instantiation: cdef_block_ssse3.c:v64_ssub_u16
Unexecuted instantiation: cdef_block_sse4.c:v64_ssub_u16
Unexecuted instantiation: cdef_block_avx2.c:v64_ssub_u16
134
135
0
SIMD_INLINE v64 v64_sub_32(v64 a, v64 b) { return _mm_sub_epi32(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_sub_32
Unexecuted instantiation: cdef_block_ssse3.c:v64_sub_32
Unexecuted instantiation: cdef_block_sse4.c:v64_sub_32
Unexecuted instantiation: cdef_block_avx2.c:v64_sub_32
136
137
0
SIMD_INLINE v64 v64_abs_s16(v64 a) {
138
0
#if defined(__SSSE3__)
139
0
  return _mm_abs_epi16(a);
140
0
#else
141
0
  return _mm_max_epi16(a, _mm_sub_epi16(_mm_setzero_si128(), a));
142
0
#endif
143
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_abs_s16
Unexecuted instantiation: cdef_block_ssse3.c:v64_abs_s16
Unexecuted instantiation: cdef_block_sse4.c:v64_abs_s16
Unexecuted instantiation: cdef_block_avx2.c:v64_abs_s16
144
145
0
SIMD_INLINE v64 v64_abs_s8(v64 a) {
146
0
#if defined(__SSSE3__)
147
0
  return _mm_abs_epi8(a);
148
0
#else
149
0
  v64 sign = _mm_cmplt_epi8(a, _mm_setzero_si128());
150
0
  return _mm_xor_si128(sign, _mm_add_epi8(a, sign));
151
0
#endif
152
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_abs_s8
Unexecuted instantiation: cdef_block_ssse3.c:v64_abs_s8
Unexecuted instantiation: cdef_block_sse4.c:v64_abs_s8
Unexecuted instantiation: cdef_block_avx2.c:v64_abs_s8
153
154
0
SIMD_INLINE v64 v64_ziplo_8(v64 a, v64 b) { return _mm_unpacklo_epi8(b, a); }
Unexecuted instantiation: cdef_block_sse2.c:v64_ziplo_8
Unexecuted instantiation: cdef_block_ssse3.c:v64_ziplo_8
Unexecuted instantiation: cdef_block_sse4.c:v64_ziplo_8
Unexecuted instantiation: cdef_block_avx2.c:v64_ziplo_8
155
156
0
SIMD_INLINE v64 v64_ziphi_8(v64 a, v64 b) {
157
0
  return _mm_srli_si128(_mm_unpacklo_epi8(b, a), 8);
158
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_ziphi_8
Unexecuted instantiation: cdef_block_ssse3.c:v64_ziphi_8
Unexecuted instantiation: cdef_block_sse4.c:v64_ziphi_8
Unexecuted instantiation: cdef_block_avx2.c:v64_ziphi_8
159
160
0
SIMD_INLINE v64 v64_ziplo_16(v64 a, v64 b) { return _mm_unpacklo_epi16(b, a); }
Unexecuted instantiation: cdef_block_sse2.c:v64_ziplo_16
Unexecuted instantiation: cdef_block_ssse3.c:v64_ziplo_16
Unexecuted instantiation: cdef_block_sse4.c:v64_ziplo_16
Unexecuted instantiation: cdef_block_avx2.c:v64_ziplo_16
161
162
0
SIMD_INLINE v64 v64_ziphi_16(v64 a, v64 b) {
163
0
  return _mm_srli_si128(_mm_unpacklo_epi16(b, a), 8);
164
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_ziphi_16
Unexecuted instantiation: cdef_block_ssse3.c:v64_ziphi_16
Unexecuted instantiation: cdef_block_sse4.c:v64_ziphi_16
Unexecuted instantiation: cdef_block_avx2.c:v64_ziphi_16
165
166
0
SIMD_INLINE v64 v64_ziplo_32(v64 a, v64 b) { return _mm_unpacklo_epi32(b, a); }
Unexecuted instantiation: cdef_block_sse2.c:v64_ziplo_32
Unexecuted instantiation: cdef_block_ssse3.c:v64_ziplo_32
Unexecuted instantiation: cdef_block_sse4.c:v64_ziplo_32
Unexecuted instantiation: cdef_block_avx2.c:v64_ziplo_32
167
168
0
SIMD_INLINE v64 v64_ziphi_32(v64 a, v64 b) {
169
0
  return _mm_srli_si128(_mm_unpacklo_epi32(b, a), 8);
170
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_ziphi_32
Unexecuted instantiation: cdef_block_ssse3.c:v64_ziphi_32
Unexecuted instantiation: cdef_block_sse4.c:v64_ziphi_32
Unexecuted instantiation: cdef_block_avx2.c:v64_ziphi_32
171
172
0
SIMD_INLINE v64 v64_pack_s32_s16(v64 a, v64 b) {
173
0
  __m128i t = _mm_unpacklo_epi64(b, a);
174
0
  return _mm_packs_epi32(t, t);
175
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_pack_s32_s16
Unexecuted instantiation: cdef_block_ssse3.c:v64_pack_s32_s16
Unexecuted instantiation: cdef_block_sse4.c:v64_pack_s32_s16
Unexecuted instantiation: cdef_block_avx2.c:v64_pack_s32_s16
176
177
0
SIMD_INLINE v64 v64_pack_s32_u16(v64 a, v64 b) {
178
0
#if defined(__SSE4_1__)
179
0
  __m128i t = _mm_unpacklo_epi64(b, a);
180
0
  return _mm_packus_epi32(t, t);
181
0
#else
182
0
  int32_t ah = v64_high_u32(a);
183
0
  int32_t al = v64_low_u32(a);
184
0
  int32_t bh = v64_high_u32(b);
185
0
  int32_t bl = v64_low_u32(b);
186
0
  return v64_from_16(ah > 65535 ? 65535
187
0
                     : ah < 0   ? 0
188
0
                                : ah,
189
0
                     al > 65535 ? 65535
190
0
                     : al < 0   ? 0
191
0
                                : al,
192
0
                     bh > 65535 ? 65535
193
0
                     : bh < 0   ? 0
194
0
                                : bh,
195
0
                     bl > 65535 ? 65535
196
0
                     : bl < 0   ? 0
197
0
                                : bl);
198
0
#endif
199
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_pack_s32_u16
Unexecuted instantiation: cdef_block_ssse3.c:v64_pack_s32_u16
Unexecuted instantiation: cdef_block_sse4.c:v64_pack_s32_u16
Unexecuted instantiation: cdef_block_avx2.c:v64_pack_s32_u16
200
201
0
SIMD_INLINE v64 v64_pack_s16_u8(v64 a, v64 b) {
202
0
  __m128i t = _mm_unpacklo_epi64(b, a);
203
0
  return _mm_packus_epi16(t, t);
204
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_pack_s16_u8
Unexecuted instantiation: cdef_block_ssse3.c:v64_pack_s16_u8
Unexecuted instantiation: cdef_block_sse4.c:v64_pack_s16_u8
Unexecuted instantiation: cdef_block_avx2.c:v64_pack_s16_u8
205
206
0
SIMD_INLINE v64 v64_pack_s16_s8(v64 a, v64 b) {
207
0
  __m128i t = _mm_unpacklo_epi64(b, a);
208
0
  return _mm_packs_epi16(t, t);
209
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_pack_s16_s8
Unexecuted instantiation: cdef_block_ssse3.c:v64_pack_s16_s8
Unexecuted instantiation: cdef_block_sse4.c:v64_pack_s16_s8
Unexecuted instantiation: cdef_block_avx2.c:v64_pack_s16_s8
210
211
0
SIMD_INLINE v64 v64_unziphi_8(v64 a, v64 b) {
212
0
#if defined(__SSSE3__)
213
0
  return _mm_shuffle_epi8(_mm_unpacklo_epi64(b, a),
214
0
                          v64_from_64(0x0f0d0b0907050301LL));
215
0
#else
216
0
  return _mm_packus_epi16(
217
0
      _mm_unpacklo_epi64(_mm_srli_epi16(b, 8), _mm_srli_epi16(a, 8)),
218
0
      _mm_setzero_si128());
219
0
#endif
220
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_unziphi_8
Unexecuted instantiation: cdef_block_ssse3.c:v64_unziphi_8
Unexecuted instantiation: cdef_block_sse4.c:v64_unziphi_8
Unexecuted instantiation: cdef_block_avx2.c:v64_unziphi_8
221
222
0
SIMD_INLINE v64 v64_unziplo_8(v64 a, v64 b) {
223
0
#if defined(__SSSE3__)
224
0
  return _mm_shuffle_epi8(_mm_unpacklo_epi64(b, a),
225
0
                          v64_from_64(0x0e0c0a0806040200LL));
226
0
#else
227
0
  return v64_unziphi_8(_mm_slli_si128(a, 1), _mm_slli_si128(b, 1));
228
0
#endif
229
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_unziplo_8
Unexecuted instantiation: cdef_block_ssse3.c:v64_unziplo_8
Unexecuted instantiation: cdef_block_sse4.c:v64_unziplo_8
Unexecuted instantiation: cdef_block_avx2.c:v64_unziplo_8
230
231
0
SIMD_INLINE v64 v64_unziphi_16(v64 a, v64 b) {
232
0
#if defined(__SSSE3__)
233
0
  return _mm_shuffle_epi8(_mm_unpacklo_epi64(b, a),
234
0
                          v64_from_64(0x0f0e0b0a07060302LL));
235
0
#else
236
0
  return _mm_packs_epi32(
237
0
      _mm_unpacklo_epi64(_mm_srai_epi32(b, 16), _mm_srai_epi32(a, 16)),
238
0
      _mm_setzero_si128());
239
0
#endif
240
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_unziphi_16
Unexecuted instantiation: cdef_block_ssse3.c:v64_unziphi_16
Unexecuted instantiation: cdef_block_sse4.c:v64_unziphi_16
Unexecuted instantiation: cdef_block_avx2.c:v64_unziphi_16
241
242
0
SIMD_INLINE v64 v64_unziplo_16(v64 a, v64 b) {
243
0
#if defined(__SSSE3__)
244
0
  return _mm_shuffle_epi8(_mm_unpacklo_epi64(b, a),
245
0
                          v64_from_64(0x0d0c090805040100LL));
246
0
#else
247
0
  return v64_unziphi_16(_mm_slli_si128(a, 2), _mm_slli_si128(b, 2));
248
0
#endif
249
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_unziplo_16
Unexecuted instantiation: cdef_block_ssse3.c:v64_unziplo_16
Unexecuted instantiation: cdef_block_sse4.c:v64_unziplo_16
Unexecuted instantiation: cdef_block_avx2.c:v64_unziplo_16
250
251
0
SIMD_INLINE v64 v64_unpacklo_u8_s16(v64 a) {
252
0
  return _mm_unpacklo_epi8(a, _mm_setzero_si128());
253
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_unpacklo_u8_s16
Unexecuted instantiation: cdef_block_ssse3.c:v64_unpacklo_u8_s16
Unexecuted instantiation: cdef_block_sse4.c:v64_unpacklo_u8_s16
Unexecuted instantiation: cdef_block_avx2.c:v64_unpacklo_u8_s16
254
255
0
SIMD_INLINE v64 v64_unpackhi_u8_s16(v64 a) {
256
0
  return _mm_srli_si128(_mm_unpacklo_epi8(a, _mm_setzero_si128()), 8);
257
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_unpackhi_u8_s16
Unexecuted instantiation: cdef_block_ssse3.c:v64_unpackhi_u8_s16
Unexecuted instantiation: cdef_block_sse4.c:v64_unpackhi_u8_s16
Unexecuted instantiation: cdef_block_avx2.c:v64_unpackhi_u8_s16
258
259
0
SIMD_INLINE v64 v64_unpacklo_s8_s16(v64 a) {
260
0
  return _mm_srai_epi16(_mm_unpacklo_epi8(a, a), 8);
261
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_unpacklo_s8_s16
Unexecuted instantiation: cdef_block_ssse3.c:v64_unpacklo_s8_s16
Unexecuted instantiation: cdef_block_sse4.c:v64_unpacklo_s8_s16
Unexecuted instantiation: cdef_block_avx2.c:v64_unpacklo_s8_s16
262
263
0
SIMD_INLINE v64 v64_unpackhi_s8_s16(v64 a) {
264
0
  return _mm_srli_si128(_mm_srai_epi16(_mm_unpacklo_epi8(a, a), 8), 8);
265
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_unpackhi_s8_s16
Unexecuted instantiation: cdef_block_ssse3.c:v64_unpackhi_s8_s16
Unexecuted instantiation: cdef_block_sse4.c:v64_unpackhi_s8_s16
Unexecuted instantiation: cdef_block_avx2.c:v64_unpackhi_s8_s16
266
267
0
SIMD_INLINE v64 v64_unpacklo_u16_s32(v64 a) {
268
0
  return _mm_unpacklo_epi16(a, _mm_setzero_si128());
269
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_unpacklo_u16_s32
Unexecuted instantiation: cdef_block_ssse3.c:v64_unpacklo_u16_s32
Unexecuted instantiation: cdef_block_sse4.c:v64_unpacklo_u16_s32
Unexecuted instantiation: cdef_block_avx2.c:v64_unpacklo_u16_s32
270
271
0
SIMD_INLINE v64 v64_unpacklo_s16_s32(v64 a) {
272
0
  return _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), a), 16);
273
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_unpacklo_s16_s32
Unexecuted instantiation: cdef_block_ssse3.c:v64_unpacklo_s16_s32
Unexecuted instantiation: cdef_block_sse4.c:v64_unpacklo_s16_s32
Unexecuted instantiation: cdef_block_avx2.c:v64_unpacklo_s16_s32
274
275
0
SIMD_INLINE v64 v64_unpackhi_u16_s32(v64 a) {
276
0
  return _mm_srli_si128(_mm_unpacklo_epi16(a, _mm_setzero_si128()), 8);
277
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_unpackhi_u16_s32
Unexecuted instantiation: cdef_block_ssse3.c:v64_unpackhi_u16_s32
Unexecuted instantiation: cdef_block_sse4.c:v64_unpackhi_u16_s32
Unexecuted instantiation: cdef_block_avx2.c:v64_unpackhi_u16_s32
278
279
0
SIMD_INLINE v64 v64_unpackhi_s16_s32(v64 a) {
280
0
  return _mm_srli_si128(
281
0
      _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), a), 16), 8);
282
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_unpackhi_s16_s32
Unexecuted instantiation: cdef_block_ssse3.c:v64_unpackhi_s16_s32
Unexecuted instantiation: cdef_block_sse4.c:v64_unpackhi_s16_s32
Unexecuted instantiation: cdef_block_avx2.c:v64_unpackhi_s16_s32
283
284
0
SIMD_INLINE v64 v64_shuffle_8(v64 x, v64 pattern) {
285
0
#if defined(__SSSE3__)
286
0
  return _mm_shuffle_epi8(x, pattern);
287
0
#else
288
0
  v64 output;
289
0
  unsigned char *input = (unsigned char *)&x;
290
0
  unsigned char *index = (unsigned char *)&pattern;
291
0
  char *selected = (char *)&output;
292
0
  int counter;
293
0
294
0
  for (counter = 0; counter < 8; counter++) {
295
0
    selected[counter] = input[index[counter]];
296
0
  }
297
0
298
0
  return output;
299
0
#endif
300
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_shuffle_8
Unexecuted instantiation: cdef_block_ssse3.c:v64_shuffle_8
Unexecuted instantiation: cdef_block_sse4.c:v64_shuffle_8
Unexecuted instantiation: cdef_block_avx2.c:v64_shuffle_8
301
302
0
SIMD_INLINE int64_t v64_dotp_su8(v64 a, v64 b) {
303
0
  __m128i t = _mm_madd_epi16(_mm_srai_epi16(_mm_unpacklo_epi8(a, a), 8),
304
0
                             _mm_unpacklo_epi8(b, _mm_setzero_si128()));
305
0
  t = _mm_add_epi32(t, _mm_srli_si128(t, 8));
306
0
  t = _mm_add_epi32(t, _mm_srli_si128(t, 4));
307
0
  return (int32_t)v64_low_u32(t);
308
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_dotp_su8
Unexecuted instantiation: cdef_block_ssse3.c:v64_dotp_su8
Unexecuted instantiation: cdef_block_sse4.c:v64_dotp_su8
Unexecuted instantiation: cdef_block_avx2.c:v64_dotp_su8
309
310
0
SIMD_INLINE int64_t v64_dotp_s16(v64 a, v64 b) {
311
0
  __m128i r = _mm_madd_epi16(a, b);
312
0
#if defined(__SSE4_1__) && defined(__x86_64__)
313
0
  __m128i x = _mm_cvtepi32_epi64(r);
314
0
  return _mm_cvtsi128_si64(_mm_add_epi64(x, _mm_srli_si128(x, 8)));
315
0
#else
316
0
  return (int64_t)_mm_cvtsi128_si32(_mm_srli_si128(r, 4)) +
317
0
         (int64_t)_mm_cvtsi128_si32(r);
318
0
#endif
319
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_dotp_s16
Unexecuted instantiation: cdef_block_ssse3.c:v64_dotp_s16
Unexecuted instantiation: cdef_block_sse4.c:v64_dotp_s16
Unexecuted instantiation: cdef_block_avx2.c:v64_dotp_s16
320
321
0
SIMD_INLINE uint64_t v64_hadd_u8(v64 a) {
322
0
  return v64_low_u32(_mm_sad_epu8(a, _mm_setzero_si128()));
323
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_hadd_u8
Unexecuted instantiation: cdef_block_ssse3.c:v64_hadd_u8
Unexecuted instantiation: cdef_block_sse4.c:v64_hadd_u8
Unexecuted instantiation: cdef_block_avx2.c:v64_hadd_u8
324
325
0
SIMD_INLINE int64_t v64_hadd_s16(v64 a) {
326
0
  return v64_dotp_s16(a, v64_dup_16(1));
327
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_hadd_s16
Unexecuted instantiation: cdef_block_ssse3.c:v64_hadd_s16
Unexecuted instantiation: cdef_block_sse4.c:v64_hadd_s16
Unexecuted instantiation: cdef_block_avx2.c:v64_hadd_s16
328
329
typedef v64 sad64_internal;
330
331
0
SIMD_INLINE sad64_internal v64_sad_u8_init(void) { return _mm_setzero_si128(); }
Unexecuted instantiation: cdef_block_sse2.c:v64_sad_u8_init
Unexecuted instantiation: cdef_block_ssse3.c:v64_sad_u8_init
Unexecuted instantiation: cdef_block_sse4.c:v64_sad_u8_init
Unexecuted instantiation: cdef_block_avx2.c:v64_sad_u8_init
332
333
/* Implementation dependent return value.  Result must be finalised with
334
   v64_sad_u8_sum().
335
   The result for more than 32 v64_sad_u8() calls is undefined. */
336
0
SIMD_INLINE sad64_internal v64_sad_u8(sad64_internal s, v64 a, v64 b) {
337
0
  return _mm_add_epi64(s, _mm_sad_epu8(a, b));
338
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_sad_u8
Unexecuted instantiation: cdef_block_ssse3.c:v64_sad_u8
Unexecuted instantiation: cdef_block_sse4.c:v64_sad_u8
Unexecuted instantiation: cdef_block_avx2.c:v64_sad_u8
339
340
0
SIMD_INLINE uint32_t v64_sad_u8_sum(sad64_internal s) { return v64_low_u32(s); }
Unexecuted instantiation: cdef_block_sse2.c:v64_sad_u8_sum
Unexecuted instantiation: cdef_block_ssse3.c:v64_sad_u8_sum
Unexecuted instantiation: cdef_block_sse4.c:v64_sad_u8_sum
Unexecuted instantiation: cdef_block_avx2.c:v64_sad_u8_sum
341
342
typedef v64 ssd64_internal;
343
344
0
SIMD_INLINE ssd64_internal v64_ssd_u8_init(void) { return _mm_setzero_si128(); }
Unexecuted instantiation: cdef_block_sse2.c:v64_ssd_u8_init
Unexecuted instantiation: cdef_block_ssse3.c:v64_ssd_u8_init
Unexecuted instantiation: cdef_block_sse4.c:v64_ssd_u8_init
Unexecuted instantiation: cdef_block_avx2.c:v64_ssd_u8_init
345
346
/* Implementation dependent return value.  Result must be finalised with
347
 * v64_ssd_u8_sum(). */
348
0
SIMD_INLINE ssd64_internal v64_ssd_u8(ssd64_internal s, v64 a, v64 b) {
349
0
  v64 l = v64_sub_16(v64_ziplo_8(v64_zero(), a), v64_ziplo_8(v64_zero(), b));
350
0
  v64 h = v64_sub_16(v64_ziphi_8(v64_zero(), a), v64_ziphi_8(v64_zero(), b));
351
0
  v64 r = v64_add_32(_mm_madd_epi16(l, l), _mm_madd_epi16(h, h));
352
0
  return _mm_add_epi64(
353
0
      s, v64_ziplo_32(v64_zero(), _mm_add_epi32(r, _mm_srli_si128(r, 4))));
354
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_ssd_u8
Unexecuted instantiation: cdef_block_ssse3.c:v64_ssd_u8
Unexecuted instantiation: cdef_block_sse4.c:v64_ssd_u8
Unexecuted instantiation: cdef_block_avx2.c:v64_ssd_u8
355
356
0
SIMD_INLINE uint32_t v64_ssd_u8_sum(sad64_internal s) { return v64_low_u32(s); }
Unexecuted instantiation: cdef_block_sse2.c:v64_ssd_u8_sum
Unexecuted instantiation: cdef_block_ssse3.c:v64_ssd_u8_sum
Unexecuted instantiation: cdef_block_sse4.c:v64_ssd_u8_sum
Unexecuted instantiation: cdef_block_avx2.c:v64_ssd_u8_sum
357
358
0
SIMD_INLINE v64 v64_or(v64 a, v64 b) { return _mm_or_si128(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_or
Unexecuted instantiation: cdef_block_ssse3.c:v64_or
Unexecuted instantiation: cdef_block_sse4.c:v64_or
Unexecuted instantiation: cdef_block_avx2.c:v64_or
359
360
0
SIMD_INLINE v64 v64_xor(v64 a, v64 b) { return _mm_xor_si128(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_xor
Unexecuted instantiation: cdef_block_ssse3.c:v64_xor
Unexecuted instantiation: cdef_block_sse4.c:v64_xor
Unexecuted instantiation: cdef_block_avx2.c:v64_xor
361
362
0
SIMD_INLINE v64 v64_and(v64 a, v64 b) { return _mm_and_si128(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_and
Unexecuted instantiation: cdef_block_ssse3.c:v64_and
Unexecuted instantiation: cdef_block_sse4.c:v64_and
Unexecuted instantiation: cdef_block_avx2.c:v64_and
363
364
0
SIMD_INLINE v64 v64_andn(v64 a, v64 b) { return _mm_andnot_si128(b, a); }
Unexecuted instantiation: cdef_block_sse2.c:v64_andn
Unexecuted instantiation: cdef_block_ssse3.c:v64_andn
Unexecuted instantiation: cdef_block_sse4.c:v64_andn
Unexecuted instantiation: cdef_block_avx2.c:v64_andn
365
366
0
SIMD_INLINE v64 v64_mullo_s16(v64 a, v64 b) { return _mm_mullo_epi16(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_mullo_s16
Unexecuted instantiation: cdef_block_ssse3.c:v64_mullo_s16
Unexecuted instantiation: cdef_block_sse4.c:v64_mullo_s16
Unexecuted instantiation: cdef_block_avx2.c:v64_mullo_s16
367
368
0
SIMD_INLINE v64 v64_mulhi_s16(v64 a, v64 b) { return _mm_mulhi_epi16(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_mulhi_s16
Unexecuted instantiation: cdef_block_ssse3.c:v64_mulhi_s16
Unexecuted instantiation: cdef_block_sse4.c:v64_mulhi_s16
Unexecuted instantiation: cdef_block_avx2.c:v64_mulhi_s16
369
370
0
SIMD_INLINE v64 v64_mullo_s32(v64 a, v64 b) {
371
0
#if defined(__SSE4_1__)
372
0
  return _mm_mullo_epi32(a, b);
373
0
#else
374
0
  return _mm_unpacklo_epi32(
375
0
      _mm_mul_epu32(a, b),
376
0
      _mm_mul_epu32(_mm_srli_si128(a, 4), _mm_srli_si128(b, 4)));
377
0
#endif
378
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_mullo_s32
Unexecuted instantiation: cdef_block_ssse3.c:v64_mullo_s32
Unexecuted instantiation: cdef_block_sse4.c:v64_mullo_s32
Unexecuted instantiation: cdef_block_avx2.c:v64_mullo_s32
379
380
0
SIMD_INLINE v64 v64_madd_s16(v64 a, v64 b) { return _mm_madd_epi16(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_madd_s16
Unexecuted instantiation: cdef_block_ssse3.c:v64_madd_s16
Unexecuted instantiation: cdef_block_sse4.c:v64_madd_s16
Unexecuted instantiation: cdef_block_avx2.c:v64_madd_s16
381
382
0
SIMD_INLINE v64 v64_madd_us8(v64 a, v64 b) {
383
0
#if defined(__SSSE3__)
384
0
  return _mm_maddubs_epi16(a, b);
385
0
#else
386
0
  __m128i t = _mm_madd_epi16(_mm_unpacklo_epi8(a, _mm_setzero_si128()),
387
0
                             _mm_srai_epi16(_mm_unpacklo_epi8(b, b), 8));
388
0
  return _mm_packs_epi32(t, t);
389
0
#endif
390
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_madd_us8
Unexecuted instantiation: cdef_block_ssse3.c:v64_madd_us8
Unexecuted instantiation: cdef_block_sse4.c:v64_madd_us8
Unexecuted instantiation: cdef_block_avx2.c:v64_madd_us8
391
392
0
SIMD_INLINE v64 v64_avg_u8(v64 a, v64 b) { return _mm_avg_epu8(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_avg_u8
Unexecuted instantiation: cdef_block_ssse3.c:v64_avg_u8
Unexecuted instantiation: cdef_block_sse4.c:v64_avg_u8
Unexecuted instantiation: cdef_block_avx2.c:v64_avg_u8
393
394
0
SIMD_INLINE v64 v64_rdavg_u8(v64 a, v64 b) {
395
0
  return _mm_sub_epi8(_mm_avg_epu8(a, b),
396
0
                      _mm_and_si128(_mm_xor_si128(a, b), v64_dup_8(1)));
397
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_rdavg_u8
Unexecuted instantiation: cdef_block_ssse3.c:v64_rdavg_u8
Unexecuted instantiation: cdef_block_sse4.c:v64_rdavg_u8
Unexecuted instantiation: cdef_block_avx2.c:v64_rdavg_u8
398
399
0
SIMD_INLINE v64 v64_rdavg_u16(v64 a, v64 b) {
400
0
  return _mm_sub_epi16(_mm_avg_epu16(a, b),
401
0
                       _mm_and_si128(_mm_xor_si128(a, b), v64_dup_16(1)));
402
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_rdavg_u16
Unexecuted instantiation: cdef_block_ssse3.c:v64_rdavg_u16
Unexecuted instantiation: cdef_block_sse4.c:v64_rdavg_u16
Unexecuted instantiation: cdef_block_avx2.c:v64_rdavg_u16
403
404
0
SIMD_INLINE v64 v64_avg_u16(v64 a, v64 b) { return _mm_avg_epu16(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_avg_u16
Unexecuted instantiation: cdef_block_ssse3.c:v64_avg_u16
Unexecuted instantiation: cdef_block_sse4.c:v64_avg_u16
Unexecuted instantiation: cdef_block_avx2.c:v64_avg_u16
405
406
0
SIMD_INLINE v64 v64_min_u8(v64 a, v64 b) { return _mm_min_epu8(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_min_u8
Unexecuted instantiation: cdef_block_ssse3.c:v64_min_u8
Unexecuted instantiation: cdef_block_sse4.c:v64_min_u8
Unexecuted instantiation: cdef_block_avx2.c:v64_min_u8
407
408
0
SIMD_INLINE v64 v64_max_u8(v64 a, v64 b) { return _mm_max_epu8(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_max_u8
Unexecuted instantiation: cdef_block_ssse3.c:v64_max_u8
Unexecuted instantiation: cdef_block_sse4.c:v64_max_u8
Unexecuted instantiation: cdef_block_avx2.c:v64_max_u8
409
410
0
SIMD_INLINE v64 v64_min_s8(v64 a, v64 b) {
411
0
#if defined(__SSE4_1__)
412
0
  return _mm_min_epi8(a, b);
413
0
#else
414
0
  v64 mask = _mm_cmplt_epi8(a, b);
415
0
  return _mm_or_si128(_mm_andnot_si128(mask, b), _mm_and_si128(mask, a));
416
0
#endif
417
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_min_s8
Unexecuted instantiation: cdef_block_ssse3.c:v64_min_s8
Unexecuted instantiation: cdef_block_sse4.c:v64_min_s8
Unexecuted instantiation: cdef_block_avx2.c:v64_min_s8
418
419
0
SIMD_INLINE v64 v64_max_s8(v64 a, v64 b) {
420
0
#if defined(__SSE4_1__)
421
0
  return _mm_max_epi8(a, b);
422
0
#else
423
0
  v64 mask = _mm_cmplt_epi8(b, a);
424
0
  return _mm_or_si128(_mm_andnot_si128(mask, b), _mm_and_si128(mask, a));
425
0
#endif
426
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_max_s8
Unexecuted instantiation: cdef_block_ssse3.c:v64_max_s8
Unexecuted instantiation: cdef_block_sse4.c:v64_max_s8
Unexecuted instantiation: cdef_block_avx2.c:v64_max_s8
427
428
0
SIMD_INLINE v64 v64_min_s16(v64 a, v64 b) { return _mm_min_epi16(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_min_s16
Unexecuted instantiation: cdef_block_ssse3.c:v64_min_s16
Unexecuted instantiation: cdef_block_sse4.c:v64_min_s16
Unexecuted instantiation: cdef_block_avx2.c:v64_min_s16
429
430
0
SIMD_INLINE v64 v64_max_s16(v64 a, v64 b) { return _mm_max_epi16(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_max_s16
Unexecuted instantiation: cdef_block_ssse3.c:v64_max_s16
Unexecuted instantiation: cdef_block_sse4.c:v64_max_s16
Unexecuted instantiation: cdef_block_avx2.c:v64_max_s16
431
432
0
SIMD_INLINE v64 v64_cmpgt_s8(v64 a, v64 b) { return _mm_cmpgt_epi8(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_cmpgt_s8
Unexecuted instantiation: cdef_block_ssse3.c:v64_cmpgt_s8
Unexecuted instantiation: cdef_block_sse4.c:v64_cmpgt_s8
Unexecuted instantiation: cdef_block_avx2.c:v64_cmpgt_s8
433
434
0
SIMD_INLINE v64 v64_cmplt_s8(v64 a, v64 b) { return _mm_cmplt_epi8(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_cmplt_s8
Unexecuted instantiation: cdef_block_ssse3.c:v64_cmplt_s8
Unexecuted instantiation: cdef_block_sse4.c:v64_cmplt_s8
Unexecuted instantiation: cdef_block_avx2.c:v64_cmplt_s8
435
436
0
SIMD_INLINE v64 v64_cmpeq_8(v64 a, v64 b) { return _mm_cmpeq_epi8(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_cmpeq_8
Unexecuted instantiation: cdef_block_ssse3.c:v64_cmpeq_8
Unexecuted instantiation: cdef_block_sse4.c:v64_cmpeq_8
Unexecuted instantiation: cdef_block_avx2.c:v64_cmpeq_8
437
438
0
SIMD_INLINE v64 v64_cmpgt_s16(v64 a, v64 b) { return _mm_cmpgt_epi16(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_cmpgt_s16
Unexecuted instantiation: cdef_block_ssse3.c:v64_cmpgt_s16
Unexecuted instantiation: cdef_block_sse4.c:v64_cmpgt_s16
Unexecuted instantiation: cdef_block_avx2.c:v64_cmpgt_s16
439
440
0
SIMD_INLINE v64 v64_cmplt_s16(v64 a, v64 b) { return _mm_cmplt_epi16(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_cmplt_s16
Unexecuted instantiation: cdef_block_ssse3.c:v64_cmplt_s16
Unexecuted instantiation: cdef_block_sse4.c:v64_cmplt_s16
Unexecuted instantiation: cdef_block_avx2.c:v64_cmplt_s16
441
442
0
SIMD_INLINE v64 v64_cmpeq_16(v64 a, v64 b) { return _mm_cmpeq_epi16(a, b); }
Unexecuted instantiation: cdef_block_sse2.c:v64_cmpeq_16
Unexecuted instantiation: cdef_block_ssse3.c:v64_cmpeq_16
Unexecuted instantiation: cdef_block_sse4.c:v64_cmpeq_16
Unexecuted instantiation: cdef_block_avx2.c:v64_cmpeq_16
443
444
0
SIMD_INLINE v64 v64_shl_8(v64 a, unsigned int c) {
445
0
  return _mm_and_si128(_mm_set1_epi8((uint8_t)(0xff << c)),
446
0
                       _mm_sll_epi16(a, _mm_cvtsi32_si128(c)));
447
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_shl_8
Unexecuted instantiation: cdef_block_ssse3.c:v64_shl_8
Unexecuted instantiation: cdef_block_sse4.c:v64_shl_8
Unexecuted instantiation: cdef_block_avx2.c:v64_shl_8
448
449
0
SIMD_INLINE v64 v64_shr_u8(v64 a, unsigned int c) {
450
0
  return _mm_and_si128(_mm_set1_epi8((char)(0xff >> c)),
451
0
                       _mm_srl_epi16(a, _mm_cvtsi32_si128(c)));
452
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_shr_u8
Unexecuted instantiation: cdef_block_ssse3.c:v64_shr_u8
Unexecuted instantiation: cdef_block_sse4.c:v64_shr_u8
Unexecuted instantiation: cdef_block_avx2.c:v64_shr_u8
453
454
0
SIMD_INLINE v64 v64_shr_s8(v64 a, unsigned int c) {
455
0
  return _mm_packs_epi16(
456
0
      _mm_sra_epi16(_mm_unpacklo_epi8(a, a), _mm_cvtsi32_si128(c + 8)), a);
457
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_shr_s8
Unexecuted instantiation: cdef_block_ssse3.c:v64_shr_s8
Unexecuted instantiation: cdef_block_sse4.c:v64_shr_s8
Unexecuted instantiation: cdef_block_avx2.c:v64_shr_s8
458
459
0
SIMD_INLINE v64 v64_shl_16(v64 a, unsigned int c) {
460
0
  return _mm_sll_epi16(a, _mm_cvtsi32_si128(c));
461
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_shl_16
Unexecuted instantiation: cdef_block_ssse3.c:v64_shl_16
Unexecuted instantiation: cdef_block_sse4.c:v64_shl_16
Unexecuted instantiation: cdef_block_avx2.c:v64_shl_16
462
463
0
SIMD_INLINE v64 v64_shr_u16(v64 a, unsigned int c) {
464
0
  return _mm_srl_epi16(a, _mm_cvtsi32_si128(c));
465
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_shr_u16
Unexecuted instantiation: cdef_block_ssse3.c:v64_shr_u16
Unexecuted instantiation: cdef_block_sse4.c:v64_shr_u16
Unexecuted instantiation: cdef_block_avx2.c:v64_shr_u16
466
467
0
SIMD_INLINE v64 v64_shr_s16(v64 a, unsigned int c) {
468
0
  return _mm_sra_epi16(a, _mm_cvtsi32_si128(c));
469
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_shr_s16
Unexecuted instantiation: cdef_block_ssse3.c:v64_shr_s16
Unexecuted instantiation: cdef_block_sse4.c:v64_shr_s16
Unexecuted instantiation: cdef_block_avx2.c:v64_shr_s16
470
471
0
SIMD_INLINE v64 v64_shl_32(v64 a, unsigned int c) {
472
0
  return _mm_sll_epi32(a, _mm_cvtsi32_si128(c));
473
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_shl_32
Unexecuted instantiation: cdef_block_ssse3.c:v64_shl_32
Unexecuted instantiation: cdef_block_sse4.c:v64_shl_32
Unexecuted instantiation: cdef_block_avx2.c:v64_shl_32
474
475
0
SIMD_INLINE v64 v64_shr_u32(v64 a, unsigned int c) {
476
0
  return _mm_srl_epi32(a, _mm_cvtsi32_si128(c));
477
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_shr_u32
Unexecuted instantiation: cdef_block_ssse3.c:v64_shr_u32
Unexecuted instantiation: cdef_block_sse4.c:v64_shr_u32
Unexecuted instantiation: cdef_block_avx2.c:v64_shr_u32
478
479
0
SIMD_INLINE v64 v64_shr_s32(v64 a, unsigned int c) {
480
0
  return _mm_sra_epi32(a, _mm_cvtsi32_si128(c));
481
0
}
Unexecuted instantiation: cdef_block_sse2.c:v64_shr_s32
Unexecuted instantiation: cdef_block_ssse3.c:v64_shr_s32
Unexecuted instantiation: cdef_block_sse4.c:v64_shr_s32
Unexecuted instantiation: cdef_block_avx2.c:v64_shr_s32
482
483
/* These intrinsics require immediate values, so we must use #defines
484
   to enforce that. */
485
#define v64_shl_n_byte(a, c) _mm_slli_si128(a, c)
486
#define v64_shr_n_byte(a, c) _mm_srli_si128(_mm_unpacklo_epi64(a, a), c + 8)
487
#define v64_shl_n_8(a, c) \
488
  _mm_and_si128(_mm_set1_epi8((uint8_t)(0xff << (c))), _mm_slli_epi16(a, c))
489
#define v64_shr_n_u8(a, c) \
490
  _mm_and_si128(_mm_set1_epi8(0xff >> (c)), _mm_srli_epi16(a, c))
491
#define v64_shr_n_s8(a, c) \
492
  _mm_packs_epi16(_mm_srai_epi16(_mm_unpacklo_epi8(a, a), (c) + 8), a)
493
#define v64_shl_n_16(a, c) _mm_slli_epi16(a, c)
494
#define v64_shr_n_u16(a, c) _mm_srli_epi16(a, c)
495
#define v64_shr_n_s16(a, c) _mm_srai_epi16(a, c)
496
#define v64_shl_n_32(a, c) _mm_slli_epi32(a, c)
497
#define v64_shr_n_u32(a, c) _mm_srli_epi32(a, c)
498
#define v64_shr_n_s32(a, c) _mm_srai_epi32(a, c)
499
500
#endif  // AVM_AVM_DSP_SIMD_V64_INTRINSICS_X86_H_