Index: silk/SigProc_FIX.h |
diff --git a/silk/SigProc_FIX.h b/silk/SigProc_FIX.h |
index 1b580579104143b8c560bf4930bf1031b55ece97..b63299441e930a385e97ef9c13d5755cc0f9c413 100644 |
--- a/silk/SigProc_FIX.h |
+++ b/silk/SigProc_FIX.h |
@@ -41,7 +41,11 @@ extern "C" |
#include "typedef.h" |
#include "resampler_structs.h" |
#include "macros.h" |
+#include "cpu_support.h" |
+#if defined(OPUS_X86_MAY_HAVE_SSE4_1) |
+#include "x86/SigProc_FIX_sse.h" |
+#endif |
/********************************************************************/ |
/* SIGNAL PROCESSING FUNCTIONS */ |
@@ -108,7 +112,8 @@ void silk_LPC_analysis_filter( |
const opus_int16 *in, /* I Input signal */ |
const opus_int16 *B, /* I MA prediction coefficients, Q12 [order] */ |
const opus_int32 len, /* I Signal length */ |
- const opus_int32 d /* I Filter order */ |
+ const opus_int32 d, /* I Filter order */ |
+ int arch /* I Run-time architecture */ |
); |
/* Chirp (bandwidth expand) LP AR filter */ |
@@ -303,7 +308,7 @@ void silk_NLSF_VQ_weights_laroia( |
); |
/* Compute reflection coefficients from input signal */ |
-void silk_burg_modified( |
+void silk_burg_modified_c( |
opus_int32 *res_nrg, /* O Residual energy */ |
opus_int *res_nrg_Q, /* O Residual energy Q value */ |
opus_int32 A_Q16[], /* O Prediction coefficients (length order) */ |
@@ -335,12 +340,15 @@ void silk_scale_vector32_Q26_lshift_18( |
/********************************************************************/ |
/* return sum( inVec1[i] * inVec2[i] ) */ |
+ |
opus_int32 silk_inner_prod_aligned( |
const opus_int16 *const inVec1, /* I input vector 1 */ |
const opus_int16 *const inVec2, /* I input vector 2 */ |
- const opus_int len /* I vector lengths */ |
+ const opus_int len, /* I vector lengths */ |
+ int arch /* I Run-time architecture */ |
); |
+ |
opus_int32 silk_inner_prod_aligned_scale( |
const opus_int16 *const inVec1, /* I input vector 1 */ |
const opus_int16 *const inVec2, /* I input vector 2 */ |
@@ -348,7 +356,7 @@ opus_int32 silk_inner_prod_aligned_scale( |
const opus_int len /* I vector lengths */ |
); |
-opus_int64 silk_inner_prod16_aligned_64( |
+opus_int64 silk_inner_prod16_aligned_64_c( |
const opus_int16 *inVec1, /* I input vector 1 */ |
const opus_int16 *inVec2, /* I input vector 2 */ |
const opus_int len /* I vector lengths */ |
@@ -575,6 +583,14 @@ static OPUS_INLINE opus_int64 silk_max_64(opus_int64 a, opus_int64 b) |
/* the following seems faster on x86 */ |
#define silk_SMMUL(a32, b32) (opus_int32)silk_RSHIFT64(silk_SMULL((a32), (b32)), 32) |
+#if !defined(OPUS_X86_MAY_HAVE_SSE4_1) |
+#define silk_burg_modified(res_nrg, res_nrg_Q, A_Q16, x, minInvGain_Q30, subfr_length, nb_subfr, D, arch) \ |
+ ((void)(arch), silk_burg_modified_c(res_nrg, res_nrg_Q, A_Q16, x, minInvGain_Q30, subfr_length, nb_subfr, D, arch)) |
+ |
+#define silk_inner_prod16_aligned_64(inVec1, inVec2, len, arch) \ |
+ ((void)(arch),silk_inner_prod16_aligned_64_c(inVec1, inVec2, len)) |
+#endif |
+ |
#include "Inlines.h" |
#include "MacroCount.h" |
#include "MacroDebug.h" |
@@ -587,6 +603,11 @@ static OPUS_INLINE opus_int64 silk_max_64(opus_int64 a, opus_int64 b) |
#include "arm/SigProc_FIX_armv5e.h" |
#endif |
+#if defined(MIPSr1_ASM) |
+#include "mips/sigproc_fix_mipsr1.h" |
+#endif |
+ |
+ |
#ifdef __cplusplus |
} |
#endif |