[FFmpeg-devel] [PATCH 1/2] x86: move horizonal add macros to x86util
James Almer
jamrial at gmail.com
Sat Apr 12 01:45:07 CEST 2014
On 11/04/14 8:14 PM, Ronald S. Bultje wrote:
> Hi
>
> On Fri, Apr 11, 2014 at 7:00 PM, James Almer <jamrial at gmail.com> wrote:
>
>> Also port relevant AVX2/XOP optimizations from x264
>>
>
> Did you get permission from them to relicense to LGPL? I know it's trivial
> code but really, but better safe than sorry.
No. Since we were importing changes from x264's x86inc/util when they were useful
I assumed it was ok.
I wrote the HADDD xop optimization, but not the AVX2 and HADDW xop ones. I can
remove those two if Henrik and Jason are against this.
I'm CCing them in any case.
>
>> +%macro HADDD 2 ; sum junk
>> +%if sizeof%1 == 32
>> +%define %2 xmm%2
>> + vextracti128 %2, %1, 1
>> +%define %1 xmm%1
>> + paddd %1, %2
>> +%endif
>> +%if mmsize >= 16
>> +%if cpuflag(xop) && sizeof%1 == 16
>> + vphadddq %1, %1
>> +%endif
>> + movhlps %2, %1
>> + paddd %1, %2
>> +%endif
>> +%if notcpuflag(xop)
>> + PSHUFLW %2, %1, q0032
>> + paddd %1, %2
>> +%endif
>> +%undef %1
>> +%undef %2
>> +%endmacro
>> +
>> +%macro HADDW 2 ; reg, tmp
>> +%if cpuflag(xop) && sizeof%1 == 16
>> + vphaddwq %1, %1
>> + movhlps %2, %1
>> + paddd %1, %2
>> +%else
>> + pmaddwd %1, [pw_1]
>> + HADDD %1, %2
>> +%endif
>> +%endmacro
>
>
> So, these require some comments on what they do - the naming is terrible.
> It suggests that they act like phaddw/d, but they actually just act on the
> lower half of the output register (or the full half of one, rather than
> both, input registers). You probably want to make that explicit in a
> command, maybe even rename just to prevent the obvious confusion.
They are not supposed to behave like phaddd/w, which is why they are not called
PHADDD/W.
Not sure what kind of comment to add. And I'd rather not rename them. I don't
want to deviate too much from x264's x86util unless necessary.
>
> Ronald
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
More information about the ffmpeg-devel
mailing list