diff options
author | Jean-Marc Valin <jmvalin@jmvalin.ca> | 2014-01-04 21:06:24 -0500 |
---|---|---|
committer | Jean-Marc Valin <jmvalin@jmvalin.ca> | 2014-01-04 21:06:24 -0500 |
commit | ed01a596dc525801ec9d601da29ded8a82a2ccd6 (patch) | |
tree | c420c23b6300f80c074f87245db2ddf74d8da14d /celt/vq.c | |
parent | ccec752a384cf6ad110ec141f8bb035d14328eee (diff) | |
download | libopus-ed01a596dc525801ec9d601da29ded8a82a2ccd6.tar.gz |
Making exp_rotation1() use MAC16_16(), which saves a few cycles on ARM
Diffstat (limited to 'celt/vq.c')
-rw-r--r-- | celt/vq.c | 10 |
1 files changed, 6 insertions, 4 deletions
@@ -42,15 +42,17 @@ static void exp_rotation1(celt_norm *X, int len, int stride, opus_val16 c, opus_val16 s) { int i; + opus_val16 ms; celt_norm *Xptr; Xptr = X; + ms = NEG16(s); for (i=0;i<len-stride;i++) { celt_norm x1, x2; x1 = Xptr[0]; x2 = Xptr[stride]; - Xptr[stride] = EXTRACT16(PSHR32(MULT16_16(c,x2) + MULT16_16(s,x1), 15)); - *Xptr++ = EXTRACT16(PSHR32(MULT16_16(c,x1) - MULT16_16(s,x2), 15)); + Xptr[stride] = EXTRACT16(PSHR32(MAC16_16(MULT16_16(c, x2), s, x1), 15)); + *Xptr++ = EXTRACT16(PSHR32(MAC16_16(MULT16_16(c, x1), ms, x2), 15)); } Xptr = &X[len-2*stride-1]; for (i=len-2*stride-1;i>=0;i--) @@ -58,8 +60,8 @@ static void exp_rotation1(celt_norm *X, int len, int stride, opus_val16 c, opus_ celt_norm x1, x2; x1 = Xptr[0]; x2 = Xptr[stride]; - Xptr[stride] = EXTRACT16(PSHR32(MULT16_16(c,x2) + MULT16_16(s,x1), 15)); - *Xptr-- = EXTRACT16(PSHR32(MULT16_16(c,x1) - MULT16_16(s,x2), 15)); + Xptr[stride] = EXTRACT16(PSHR32(MAC16_16(MULT16_16(c, x2), s, x1), 15)); + *Xptr-- = EXTRACT16(PSHR32(MAC16_16(MULT16_16(c, x1), ms, x2), 15)); } } |