]> granicus.if.org Git - libx264/commitdiff
checkasm --bench=function_name
authorLoren Merritt <pengvado@akuvian.org>
Thu, 12 Jun 2008 14:43:41 +0000 (08:43 -0600)
committerLoren Merritt <pengvado@akuvian.org>
Wed, 18 Jun 2008 13:45:00 +0000 (07:45 -0600)
tools/checkasm.c

index b9e3205c7f8284e85aebf7f4ee572f7716a804d8..3a8f30b399a6931b7ec58a568d5a46af0cebad83 100644 (file)
@@ -37,6 +37,8 @@ typedef struct {
 } bench_func_t;
 
 int do_bench = 0;
+int bench_pattern_len = 0;
+const char *bench_pattern = "";
 char func_name[100];
 static bench_func_t benchs[MAX_FUNCS];
 
@@ -151,7 +153,7 @@ long x264_checkasm_call( long (*func)(), int *ok, ... );
 #endif
 
 #define call_bench(func,cpu,...)\
-    if(do_bench)\
+    if( do_bench && !strncmp(func_name, bench_pattern, bench_pattern_len) )\
     {\
         uint32_t tsum = 0;\
         int tcount = 0;\
@@ -1166,13 +1168,18 @@ int main(int argc, char *argv[])
     int ret = 0;
     int i;
 
-    if( argc > 1 && !strcmp( argv[1], "--bench" ) )
+    if( argc > 1 && !strncmp( argv[1], "--bench", 7 ) )
     {
 #if !defined(ARCH_X86) && !defined(ARCH_X86_64)
         fprintf( stderr, "no --bench for your cpu until you port rdtsc\n" );
         return 1;
 #endif
         do_bench = 1;
+        if( argv[1][7] == '=' )
+        {
+            bench_pattern = argv[1]+8;
+            bench_pattern_len = strlen(bench_pattern);
+        }
         argc--;
         argv++;
     }