Commit 91076128 authored by Christophe Gisquet's avatar Christophe Gisquet Committed by Michael Niedermayer

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: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 2a1158ff
...@@ -34,22 +34,6 @@ SECTION_TEXT ...@@ -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]
......
...@@ -39,11 +39,7 @@ SECTION .text ...@@ -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 ...@@ -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
......
...@@ -59,24 +59,15 @@ SECTION .text ...@@ -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 ...@@ -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]
......
...@@ -33,22 +33,6 @@ pd_8000: times 4 dd 0x8000 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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
......
...@@ -743,3 +743,19 @@ PMA_EMU PMADCSWD, pmadcswd, pmaddwd, paddd ...@@ -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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment