aboutsummaryrefslogtreecommitdiffstats
path: root/Transceiver52M/x86/convert.c
diff options
context:
space:
mode:
Diffstat (limited to 'Transceiver52M/x86/convert.c')
-rw-r--r--Transceiver52M/x86/convert.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/Transceiver52M/x86/convert.c b/Transceiver52M/x86/convert.c
index eafe7b2..862a2e7 100644
--- a/Transceiver52M/x86/convert.c
+++ b/Transceiver52M/x86/convert.c
@@ -176,26 +176,34 @@ static void convert_si16_ps(float *out, const short *in, int len)
void convert_float_short(short *out, const float *in, float scale, int len)
{
+ void (*conv_func)(short *, const float *, float, int);
+
#ifdef HAVE_SSE3
if (!(len % 16))
- _sse_convert_scale_ps_si16_16n(out, in, scale, len);
+ conv_func = _sse_convert_scale_ps_si16_16n;
else if (!(len % 8))
- _sse_convert_scale_ps_si16_8n(out, in, scale, len);
+ conv_func = _sse_convert_scale_ps_si16_8n;
else
- _sse_convert_scale_ps_si16(out, in, scale, len);
+ conv_func = _sse_convert_scale_ps_si16;
#else
- convert_scale_ps_si16(out, in, scale, len);
+ conv_func = convert_scale_ps_si16;
#endif
+
+ conv_func(out, in, scale, len);
}
void convert_short_float(float *out, const short *in, int len)
{
+ void (*conv_func) (float *, const short *, int);
+
#ifdef HAVE_SSE4_1
if (!(len % 16))
- _sse_convert_si16_ps_16n(out, in, len);
+ conv_func = _sse_convert_si16_ps_16n;
else
- _sse_convert_si16_ps(out, in, len);
+ conv_func = _sse_convert_si16_ps;
#else
- convert_si16_ps(out, in, len);
+ conv_func = convert_si16_ps;
#endif
+
+ conv_func(out, in, len);
}