On 06/27/2012 11:13 AM, Justin Ruggles wrote: > On 06/25/2012 05:21 PM, Jason Garrett-Glaser wrote: >>> + mova m0, [srcq ] ; m0 = 0, 1, 2, 3, 4, 5, 6, 7 >>>> + mova m1, [srcq+ mmsize] ; m1 = 8, 9, 10, 11, 12, 13, 14, 15 >>>> + mova m2, [srcq+2*mmsize] ; m2 = 16, 17, 18, 19, 20, 21, 22, 23 >>>> + movhlps m3, m1 >>>> + movlhps m3, m2 ; m3 = 12, 13, 14, 15, 16, 17, 18, 19 >>>> + movlhps m1, m1 >>>> + movhlps m1, m0 ; m1 = 4, 5, 6, 7, 8, 9, 10, 11 >> Using more loads (and fewer shuffles) might be better here, e.g: >> >> mova m0, [srcq ] >> mova m2, [srcq+2*mmsize] >> movq m3, [srcq + mmsize + mmsize/2] >> movlhps m3, m2 >> movq m1, [srcq+ mmsize] >> movhlps m1, m0 >> >> One more load, two less shuffles, the load is probably free. >> > > That is not equivalent for m1. I think it would have to use movhpd > instead of movq for the load. But I'll try that and see how it compares.
Ok, yeah, the function is about 1-2% faster overall with your suggestion (but using movhpd instead of movq for m1). Thanks, Justin _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
