You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2026-05-04 21:08:03 +02:00
avcodec/x86/qpeldsp: Remove vertical MMXEXT mc functions
Superseded by SSE2. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
@@ -408,23 +408,10 @@ cglobal %1_mpeg4_qpel16_v_lowpass, 4, 6, 7, 544
|
||||
.looph:
|
||||
movu m0, [r1]
|
||||
mova m1, m0
|
||||
%if mmsize == 8
|
||||
mova m2, [r1+8]
|
||||
mova m3, [r1+8]
|
||||
punpcklbw m0, m4
|
||||
punpckhbw m1, m4
|
||||
punpcklbw m2, m4
|
||||
punpckhbw m3, m4
|
||||
mova [r5], m0
|
||||
mova [r5+0x88], m1
|
||||
mova [r5+0x110], m2
|
||||
mova [r5+0x198], m3
|
||||
%else
|
||||
punpcklbw m0, m4
|
||||
punpckhbw m1, m4
|
||||
mova [r5], m0
|
||||
mova [r5+0x110], m1
|
||||
%endif
|
||||
add r1, r3
|
||||
add r5, mmsize
|
||||
dec r4d
|
||||
@@ -481,19 +468,6 @@ cglobal %1_mpeg4_qpel16_v_lowpass, 4, 6, 7, 544
|
||||
movh %1, %2
|
||||
%endmacro
|
||||
|
||||
INIT_MMX mmxext
|
||||
%define PW_ROUND pw_16
|
||||
%define OP_MOV PUT_OPH
|
||||
MPEG4_QPEL16_V_LOWPASS put
|
||||
%define PW_ROUND pw_16
|
||||
%define OP_MOV AVG_OPH
|
||||
MPEG4_QPEL16_V_LOWPASS avg
|
||||
%define PW_ROUND pw_15
|
||||
%define OP_MOV PUT_OPH
|
||||
MPEG4_QPEL16_V_LOWPASS put_no_rnd
|
||||
|
||||
|
||||
|
||||
%macro MPEG4_QPEL8_V_LOWPASS 1
|
||||
cglobal %1_mpeg4_qpel8_v_lowpass, 4, 6, 7, 144
|
||||
mov r4d, 9
|
||||
@@ -502,31 +476,14 @@ cglobal %1_mpeg4_qpel8_v_lowpass, 4, 6, 7, 144
|
||||
.looph:
|
||||
movq m0, [r1]
|
||||
add r1, r3
|
||||
%if mmsize == 8
|
||||
mova m1, m0
|
||||
punpcklbw m0, m2
|
||||
punpckhbw m1, m2
|
||||
mova [r5], m0
|
||||
mova [r5+0x48], m1
|
||||
%else
|
||||
punpcklbw m0, m2
|
||||
mova [r5], m0
|
||||
%endif
|
||||
add r5, mmsize
|
||||
dec r4d
|
||||
jne .looph
|
||||
|
||||
|
||||
%if mmsize == 8
|
||||
mov r4d, 2
|
||||
mov r1, r0
|
||||
mov r5, rsp
|
||||
.loopv:
|
||||
%define R5 r5
|
||||
%else
|
||||
%define R5 rsp
|
||||
%endif
|
||||
|
||||
mova m0, [R5+0 * mmsize]
|
||||
mova m1, [R5+1 * mmsize]
|
||||
mova m2, [R5+2 * mmsize]
|
||||
@@ -543,26 +500,9 @@ cglobal %1_mpeg4_qpel8_v_lowpass, 4, 6, 7, 144
|
||||
QPEL_V_LOW [R5+3*mmsize], [R5+4*mmsize], [R5+5*mmsize], [R5+7*mmsize], [r0]
|
||||
QPEL_V_LOW [R5+4*mmsize], [R5+5*mmsize], [R5+6*mmsize], [R5+6*mmsize], [r0+r2]
|
||||
|
||||
%if mmsize == 8
|
||||
add r5, 0x48
|
||||
lea r0, [r1+4]
|
||||
dec r4d
|
||||
jne .loopv
|
||||
%endif
|
||||
RET
|
||||
%endmacro
|
||||
|
||||
INIT_MMX mmxext
|
||||
%define PW_ROUND pw_16
|
||||
%define OP_MOV PUT_OPH
|
||||
MPEG4_QPEL8_V_LOWPASS put
|
||||
%define PW_ROUND pw_16
|
||||
%define OP_MOV AVG_OPH
|
||||
MPEG4_QPEL8_V_LOWPASS avg
|
||||
%define PW_ROUND pw_15
|
||||
%define OP_MOV PUT_OPH
|
||||
MPEG4_QPEL8_V_LOWPASS put_no_rnd
|
||||
|
||||
INIT_XMM sse2
|
||||
%define PW_ROUND pw_16
|
||||
%define OP_MOV PUT_OPH
|
||||
|
||||
@@ -264,12 +264,8 @@ MACRO(avg,, SIZE, SIZEP1, HXMM, VXMM, HVXMM, L2) \
|
||||
MACRO(put_no_rnd, no_rnd_, SIZE, SIZEP1, HXMM, VXMM, HVXMM, L2)
|
||||
|
||||
QPEL3(QPEL_H, 8, 9, mmxext, mmxext, mmxext, mmxext)
|
||||
QPEL3(QPEL_V, 8, 9, mmxext, mmxext, mmxext, mmxext)
|
||||
QPEL3(QPEL_HV, 8, 9, mmxext, mmxext, mmxext, mmxext)
|
||||
|
||||
QPEL3(QPEL_H, 16, 17, mmxext, mmxext, mmxext, mmxext)
|
||||
QPEL3(QPEL_V, 16, 17, mmxext, mmxext, mmxext, mmxext)
|
||||
QPEL3(QPEL_HV, 16, 17, mmxext, mmxext, mmxext, mmxext)
|
||||
|
||||
QPEL3(QPEL_V, 8, 9, ssse3, sse2, ssse3, mmxext)
|
||||
QPEL3(QPEL_HV, 8, 9, mmxext, sse2, sse2, mmxext)
|
||||
@@ -284,6 +280,11 @@ QPEL3(QPEL_HV, 16, 17, mmxext, sse2, sse2, mmxext)
|
||||
SET_QPEL_FUNC(put, X, Y, SIZE, CPU, PREFIX); \
|
||||
SET_QPEL_FUNC(put_no_rnd, X, Y, SIZE, CPU, PREFIX)
|
||||
|
||||
#define SET_H_QPEL_FUNCS(SIZE, CPU, PREFIX) \
|
||||
SET_QPEL_FUNCS3(1, 0, SIZE, CPU, PREFIX); \
|
||||
SET_QPEL_FUNCS3(2, 0, SIZE, CPU, PREFIX); \
|
||||
SET_QPEL_FUNCS3(3, 0, SIZE, CPU, PREFIX)
|
||||
|
||||
#define SET_V_QPEL_FUNCS(SIZE, CPU, PREFIX) \
|
||||
SET_QPEL_FUNCS3(0, 1, SIZE, CPU, PREFIX); \
|
||||
SET_QPEL_FUNCS3(0, 2, SIZE, CPU, PREFIX); \
|
||||
@@ -300,39 +301,15 @@ QPEL3(QPEL_HV, 16, 17, mmxext, sse2, sse2, mmxext)
|
||||
SET_QPEL_FUNCS3(3, 2, SIZE, CPU, PREFIX); \
|
||||
SET_QPEL_FUNCS3(3, 3, SIZE, CPU, PREFIX)
|
||||
|
||||
#define SET_QPEL_FUNCS(PFX, IDX, SIZE, CPU, PREFIX) \
|
||||
do { \
|
||||
c->PFX ## _pixels_tab[IDX][ 1] = PREFIX ## PFX ## SIZE ## _mc10_ ## CPU; \
|
||||
c->PFX ## _pixels_tab[IDX][ 2] = PREFIX ## PFX ## SIZE ## _mc20_ ## CPU; \
|
||||
c->PFX ## _pixels_tab[IDX][ 3] = PREFIX ## PFX ## SIZE ## _mc30_ ## CPU; \
|
||||
c->PFX ## _pixels_tab[IDX][ 4] = PREFIX ## PFX ## SIZE ## _mc01_ ## CPU; \
|
||||
c->PFX ## _pixels_tab[IDX][ 5] = PREFIX ## PFX ## SIZE ## _mc11_ ## CPU; \
|
||||
c->PFX ## _pixels_tab[IDX][ 6] = PREFIX ## PFX ## SIZE ## _mc21_ ## CPU; \
|
||||
c->PFX ## _pixels_tab[IDX][ 7] = PREFIX ## PFX ## SIZE ## _mc31_ ## CPU; \
|
||||
c->PFX ## _pixels_tab[IDX][ 8] = PREFIX ## PFX ## SIZE ## _mc02_ ## CPU; \
|
||||
c->PFX ## _pixels_tab[IDX][ 9] = PREFIX ## PFX ## SIZE ## _mc12_ ## CPU; \
|
||||
c->PFX ## _pixels_tab[IDX][10] = PREFIX ## PFX ## SIZE ## _mc22_ ## CPU; \
|
||||
c->PFX ## _pixels_tab[IDX][11] = PREFIX ## PFX ## SIZE ## _mc32_ ## CPU; \
|
||||
c->PFX ## _pixels_tab[IDX][12] = PREFIX ## PFX ## SIZE ## _mc03_ ## CPU; \
|
||||
c->PFX ## _pixels_tab[IDX][13] = PREFIX ## PFX ## SIZE ## _mc13_ ## CPU; \
|
||||
c->PFX ## _pixels_tab[IDX][14] = PREFIX ## PFX ## SIZE ## _mc23_ ## CPU; \
|
||||
c->PFX ## _pixels_tab[IDX][15] = PREFIX ## PFX ## SIZE ## _mc33_ ## CPU; \
|
||||
} while (0)
|
||||
|
||||
av_cold void ff_qpeldsp_init_x86(QpelDSPContext *c)
|
||||
{
|
||||
int cpu_flags = av_get_cpu_flags();
|
||||
|
||||
if (X86_MMXEXT(cpu_flags)) {
|
||||
#if HAVE_MMXEXT_EXTERNAL
|
||||
SET_QPEL_FUNCS(avg_qpel, 0, 16, mmxext, );
|
||||
c->avg_qpel_pixels_tab[1][0] = ff_avg_pixels8x8_mmxext;
|
||||
SET_QPEL_FUNCS(avg_qpel, 1, 8, mmxext, );
|
||||
|
||||
SET_QPEL_FUNCS(put_qpel, 0, 16, mmxext, );
|
||||
SET_QPEL_FUNCS(put_qpel, 1, 8, mmxext, );
|
||||
SET_QPEL_FUNCS(put_no_rnd_qpel, 0, 16, mmxext, );
|
||||
SET_QPEL_FUNCS(put_no_rnd_qpel, 1, 8, mmxext, );
|
||||
SET_H_QPEL_FUNCS(16, mmxext,);
|
||||
SET_H_QPEL_FUNCS(8, mmxext,);
|
||||
#endif /* HAVE_MMXEXT_EXTERNAL */
|
||||
}
|
||||
#if HAVE_SSE2_EXTERNAL
|
||||
|
||||
Reference in New Issue
Block a user