Speed up silk_warped_autocorrelation_FLP()

Reducing the dependency chain between tmp1 and tmp2 at the
cost of an extra multiply.
This commit is contained in:
Jean-Marc Valin 2023-11-17 23:10:59 -05:00
parent b2cfd87783
commit d4b04d3275
No known key found for this signature in database
GPG key ID: 531A52533318F00A

View file

@ -54,11 +54,13 @@ void silk_warped_autocorrelation_FLP(
/* Loop over allpass sections */ /* Loop over allpass sections */
for( i = 0; i < order; i += 2 ) { for( i = 0; i < order; i += 2 ) {
/* Output of allpass section */ /* Output of allpass section */
tmp2 = state[ i ] + warping * ( state[ i + 1 ] - tmp1 ); /* We voluntarily use two multiples instead of factoring the expression to
reduce the length of the dependency chain (tmp1->tmp2->tmp1... ). */
tmp2 = state[ i ] + warping * state[ i + 1 ] - warping * tmp1;
state[ i ] = tmp1; state[ i ] = tmp1;
C[ i ] += state[ 0 ] * tmp1; C[ i ] += state[ 0 ] * tmp1;
/* Output of allpass section */ /* Output of allpass section */
tmp1 = state[ i + 1 ] + warping * ( state[ i + 2 ] - tmp2 ); tmp1 = state[ i + 1 ] + warping * state[ i + 2 ] - warping * tmp2;
state[ i + 1 ] = tmp2; state[ i + 1 ] = tmp2;
C[ i + 1 ] += state[ 0 ] * tmp2; C[ i + 1 ] += state[ 0 ] * tmp2;
} }