From 61d90ff66af8bfe53ef8cdda8dfe1e70463c213c Mon Sep 17 00:00:00 2001 From: Alberto Ruiz Date: Wed, 17 Jun 2015 13:02:40 +0200 Subject: gemmm --- packages/base/src/Internal/C/lapack-aux.c | 59 +++++++++++++++++++++++++++++++ packages/base/src/Internal/C/lapack-aux.h | 1 + 2 files changed, 60 insertions(+) (limited to 'packages/base/src/Internal/C') diff --git a/packages/base/src/Internal/C/lapack-aux.c b/packages/base/src/Internal/C/lapack-aux.c index 2843ab5..4d48594 100644 --- a/packages/base/src/Internal/C/lapack-aux.c +++ b/packages/base/src/Internal/C/lapack-aux.c @@ -1398,6 +1398,65 @@ ROWOP(int64_t) ROWOP_MOD(int32_t,mod) ROWOP_MOD(int64_t,mod_l) +/////////////////////////////// inplace GEMM //////////////////////////////// + +#define GEMM(T) int gemm_##T(VECG(T,c),VECG(int,p),MATG(T,a),MATG(T,b),MATG(T,r)) { \ + T a = cp[0], b = cp[1]; \ + int r1a = pp[0], c1a = pp[2], c2a = pp[3] ; \ + int r1b = pp[4], c1b = pp[6] ; \ + int r1r = pp[8], r2r = pp[9], c1r = pp[10], c2r = pp[11]; \ + int dra = r1a - r1r; \ + int dcb = c1b-c1r; \ + int nk = c2a-c1a+1; \ + int i,j,k; \ + T t; \ + for (i=r1r; i<=r2r; i++) { \ + for (j=c1r; j<=c2r; j++) { \ + t = 0; \ + for(k=0; k