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:
parent
2a1158ff3b
commit
9107612818
@ -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
|
|||||||
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
|
||||||
|
@ -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]
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user