On Fri, Mar 10, 2017 at 3:17 PM, Diego Biurrun <[email protected]> wrote: > +%macro INTERL 5 > +%if cpuflag(avx) > + vunpckhps %3, %2, %1 > + vunpcklps %2, %2, %1 > + vextractf128 %4(%5), %2, 0 > + vextractf128 %4 %+ H(%5), %3, 0 > + vextractf128 %4(%5 + 1), %2, 1 > + vextractf128 %4 %+ H(%5 + 1), %3, 1 > +%elif cpuflag(sse) > + mova %3, %2 > + unpcklps %2, %1 > + unpckhps %3, %1 > + mova %4(%5), %2 > + mova %4(%5+1), %3 > +%endif > +%endmacro
The unpacks can be factored outside the ifs. Just use 3-arg unconditionally when dst != src1. Drop the v prefix for instructions with both legacy and VEX encodings. x86inc automatically uses VEX in AVX functions. Never use vextract(f|i)128 with a 0 immediate, use a basic move instruction with the corresponding xmm register source instead. _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
