History

avcodec/x86/idctdsp: Remove obsolete MMX(EXT) functions

x64 always has MMX, MMXEXT, SSE and SSE2 and this means that some functions for MMX, MMXEXT and 3dnow are always overridden by other functions (unless one e.g. explicitly disables SSE2) for x64. So given that the only systems that benefit from these functions are truely ancient 32bit x86s they are removed.

Andreas Rheinhardt committed 4 years ago

Commit bfb28b51 parent b2437a45 files · +10 −111Browse files

Unified · Split

5 files
  1. libavcodec/tests/x86/dct.c +0 −3
  2. libavcodec/x86/idctdsp.asm +4 −75
  3. libavcodec/x86/idctdsp.h +0 −6
  4. libavcodec/x86/idctdsp_init.c +4 −7
  5. libavcodec/x86/simple_idct.asm +2 −20
libavcodec/tests/x86/dct.c+0−3
@@ -65,9 +65,6 @@ static const struct algo fdct_tab_arch[] = { · 64 unmodified lines
6565 };
6666
6767 static const struct algo idct_tab_arch[] = {
68−#if HAVE_MMX_EXTERNAL
69− { "SIMPLE-MMX", ff_simple_idct_mmx, FF_IDCT_PERM_SIMPLE, AV_CPU_FLAG_MMX },
70−#endif
7168 #if CONFIG_MPEG4_DECODER && HAVE_X86ASM
7269 #if HAVE_SSE2_EXTERNAL
7370 { "XVID-SSE2", ff_xvid_idct_sse2, FF_IDCT_PERM_SSE2, AV_CPU_FLAG_SSE2, 1 },
libavcodec/x86/idctdsp.asm+4−75
@@ -37,47 +37,24 @@ SECTION .text · 36 unmodified lines
3737 %macro PUT_SIGNED_PIXELS_CLAMPED_HALF 1
3838 mova m1, [blockq+mmsize*0+%1]
3939 mova m2, [blockq+mmsize*2+%1]
40−%if mmsize == 8
41− mova m3, [blockq+mmsize*4+%1]
42− mova m4, [blockq+mmsize*6+%1]
43−%endif
4440 packsswb m1, [blockq+mmsize*1+%1]
4541 packsswb m2, [blockq+mmsize*3+%1]
46−%if mmsize == 8
47− packsswb m3, [blockq+mmsize*5+%1]
48− packsswb m4, [blockq+mmsize*7+%1]
49−%endif
5042 paddb m1, m0
5143 paddb m2, m0
52−%if mmsize == 8
53− paddb m3, m0
54− paddb m4, m0
55− movq [pixelsq+lsizeq*0], m1
56− movq [pixelsq+lsizeq*1], m2
57− movq [pixelsq+lsizeq*2], m3
58− movq [pixelsq+lsize3q ], m4
59−%else
6044 movq [pixelsq+lsizeq*0], m1
6145 movhps [pixelsq+lsizeq*1], m1
6246 movq [pixelsq+lsizeq*2], m2
6347 movhps [pixelsq+lsize3q ], m2
64−%endif
6548 %endmacro
6649
67−%macro PUT_SIGNED_PIXELS_CLAMPED 1
68−cglobal put_signed_pixels_clamped, 3, 4, %1, block, pixels, lsize, lsize3
50+INIT_XMM sse2
51+cglobal put_signed_pixels_clamped, 3, 4, 3, block, pixels, lsize, lsize3
6952 mova m0, [pb_80]
7053 lea lsize3q, [lsizeq*3]
7154 PUT_SIGNED_PIXELS_CLAMPED_HALF 0
7255 lea pixelsq, [pixelsq+lsizeq*4]
7356 PUT_SIGNED_PIXELS_CLAMPED_HALF 64
7457 RET
75−%endmacro
76−
77−INIT_MMX mmx
78−PUT_SIGNED_PIXELS_CLAMPED 0
79−INIT_XMM sse2
80−PUT_SIGNED_PIXELS_CLAMPED 3
8158
8259 ;--------------------------------------------------------------------------
8360 ; void ff_put_pixels_clamped(const int16_t *block, uint8_t *pixels,
@@ -87,40 +64,21 @@ PUT_SIGNED_PIXELS_CLAMPED 3 · 3 unmodified lines
8764 %macro PUT_PIXELS_CLAMPED_HALF 1
8865 mova m0, [blockq+mmsize*0+%1]
8966 mova m1, [blockq+mmsize*2+%1]
90−%if mmsize == 8
91− mova m2, [blockq+mmsize*4+%1]
92− mova m3, [blockq+mmsize*6+%1]
93−%endif
9467 packuswb m0, [blockq+mmsize*1+%1]
9568 packuswb m1, [blockq+mmsize*3+%1]
96−%if mmsize == 8
97− packuswb m2, [blockq+mmsize*5+%1]
98− packuswb m3, [blockq+mmsize*7+%1]
99− movq [pixelsq], m0
100− movq [lsizeq+pixelsq], m1
101− movq [2*lsizeq+pixelsq], m2
102− movq [lsize3q+pixelsq], m3
103−%else
10469 movq [pixelsq], m0
10570 movhps [lsizeq+pixelsq], m0
10671 movq [2*lsizeq+pixelsq], m1
10772 movhps [lsize3q+pixelsq], m1
108−%endif
10973 %endmacro
11074
111−%macro PUT_PIXELS_CLAMPED 0
75+INIT_XMM sse2
11276 cglobal put_pixels_clamped, 3, 4, 2, block, pixels, lsize, lsize3
11377 lea lsize3q, [lsizeq*3]
11478 PUT_PIXELS_CLAMPED_HALF 0
11579 lea pixelsq, [pixelsq+lsizeq*4]
11680 PUT_PIXELS_CLAMPED_HALF 64
11781 RET
118−%endmacro
119−
120−INIT_MMX mmx
121−PUT_PIXELS_CLAMPED
122−INIT_XMM sse2
123−PUT_PIXELS_CLAMPED
12482
12583 ;--------------------------------------------------------------------------
12684 ; void ff_add_pixels_clamped(const int16_t *block, uint8_t *pixels,
@@ -130,41 +88,18 @@ PUT_PIXELS_CLAMPED · 3 unmodified lines
13088 %macro ADD_PIXELS_CLAMPED 1
13189 mova m0, [blockq+mmsize*0+%1]
13290 mova m1, [blockq+mmsize*1+%1]
133−%if mmsize == 8
134− mova m5, [blockq+mmsize*2+%1]
135− mova m6, [blockq+mmsize*3+%1]
136−%endif
13791 movq m2, [pixelsq]
13892 movq m3, [pixelsq+lsizeq]
139−%if mmsize == 8
140− mova m7, m2
141− punpcklbw m2, m4
142− punpckhbw m7, m4
143− paddsw m0, m2
144− paddsw m1, m7
145− mova m7, m3
146− punpcklbw m3, m4
147− punpckhbw m7, m4
148− paddsw m5, m3
149− paddsw m6, m7
150−%else
15193 punpcklbw m2, m4
15294 punpcklbw m3, m4
15395 paddsw m0, m2
15496 paddsw m1, m3
155−%endif
15697 packuswb m0, m1
157−%if mmsize == 8
158− packuswb m5, m6
159− movq [pixelsq], m0
160− movq [pixelsq+lsizeq], m5
161−%else
16298 movq [pixelsq], m0
16399 movhps [pixelsq+lsizeq], m0
164−%endif
165100 %endmacro
166101
167−%macro ADD_PIXELS_CLAMPED 0
102+INIT_XMM sse2
168103 cglobal add_pixels_clamped, 3, 3, 5, block, pixels, lsize
169104 pxor m4, m4
170105 ADD_PIXELS_CLAMPED 0
@@ -175,9 +110,3 @@ cglobal add_pixels_clamped, 3, 3, 5, block, pixels, lsize · 4 unmodified lines
175110 lea pixelsq, [pixelsq+lsizeq*2]
176111 ADD_PIXELS_CLAMPED 96
177112 RET
178−%endmacro
179−
180−INIT_MMX mmx
181−ADD_PIXELS_CLAMPED
182−INIT_XMM sse2
183−ADD_PIXELS_CLAMPED
libavcodec/x86/idctdsp.h+0−6
@@ -22,16 +22,10 @@ · 21 unmodified lines
2222 #include <stddef.h>
2323 #include <stdint.h>
2424
25−void ff_add_pixels_clamped_mmx(const int16_t *block, uint8_t *pixels,
26− ptrdiff_t line_size);
2725 void ff_add_pixels_clamped_sse2(const int16_t *block, uint8_t *pixels,
2826 ptrdiff_t line_size);
29−void ff_put_pixels_clamped_mmx(const int16_t *block, uint8_t *pixels,
30− ptrdiff_t line_size);
3127 void ff_put_pixels_clamped_sse2(const int16_t *block, uint8_t *pixels,
3228 ptrdiff_t line_size);
33−void ff_put_signed_pixels_clamped_mmx(const int16_t *block, uint8_t *pixels,
34− ptrdiff_t line_size);
3529 void ff_put_signed_pixels_clamped_sse2(const int16_t *block, uint8_t *pixels,
3630 ptrdiff_t line_size);
3731
libavcodec/x86/idctdsp_init.c+4−7
@@ -63,28 +63,24 @@ av_cold void ff_idctdsp_init_x86(IDCTDSPContext *c, AVCodecContext *avctx, · 62 unmodified lines
6363 {
6464 int cpu_flags = av_get_cpu_flags();
6565
66+#if ARCH_X86_32
6667 if (EXTERNAL_MMX(cpu_flags)) {
67− c->put_signed_pixels_clamped = ff_put_signed_pixels_clamped_mmx;
68− c->put_pixels_clamped = ff_put_pixels_clamped_mmx;
69− c->add_pixels_clamped = ff_add_pixels_clamped_mmx;
70−
7168 if (!high_bit_depth &&
7269 avctx->lowres == 0 &&
7370 (avctx->idct_algo == FF_IDCT_AUTO ||
7471 avctx->idct_algo == FF_IDCT_SIMPLEAUTO ||
7572 avctx->idct_algo == FF_IDCT_SIMPLEMMX)) {
76− c->idct_put = ff_simple_idct_put_mmx;
77− c->idct_add = ff_simple_idct_add_mmx;
7873 c->idct = ff_simple_idct_mmx;
79− c->perm_type = FF_IDCT_PERM_SIMPLE;
8074 }
8175 }
76+#endif
8277
8378 if (EXTERNAL_SSE2(cpu_flags)) {
8479 c->put_signed_pixels_clamped = ff_put_signed_pixels_clamped_sse2;
8580 c->put_pixels_clamped = ff_put_pixels_clamped_sse2;
8681 c->add_pixels_clamped = ff_add_pixels_clamped_sse2;
8782
83+#if ARCH_X86_32
8884 if (!high_bit_depth &&
8985 avctx->lowres == 0 &&
9086 (avctx->idct_algo == FF_IDCT_AUTO ||
@@ -94,6 +90,7 @@ av_cold void ff_idctdsp_init_x86(IDCTDSPContext *c, AVCodecContext *avctx, · 3 unmodified lines
9490 c->idct_add = ff_simple_idct_add_sse2;
9591 c->perm_type = FF_IDCT_PERM_SIMPLE;
9692 }
93+#endif
9794
9895 if (ARCH_X86_64 &&
9996 !high_bit_depth &&
libavcodec/x86/simple_idct.asm+2−20
@@ -25,6 +25,7 @@ · 24 unmodified lines
2525
2626 %include "libavutil/x86/x86util.asm"
2727
28+%if ARCH_X86_32
2829 SECTION_RODATA
2930
3031 cextern pb_80
@@ -846,26 +847,6 @@ cglobal simple_idct, 1, 2, 8, 128, block, t0 · 815 unmodified lines
846847 IDCT
847848 RET
848849
849−cglobal simple_idct_put, 3, 5, 8, 128, pixels, lsize, block, lsize3, t0
850− IDCT
851− lea lsize3q, [lsizeq*3]
852− PUT_PIXELS_CLAMPED_HALF 0
853− lea pixelsq, [pixelsq+lsizeq*4]
854− PUT_PIXELS_CLAMPED_HALF 64
855−RET
856−
857−cglobal simple_idct_add, 3, 4, 8, 128, pixels, lsize, block, t0
858− IDCT
859− pxor m4, m4
860− ADD_PIXELS_CLAMPED 0
861− lea pixelsq, [pixelsq+lsizeq*2]
862− ADD_PIXELS_CLAMPED 32
863− lea pixelsq, [pixelsq+lsizeq*2]
864− ADD_PIXELS_CLAMPED 64
865− lea pixelsq, [pixelsq+lsizeq*2]
866− ADD_PIXELS_CLAMPED 96
867−RET
868−
869850 INIT_XMM sse2
870851
871852 cglobal simple_idct_put, 3, 5, 8, 128, pixels, lsize, block, lsize3, t0
@@ -887,3 +868,4 @@ cglobal simple_idct_add, 3, 4, 8, 128, pixels, lsize, block, t0 · 15 unmodified lines
887868 lea pixelsq, [pixelsq+lsizeq*2]
888869 ADD_PIXELS_CLAMPED 96
889870 RET
871+%endif

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t