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
