Commit dabf8dd3 authored by Christophe GISQUET's avatar Christophe GISQUET Committed by Ronald S. Bultje

SBR DSP: unroll sum_square

The length is even, so some unrolling can be performed. Timings are for x86:
- 32bits: 102c -> 82c
- 64bits:  82c -> 69c
Signed-off-by: 's avatarRonald S. Bultje <rsbultje@gmail.com>
parent 294c05ce
......@@ -35,13 +35,18 @@ static void sbr_sum64x5_c(float *z)
static float sbr_sum_square_c(float (*x)[2], int n)
{
float sum = 0.0f;
float sum0 = 0.0f, sum1 = 0.0f;
int i;
for (i = 0; i < n; i++)
sum += x[i][0] * x[i][0] + x[i][1] * x[i][1];
for (i = 0; i < n; i += 2)
{
sum0 += x[i + 0][0] * x[i + 0][0];
sum1 += x[i + 0][1] * x[i + 0][1];
sum0 += x[i + 1][0] * x[i + 1][0];
sum1 += x[i + 1][1] * x[i + 1][1];
}
return sum;
return sum0 + sum1;
}
static void sbr_neg_odd_64_c(float *x)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment