diff --git a/src/nnet.c b/src/nnet.c index 1da7d70..cecfda1 100644 --- a/src/nnet.c +++ b/src/nnet.c @@ -41,10 +41,8 @@ #define SOFTMAX_HACK -#ifdef __AVX__ +#if defined(__AVX__) || (__SSE__) #include "vec_avx.h" -#elif __SSE__ -#include "vec_sse.h" #elif __ARM_NEON__ || __aarch64__ #include "vec_neon.h" #else diff --git a/src/test_vec.c b/src/test_vec.c index ba33469..a4b0b64 100644 --- a/src/test_vec.c +++ b/src/test_vec.c @@ -29,7 +29,7 @@ const char simd[]="AVX2"; const char simd[]="AVX"; #endif #elif __SSE__ -#include "vec_sse.h" +#include "vec_avx.h" const char simd[]="SSE"; #elif __ARM_NEON__ || __aarch64__ #include "vec_neon.h" diff --git a/src/vec_sse.h b/src/vec_sse.h deleted file mode 100644 index 82ddd42..0000000 --- a/src/vec_sse.h +++ /dev/null @@ -1,211 +0,0 @@ -/* Copyright (c) 2020 SASANO Takayoshi - 2018 David Rowe - 2018 Mozilla - 2008-2011 Octasic Inc. - 2012-2017 Jean-Marc Valin */ -/* - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -/* - SSE implementation of vector operations, compile with -msse - port from Arm NEON support -*/ - -#include - -#ifndef LPCNET_TEST -static float celt_exp2(float x) -{ - int integer; - float frac; - union { - float f; - opus_uint32 i; - } res; - integer = floor(x); - if (integer < -50) - return 0; - frac = x-integer; - /* K0 = 1, K1 = log(2), K2 = 3-4*log(2), K3 = 3*log(2) - 2 */ - res.f = 0.99992522f + frac * (0.69583354f - + frac * (0.22606716f + 0.078024523f*frac)); - res.i = (res.i + (integer<<23)) & 0x7fffffff; - return res.f; -} -#define celt_exp_sse(x) celt_exp2((x)*1.44269504f) - -static float tansig_approx(float x) -{ - int i; - float y, dy; - float sign=1; - /* Tests are reversed to catch NaNs */ - if (!(x<8)) - return 1; - if (!(x>-8)) - return -1; -#ifndef FIXED_POINT - /* Another check in case of -ffast-math */ - if (celt_isnan(x)) - return 0; -#endif - if (x<0) - { - x=-x; - sign=-1; - } - i = (int)floor(.5f+25*x); - x -= .04f*i; - y = tansig_table[i]; - dy = 1-y*y; - y = y + x*dy*(1 - y*x); - return sign*y; -} - -static OPUS_INLINE float sigmoid_approx(float x) -{ - return .5f + .5f*tansig_approx(.5f*x); -} - -static void softmax(float *y, const float *x, int N) -{ - int i; - for (i=0;i