aboutsummaryrefslogtreecommitdiffhomepage
path: root/blas
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2012-06-12 14:33:03 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2012-06-12 14:33:03 +0200
commit4e8523b835fc3559172a4715d96065735de6db2e (patch)
treec6d65b760e9880daa3fae99d2fb1fd0f4dd58de8 /blas
parent88e051019b90e539474596d8c4f284b3b57e17cd (diff)
update blas interface for trsm
Diffstat (limited to 'blas')
-rw-r--r--blas/level3_impl.h14
1 files changed, 10 insertions, 4 deletions
diff --git a/blas/level3_impl.h b/blas/level3_impl.h
index 0a3aa98b8..4f4f39080 100644
--- a/blas/level3_impl.h
+++ b/blas/level3_impl.h
@@ -81,7 +81,7 @@ int EIGEN_BLAS_FUNC(gemm)(char *opa, char *opb, int *m, int *n, int *k, RealScal
int EIGEN_BLAS_FUNC(trsm)(char *side, char *uplo, char *opa, char *diag, int *m, int *n, RealScalar *palpha, RealScalar *pa, int *lda, RealScalar *pb, int *ldb)
{
// std::cerr << "in trsm " << *side << " " << *uplo << " " << *opa << " " << *diag << " " << *m << "," << *n << " " << *palpha << " " << *lda << " " << *ldb<< "\n";
- typedef void (*functype)(DenseIndex, DenseIndex, const Scalar *, DenseIndex, Scalar *, DenseIndex);
+ typedef void (*functype)(DenseIndex, DenseIndex, const Scalar *, DenseIndex, Scalar *, DenseIndex, internal::level3_blocking<Scalar,Scalar>&);
static functype func[32];
static bool init = false;
@@ -143,11 +143,17 @@ int EIGEN_BLAS_FUNC(trsm)(char *side, char *uplo, char *opa, char *diag, int *m,
return xerbla_(SCALAR_SUFFIX_UP"TRSM ",&info,6);
int code = OP(*opa) | (SIDE(*side) << 2) | (UPLO(*uplo) << 3) | (DIAG(*diag) << 4);
-
+
if(SIDE(*side)==LEFT)
- func[code](*m, *n, a, *lda, b, *ldb);
+ {
+ internal::gemm_blocking_space<ColMajor,Scalar,Scalar,Dynamic,Dynamic,Dynamic,4> blocking(*m,*n,*m);
+ func[code](*m, *n, a, *lda, b, *ldb, blocking);
+ }
else
- func[code](*n, *m, a, *lda, b, *ldb);
+ {
+ internal::gemm_blocking_space<ColMajor,Scalar,Scalar,Dynamic,Dynamic,Dynamic,4> blocking(*m,*n,*n);
+ func[code](*n, *m, a, *lda, b, *ldb, blocking);
+ }
if(alpha!=Scalar(1))
matrix(b,*m,*n,*ldb) *= alpha;