Clean up canonical mt benchmarks and reorganize extra versions in /mt. All versions...
[riscv-tests.git] / mt / do_matmul.c
diff --git a/mt/do_matmul.c b/mt/do_matmul.c
new file mode 100644 (file)
index 0000000..7a6b755
--- /dev/null
@@ -0,0 +1,26 @@
+#include "stdlib.h"
+
+#include "util.h"
+
+#include "dataset.h"
+void __attribute__((noinline)) matmul(const int coreid, const int ncores, const int lda,  const data_t A[], const data_t B[], data_t C[] )
+{
+    int i, j, k;
+    data_t acc_temp;
+    data_t *A_j, *B_i;
+    int j_start = coreid*(32/ncores);
+    int j_end = (coreid+1)*(32/ncores);
+    for ( i = 0; i < 32; i++ ) {
+        B_i = B + i;
+        for ( j = j_start; j < j_end; j++ )  
+        {
+            acc_temp = 0;
+            A_j = A + j*32;
+            for ( k = 0; k < 32; k++ ) 
+            {
+                acc_temp += *(A_j + k) * *(B_i + k*32);
+            }
+            C[i + j*32] = acc_temp;
+        }
+    }
+}