[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
prologue/epilogue.

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?

Cheers,

	Jean-Marc


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