aboutsummaryrefslogtreecommitdiff
path: root/benchmarks/multiply
diff options
context:
space:
mode:
authorAndrew Waterman <waterman@eecs.berkeley.edu>2014-02-06 01:36:26 -0800
committerAndrew Waterman <waterman@eecs.berkeley.edu>2014-02-06 01:36:26 -0800
commit71330800b89cb4c6ae8716a7e78bdcf574fe04ab (patch)
tree5395bdf46cccee8f6c94538b63ab161fa41648db /benchmarks/multiply
parent6fdd12c130d0c0c13934364a4dfe12d8dcf28e27 (diff)
downloadriscv-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.mk3
-rw-r--r--benchmarks/multiply/multiply_main.c90
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 );
}