Commit dcb9cd4b authored by Zdenek Kabelac's avatar Zdenek Kabelac

* added simple test main - see comments about how to

  compile - should be probably made as a regression test

Originally committed as revision 565 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent ba0420d8
...@@ -928,6 +928,7 @@ static void clear_blocks_mmx(DCTELEM *blocks) ...@@ -928,6 +928,7 @@ static void clear_blocks_mmx(DCTELEM *blocks)
static void just_return() { return; } static void just_return() { return; }
#endif #endif
#ifndef TESTCPU_MAIN
void dsputil_init_mmx(void) void dsputil_init_mmx(void)
{ {
mm_flags = mm_support(); mm_flags = mm_support();
...@@ -1080,3 +1081,44 @@ void dsputil_set_bit_exact_mmx(void) ...@@ -1080,3 +1081,44 @@ void dsputil_set_bit_exact_mmx(void)
} }
} }
} }
#else // TESTCPU_MAIN
/*
* for testing speed of various routine - should be probably extended
* for a general purpose regression test later
*
* for now use it this way:
*
* gcc -O4 -fomit-frame-pointer -DHAVE_AV_CONFIG_H -DTESTCPU_MAIN -I../.. -o test dsputil_mmx.c
*
* in libavcodec/i386 directory - then run ./test
*/
static inline long long rdtsc()
{
long long l;
asm volatile( "rdtsc\n\t"
: "=A" (l)
);
return l;
}
int main(int argc, char* argv[])
{
volatile int v;
int i;
const int linesize = 720;
char bu[32768];
uint64_t te, ts = rdtsc();
char* im = bu;
op_pixels_func fc = put_pixels_y2_mmx2;
for(i=0; i<1000000; i++){
fc(im, im + 1000, linesize, 16);
im += 16; //
if (im > bu + 10000)
im = bu;
}
te = rdtsc();
printf("CPU Ticks: %7d\n", (int)(te - ts));
fflush(stdout);
}
#endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment