From c181dfb8ab0a009795858670b4236d7e64a0c79e Mon Sep 17 00:00:00 2001 From: Sameer Agarwal Date: Wed, 27 Feb 2019 11:30:58 -0800 Subject: Consistently use EIGEN_BLAS_FUNC in BLAS. Previously, for a few functions, eithe BLASFUNC or, EIGEN_CAT was being used. This change uses EIGEN_BLAS_FUNC consistently everywhere. Also introduce EIGEN_BLAS_FUNC_SUFFIX, which by default is equal to "_", this allows the user to inject a new suffix as needed. --- blas/common.h | 6 +++++- blas/double.cpp | 2 +- blas/level1_cplx_impl.h | 8 ++++---- blas/level1_impl.h | 4 ++-- blas/single.cpp | 2 +- 5 files changed, 13 insertions(+), 9 deletions(-) (limited to 'blas') diff --git a/blas/common.h b/blas/common.h index 960c09cc6..a9b697842 100644 --- a/blas/common.h +++ b/blas/common.h @@ -166,6 +166,10 @@ T* copy_back(T* x_cpy, T* x, int n, int incx) return x_cpy; } -#define EIGEN_BLAS_FUNC(X) EIGEN_CAT(SCALAR_SUFFIX,X##_) +#ifndef EIGEN_BLAS_FUNC_SUFFIX +#define EIGEN_BLAS_FUNC_SUFFIX _ +#endif + +#define EIGEN_BLAS_FUNC(X) EIGEN_CAT(SCALAR_SUFFIX, EIGEN_CAT(X, EIGEN_BLAS_FUNC_SUFFIX)) #endif // EIGEN_BLAS_COMMON_H diff --git a/blas/double.cpp b/blas/double.cpp index 295b1d1f2..eb2e57307 100644 --- a/blas/double.cpp +++ b/blas/double.cpp @@ -19,7 +19,7 @@ #include "level2_real_impl.h" #include "level3_impl.h" -double BLASFUNC(dsdot)(int* n, float* x, int* incx, float* y, int* incy) +double EIGEN_BLAS_FUNC(sdot)(int* n, float* x, int* incx, float* y, int* incy) { if(*n<=0) return 0; diff --git a/blas/level1_cplx_impl.h b/blas/level1_cplx_impl.h index 719f5bac9..4ac457175 100644 --- a/blas/level1_cplx_impl.h +++ b/blas/level1_cplx_impl.h @@ -25,7 +25,7 @@ namespace Eigen { // computes the sum of magnitudes of all vector elements or, for a complex vector x, the sum // res = |Rex1| + |Imx1| + |Rex2| + |Imx2| + ... + |Rexn| + |Imxn|, where x is a vector of order n -RealScalar EIGEN_CAT(EIGEN_CAT(REAL_SCALAR_SUFFIX,SCALAR_SUFFIX),asum_)(int *n, RealScalar *px, int *incx) +RealScalar EIGEN_CAT(REAL_SCALAR_SUFFIX, EIGEN_BLAS_FUNC(asum))(int *n, RealScalar *px, int *incx) { // std::cerr << "__asum " << *n << " " << *incx << "\n"; Complex* x = reinterpret_cast(px); @@ -81,7 +81,7 @@ int EIGEN_BLAS_FUNC(dotuw)(int *n, RealScalar *px, int *incx, RealScalar *py, in return 0; } -RealScalar EIGEN_CAT(EIGEN_CAT(REAL_SCALAR_SUFFIX,SCALAR_SUFFIX),nrm2_)(int *n, RealScalar *px, int *incx) +RealScalar EIGEN_CAT(REAL_SCALAR_SUFFIX, EIGEN_BLAS_FUNC(nrm2))(int *n, RealScalar *px, int *incx) { // std::cerr << "__nrm2 " << *n << " " << *incx << "\n"; if(*n<=0) return 0; @@ -94,7 +94,7 @@ RealScalar EIGEN_CAT(EIGEN_CAT(REAL_SCALAR_SUFFIX,SCALAR_SUFFIX),nrm2_)(int *n, return make_vector(x,*n,*incx).stableNorm(); } -int EIGEN_CAT(EIGEN_CAT(SCALAR_SUFFIX,REAL_SCALAR_SUFFIX),rot_)(int *n, RealScalar *px, int *incx, RealScalar *py, int *incy, RealScalar *pc, RealScalar *ps) +int EIGEN_BLAS_FUNC(EIGEN_CAT(REAL_SCALAR_SUFFIX, rot))(int *n, RealScalar *px, int *incx, RealScalar *py, int *incy, RealScalar *pc, RealScalar *ps) { if(*n<=0) return 0; @@ -117,7 +117,7 @@ int EIGEN_CAT(EIGEN_CAT(SCALAR_SUFFIX,REAL_SCALAR_SUFFIX),rot_)(int *n, RealScal return 0; } -int EIGEN_CAT(EIGEN_CAT(SCALAR_SUFFIX,REAL_SCALAR_SUFFIX),scal_)(int *n, RealScalar *palpha, RealScalar *px, int *incx) +int EIGEN_BLAS_FUNC(EIGEN_CAT(REAL_SCALAR_SUFFIX, scal))(int *n, RealScalar *palpha, RealScalar *px, int *incx) { if(*n<=0) return 0; diff --git a/blas/level1_impl.h b/blas/level1_impl.h index 6e7f8c976..d3ee03477 100644 --- a/blas/level1_impl.h +++ b/blas/level1_impl.h @@ -51,7 +51,7 @@ int EIGEN_BLAS_FUNC(copy)(int *n, RealScalar *px, int *incx, RealScalar *py, int return 0; } -int EIGEN_CAT(EIGEN_CAT(i,SCALAR_SUFFIX),amax_)(int *n, RealScalar *px, int *incx) +int EIGEN_CAT(i, EIGEN_BLAS_FUNC(amax))(int *n, RealScalar *px, int *incx) { if(*n<=0) return 0; Scalar* x = reinterpret_cast(px); @@ -62,7 +62,7 @@ int EIGEN_CAT(EIGEN_CAT(i,SCALAR_SUFFIX),amax_)(int *n, RealScalar *px, int *inc return int(ret)+1; } -int EIGEN_CAT(EIGEN_CAT(i,SCALAR_SUFFIX),amin_)(int *n, RealScalar *px, int *incx) +int EIGEN_CAT(i, EIGEN_BLAS_FUNC(amin))(int *n, RealScalar *px, int *incx) { if(*n<=0) return 0; Scalar* x = reinterpret_cast(px); diff --git a/blas/single.cpp b/blas/single.cpp index 20ea57d5c..e66879aea 100644 --- a/blas/single.cpp +++ b/blas/single.cpp @@ -18,5 +18,5 @@ #include "level2_real_impl.h" #include "level3_impl.h" -float BLASFUNC(sdsdot)(int* n, float* alpha, float* x, int* incx, float* y, int* incy) +float EIGEN_BLAS_FUNC(dsdot)(int* n, float* alpha, float* x, int* incx, float* y, int* incy) { return double(*alpha) + BLASFUNC(dsdot)(n, x, incx, y, incy); } -- cgit v1.2.3