Clean up benchmarks; support uarch-specific counters
[riscv-tests.git] / benchmarks / spmv / spmv_main.c
index 11d954082bf9a3ffc3cf9473c045446f03f07f04..44cdc9964efb168f01ebd7a2f4e67229bf1c9c2c 100644 (file)
@@ -2,86 +2,13 @@
 // Double-precision general matrix multiplication benchmark
 //--------------------------------------------------------------------------
 
-//--------------------------------------------------------------------------
-// Macros
-
-// Set HOST_DEBUG to 1 if you are going to compile this for a host
-// machine (ie Athena/Linux) for debug purposes and set HOST_DEBUG
-// to 0 if you are compiling with the smips-gcc toolchain.
-
-#ifndef HOST_DEBUG
-#define HOST_DEBUG 0
-#endif
-
-// Set PREALLOCATE to 1 if you want to preallocate the benchmark
-// function before starting stats. If you have instruction/data
-// caches and you don't want to count the overhead of misses, then
-// you will need to use preallocation.
-
-#ifndef PREALLOCATE
-#define PREALLOCATE 0
-#endif
-
-// Set SET_STATS to 1 if you want to carve out the piece that actually
-// does the computation.
-
-#ifndef SET_STATS
-#define SET_STATS 0
-#endif
+#include "util.h"
 
 //--------------------------------------------------------------------------
 // Input/Reference Data
 
 #include "dataset1.h"
 
-//--------------------------------------------------------------------------
-// Helper functions
-
-int verify( long n, const double test[], const double correct[] )
-{
-  int i;
-  for ( i = 0; i < n; i++ ) {
-    if ( test[i] != correct[i] ) {
-      return 2;
-    }
-  }
-  return 1;
-}
-
-#if HOST_DEBUG
-#include <stdio.h>
-#include <stdlib.h>
-void printArray( char name[], long n, const double arr[] )
-{
-  int i;
-  printf( " %10s :", name );
-  for ( i = 0; i < n; i++ )
-    printf( " %8.1f ", arr[i] );
-  printf( "\n" );
-}
-#endif
-
-void finishTest( int toHostValue )
-{
-#if HOST_DEBUG
-  if ( toHostValue == 1 )
-    printf( "*** PASSED ***\n" );
-  else
-    printf( "*** FAILED *** (tohost = %d)\n", toHostValue );
-  exit(0);
-#else
-  asm( "mtpcr %0, cr30" : : "r" (toHostValue) );
-  while ( 1 ) { }
-#endif
-}
-
-void setStats( int enable )
-{
-#if ( !HOST_DEBUG && SET_STATS )
-  asm( "mtpcr %0, cr10" : : "r" (enable) );
-#endif
-}
-
 void spmv(int r, const double* val, const int* idx, const double* x,
           const int* ptr, double* y)
 {
@@ -119,5 +46,5 @@ int main( int argc, char* argv[] )
   spmv(R, val, idx, x, ptr, y);
   setStats(0);
 
-  finishTest(verify(R, y, verify_data));
+  return verifyDouble(R, y, verify_data);
 }