From 6fea8454acff29735ea46184cb183ca6ff42e514 Mon Sep 17 00:00:00 2001 From: Zdenek Kabelac Date: Mon, 27 May 2002 08:39:04 +0000 Subject: [PATCH] * yet a bit more extended * fixed busy loop test bug on mmx-only machine Originally committed as revision 613 to svn://svn.ffmpeg.org/ffmpeg/trunk --- tests/Makefile | 15 +++++++++---- tests/dsptest.c | 57 ++++++++++++++++++++++++++++++++----------------- 2 files changed, 49 insertions(+), 23 deletions(-) diff --git a/tests/Makefile b/tests/Makefile index 610084a69b..2c4762d80f 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -19,7 +19,7 @@ test mpeg4 mpeg: vsynth1/0.pgm asynth1.sw libavtest: vsynth1/0.pgm asynth1.sw @$(SRC_PATH)/tests/regression.sh $@ $(LIBAV_REFFILE) -# video generation +# video generation vsynth1/0.pgm: videogen @mkdir -p vsynth1 @@ -37,12 +37,19 @@ audiogen: audiogen.c $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $< DSPDEPS = $(SRC_PATH)/libavcodec/i386/dsputil_mmx.c \ - $(SRC_PATH)/libavcodec/i386/dsputil_mmx_avg.h + $(SRC_PATH)/libavcodec/i386/dsputil_mmx_avg.h \ + $(SRC_PATH)/libavcodec/i386/fdct_mmx.c \ + $(SRC_PATH)/libavcodec/i386/idct_mmx.c \ + $(SRC_PATH)/libavcodec/i386/motion_est_mmx.c \ + $(SRC_PATH)/libavcodec/i386/simple_idct_mmx.c \ + $(SRC_PATH)/libavcodec/dsputil.c \ + $(SRC_PATH)/libavcodec/dsputil.h \ + $(SRC_PATH)/libavcodec/simple_idct.c dsptestpic: dsptest.c $(DSPDEPS) - $(CC) -fPIC -DPIC -O4 -fomit-frame-pointer -DHAVE_AV_CONFIG_H -I.. -I$(SRC_PATH)/libavcodec/i386 -I$(SRC_PATH)/libavcodec/ -o $@ $< + $(CC) -fPIC -DPIC -O4 -fomit-frame-pointer -DHAVE_AV_CONFIG_H -I.. -I$(SRC_PATH)/libavcodec/i386 -I$(SRC_PATH)/libavcodec/ -o $@ $< -lm dsptest: dsptest.c $(DSPDEPS) - $(CC) -O4 -fomit-frame-pointer -DHAVE_AV_CONFIG_H -I.. -I$(SRC_PATH)/libavcodec/i386 -I$(SRC_PATH)/libavcodec/ -o $@ $< + $(CC) -O4 -fomit-frame-pointer -DHAVE_AV_CONFIG_H -I.. -I$(SRC_PATH)/libavcodec/i386 -I$(SRC_PATH)/libavcodec/ -o $@ $< -lm clean: rm -rf vsynth1 diff --git a/tests/dsptest.c b/tests/dsptest.c index 09a22ff4f2..0b3a397de6 100644 --- a/tests/dsptest.c +++ b/tests/dsptest.c @@ -17,10 +17,22 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #define TESTCPU_MAIN +#include "avcodec.h" #include "dsputil.h" -//#include "../libavcodec/dsputil.c" +#include "mpegvideo.h" +#include "mpeg12data.h" +#include "mpeg4data.h" #include "../libavcodec/i386/cputest.c" #include "../libavcodec/i386/dsputil_mmx.c" + +#include "../libavcodec/i386/fdct_mmx.c" +#include "../libavcodec/i386/idct_mmx.c" +#include "../libavcodec/i386/motion_est_mmx.c" +#include "../libavcodec/i386/simple_idct_mmx.c" +#include "../libavcodec/dsputil.c" +#include "../libavcodec/simple_idct.c" +#include "../libavcodec/jfdctfst.c" + #undef TESTCPU_MAIN #define PAD 0x10000 @@ -62,6 +74,8 @@ static const struct pix_func { } pix_func[] = { PIX_FUNC_MMX(put_pixels), + //PIX_FUNC_MMX(get_pixels), + //PIX_FUNC_MMX(put_pixels_clamped), #if 1 PIX_FUNC(put_pixels_x2), PIX_FUNC(put_pixels_y2), @@ -75,6 +89,11 @@ static const struct pix_func { PIX_FUNC(avg_pixels_x2), PIX_FUNC(avg_pixels_y2), PIX_FUNC(avg_pixels_xy2), + + PIX_FUNC_MMX(avg_no_rnd_pixels), + PIX_FUNC_MMX(avg_no_rnd_pixels_x2), + PIX_FUNC_MMX(avg_no_rnd_pixels_y2), + PIX_FUNC_MMX(avg_no_rnd_pixels_xy2), #endif { 0, 0 } }; @@ -104,25 +123,25 @@ static test_speed(int step) op_pixels_func func = pix->func; char* im = bu; - if (!(pix->mm_flags & mm_flags)) - continue; - - printf("%30s... ", pix->name); - fflush(stdout); - ts = rdtsc(); - for(i=0; i<100000; i++){ - func(im, im + 1000, linesize, 16); - im += step; - if (im > bu + 20000) - im = bu; + if (pix->mm_flags & mm_flags) + { + printf("%30s... ", pix->name); + fflush(stdout); + ts = rdtsc(); + for(i=0; i<100000; i++){ + func(im, im + 1000, linesize, 16); + im += step; + if (im > bu + 20000) + im = bu; + } + te = rdtsc(); + emms(); + printf("% 9d\n", (int)(te - ts)); + sum += (te - ts) / 100000; + if (pix->mm_flags & PAD) + puts(""); } - te = rdtsc(); - emms(); - printf("% 9d\n", (int)(te - ts)); - sum += (te - ts) / 100000; - if (pix->mm_flags & PAD) - puts(""); - pix++; + pix++; } printf("Total sum: %d\n", sum); -- GitLab