1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-03-28 12:32:17 +02:00

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>
This commit is contained in:
Christophe Gisquet 2014-06-15 01:05:03 +02:00 committed by Michael Niedermayer
parent 2a1158ff3b
commit 9107612818
5 changed files with 27 additions and 80 deletions

View File

@ -34,22 +34,6 @@ SECTION_TEXT
; void ff_add_hfyu_median_pred_mmxext(uint8_t *dst, const uint8_t *top, ; void ff_add_hfyu_median_pred_mmxext(uint8_t *dst, const uint8_t *top,
; const uint8_t *diff, int w, ; const uint8_t *diff, int w,
; int *left, int *left_top) ; 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 %macro HFYU_MEDIAN 0
cglobal add_hfyu_median_pred, 6,6,8, dst, top, diff, w, left, left_top cglobal add_hfyu_median_pred, 6,6,8, dst, top, diff, w, left, left_top
movu m0, [topq] movu m0, [topq]

View File

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

View File

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

View File

@ -33,22 +33,6 @@ pd_8000: times 4 dd 0x8000
SECTION .text 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 %macro PABS 2
%if cpuflag(ssse3) %if cpuflag(ssse3)
pabsd %1, %1 pabsd %1, %1
@ -112,11 +96,7 @@ SECTION .text
pavgw m5, m3 pavgw m5, m3
pand m4, [pw_1] pand m4, [pw_1]
psubusw m5, m4 psubusw m5, m4
%if mmsize == 16 RSHIFT m5, 2
psrldq m5, 2
%else
psrlq m5, 16
%endif
punpcklwd m5, m7 punpcklwd m5, m7
mova m4, m2 mova m4, m2
psubusw m2, m3 psubusw m2, m3
@ -124,13 +104,8 @@ SECTION .text
PMAXUW m2, m3 PMAXUW m2, m3
mova m3, m2 mova m3, m2
mova m4, m2 mova m4, m2
%if mmsize == 16 RSHIFT m3, 2
psrldq m3, 2 RSHIFT m4, 4
psrldq m4, 4
%else
psrlq m3, 16
psrlq m4, 32
%endif
punpcklwd m2, m7 punpcklwd m2, m7
punpcklwd m3, m7 punpcklwd m3, m7
punpcklwd m4, m7 punpcklwd m4, m7
@ -234,13 +209,8 @@ SECTION .text
psubusw m2, m3 psubusw m2, m3
psubusw m3, m4 psubusw m3, m4
PMAXUW m2, m3 PMAXUW m2, m3
%if mmsize == 16
mova m3, m2 mova m3, m2
psrldq m3, 4 RSHIFT m3, 4
%else
mova m3, m2
psrlq m3, 32
%endif
punpcklwd m2, m7 punpcklwd m2, m7
punpcklwd m3, m7 punpcklwd m3, m7
paddd m0, m2 paddd m0, m2

View File

@ -743,3 +743,19 @@ PMA_EMU PMADCSWD, pmadcswd, pmaddwd, paddd
addps %1, %4 addps %1, %4
%endif %endif
%endmacro %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