From df7ab43087a7713a60b8ef4721d42dec22f2a222 Mon Sep 17 00:00:00 2001 From: Jean-Marc Valin <Jean-Marc.Valin@csiro.au> Date: Wed, 26 Mar 2008 18:03:22 +1100 Subject: [PATCH] Making it obvious to the compiler how to generate a dual-MAC in mix_pitch_and_residual() --- libcelt/vq.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/libcelt/vq.c b/libcelt/vq.c index 9092c62c6..cdba91e56 100644 --- a/libcelt/vq.c +++ b/libcelt/vq.c @@ -66,13 +66,14 @@ static void mix_pitch_and_residual(int * restrict iy, celt_norm_t * restrict X, y[i] = SHL16(iy[i],yshift); Ryp = 0; - for (i=0;i<N;i++) - Ryp = MAC16_16(Ryp,y[i],P[i]); - Ryy = 0; + /* If this doesn't generate a dual MAC (on supported archs), fire the compiler guy */ for (i=0;i<N;i++) - Ryy = MAC16_16(Ryy, y[i],y[i]); - + { + Ryp = MAC16_16(Ryp, y[i], P[i]); + Ryy = MAC16_16(Ryy, y[i], y[i]); + } + /* g = (sqrt(Ryp^2 + Ryy - Rpp*Ryy)-Ryp)/Ryy */ g = MULT16_32_Q15( celt_sqrt(MULT16_16(ROUND16(Ryp,14),ROUND16(Ryp,14)) + Ryy - -- GitLab