[FFmpeg-cvslog] lossless audio dsp: unroll
Christophe Gisquet
git at videolan.org
Wed May 11 21:09:38 CEST 2016
ffmpeg | branch: master | Christophe Gisquet <christophe.gisquet at gmail.com> | Sun May 1 15:33:47 2016 +0200| [9ca16bdd3f0461b40d369080647747ae70715daf] | committer: Michael Niedermayer
lossless audio dsp: unroll
The loops are guaranteed to be at least multiples of 8, so this
unrolling is safe but allows exploiting execution ports.
For int32 version: 68 -> 58c.
Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9ca16bdd3f0461b40d369080647747ae70715daf
---
libavcodec/lossless_audiodsp.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/libavcodec/lossless_audiodsp.c b/libavcodec/lossless_audiodsp.c
index ea0568e..e3ea8e1 100644
--- a/libavcodec/lossless_audiodsp.c
+++ b/libavcodec/lossless_audiodsp.c
@@ -29,10 +29,12 @@ static int32_t scalarproduct_and_madd_int16_c(int16_t *v1, const int16_t *v2,
{
int res = 0;
- while (order--) {
+ do {
res += *v1 * *v2++;
*v1++ += mul * *v3++;
- }
+ res += *v1 * *v2++;
+ *v1++ += mul * *v3++;
+ } while (order-=2);
return res;
}
@@ -42,10 +44,12 @@ static int32_t scalarproduct_and_madd_int32_c(int16_t *v1, const int32_t *v2,
{
int res = 0;
- while (order--) {
+ do {
+ res += *v1 * *v2++;
+ *v1++ += mul * *v3++;
res += *v1 * *v2++;
*v1++ += mul * *v3++;
- }
+ } while (order-=2);
return res;
}
More information about the ffmpeg-cvslog
mailing list