Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix ARM fixed point builds with CMake #292

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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()

Expand All @@ -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()
Expand Down
16 changes: 14 additions & 2 deletions celt/arm/armcpu.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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)
Expand Down
6 changes: 3 additions & 3 deletions celt/arm/pitch_arm.h
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
8 changes: 4 additions & 4 deletions dnn/arm/arm_dnn_map.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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 */
};

Expand All @@ -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 */
};

Expand Down
6 changes: 3 additions & 3 deletions dnn/arm/dnn_arm.h
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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,
Expand Down
4 changes: 2 additions & 2 deletions silk/arm/LPC_inv_pred_gain_arm.h
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
4 changes: 2 additions & 2 deletions silk/arm/NSQ_del_dec_arm.h
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down
4 changes: 2 additions & 2 deletions silk/arm/biquad_alt_arm.h
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
4 changes: 2 additions & 2 deletions silk/fixed/arm/warped_autocorrelation_FIX_arm.h
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
Loading