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

Reply via email to