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
65};65};
66 66
67static const struct algo idct_tab_arch[] = {67static 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
71#if CONFIG_MPEG4_DECODER && HAVE_X86ASM68#if CONFIG_MPEG4_DECODER && HAVE_X86ASM
72#if HAVE_SSE2_EXTERNAL69#if HAVE_SSE2_EXTERNAL
73 { "XVID-SSE2", ff_xvid_idct_sse2, FF_IDCT_PERM_SSE2, AV_CPU_FLAG_SSE2, 1 },70 { "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
37%macro PUT_SIGNED_PIXELS_CLAMPED_HALF 137%macro PUT_SIGNED_PIXELS_CLAMPED_HALF 1
38 mova m1, [blockq+mmsize*0+%1]38 mova m1, [blockq+mmsize*0+%1]
39 mova m2, [blockq+mmsize*2+%1]39 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
44 packsswb m1, [blockq+mmsize*1+%1]40 packsswb m1, [blockq+mmsize*1+%1]
45 packsswb m2, [blockq+mmsize*3+%1]41 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
50 paddb m1, m042 paddb m1, m0
51 paddb m2, m043 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
60 movq [pixelsq+lsizeq*0], m144 movq [pixelsq+lsizeq*0], m1
61 movhps [pixelsq+lsizeq*1], m145 movhps [pixelsq+lsizeq*1], m1
62 movq [pixelsq+lsizeq*2], m246 movq [pixelsq+lsizeq*2], m2
63 movhps [pixelsq+lsize3q ], m247 movhps [pixelsq+lsize3q ], m2
64%endif
65%endmacro48%endmacro
66 49
67%macro PUT_SIGNED_PIXELS_CLAMPED 150INIT_XMM sse2
68cglobal put_signed_pixels_clamped, 3, 4, %1, block, pixels, lsize, lsize351cglobal put_signed_pixels_clamped, 3, 4, 3, block, pixels, lsize, lsize3
69 mova m0, [pb_80]52 mova m0, [pb_80]
70 lea lsize3q, [lsizeq*3]53 lea lsize3q, [lsizeq*3]
71 PUT_SIGNED_PIXELS_CLAMPED_HALF 054 PUT_SIGNED_PIXELS_CLAMPED_HALF 0
72 lea pixelsq, [pixelsq+lsizeq*4]55 lea pixelsq, [pixelsq+lsizeq*4]
73 PUT_SIGNED_PIXELS_CLAMPED_HALF 6456 PUT_SIGNED_PIXELS_CLAMPED_HALF 64
74 RET57 RET
75%endmacro
76
77INIT_MMX mmx
78PUT_SIGNED_PIXELS_CLAMPED 0
79INIT_XMM sse2
80PUT_SIGNED_PIXELS_CLAMPED 3
81 58
82;--------------------------------------------------------------------------59;--------------------------------------------------------------------------
83; void ff_put_pixels_clamped(const int16_t *block, uint8_t *pixels,60; void ff_put_pixels_clamped(const int16_t *block, uint8_t *pixels,
@@ -87,40 +64,21 @@ PUT_SIGNED_PIXELS_CLAMPED 3 · 3 unmodified lines
87%macro PUT_PIXELS_CLAMPED_HALF 164%macro PUT_PIXELS_CLAMPED_HALF 1
88 mova m0, [blockq+mmsize*0+%1]65 mova m0, [blockq+mmsize*0+%1]
89 mova m1, [blockq+mmsize*2+%1]66 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
94 packuswb m0, [blockq+mmsize*1+%1]67 packuswb m0, [blockq+mmsize*1+%1]
95 packuswb m1, [blockq+mmsize*3+%1]68 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
104 movq [pixelsq], m069 movq [pixelsq], m0
105 movhps [lsizeq+pixelsq], m070 movhps [lsizeq+pixelsq], m0
106 movq [2*lsizeq+pixelsq], m171 movq [2*lsizeq+pixelsq], m1
107 movhps [lsize3q+pixelsq], m172 movhps [lsize3q+pixelsq], m1
108%endif
109%endmacro73%endmacro
110 74
111%macro PUT_PIXELS_CLAMPED 075INIT_XMM sse2
112cglobal put_pixels_clamped, 3, 4, 2, block, pixels, lsize, lsize376cglobal put_pixels_clamped, 3, 4, 2, block, pixels, lsize, lsize3
113 lea lsize3q, [lsizeq*3]77 lea lsize3q, [lsizeq*3]
114 PUT_PIXELS_CLAMPED_HALF 078 PUT_PIXELS_CLAMPED_HALF 0
115 lea pixelsq, [pixelsq+lsizeq*4]79 lea pixelsq, [pixelsq+lsizeq*4]
116 PUT_PIXELS_CLAMPED_HALF 6480 PUT_PIXELS_CLAMPED_HALF 64
117 RET81 RET
118%endmacro
119
120INIT_MMX mmx
121PUT_PIXELS_CLAMPED
122INIT_XMM sse2
123PUT_PIXELS_CLAMPED
124 82
125;--------------------------------------------------------------------------83;--------------------------------------------------------------------------
126; void ff_add_pixels_clamped(const int16_t *block, uint8_t *pixels,84; void ff_add_pixels_clamped(const int16_t *block, uint8_t *pixels,
@@ -130,41 +88,18 @@ PUT_PIXELS_CLAMPED · 3 unmodified lines
130%macro ADD_PIXELS_CLAMPED 188%macro ADD_PIXELS_CLAMPED 1
131 mova m0, [blockq+mmsize*0+%1]89 mova m0, [blockq+mmsize*0+%1]
132 mova m1, [blockq+mmsize*1+%1]90 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
137 movq m2, [pixelsq]91 movq m2, [pixelsq]
138 movq m3, [pixelsq+lsizeq]92 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
151 punpcklbw m2, m493 punpcklbw m2, m4
152 punpcklbw m3, m494 punpcklbw m3, m4
153 paddsw m0, m295 paddsw m0, m2
154 paddsw m1, m396 paddsw m1, m3
155%endif
156 packuswb m0, m197 packuswb m0, m1
157%if mmsize == 8
158 packuswb m5, m6
159 movq [pixelsq], m0
160 movq [pixelsq+lsizeq], m5
161%else
162 movq [pixelsq], m098 movq [pixelsq], m0
163 movhps [pixelsq+lsizeq], m099 movhps [pixelsq+lsizeq], m0
164%endif
165%endmacro100%endmacro
166 101
167%macro ADD_PIXELS_CLAMPED 0102INIT_XMM sse2
168cglobal add_pixels_clamped, 3, 3, 5, block, pixels, lsize103cglobal add_pixels_clamped, 3, 3, 5, block, pixels, lsize
169 pxor m4, m4104 pxor m4, m4
170 ADD_PIXELS_CLAMPED 0105 ADD_PIXELS_CLAMPED 0
@@ -175,9 +110,3 @@ cglobal add_pixels_clamped, 3, 3, 5, block, pixels, lsize · 4 unmodified lines
175 lea pixelsq, [pixelsq+lsizeq*2]110 lea pixelsq, [pixelsq+lsizeq*2]
176 ADD_PIXELS_CLAMPED 96111 ADD_PIXELS_CLAMPED 96
177 RET112 RET
178%endmacro
179
180INIT_MMX mmx
181ADD_PIXELS_CLAMPED
182INIT_XMM sse2
183ADD_PIXELS_CLAMPED
libavcodec/x86/idctdsp.h+0−6
@@ -22,16 +22,10 @@ · 21 unmodified lines
22#include <stddef.h>22#include <stddef.h>
23#include <stdint.h>23#include <stdint.h>
24 24
25void ff_add_pixels_clamped_mmx(const int16_t *block, uint8_t *pixels,
26 ptrdiff_t line_size);
27void ff_add_pixels_clamped_sse2(const int16_t *block, uint8_t *pixels,25void ff_add_pixels_clamped_sse2(const int16_t *block, uint8_t *pixels,
28 ptrdiff_t line_size);26 ptrdiff_t line_size);
29void ff_put_pixels_clamped_mmx(const int16_t *block, uint8_t *pixels,
30 ptrdiff_t line_size);
31void ff_put_pixels_clamped_sse2(const int16_t *block, uint8_t *pixels,27void ff_put_pixels_clamped_sse2(const int16_t *block, uint8_t *pixels,
32 ptrdiff_t line_size);28 ptrdiff_t line_size);
33void ff_put_signed_pixels_clamped_mmx(const int16_t *block, uint8_t *pixels,
34 ptrdiff_t line_size);
35void ff_put_signed_pixels_clamped_sse2(const int16_t *block, uint8_t *pixels,29void ff_put_signed_pixels_clamped_sse2(const int16_t *block, uint8_t *pixels,
36 ptrdiff_t line_size);30 ptrdiff_t line_size);
37 31
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
63{63{
64 int cpu_flags = av_get_cpu_flags();64 int cpu_flags = av_get_cpu_flags();
65 65
66#if ARCH_X86_32
66 if (EXTERNAL_MMX(cpu_flags)) {67 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
71 if (!high_bit_depth &&68 if (!high_bit_depth &&
72 avctx->lowres == 0 &&69 avctx->lowres == 0 &&
73 (avctx->idct_algo == FF_IDCT_AUTO ||70 (avctx->idct_algo == FF_IDCT_AUTO ||
74 avctx->idct_algo == FF_IDCT_SIMPLEAUTO ||71 avctx->idct_algo == FF_IDCT_SIMPLEAUTO ||
75 avctx->idct_algo == FF_IDCT_SIMPLEMMX)) {72 avctx->idct_algo == FF_IDCT_SIMPLEMMX)) {
76 c->idct_put = ff_simple_idct_put_mmx;
77 c->idct_add = ff_simple_idct_add_mmx;
78 c->idct = ff_simple_idct_mmx;73 c->idct = ff_simple_idct_mmx;
79 c->perm_type = FF_IDCT_PERM_SIMPLE;
80 }74 }
81 }75 }
76#endif
82 77
83 if (EXTERNAL_SSE2(cpu_flags)) {78 if (EXTERNAL_SSE2(cpu_flags)) {
84 c->put_signed_pixels_clamped = ff_put_signed_pixels_clamped_sse2;79 c->put_signed_pixels_clamped = ff_put_signed_pixels_clamped_sse2;
85 c->put_pixels_clamped = ff_put_pixels_clamped_sse2;80 c->put_pixels_clamped = ff_put_pixels_clamped_sse2;
86 c->add_pixels_clamped = ff_add_pixels_clamped_sse2;81 c->add_pixels_clamped = ff_add_pixels_clamped_sse2;
87 82
83#if ARCH_X86_32
88 if (!high_bit_depth &&84 if (!high_bit_depth &&
89 avctx->lowres == 0 &&85 avctx->lowres == 0 &&
90 (avctx->idct_algo == FF_IDCT_AUTO ||86 (avctx->idct_algo == FF_IDCT_AUTO ||
@@ -94,6 +90,7 @@ av_cold void ff_idctdsp_init_x86(IDCTDSPContext *c, AVCodecContext *avctx, · 3 unmodified lines
94 c->idct_add = ff_simple_idct_add_sse2;90 c->idct_add = ff_simple_idct_add_sse2;
95 c->perm_type = FF_IDCT_PERM_SIMPLE;91 c->perm_type = FF_IDCT_PERM_SIMPLE;
96 }92 }
93#endif
97 94
98 if (ARCH_X86_64 &&95 if (ARCH_X86_64 &&
99 !high_bit_depth &&96 !high_bit_depth &&
libavcodec/x86/simple_idct.asm+2−20
@@ -25,6 +25,7 @@ · 24 unmodified lines
25 25
26%include "libavutil/x86/x86util.asm"26%include "libavutil/x86/x86util.asm"
27 27
28%if ARCH_X86_32
28SECTION_RODATA29SECTION_RODATA
29 30
30cextern pb_8031cextern pb_80
@@ -846,26 +847,6 @@ cglobal simple_idct, 1, 2, 8, 128, block, t0 · 815 unmodified lines
846 IDCT847 IDCT
847RET848RET
848 849
849cglobal 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
855RET
856
857cglobal 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
867RET
868
869INIT_XMM sse2850INIT_XMM sse2
870 851
871cglobal simple_idct_put, 3, 5, 8, 128, pixels, lsize, block, lsize3, t0852cglobal 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
887 lea pixelsq, [pixelsq+lsizeq*2]868 lea pixelsq, [pixelsq+lsizeq*2]
888 ADD_PIXELS_CLAMPED 96869 ADD_PIXELS_CLAMPED 96
889RET870RET
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