On 06/27/2012 04:19 PM, Jason Garrett-Glaser wrote:
> On Wed, Jun 27, 2012 at 12:51 PM, Justin Ruggles
> <[email protected]> wrote:
>> On 06/25/2012 05:24 PM, Jason Garrett-Glaser wrote:
>>>> +cglobal conv_fltp_to_flt_2ch, 3,4,5, dst, src, len, src1
>>>> +    mov  src1q, [srcq+gprsize]
>>>> +    mov   srcq, [srcq        ]
>>>> +    sub  src1q, srcq
>>>> +    ALIGN 16
>>>> +.loop
>>>> +    mova    m0, [srcq             ]
>>>> +    mova    m1, [srcq+src1q       ]
>>>> +    mova    m2, [srcq      +mmsize]
>>>> +    mova    m3, [srcq+src1q+mmsize]
>>>> +    SBUTTERFLYPS2 0, 1, 4
>>>> +    SBUTTERFLYPS2 2, 3, 4
>>>> +%if cpuflag(avx)
>>>> +    vextractf128 [dstq    ], m0, 0
>>>> +    vextractf128 [dstq+ 16], m1, 0
>>>> +    vextractf128 [dstq+ 32], m0, 1
>>>> +    vextractf128 [dstq+ 48], m1, 1
>>>> +    vextractf128 [dstq+ 64], m2, 0
>>>> +    vextractf128 [dstq+ 80], m3, 0
>>>> +    vextractf128 [dstq+ 96], m2, 1
>>>> +    vextractf128 [dstq+112], m3, 1
>>>> +%else
>>>> +    mova  [dstq         ], m0
>>>> +    mova  [dstq+1*mmsize], m1
>>>> +    mova  [dstq+2*mmsize], m2
>>>> +    mova  [dstq+3*mmsize], m3
>>>> +%endif
>>>
>>> Is the AVX version any faster?  This function looks load/store bound,
>>> and no CPU in existence has 32-byte store units, so I doubt it gets
>>> any boost.
>>
>> Yes.
>>
>> Sandy Bridge:
>>  C - 2992
>> SSE -  205
>> AVX -  178
> 
> I meant more specifically the YMM version.
> 
> +    SBUTTERFLYPS2 0, 1, 4
> +    SBUTTERFLYPS2 2, 3, 4
> 
> These benefit from AVX even with xmm registers.  If you do an AVX
> version that doesn't use ymm (INIT_XMM), is it any slower than the
> current code?

Yeah, 168 xmm vs. 178 ymm on sandy bridge.

So I'll change it and remove the vextractf128 part.

Thanks,
Justin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to