cannam@154
|
1 /* Copyright (c) 2016 Jean-Marc Valin */
|
cannam@154
|
2 /*
|
cannam@154
|
3 Redistribution and use in source and binary forms, with or without
|
cannam@154
|
4 modification, are permitted provided that the following conditions
|
cannam@154
|
5 are met:
|
cannam@154
|
6
|
cannam@154
|
7 - Redistributions of source code must retain the above copyright
|
cannam@154
|
8 notice, this list of conditions and the following disclaimer.
|
cannam@154
|
9
|
cannam@154
|
10 - Redistributions in binary form must reproduce the above copyright
|
cannam@154
|
11 notice, this list of conditions and the following disclaimer in the
|
cannam@154
|
12 documentation and/or other materials provided with the distribution.
|
cannam@154
|
13
|
cannam@154
|
14 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
cannam@154
|
15 ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
cannam@154
|
16 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
cannam@154
|
17 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
|
cannam@154
|
18 OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
cannam@154
|
19 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
cannam@154
|
20 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
cannam@154
|
21 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
cannam@154
|
22 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
cannam@154
|
23 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
cannam@154
|
24 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
cannam@154
|
25 */
|
cannam@154
|
26
|
cannam@154
|
27 #ifndef VQ_SSE_H
|
cannam@154
|
28 #define VQ_SSE_H
|
cannam@154
|
29
|
cannam@154
|
30 #if defined(OPUS_X86_MAY_HAVE_SSE2) && !defined(FIXED_POINT)
|
cannam@154
|
31 #define OVERRIDE_OP_PVQ_SEARCH
|
cannam@154
|
32
|
cannam@154
|
33 opus_val16 op_pvq_search_sse2(celt_norm *_X, int *iy, int K, int N, int arch);
|
cannam@154
|
34
|
cannam@154
|
35 #if defined(OPUS_X86_PRESUME_SSE2)
|
cannam@154
|
36 #define op_pvq_search(x, iy, K, N, arch) \
|
cannam@154
|
37 (op_pvq_search_sse2(x, iy, K, N, arch))
|
cannam@154
|
38
|
cannam@154
|
39 #else
|
cannam@154
|
40
|
cannam@154
|
41 extern opus_val16 (*const OP_PVQ_SEARCH_IMPL[OPUS_ARCHMASK + 1])(
|
cannam@154
|
42 celt_norm *_X, int *iy, int K, int N, int arch);
|
cannam@154
|
43
|
cannam@154
|
44 # define op_pvq_search(X, iy, K, N, arch) \
|
cannam@154
|
45 ((*OP_PVQ_SEARCH_IMPL[(arch) & OPUS_ARCHMASK])(X, iy, K, N, arch))
|
cannam@154
|
46
|
cannam@154
|
47 #endif
|
cannam@154
|
48 #endif
|
cannam@154
|
49
|
cannam@154
|
50 #endif
|