Mercurial > libavcodec.hg
comparison i386/dsputil_mmx.c @ 418:b2fb2081dab5 libavcodec
* somewhat more advanced test suit for dsp code - for now i386 only
cd test ; make dsptest ; ./dsptest
author | kabi |
---|---|
date | Thu, 23 May 2002 13:34:22 +0000 |
parents | 040d86058c4a |
children | bbaf743f353f |
comparison
equal
deleted
inserted
replaced
417:040d86058c4a | 418:b2fb2081dab5 |
---|---|
1080 avg_pixels_tab[3] = avg_pixels_xy2_mmx; | 1080 avg_pixels_tab[3] = avg_pixels_xy2_mmx; |
1081 } | 1081 } |
1082 } | 1082 } |
1083 } | 1083 } |
1084 | 1084 |
1085 #else // TESTCPU_MAIN | |
1086 /* | |
1087 * for testing speed of various routine - should be probably extended | |
1088 * for a general purpose regression test later | |
1089 * | |
1090 * for now use it this way: | |
1091 * | |
1092 * gcc -O4 -fomit-frame-pointer -DHAVE_AV_CONFIG_H -DTESTCPU_MAIN -I../.. -o test dsputil_mmx.c | |
1093 * | |
1094 * in libavcodec/i386 directory - then run ./test | |
1095 */ | |
1096 static inline long long rdtsc() | |
1097 { | |
1098 long long l; | |
1099 asm volatile( "rdtsc\n\t" | |
1100 : "=A" (l) | |
1101 ); | |
1102 return l; | |
1103 } | |
1104 | |
1105 int main(int argc, char* argv[]) | |
1106 { | |
1107 volatile int v; | |
1108 int i; | |
1109 const int linesize = 720; | |
1110 char empty[32768]; | |
1111 uint64_t te, ts = rdtsc(); | |
1112 char* im, *bu = empty; | |
1113 op_pixels_func fc = put_pixels_y2_mmx2; | |
1114 bu += 32; | |
1115 bu =(char*)(((long)bu) & ~0xf); // 16 bytes alignment | |
1116 im = bu; | |
1117 for(i=0; i<1000000; i++){ | |
1118 fc(im, im + 1000, linesize, 16); | |
1119 im += 4; // | |
1120 if (im > bu + 10000) | |
1121 im = bu; | |
1122 } | |
1123 te = rdtsc(); | |
1124 printf("CPU Ticks: %7d\n", (int)(te - ts)); | |
1125 } | |
1126 #endif | 1085 #endif |