From 983f7b4288a7e4ab70d800676c8adc3d9da7ac53 Mon Sep 17 00:00:00 2001 From: KubaPro010 Date: Thu, 27 Mar 2025 21:50:30 +0100 Subject: [PATCH] this? --- src/fm95.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/fm95.c b/src/fm95.c index 575edf7..f8cd040 100644 --- a/src/fm95.c +++ b/src/fm95.c @@ -18,6 +18,7 @@ #include "../lib/oscillator.h" #include "../lib/filters.h" #include "../lib/fm_modulator.h" +#include "../lib/optimization.h" #define DEFAULT_SAMPLE_RATE 192000 @@ -47,10 +48,23 @@ static volatile sig_atomic_t to_run = 1; void uninterleave(const float *input, float *left, float *right, size_t num_samples) { +#if USE_NEON + size_t i = 0; + for (; i + 3 < num_samples / 2; i += 4) { + float32x4x2_t input_vec = vld2q_f32(input + i * 2); + vst1q_f32(left + i, input_vec.val[0]); + vst1q_f32(right + i, input_vec.val[1]); + } + for (; i < num_samples / 2; i++) { + left[i] = input[i * 2]; + right[i] = input[i * 2 + 1]; + } +#else for (size_t i = 0; i < num_samples / 2; i++) { left[i] = input[i * 2]; right[i] = input[i * 2 + 1]; } +#endif } static void stop(int signum) {