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

Reply via email to