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>
Sat, 11 Mar 2017 11:14:51 +0000 (13:14 +0200)
commita88db8b9a016fe47997029e3653cdac4777994b4
tree3f38e334c94cb0fec00c77abc4738410fc79966e
parentf32690a298badbf2df66319e9b38236ad3d3e321
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

This is cherrypicked from libav commit
575e31e931e4178e9f1e24407503c9b4ec0ef9ba.

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