[FFmpeg-devel] [PATCH] vp9: 16bpp tm/dc/h/v intra pred simd (mostly sse2) functions.

Henrik Gramner henrik at gramner.com
Sat Oct 3 11:12:01 CEST 2015


On Sat, Oct 3, 2015 at 2:12 AM, Ronald S. Bultje <rsbultje at gmail.com> wrote:
> Well, they prototype is different. For H/V, it's not critical, but for the
> directional ones, the edge handling is very quirky so I wanted to do that
> in C, so l/a are arguments instead of part of the source buffer.
>
> (And because we do in-loop filtering, doing V as-is from h264 won't work,
> since a can be post-loopfilter, whereas in h264 it's required to be pre-,
> and we don't swap in vp9.)

Oh, I see. Then it's fine.

> +cglobal vp9_ipred_v_32x32_16, 2, 4, 4, dst, stride, l, a
[...]
> +.loop:
> +    mova   [dstq+strideq*0+ 0], m0
> +    mova   [dstq+strideq*0+16], m1
> +    mova   [dstq+strideq*0+32], m2
> +    mova   [dstq+strideq*0+48], m3
> +    mova   [dstq+strideq*1+ 0], m0
> +    mova   [dstq+strideq*1+16], m1
> +    mova   [dstq+strideq*1+32], m2
> +    mova   [dstq+strideq*1+48], m3
> +    mova   [dstq+strideq*2+ 0], m0
> +    mova   [dstq+strideq*2+16], m1
> +    mova   [dstq+strideq*2+32], m2
> +    mova   [dstq+strideq*2+48], m3
> +    mova   [dstq+stride3q + 0], m0
> +    mova   [dstq+stride3q +16], m1
> +    mova   [dstq+stride3q +32], m2
> +    mova   [dstq+stride3q +48], m3
> +    lea                   dstq, [dstq+strideq*4]
> +    dec               cntd
> +    jg .loop
> +    RET

Missed this one before, but you could cut the number of
stores/iteration in half here as well. Feel free to push after that.


More information about the ffmpeg-devel mailing list