static void s16_to_float_neon(const int16_t* src, float* dst) {
// Загружаем 8 значений int16
int16x8_t in_s16 = vld1q_s16(src);
// Создаем константу для масштабирования (1/32768)
float32x4_t scale = vdupq_n_f32(1.0f / 32768.0f);
// Расширяем int16x8 до двух int32x4 (нижняя и верхняя части)
int32x4_t low_i32 = vmovl_s16(vget_low_s16(in_s16));
int32x4_t high_i32 = vmovl_high_s16(in_s16);
// Конвертируем в float и умножаем на scale
float32x4_t low_f32 = vmulq_f32(vcvtq_f32_s32(low_i32), scale);
float32x4_t high_f32 = vmulq_f32(vcvtq_f32_s32(high_i32), scale);
// Сохраняем результат (8 float значений)
vst1q_f32(dst, low_f32);
vst1q_f32(dst + 4, high_f32);
}