arm: vp9lpf: Implement the mix2_44 function with one single filter pass
authorMartin Storsjö <martin@martin.st>
Sat, 14 Jan 2017 11:22:30 +0000 (13:22 +0200)
committerMartin Storsjö <martin@martin.st>
Thu, 23 Feb 2017 22:03:09 +0000 (00:03 +0200)
commit575e31e931e4178e9f1e24407503c9b4ec0ef9ba
treef1d574cfcc51f393f8a4918929f7776fb97e5318
parent3bf9c48320f25f3d5557485b0202f22ae60748b0
arm: vp9lpf: Implement the mix2_44 function with one single filter pass

For this case, with 8 inputs but only changing 4 of them, we can fit
all 16 input pixels into a q register, and still have enough temporary
registers for doing the loop filter.

The wd=8 filters would require too many temporary registers for
processing all 16 pixels at once though.

Before:                          Cortex A7      A8     A9     A53
vp9_loop_filter_mix2_v_44_16_neon:   289.7   256.2  237.5   181.2
After:
vp9_loop_filter_mix2_v_44_16_neon:   221.2   150.5  177.7   138.0

Signed-off-by: Martin Storsjö <martin@martin.st>
libavcodec/arm/vp9dsp_init_arm.c
libavcodec/arm/vp9lpf_neon.S