[Ffmpeg-cvslog] CVS: ffmpeg/libavcodec/i386 dsputil_mmx.c, 1.117, 1.118
Loren Merritt CVS
lorenm
Thu Mar 23 21:16:39 CET 2006
Update of /cvsroot/ffmpeg/ffmpeg/libavcodec/i386
In directory mail:/var2/tmp/cvs-serv31939/i386
Modified Files:
dsputil_mmx.c
Log Message:
prefetch pixels for future motion compensation. 2-5% faster h264.
Index: dsputil_mmx.c
===================================================================
RCS file: /cvsroot/ffmpeg/ffmpeg/libavcodec/i386/dsputil_mmx.c,v
retrieving revision 1.117
retrieving revision 1.118
diff -u -d -r1.117 -r1.118
--- dsputil_mmx.c 22 Mar 2006 22:05:00 -0000 1.117
+++ dsputil_mmx.c 23 Mar 2006 20:16:36 -0000 1.118
@@ -2489,6 +2489,18 @@
}
}
+#define PREFETCH(name, op) \
+void name(void *mem, int stride, int h){\
+ const uint8_t *p= mem;\
+ do{\
+ asm volatile(#op" %0" :: "m"(*p));\
+ p+= stride;\
+ }while(--h);\
+}
+PREFETCH(prefetch_mmx2, prefetcht0)
+PREFETCH(prefetch_3dnow, prefetch)
+#undef PREFETCH
+
#include "h264dsp_mmx.c"
/* external functions, from idct_mmx.c */
@@ -2749,6 +2761,8 @@
c->h264_idct8_add= ff_h264_idct8_add_mmx;
if (mm_flags & MM_MMXEXT) {
+ c->prefetch = prefetch_mmx2;
+
c->put_pixels_tab[0][1] = put_pixels16_x2_mmx2;
c->put_pixels_tab[0][2] = put_pixels16_y2_mmx2;
@@ -2879,6 +2893,8 @@
c->sub_hfyu_median_prediction= sub_hfyu_median_prediction_mmx2;
#endif //CONFIG_ENCODERS
} else if (mm_flags & MM_3DNOW) {
+ c->prefetch = prefetch_3dnow;
+
c->put_pixels_tab[0][1] = put_pixels16_x2_3dnow;
c->put_pixels_tab[0][2] = put_pixels16_y2_3dnow;
More information about the ffmpeg-cvslog
mailing list