diff options
author | Andrew Waterman <waterman@eecs.berkeley.edu> | 2014-02-06 01:36:26 -0800 |
---|---|---|
committer | Andrew Waterman <waterman@eecs.berkeley.edu> | 2014-02-06 01:36:26 -0800 |
commit | 71330800b89cb4c6ae8716a7e78bdcf574fe04ab (patch) | |
tree | 5395bdf46cccee8f6c94538b63ab161fa41648db /benchmarks/multiply | |
parent | 6fdd12c130d0c0c13934364a4dfe12d8dcf28e27 (diff) | |
download | riscv-tests-71330800b89cb4c6ae8716a7e78bdcf574fe04ab.zip riscv-tests-71330800b89cb4c6ae8716a7e78bdcf574fe04ab.tar.gz riscv-tests-71330800b89cb4c6ae8716a7e78bdcf574fe04ab.tar.bz2 |
Clean up benchmarks; support uarch-specific counters
Diffstat (limited to 'benchmarks/multiply')
-rw-r--r-- | benchmarks/multiply/bmark.mk | 3 | ||||
-rw-r--r-- | benchmarks/multiply/multiply_main.c | 90 |
2 files changed, 5 insertions, 88 deletions
diff --git a/benchmarks/multiply/bmark.mk b/benchmarks/multiply/bmark.mk index d6114a1..93ba67f 100644 --- a/benchmarks/multiply/bmark.mk +++ b/benchmarks/multiply/bmark.mk @@ -11,6 +11,7 @@ multiply_c_src = \ multiply_main.c \ multiply.c \ + syscalls.c \ multiply_riscv_src = \ crt.S \ @@ -24,7 +25,7 @@ $(multiply_host_bin): $(multiply_c_src) multiply_riscv_bin = multiply.riscv $(multiply_riscv_bin): $(multiply_c_objs) $(multiply_riscv_objs) - $(RISCV_LINK) $(multiply_c_objs) $(multiply_riscv_objs) -o $(multiply_riscv_bin) + $(RISCV_LINK) $(multiply_c_objs) $(multiply_riscv_objs) -o $(multiply_riscv_bin) $(RISCV_LINK_OPTS) junk += $(multiply_c_objs) $(multiply_riscv_objs) \ $(multiply_host_bin) $(multiply_riscv_bin) diff --git a/benchmarks/multiply/multiply_main.c b/benchmarks/multiply/multiply_main.c index ca359eb..037de2f 100644 --- a/benchmarks/multiply/multiply_main.c +++ b/benchmarks/multiply/multiply_main.c @@ -8,46 +8,9 @@ // dataset1.h You should not change anything except the // HOST_DEBUG and VERIFY macros for your timing run. -#include "multiply.h" - -int ncores = 1; #include "util.h" -//-------------------------------------------------------------------------- -// 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 VERIFY to 1 if you want the program to check that the sort -// function returns the right answer. When you are doing your -// benchmarking you should set this to 0 so that the verification -// is not included in your timing. - -#ifndef VERIFY -#define VERIFY 1 -#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 "multiply.h" //-------------------------------------------------------------------------- // Input/Reference Data @@ -55,38 +18,6 @@ int ncores = 1; #include "dataset1.h" //-------------------------------------------------------------------------- -// Helper functions - -int verify( int n, int test[], int correct[] ) -{ - int i; - for ( i = 0; i < n; i++ ) { - if ( test[i] != correct[i] ) { - return 2; - } - } - return 1; -} - -#if HOST_DEBUG -void printArray( char name[], int n, int arr[] ) -{ - int i; - printf( " %10s :", name ); - for ( i = 0; i < n; i++ ) - printf( " %3d ", arr[i] ); - printf( "\n" ); -} -#endif - -void setStats( int enable ) -{ -#if ( !HOST_DEBUG && SET_STATS ) - asm( "mtpcr %0, cr10" : : "r" (enable) ); -#endif -} - -//-------------------------------------------------------------------------- // Main int main( int argc, char* argv[] ) @@ -95,42 +26,27 @@ int main( int argc, char* argv[] ) int results_data[DATA_SIZE]; // Output the input arrays - -#if HOST_DEBUG printArray( "input1", DATA_SIZE, input_data1 ); printArray( "input2", DATA_SIZE, input_data2 ); printArray( "verify", DATA_SIZE, verify_data ); -#endif -#if ( !HOST_DEBUG && PREALLOCATE ) +#if PREALLOCATE for (i = 0; i < DATA_SIZE; i++) { results_data[i] = multiply( input_data1[i], input_data2[i] ); } #endif -#if HOST_DEBUG - for (i = 0; i < DATA_SIZE; i++) - { - results_data[i] = multiply( input_data1[i], input_data2[i] ); - } -#else setStats(1); for (i = 0; i < DATA_SIZE; i++) { results_data[i] = multiply( input_data1[i], input_data2[i] ); } setStats(0); -#endif // Print out the results - -#if HOST_DEBUG printArray( "results", DATA_SIZE, results_data ); -#endif // Check the results - - finishTest(verify( DATA_SIZE, results_data, verify_data )); - + return verify( DATA_SIZE, results_data, verify_data ); } |