diff --git a/CMakeLists.txt b/CMakeLists.txt index 06e9b675e..a3ba84811 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -543,7 +543,6 @@ if(NOT OPUS_DISABLE_INTRINSICS) # Do runtime check for NEON target_compile_definitions(opus PRIVATE - OPUS_ARM_MAY_HAVE_NEON OPUS_ARM_MAY_HAVE_NEON_INTR) endif() @@ -563,7 +562,6 @@ if(NOT OPUS_DISABLE_INTRINSICS) if(OPUS_PRESUME_NEON) target_compile_definitions(opus PRIVATE - OPUS_ARM_PRESUME_NEON OPUS_ARM_PRESUME_NEON_INTR) endif() endif() diff --git a/celt/arm/armcpu.h b/celt/arm/armcpu.h index 6d5803d81..1dfb7dab3 100644 --- a/celt/arm/armcpu.h +++ b/celt/arm/armcpu.h @@ -46,10 +46,16 @@ # define MAY_HAVE_NEON(name) MAY_HAVE_MEDIA(name) # endif +# if defined(OPUS_ARM_MAY_HAVE_NEON_INTR) +# define MAY_HAVE_NEON_INTR(name) name ## _neon +# else +# define MAY_HAVE_NEON_INTR(name) MAY_HAVE_NEON(name) +# endif + # if defined(OPUS_ARM_MAY_HAVE_DOTPROD) # define MAY_HAVE_DOTPROD(name) name ## _dotprod # else -# define MAY_HAVE_DOTPROD(name) MAY_HAVE_NEON(name) +# define MAY_HAVE_DOTPROD(name) MAY_HAVE_NEON_INTR(name) # endif # if defined(OPUS_ARM_PRESUME_EDSP) @@ -70,10 +76,16 @@ # define PRESUME_NEON(name) PRESUME_MEDIA(name) # endif +# if defined(OPUS_ARM_PRESUME_NEON_INTR) +# define PRESUME_NEON_INTR(name) name ## _neon +# else +# define PRESUME_NEON_INTR(name) PRESUME_NEON(name) +# endif + # if defined(OPUS_ARM_PRESUME_DOTPROD) # define PRESUME_DOTPROD(name) name ## _dotprod # else -# define PRESUME_DOTPROD(name) PRESUME_NEON(name) +# define PRESUME_DOTPROD(name) PRESUME_NEON_INTR(name) # endif # if defined(OPUS_HAVE_RTCD) diff --git a/celt/arm/pitch_arm.h b/celt/arm/pitch_arm.h index bed8b04ea..d34f54e19 100644 --- a/celt/arm/pitch_arm.h +++ b/celt/arm/pitch_arm.h @@ -35,11 +35,11 @@ opus_val32 celt_inner_prod_neon(const opus_val16 *x, const opus_val16 *y, int N) void dual_inner_prod_neon(const opus_val16 *x, const opus_val16 *y01, const opus_val16 *y02, int N, opus_val32 *xy1, opus_val32 *xy2); -# if !defined(OPUS_HAVE_RTCD) && defined(OPUS_ARM_PRESUME_NEON) +# if !defined(OPUS_HAVE_RTCD) && defined(OPUS_ARM_PRESUME_NEON_INTR) # define OVERRIDE_CELT_INNER_PROD (1) # define OVERRIDE_DUAL_INNER_PROD (1) -# define celt_inner_prod(x, y, N, arch) ((void)(arch), PRESUME_NEON(celt_inner_prod)(x, y, N)) -# define dual_inner_prod(x, y01, y02, N, xy1, xy2, arch) ((void)(arch), PRESUME_NEON(dual_inner_prod)(x, y01, y02, N, xy1, xy2)) +# define celt_inner_prod(x, y, N, arch) ((void)(arch), celt_inner_prod_neon(x, y, N)) +# define dual_inner_prod(x, y01, y02, N, xy1, xy2, arch) ((void)(arch), dual_inner_prod_neon(x, y01, y02, N, xy1, xy2)) # endif # endif diff --git a/dnn/arm/arm_dnn_map.c b/dnn/arm/arm_dnn_map.c index 98a2a3125..837e49f4d 100644 --- a/dnn/arm/arm_dnn_map.c +++ b/dnn/arm/arm_dnn_map.c @@ -44,13 +44,13 @@ void (*const DNN_COMPUTE_LINEAR_IMPL[OPUS_ARCHMASK + 1])( compute_linear_c, /* default */ compute_linear_c, compute_linear_c, - MAY_HAVE_NEON(compute_linear), /* neon */ + MAY_HAVE_NEON_INTR(compute_linear), /* neon */ MAY_HAVE_DOTPROD(compute_linear) /* dotprod */ }; #endif -#if (defined(OPUS_ARM_MAY_HAVE_DOTPROD) || defined(OPUS_ARM_MAY_HAVE_NEON)) && !defined(OPUS_ARM_PRESUME_NEON) +#if (defined(OPUS_ARM_MAY_HAVE_DOTPROD) || defined(OPUS_ARM_MAY_HAVE_NEON_INTR)) && !defined(OPUS_ARM_PRESUME_NEON_INTR) void (*const DNN_COMPUTE_ACTIVATION_IMPL[OPUS_ARCHMASK + 1])( float *output, @@ -61,7 +61,7 @@ void (*const DNN_COMPUTE_ACTIVATION_IMPL[OPUS_ARCHMASK + 1])( compute_activation_c, /* default */ compute_activation_c, compute_activation_c, - MAY_HAVE_NEON(compute_activation), /* neon */ + MAY_HAVE_NEON_INTR(compute_activation), /* neon */ MAY_HAVE_DOTPROD(compute_activation) /* dotprod */ }; @@ -77,7 +77,7 @@ void (*const DNN_COMPUTE_CONV2D_IMPL[OPUS_ARCHMASK + 1])( compute_conv2d_c, /* default */ compute_conv2d_c, compute_conv2d_c, - MAY_HAVE_NEON(compute_conv2d), /* neon */ + MAY_HAVE_NEON_INTR(compute_conv2d), /* neon */ MAY_HAVE_DOTPROD(compute_conv2d) /* dotprod */ }; diff --git a/dnn/arm/dnn_arm.h b/dnn/arm/dnn_arm.h index d7ac74526..c7b632c76 100644 --- a/dnn/arm/dnn_arm.h +++ b/dnn/arm/dnn_arm.h @@ -50,7 +50,7 @@ void compute_conv2d_dotprod(const Conv2dLayer *conv, float *out, float *mem, con #define OVERRIDE_COMPUTE_LINEAR #define compute_linear(linear, out, in, arch) ((void)(arch),compute_linear_neon(linear, out, in)) -#elif defined(OPUS_HAVE_RTCD) && (defined(OPUS_ARM_MAY_HAVE_DOTPROD) || defined(OPUS_ARM_MAY_HAVE_NEON)) +#elif defined(OPUS_HAVE_RTCD) && (defined(OPUS_ARM_MAY_HAVE_DOTPROD) || defined(OPUS_ARM_MAY_HAVE_NEON_INTR)) extern void (*const DNN_COMPUTE_LINEAR_IMPL[OPUS_ARCHMASK + 1])( const LinearLayer *linear, @@ -64,14 +64,14 @@ extern void (*const DNN_COMPUTE_LINEAR_IMPL[OPUS_ARCHMASK + 1])( #endif -#if defined(OPUS_ARM_PRESUME_NEON) +#if defined(OPUS_ARM_PRESUME_NEON_INTR) #define OVERRIDE_COMPUTE_ACTIVATION #define compute_activation(output, input, N, activation, arch) ((void)(arch),compute_activation_neon(output, input, N, activation)) #define OVERRIDE_COMPUTE_CONV2D #define compute_conv2d(conv, out, mem, in, height, hstride, activation, arch) ((void)(arch),compute_conv2d_neon(conv, out, mem, in, height, hstride, activation)) -#elif defined(OPUS_HAVE_RTCD) && (defined(OPUS_ARM_MAY_HAVE_DOTPROD) || defined(OPUS_ARM_MAY_HAVE_NEON)) +#elif defined(OPUS_HAVE_RTCD) && (defined(OPUS_ARM_MAY_HAVE_DOTPROD) || defined(OPUS_ARM_MAY_HAVE_NEON_INTR)) extern void (*const DNN_COMPUTE_ACTIVATION_IMPL[OPUS_ARCHMASK + 1])( float *output, diff --git a/silk/arm/LPC_inv_pred_gain_arm.h b/silk/arm/LPC_inv_pred_gain_arm.h index 9895b555c..ed8ef1959 100644 --- a/silk/arm/LPC_inv_pred_gain_arm.h +++ b/silk/arm/LPC_inv_pred_gain_arm.h @@ -36,9 +36,9 @@ opus_int32 silk_LPC_inverse_pred_gain_neon( /* O Returns inverse predi const opus_int order /* I Prediction order */ ); -# if !defined(OPUS_HAVE_RTCD) && defined(OPUS_ARM_PRESUME_NEON) +# if !defined(OPUS_HAVE_RTCD) && defined(OPUS_ARM_PRESUME_NEON_INTR) # define OVERRIDE_silk_LPC_inverse_pred_gain (1) -# define silk_LPC_inverse_pred_gain(A_Q12, order, arch) ((void)(arch), PRESUME_NEON(silk_LPC_inverse_pred_gain)(A_Q12, order)) +# define silk_LPC_inverse_pred_gain(A_Q12, order, arch) ((void)(arch), silk_LPC_inverse_pred_gain_neon(A_Q12, order)) # endif # endif diff --git a/silk/arm/NSQ_del_dec_arm.h b/silk/arm/NSQ_del_dec_arm.h index 0c4fcfccb..a26b3aa5f 100644 --- a/silk/arm/NSQ_del_dec_arm.h +++ b/silk/arm/NSQ_del_dec_arm.h @@ -44,14 +44,14 @@ void silk_NSQ_del_dec_neon( const opus_int pitchL[MAX_NB_SUBFR], const opus_int Lambda_Q10, const opus_int LTP_scale_Q14); -#if !defined(OPUS_HAVE_RTCD) +#if !defined(OPUS_HAVE_RTCD) && defined(OPUS_ARM_PRESUME_NEON_INTR) #define OVERRIDE_silk_NSQ_del_dec (1) #define silk_NSQ_del_dec(psEncC, NSQ, psIndices, x16, pulses, PredCoef_Q12, \ LTPCoef_Q14, AR_Q13, HarmShapeGain_Q14, Tilt_Q14, \ LF_shp_Q14, Gains_Q16, pitchL, Lambda_Q10, \ LTP_scale_Q14, arch) \ ((void)(arch), \ - PRESUME_NEON(silk_NSQ_del_dec)( \ + silk_NSQ_del_dec_neon( \ psEncC, NSQ, psIndices, x16, pulses, PredCoef_Q12, LTPCoef_Q14, \ AR_Q13, HarmShapeGain_Q14, Tilt_Q14, LF_shp_Q14, Gains_Q16, pitchL, \ Lambda_Q10, LTP_scale_Q14)) diff --git a/silk/arm/biquad_alt_arm.h b/silk/arm/biquad_alt_arm.h index 66ea9f43d..7dc516bf4 100644 --- a/silk/arm/biquad_alt_arm.h +++ b/silk/arm/biquad_alt_arm.h @@ -40,9 +40,9 @@ void silk_biquad_alt_stride2_neon( const opus_int32 len /* I signal length (must be even) */ ); -# if !defined(OPUS_HAVE_RTCD) && defined(OPUS_ARM_PRESUME_NEON) +# if !defined(OPUS_HAVE_RTCD) && defined(OPUS_ARM_PRESUME_NEON_INTR) # define OVERRIDE_silk_biquad_alt_stride2 (1) -# define silk_biquad_alt_stride2(in, B_Q28, A_Q28, S, out, len, arch) ((void)(arch), PRESUME_NEON(silk_biquad_alt_stride2)(in, B_Q28, A_Q28, S, out, len)) +# define silk_biquad_alt_stride2(in, B_Q28, A_Q28, S, out, len, arch) ((void)(arch), silk_biquad_alt_stride2_neon(in, B_Q28, A_Q28, S, out, len)) # endif # endif diff --git a/silk/fixed/arm/warped_autocorrelation_FIX_arm.h b/silk/fixed/arm/warped_autocorrelation_FIX_arm.h index 1992e4328..406bca74c 100644 --- a/silk/fixed/arm/warped_autocorrelation_FIX_arm.h +++ b/silk/fixed/arm/warped_autocorrelation_FIX_arm.h @@ -42,10 +42,10 @@ void silk_warped_autocorrelation_FIX_neon( const opus_int order /* I Correlation order (even) */ ); -# if !defined(OPUS_HAVE_RTCD) && defined(OPUS_ARM_PRESUME_NEON) +# if !defined(OPUS_HAVE_RTCD) && defined(OPUS_ARM_PRESUME_NEON_INTR) # define OVERRIDE_silk_warped_autocorrelation_FIX (1) # define silk_warped_autocorrelation_FIX(corr, scale, input, warping_Q16, length, order, arch) \ - ((void)(arch), PRESUME_NEON(silk_warped_autocorrelation_FIX)(corr, scale, input, warping_Q16, length, order)) + ((void)(arch), silk_warped_autocorrelation_FIX_neon(corr, scale, input, warping_Q16, length, order)) # endif # endif