Browse Source

x86util: add and use RSHIFT/LSHIFT macros

Those macros take a byte number as shift argument, as this argument
differs between MMX and SSE2 instructions.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
tags/n2.3
Christophe Gisquet Michael Niedermayer 11 years ago
parent
commit
9107612818
5 changed files with 27 additions and 80 deletions
  1. +0
    -16
      libavcodec/x86/huffyuvdsp.asm
  2. +3
    -12
      libavfilter/x86/vf_yadif.asm
  3. +4
    -18
      libavfilter/x86/yadif-10.asm
  4. +4
    -34
      libavfilter/x86/yadif-16.asm
  5. +16
    -0
      libavutil/x86/x86util.asm

+ 0
- 16
libavcodec/x86/huffyuvdsp.asm View File

@@ -34,22 +34,6 @@ SECTION_TEXT
; void ff_add_hfyu_median_pred_mmxext(uint8_t *dst, const uint8_t *top,
; const uint8_t *diff, int w,
; int *left, int *left_top)
%macro LSHIFT 2
%if mmsize > 8
pslldq %1, %2
%else
psllq %1, 8*(%2)
%endif
%endmacro

%macro RSHIFT 2
%if mmsize > 8
psrldq %1, %2
%else
psrlq %1, 8*(%2)
%endif
%endmacro

%macro HFYU_MEDIAN 0
cglobal add_hfyu_median_pred, 6,6,8, dst, top, diff, w, left, left_top
movu m0, [topq]


+ 3
- 12
libavfilter/x86/vf_yadif.asm View File

@@ -39,11 +39,7 @@ SECTION .text
pavgb m5, m3
pand m4, [pb_1]
psubusb m5, m4
%if mmsize == 16
psrldq m5, 1
%else
psrlq m5, 8
%endif
RSHIFT m5, 1
punpcklbw m5, m7
mova m4, m2
psubusb m2, m3
@@ -51,13 +47,8 @@ SECTION .text
pmaxub m2, m3
mova m3, m2
mova m4, m2
%if mmsize == 16
psrldq m3, 1
psrldq m4, 2
%else
psrlq m3, 8
psrlq m4, 16
%endif
RSHIFT m3, 1
RSHIFT m4, 2
punpcklbw m2, m7
punpcklbw m3, m7
punpcklbw m4, m7


+ 4
- 18
libavfilter/x86/yadif-10.asm View File

@@ -59,24 +59,15 @@ SECTION .text
pavgw m5, m3
pand m4, [pw_1]
psubusw m5, m4
%if mmsize == 16
psrldq m5, 2
%else
psrlq m5, 16
%endif
RSHIFT m5, 2
mova m4, m2
psubusw m2, m3
psubusw m3, m4
PMAXUW m2, m3
mova m3, m2
mova m4, m2
%if mmsize == 16
psrldq m3, 2
psrldq m4, 4
%else
psrlq m3, 16
psrlq m4, 32
%endif
RSHIFT m3, 2
RSHIFT m4, 4
paddw m2, m3
paddw m2, m4
%endmacro
@@ -174,13 +165,8 @@ SECTION .text
psubusw m2, m3
psubusw m3, m4
PMAXUW m2, m3
%if mmsize == 16
mova m3, m2
psrldq m3, 4
%else
mova m3, m2
psrlq m3, 32
%endif
RSHIFT m3, 4
paddw m0, m2
paddw m0, m3
psubw m0, [pw_1]


+ 4
- 34
libavfilter/x86/yadif-16.asm View File

@@ -33,22 +33,6 @@ pd_8000: times 4 dd 0x8000

SECTION .text

%macro PIXSHIFT1 1
%if cpuflag(sse2)
psrldq %1, 2
%else
psrlq %1, 16
%endif
%endmacro

%macro PIXSHIFT2 1
%if cpuflag(sse2)
psrldq %1, 4
%else
psrlq %1, 32
%endif
%endmacro

%macro PABS 2
%if cpuflag(ssse3)
pabsd %1, %1
@@ -112,11 +96,7 @@ SECTION .text
pavgw m5, m3
pand m4, [pw_1]
psubusw m5, m4
%if mmsize == 16
psrldq m5, 2
%else
psrlq m5, 16
%endif
RSHIFT m5, 2
punpcklwd m5, m7
mova m4, m2
psubusw m2, m3
@@ -124,13 +104,8 @@ SECTION .text
PMAXUW m2, m3
mova m3, m2
mova m4, m2
%if mmsize == 16
psrldq m3, 2
psrldq m4, 4
%else
psrlq m3, 16
psrlq m4, 32
%endif
RSHIFT m3, 2
RSHIFT m4, 4
punpcklwd m2, m7
punpcklwd m3, m7
punpcklwd m4, m7
@@ -234,13 +209,8 @@ SECTION .text
psubusw m2, m3
psubusw m3, m4
PMAXUW m2, m3
%if mmsize == 16
mova m3, m2
psrldq m3, 4
%else
mova m3, m2
psrlq m3, 32
%endif
RSHIFT m3, 4
punpcklwd m2, m7
punpcklwd m3, m7
paddd m0, m2


+ 16
- 0
libavutil/x86/x86util.asm View File

@@ -743,3 +743,19 @@ PMA_EMU PMADCSWD, pmadcswd, pmaddwd, paddd
addps %1, %4
%endif
%endmacro

%macro LSHIFT 2
%if mmsize > 8
pslldq %1, %2
%else
psllq %1, 8*(%2)
%endif
%endmacro

%macro RSHIFT 2
%if mmsize > 8
psrldq %1, %2
%else
psrlq %1, 8*(%2)
%endif
%endmacro

Loading…
Cancel
Save