X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavutil%2Fx86%2Fx86util.asm;h=8908444950cea55bcaa5cd0bdfdcee5936c1f5b7;hb=ac8987591f5503768e7587c25693928f26fcb3d1;hp=2cc8470d2188a3b87ea18eac0ef03caa6d431332;hpb=34c1c08c665389daa190cb331e4d899da8dde57a;p=ffmpeg diff --git a/libavutil/x86/x86util.asm b/libavutil/x86/x86util.asm index 2cc8470d218..8908444950c 100644 --- a/libavutil/x86/x86util.asm +++ b/libavutil/x86/x86util.asm @@ -23,7 +23,8 @@ ;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ;****************************************************************************** -%define program_name ff +%define private_prefix ff +%define public_prefix avpriv %define cpuflags_mmxext cpuflags_mmx2 %include "libavutil/x86/x86inc.asm" @@ -187,7 +188,18 @@ %endif %endmacro -%macro ABS2_MMX 4 ; a, b, tmp0, tmp1 +%macro ABS2 4 +%if cpuflag(ssse3) + pabsw %1, %1 + pabsw %2, %2 +%elif cpuflag(mmxext) ; a, b, tmp0, tmp1 + pxor %3, %3 + pxor %4, %4 + psubw %3, %1 + psubw %4, %2 + pmaxsw %1, %3 + pmaxsw %2, %4 +%else ; a, b, tmp0, tmp1 pxor %3, %3 pxor %4, %4 pcmpgtw %3, %1 @@ -196,35 +208,31 @@ pxor %2, %4 psubw %1, %3 psubw %2, %4 +%endif %endmacro -%macro ABS2_MMXEXT 4 ; a, b, tmp0, tmp1 - pxor %3, %3 - pxor %4, %4 - psubw %3, %1 - psubw %4, %2 - pmaxsw %1, %3 - pmaxsw %2, %4 -%endmacro - -%macro ABS2_SSSE3 4 - pabsw %1, %1 - pabsw %2, %2 -%endmacro - -%macro ABSB_MMX 2 +%macro ABSB 2 ; source mmreg, temp mmreg (unused for ssse3) +%if cpuflag(ssse3) + pabsb %1, %1 +%else pxor %2, %2 psubb %2, %1 pminub %1, %2 +%endif %endmacro -%macro ABSB2_MMX 4 +%macro ABSB2 4 ; src1, src2, tmp1, tmp2 (tmp1/2 unused for SSSE3) +%if cpuflag(ssse3) + pabsb %1, %1 + pabsb %2, %2 +%else pxor %3, %3 pxor %4, %4 psubb %3, %1 psubb %4, %2 pminub %1, %3 pminub %2, %4 +%endif %endmacro %macro ABSD2_MMX 4 @@ -238,24 +246,11 @@ psubd %2, %4 %endmacro -%macro ABSB_SSSE3 2 - pabsb %1, %1 -%endmacro - -%macro ABSB2_SSSE3 4 - pabsb %1, %1 - pabsb %2, %2 -%endmacro - %macro ABS4 6 ABS2 %1, %2, %5, %6 ABS2 %3, %4, %5, %6 %endmacro -%define ABS2 ABS2_MMX -%define ABSB ABSB_MMX -%define ABSB2 ABSB2_MMX - %macro SPLATB_LOAD 3 %if cpuflag(ssse3) movd %1, [%2-3] @@ -307,6 +302,14 @@ %endif %endmacro +%macro PAVGB 2 +%if cpuflag(mmxext) + pavgb %1, %2 +%elif cpuflag(3dnow) + pavgusb %1, %2 +%endif +%endmacro + %macro PSHUFLW 1+ %if mmsize == 8 pshufw %1