annotate src/opus-1.3/celt/x86/pitch_sse.h @ 169:223a55898ab9 tip default

Add null config files
author Chris Cannam <cannam@all-day-breakfast.com>
date Mon, 02 Mar 2020 14:03:47 +0000
parents 4664ac0c1032
children
rev   line source
cannam@154 1 /* Copyright (c) 2013 Jean-Marc Valin and John Ridges
cannam@154 2 Copyright (c) 2014, Cisco Systems, INC MingXiang WeiZhou MinPeng YanWang*/
cannam@154 3 /**
cannam@154 4 @file pitch_sse.h
cannam@154 5 @brief Pitch analysis
cannam@154 6 */
cannam@154 7
cannam@154 8 /*
cannam@154 9 Redistribution and use in source and binary forms, with or without
cannam@154 10 modification, are permitted provided that the following conditions
cannam@154 11 are met:
cannam@154 12
cannam@154 13 - Redistributions of source code must retain the above copyright
cannam@154 14 notice, this list of conditions and the following disclaimer.
cannam@154 15
cannam@154 16 - Redistributions in binary form must reproduce the above copyright
cannam@154 17 notice, this list of conditions and the following disclaimer in the
cannam@154 18 documentation and/or other materials provided with the distribution.
cannam@154 19
cannam@154 20 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
cannam@154 21 ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
cannam@154 22 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
cannam@154 23 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
cannam@154 24 OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
cannam@154 25 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
cannam@154 26 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
cannam@154 27 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
cannam@154 28 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
cannam@154 29 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
cannam@154 30 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
cannam@154 31 */
cannam@154 32
cannam@154 33 #ifndef PITCH_SSE_H
cannam@154 34 #define PITCH_SSE_H
cannam@154 35
cannam@154 36 #if defined(HAVE_CONFIG_H)
cannam@154 37 #include "config.h"
cannam@154 38 #endif
cannam@154 39
cannam@154 40 #if defined(OPUS_X86_MAY_HAVE_SSE4_1) && defined(FIXED_POINT)
cannam@154 41 void xcorr_kernel_sse4_1(
cannam@154 42 const opus_int16 *x,
cannam@154 43 const opus_int16 *y,
cannam@154 44 opus_val32 sum[4],
cannam@154 45 int len);
cannam@154 46 #endif
cannam@154 47
cannam@154 48 #if defined(OPUS_X86_MAY_HAVE_SSE) && !defined(FIXED_POINT)
cannam@154 49 void xcorr_kernel_sse(
cannam@154 50 const opus_val16 *x,
cannam@154 51 const opus_val16 *y,
cannam@154 52 opus_val32 sum[4],
cannam@154 53 int len);
cannam@154 54 #endif
cannam@154 55
cannam@154 56 #if defined(OPUS_X86_PRESUME_SSE4_1) && defined(FIXED_POINT)
cannam@154 57 #define OVERRIDE_XCORR_KERNEL
cannam@154 58 #define xcorr_kernel(x, y, sum, len, arch) \
cannam@154 59 ((void)arch, xcorr_kernel_sse4_1(x, y, sum, len))
cannam@154 60
cannam@154 61 #elif defined(OPUS_X86_PRESUME_SSE) && !defined(FIXED_POINT)
cannam@154 62 #define OVERRIDE_XCORR_KERNEL
cannam@154 63 #define xcorr_kernel(x, y, sum, len, arch) \
cannam@154 64 ((void)arch, xcorr_kernel_sse(x, y, sum, len))
cannam@154 65
cannam@154 66 #elif (defined(OPUS_X86_MAY_HAVE_SSE4_1) && defined(FIXED_POINT)) || (defined(OPUS_X86_MAY_HAVE_SSE) && !defined(FIXED_POINT))
cannam@154 67
cannam@154 68 extern void (*const XCORR_KERNEL_IMPL[OPUS_ARCHMASK + 1])(
cannam@154 69 const opus_val16 *x,
cannam@154 70 const opus_val16 *y,
cannam@154 71 opus_val32 sum[4],
cannam@154 72 int len);
cannam@154 73
cannam@154 74 #define OVERRIDE_XCORR_KERNEL
cannam@154 75 #define xcorr_kernel(x, y, sum, len, arch) \
cannam@154 76 ((*XCORR_KERNEL_IMPL[(arch) & OPUS_ARCHMASK])(x, y, sum, len))
cannam@154 77
cannam@154 78 #endif
cannam@154 79
cannam@154 80 #if defined(OPUS_X86_MAY_HAVE_SSE4_1) && defined(FIXED_POINT)
cannam@154 81 opus_val32 celt_inner_prod_sse4_1(
cannam@154 82 const opus_int16 *x,
cannam@154 83 const opus_int16 *y,
cannam@154 84 int N);
cannam@154 85 #endif
cannam@154 86
cannam@154 87 #if defined(OPUS_X86_MAY_HAVE_SSE2) && defined(FIXED_POINT)
cannam@154 88 opus_val32 celt_inner_prod_sse2(
cannam@154 89 const opus_int16 *x,
cannam@154 90 const opus_int16 *y,
cannam@154 91 int N);
cannam@154 92 #endif
cannam@154 93
cannam@154 94 #if defined(OPUS_X86_MAY_HAVE_SSE2) && !defined(FIXED_POINT)
cannam@154 95 opus_val32 celt_inner_prod_sse(
cannam@154 96 const opus_val16 *x,
cannam@154 97 const opus_val16 *y,
cannam@154 98 int N);
cannam@154 99 #endif
cannam@154 100
cannam@154 101
cannam@154 102 #if defined(OPUS_X86_PRESUME_SSE4_1) && defined(FIXED_POINT)
cannam@154 103 #define OVERRIDE_CELT_INNER_PROD
cannam@154 104 #define celt_inner_prod(x, y, N, arch) \
cannam@154 105 ((void)arch, celt_inner_prod_sse4_1(x, y, N))
cannam@154 106
cannam@154 107 #elif defined(OPUS_X86_PRESUME_SSE2) && defined(FIXED_POINT) && !defined(OPUS_X86_MAY_HAVE_SSE4_1)
cannam@154 108 #define OVERRIDE_CELT_INNER_PROD
cannam@154 109 #define celt_inner_prod(x, y, N, arch) \
cannam@154 110 ((void)arch, celt_inner_prod_sse2(x, y, N))
cannam@154 111
cannam@154 112 #elif defined(OPUS_X86_PRESUME_SSE) && !defined(FIXED_POINT)
cannam@154 113 #define OVERRIDE_CELT_INNER_PROD
cannam@154 114 #define celt_inner_prod(x, y, N, arch) \
cannam@154 115 ((void)arch, celt_inner_prod_sse(x, y, N))
cannam@154 116
cannam@154 117
cannam@154 118 #elif ((defined(OPUS_X86_MAY_HAVE_SSE4_1) || defined(OPUS_X86_MAY_HAVE_SSE2)) && defined(FIXED_POINT)) || \
cannam@154 119 (defined(OPUS_X86_MAY_HAVE_SSE) && !defined(FIXED_POINT))
cannam@154 120
cannam@154 121 extern opus_val32 (*const CELT_INNER_PROD_IMPL[OPUS_ARCHMASK + 1])(
cannam@154 122 const opus_val16 *x,
cannam@154 123 const opus_val16 *y,
cannam@154 124 int N);
cannam@154 125
cannam@154 126 #define OVERRIDE_CELT_INNER_PROD
cannam@154 127 #define celt_inner_prod(x, y, N, arch) \
cannam@154 128 ((*CELT_INNER_PROD_IMPL[(arch) & OPUS_ARCHMASK])(x, y, N))
cannam@154 129
cannam@154 130 #endif
cannam@154 131
cannam@154 132 #if defined(OPUS_X86_MAY_HAVE_SSE) && !defined(FIXED_POINT)
cannam@154 133
cannam@154 134 #define OVERRIDE_DUAL_INNER_PROD
cannam@154 135 #define OVERRIDE_COMB_FILTER_CONST
cannam@154 136
cannam@154 137 #undef dual_inner_prod
cannam@154 138 #undef comb_filter_const
cannam@154 139
cannam@154 140 void dual_inner_prod_sse(const opus_val16 *x,
cannam@154 141 const opus_val16 *y01,
cannam@154 142 const opus_val16 *y02,
cannam@154 143 int N,
cannam@154 144 opus_val32 *xy1,
cannam@154 145 opus_val32 *xy2);
cannam@154 146
cannam@154 147 void comb_filter_const_sse(opus_val32 *y,
cannam@154 148 opus_val32 *x,
cannam@154 149 int T,
cannam@154 150 int N,
cannam@154 151 opus_val16 g10,
cannam@154 152 opus_val16 g11,
cannam@154 153 opus_val16 g12);
cannam@154 154
cannam@154 155
cannam@154 156 #if defined(OPUS_X86_PRESUME_SSE)
cannam@154 157 # define dual_inner_prod(x, y01, y02, N, xy1, xy2, arch) \
cannam@154 158 ((void)(arch),dual_inner_prod_sse(x, y01, y02, N, xy1, xy2))
cannam@154 159
cannam@154 160 # define comb_filter_const(y, x, T, N, g10, g11, g12, arch) \
cannam@154 161 ((void)(arch),comb_filter_const_sse(y, x, T, N, g10, g11, g12))
cannam@154 162 #else
cannam@154 163
cannam@154 164 extern void (*const DUAL_INNER_PROD_IMPL[OPUS_ARCHMASK + 1])(
cannam@154 165 const opus_val16 *x,
cannam@154 166 const opus_val16 *y01,
cannam@154 167 const opus_val16 *y02,
cannam@154 168 int N,
cannam@154 169 opus_val32 *xy1,
cannam@154 170 opus_val32 *xy2);
cannam@154 171
cannam@154 172 #define dual_inner_prod(x, y01, y02, N, xy1, xy2, arch) \
cannam@154 173 ((*DUAL_INNER_PROD_IMPL[(arch) & OPUS_ARCHMASK])(x, y01, y02, N, xy1, xy2))
cannam@154 174
cannam@154 175 extern void (*const COMB_FILTER_CONST_IMPL[OPUS_ARCHMASK + 1])(
cannam@154 176 opus_val32 *y,
cannam@154 177 opus_val32 *x,
cannam@154 178 int T,
cannam@154 179 int N,
cannam@154 180 opus_val16 g10,
cannam@154 181 opus_val16 g11,
cannam@154 182 opus_val16 g12);
cannam@154 183
cannam@154 184 #define comb_filter_const(y, x, T, N, g10, g11, g12, arch) \
cannam@154 185 ((*COMB_FILTER_CONST_IMPL[(arch) & OPUS_ARCHMASK])(y, x, T, N, g10, g11, g12))
cannam@154 186
cannam@154 187 #define NON_STATIC_COMB_FILTER_CONST_C
cannam@154 188
cannam@154 189 #endif
cannam@154 190 #endif
cannam@154 191
cannam@154 192 #endif