[opus] [PATCH] Optimize silk_warped_autocorrelation_FIX() for ARM NEON

Jean-Marc Valin jmvalin at jmvalin.ca
Sun Feb 5 00:17:15 UTC 2017

Hi Felicia,

I've had time to work through the math in the original function and I'm
pretty sure it's possible to vectorize this without the huge

For the simple case where order = vector size = N (but it should easily
generalize to larger order), what I came up with is:

initialize X, Y, M, C to vector of zeros

for i=0 to N+order
   T = [x(i), Y(0:N-2)]
   Y = M + coeff * (Y - T)
   M = T
   X = [x(i), X(0:N-1)]
   C = C + X*Y

I think something similar to this (assuming I didn't mess up any
details) should give you the correlations in vector C. Did I miss anything?



On 31/01/17 12:30 PM, Felicia Lim wrote:
> Hi, 
> Attached is a patch with arm neon optimizations for
> silk_warped_autocorrelation_FIX(). Please review. 
> Thanks,
> Felicia
> _______________________________________________
> opus mailing list
> opus at xiph.org
> http://lists.xiph.org/mailman/listinfo/opus

More information about the opus mailing list