From f485d7e403b8e5e834bfcd9704cb2a75f1cb792f Mon Sep 17 00:00:00 2001 From: mattip Date: Wed, 10 Dec 2025 20:26:27 +0200 Subject: [PATCH 1/3] patch to __attribute__ ((visibility ("default"))) on exported functions --- ci-before-build.sh | 4 +- patches/extern.patch | 2820 ++++++++++++++++++++++++++++++++++++++++++ pyproject.toml | 2 +- tools/build_steps.sh | 16 +- tools/local_build.sh | 2 +- 5 files changed, 2833 insertions(+), 11 deletions(-) create mode 100644 patches/extern.patch diff --git a/ci-before-build.sh b/ci-before-build.sh index d356dc3..76c3cee 100755 --- a/ci-before-build.sh +++ b/ci-before-build.sh @@ -44,10 +44,10 @@ set -xe if [[ "$NIGHTLY" = "true" ]]; then pushd OpenBLAS git checkout develop - # Set the pyproject.toml version: convert v0.3.24-30-g138ed79f to 0.3.34.30 + # Set the pyproject.toml version: convert v0.3.24-30-g138ed79f to 0.3.24.30.0 version=$(git describe --tags --abbrev=8 | sed -e "s/^v\(.*\)-g.*/\1/" | sed -e "s/-/./g") popd - sed -e "s/^version = .*/version = \"${version}\"/" -i.bak pyproject.toml + sed -e "s/^version = .*/version = \"${version}.0\"/" -i.bak pyproject.toml fi if [ "$(uname)" != "Darwin" ]; then diff --git a/patches/extern.patch b/patches/extern.patch new file mode 100644 index 0000000..c6c138e --- /dev/null +++ b/patches/extern.patch @@ -0,0 +1,2820 @@ +diff --git a/Makefile.rule b/Makefile.rule +index a3eb72dc0..52b2bfd75 100644 +--- a/Makefile.rule ++++ b/Makefile.rule +@@ -132,7 +132,7 @@ VERSION = 0.3.30.dev + # NO_LAPACKE = 1 + + # Build LAPACK Deprecated functions since LAPACK 3.6.0 +-BUILD_LAPACK_DEPRECATED = 1 ++# BUILD_LAPACK_DEPRECATED = 1 + + # The variable type assumed for the length of character arguments when passing + # data between Fortran LAPACK and C BLAS (defaults to "size_t", but older GCC +diff --git a/common.h b/common.h +index 4984d727c..7be46c30d 100644 +--- a/common.h ++++ b/common.h +@@ -193,8 +193,10 @@ extern "C" { + + #ifdef NEEDBUNDERSCORE + #define BLASFUNC(FUNC) FUNC##_ ++#define OPENBLAS_API(FUNC) extern FUNC##_ + #else + #define BLASFUNC(FUNC) FUNC ++#define OPENBLAS_API(FUNC) extern FUNC + #endif + + #undef USE_PTHREAD_LOCK +diff --git a/common_interface.h b/common_interface.h +index 380ce8d08..54a968223 100644 +--- a/common_interface.h ++++ b/common_interface.h +@@ -46,26 +46,26 @@ extern "C" { + + int BLASFUNC(xerbla)(char *, blasint *info, blasint); + +-void openblas_set_num_threads_(int *); ++void extern openblas_set_num_threads_(int *); + + /*Set the threading backend to a custom callback.*/ + typedef void (*openblas_dojob_callback)(int thread_num, void *jobdata, int dojob_data); + typedef void (*openblas_threads_callback)(int sync, openblas_dojob_callback dojob, int numjobs, size_t jobdata_elsize, void *jobdata, int dojob_data); + extern openblas_threads_callback openblas_threads_callback_; + +-FLOATRET BLASFUNC(sdot) (blasint *, float *, blasint *, float *, blasint *); +-FLOATRET BLASFUNC(sdsdot)(blasint *, float *, float *, blasint *, float *, blasint *); ++FLOATRET OPENBLAS_API(sdot) (blasint *, float *, blasint *, float *, blasint *); ++FLOATRET OPENBLAS_API(sdsdot)(blasint *, float *, float *, blasint *, float *, blasint *); + +-double BLASFUNC(dsdot) (blasint *, float *, blasint *, float *, blasint *); +-double BLASFUNC(ddot) (blasint *, double *, blasint *, double *, blasint *); +-xdouble BLASFUNC(qdot) (blasint *, xdouble *, blasint *, xdouble *, blasint *); ++double OPENBLAS_API(dsdot) (blasint *, float *, blasint *, float *, blasint *); ++double OPENBLAS_API(ddot) (blasint *, double *, blasint *, double *, blasint *); ++xdouble OPENBLAS_API(qdot) (blasint *, xdouble *, blasint *, xdouble *, blasint *); + +-void BLASFUNC(bscal) (blasint *, bfloat16 *, bfloat16 *, blasint *); +-float BLASFUNC(sbdot) (blasint *, bfloat16 *, blasint *, bfloat16 *, blasint *); +-void BLASFUNC(sbstobf16) (blasint *, float *, blasint *, bfloat16 *, blasint *); +-void BLASFUNC(sbdtobf16) (blasint *, double *, blasint *, bfloat16 *, blasint *); +-void BLASFUNC(sbf16tos) (blasint *, bfloat16 *, blasint *, float *, blasint *); +-void BLASFUNC(dbf16tod) (blasint *, bfloat16 *, blasint *, double *, blasint *); ++void OPENBLAS_API(bscal) (blasint *, bfloat16 *, bfloat16 *, blasint *); ++float OPENBLAS_API(sbdot) (blasint *, bfloat16 *, blasint *, bfloat16 *, blasint *); ++void OPENBLAS_API(sbstobf16) (blasint *, float *, blasint *, bfloat16 *, blasint *); ++void OPENBLAS_API(sbdtobf16) (blasint *, double *, blasint *, bfloat16 *, blasint *); ++void OPENBLAS_API(sbf16tos) (blasint *, bfloat16 *, blasint *, float *, blasint *); ++void OPENBLAS_API(dbf16tod) (blasint *, bfloat16 *, blasint *, double *, blasint *); + + #ifdef RETURN_BY_STRUCT + typedef struct { +@@ -80,731 +80,731 @@ typedef struct { + xdouble r, i; + } myxcomplex_t; + +-myccomplex_t BLASFUNC(cdotu) (blasint *, float *, blasint *, float *, blasint *); +-myccomplex_t BLASFUNC(cdotc) (blasint *, float *, blasint *, float *, blasint *); +-myzcomplex_t BLASFUNC(zdotu) (blasint *, double *, blasint *, double *, blasint *); +-myzcomplex_t BLASFUNC(zdotc) (blasint *, double *, blasint *, double *, blasint *); +-myxcomplex_t BLASFUNC(xdotu) (blasint *, xdouble *, blasint *, xdouble *, blasint *); +-myxcomplex_t BLASFUNC(xdotc) (blasint *, xdouble *, blasint *, xdouble *, blasint *); ++myccomplex_t OPENBLAS_API(cdotu) (blasint *, float *, blasint *, float *, blasint *); ++myccomplex_t OPENBLAS_API(cdotc) (blasint *, float *, blasint *, float *, blasint *); ++myzcomplex_t OPENBLAS_API(zdotu) (blasint *, double *, blasint *, double *, blasint *); ++myzcomplex_t OPENBLAS_API(zdotc) (blasint *, double *, blasint *, double *, blasint *); ++myxcomplex_t OPENBLAS_API(xdotu) (blasint *, xdouble *, blasint *, xdouble *, blasint *); ++myxcomplex_t OPENBLAS_API(xdotc) (blasint *, xdouble *, blasint *, xdouble *, blasint *); + + #elif defined RETURN_BY_STACK +-void BLASFUNC(cdotu) (openblas_complex_float *, blasint *, float * , blasint *, float *, blasint *); +-void BLASFUNC(cdotc) (openblas_complex_float *, blasint *, float *, blasint *, float *, blasint *); +-void BLASFUNC(zdotu) (openblas_complex_double *, blasint *, double *, blasint *, double *, blasint *); +-void BLASFUNC(zdotc) (openblas_complex_double *, blasint *, double *, blasint *, double *, blasint *); +-void BLASFUNC(xdotu) (openblas_complex_xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *); +-void BLASFUNC(xdotc) (openblas_complex_xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *); ++void OPENBLAS_API(cdotu) (openblas_complex_float *, blasint *, float * , blasint *, float *, blasint *); ++void OPENBLAS_API(cdotc) (openblas_complex_float *, blasint *, float *, blasint *, float *, blasint *); ++void OPENBLAS_API(zdotu) (openblas_complex_double *, blasint *, double *, blasint *, double *, blasint *); ++void OPENBLAS_API(zdotc) (openblas_complex_double *, blasint *, double *, blasint *, double *, blasint *); ++void OPENBLAS_API(xdotu) (openblas_complex_xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *); ++void OPENBLAS_API(xdotc) (openblas_complex_xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *); + #else +-openblas_complex_float BLASFUNC(cdotu) (blasint *, float *, blasint *, float *, blasint *); +-openblas_complex_float BLASFUNC(cdotc) (blasint *, float *, blasint *, float *, blasint *); +-openblas_complex_double BLASFUNC(zdotu) (blasint *, double *, blasint *, double *, blasint *); +-openblas_complex_double BLASFUNC(zdotc) (blasint *, double *, blasint *, double *, blasint *); +-openblas_complex_xdouble BLASFUNC(xdotu) (blasint *, xdouble *, blasint *, xdouble *, blasint *); +-openblas_complex_xdouble BLASFUNC(xdotc) (blasint *, xdouble *, blasint *, xdouble *, blasint *); ++openblas_complex_float OPENBLAS_API(cdotu) (blasint *, float *, blasint *, float *, blasint *); ++openblas_complex_float OPENBLAS_API(cdotc) (blasint *, float *, blasint *, float *, blasint *); ++openblas_complex_double OPENBLAS_API(zdotu) (blasint *, double *, blasint *, double *, blasint *); ++openblas_complex_double OPENBLAS_API(zdotc) (blasint *, double *, blasint *, double *, blasint *); ++openblas_complex_xdouble OPENBLAS_API(xdotu) (blasint *, xdouble *, blasint *, xdouble *, blasint *); ++openblas_complex_xdouble OPENBLAS_API(xdotc) (blasint *, xdouble *, blasint *, xdouble *, blasint *); + #endif + +-void BLASFUNC(saxpy) (blasint *, float *, float *, blasint *, float *, blasint *); +-void BLASFUNC(daxpy) (blasint *, double *, double *, blasint *, double *, blasint *); +-void BLASFUNC(qaxpy) (blasint *, xdouble *, xdouble *, blasint *, xdouble *, blasint *); +-void BLASFUNC(caxpy) (blasint *, float *, float *, blasint *, float *, blasint *); +-void BLASFUNC(zaxpy) (blasint *, double *, double *, blasint *, double *, blasint *); +-void BLASFUNC(xaxpy) (blasint *, xdouble *, xdouble *, blasint *, xdouble *, blasint *); +-void BLASFUNC(caxpyc)(blasint *, float *, float *, blasint *, float *, blasint *); +-void BLASFUNC(zaxpyc)(blasint *, double *, double *, blasint *, double *, blasint *); +-void BLASFUNC(xaxpyc)(blasint *, xdouble *, xdouble *, blasint *, xdouble *, blasint *); +- +-void BLASFUNC(scopy) (blasint *, float *, blasint *, float *, blasint *); +-void BLASFUNC(dcopy) (blasint *, double *, blasint *, double *, blasint *); +-void BLASFUNC(qcopy) (blasint *, xdouble *, blasint *, xdouble *, blasint *); +-void BLASFUNC(ccopy) (blasint *, float *, blasint *, float *, blasint *); +-void BLASFUNC(zcopy) (blasint *, double *, blasint *, double *, blasint *); +-void BLASFUNC(xcopy) (blasint *, xdouble *, blasint *, xdouble *, blasint *); +- +-void BLASFUNC(sswap) (blasint *, float *, blasint *, float *, blasint *); +-void BLASFUNC(dswap) (blasint *, double *, blasint *, double *, blasint *); +-void BLASFUNC(qswap) (blasint *, xdouble *, blasint *, xdouble *, blasint *); +-void BLASFUNC(cswap) (blasint *, float *, blasint *, float *, blasint *); +-void BLASFUNC(zswap) (blasint *, double *, blasint *, double *, blasint *); +-void BLASFUNC(xswap) (blasint *, xdouble *, blasint *, xdouble *, blasint *); +- +-FLOATRET BLASFUNC(sasum) (blasint *, float *, blasint *); +-FLOATRET BLASFUNC(scasum)(blasint *, float *, blasint *); +-double BLASFUNC(dasum) (blasint *, double *, blasint *); +-xdouble BLASFUNC(qasum) (blasint *, xdouble *, blasint *); +-double BLASFUNC(dzasum)(blasint *, double *, blasint *); +-xdouble BLASFUNC(qxasum)(blasint *, xdouble *, blasint *); +- +-FLOATRET BLASFUNC(ssum) (blasint *, float *, blasint *); +-FLOATRET BLASFUNC(scsum)(blasint *, float *, blasint *); +-double BLASFUNC(dsum) (blasint *, double *, blasint *); +-xdouble BLASFUNC(qsum) (blasint *, xdouble *, blasint *); +-double BLASFUNC(dzsum)(blasint *, double *, blasint *); +-xdouble BLASFUNC(qxsum)(blasint *, xdouble *, blasint *); +- +-blasint BLASFUNC(isamax)(blasint *, float *, blasint *); +-blasint BLASFUNC(idamax)(blasint *, double *, blasint *); +-blasint BLASFUNC(iqamax)(blasint *, xdouble *, blasint *); +-blasint BLASFUNC(icamax)(blasint *, float *, blasint *); +-blasint BLASFUNC(izamax)(blasint *, double *, blasint *); +-blasint BLASFUNC(ixamax)(blasint *, xdouble *, blasint *); +- +-blasint BLASFUNC(ismax) (blasint *, float *, blasint *); +-blasint BLASFUNC(idmax) (blasint *, double *, blasint *); +-blasint BLASFUNC(iqmax) (blasint *, xdouble *, blasint *); +-blasint BLASFUNC(icmax) (blasint *, float *, blasint *); +-blasint BLASFUNC(izmax) (blasint *, double *, blasint *); +-blasint BLASFUNC(ixmax) (blasint *, xdouble *, blasint *); +- +-blasint BLASFUNC(isamin)(blasint *, float *, blasint *); +-blasint BLASFUNC(idamin)(blasint *, double *, blasint *); +-blasint BLASFUNC(iqamin)(blasint *, xdouble *, blasint *); +-blasint BLASFUNC(icamin)(blasint *, float *, blasint *); +-blasint BLASFUNC(izamin)(blasint *, double *, blasint *); +-blasint BLASFUNC(ixamin)(blasint *, xdouble *, blasint *); +- +-blasint BLASFUNC(ismin)(blasint *, float *, blasint *); +-blasint BLASFUNC(idmin)(blasint *, double *, blasint *); +-blasint BLASFUNC(iqmin)(blasint *, xdouble *, blasint *); +-blasint BLASFUNC(icmin)(blasint *, float *, blasint *); +-blasint BLASFUNC(izmin)(blasint *, double *, blasint *); +-blasint BLASFUNC(ixmin)(blasint *, xdouble *, blasint *); +- +-FLOATRET BLASFUNC(samax) (blasint *, float *, blasint *); +-double BLASFUNC(damax) (blasint *, double *, blasint *); +-xdouble BLASFUNC(qamax) (blasint *, xdouble *, blasint *); +-FLOATRET BLASFUNC(scamax)(blasint *, float *, blasint *); +-double BLASFUNC(dzamax)(blasint *, double *, blasint *); +-xdouble BLASFUNC(qxamax)(blasint *, xdouble *, blasint *); +- +-FLOATRET BLASFUNC(samin) (blasint *, float *, blasint *); +-double BLASFUNC(damin) (blasint *, double *, blasint *); +-xdouble BLASFUNC(qamin) (blasint *, xdouble *, blasint *); +-FLOATRET BLASFUNC(scamin)(blasint *, float *, blasint *); +-double BLASFUNC(dzamin)(blasint *, double *, blasint *); +-xdouble BLASFUNC(qxamin)(blasint *, xdouble *, blasint *); +- +-FLOATRET BLASFUNC(smax) (blasint *, float *, blasint *); +-double BLASFUNC(dmax) (blasint *, double *, blasint *); +-xdouble BLASFUNC(qmax) (blasint *, xdouble *, blasint *); +-FLOATRET BLASFUNC(scmax) (blasint *, float *, blasint *); +-double BLASFUNC(dzmax) (blasint *, double *, blasint *); +-xdouble BLASFUNC(qxmax) (blasint *, xdouble *, blasint *); +- +-FLOATRET BLASFUNC(smin) (blasint *, float *, blasint *); +-double BLASFUNC(dmin) (blasint *, double *, blasint *); +-xdouble BLASFUNC(qmin) (blasint *, xdouble *, blasint *); +-FLOATRET BLASFUNC(scmin) (blasint *, float *, blasint *); +-double BLASFUNC(dzmin) (blasint *, double *, blasint *); +-xdouble BLASFUNC(qxmin) (blasint *, xdouble *, blasint *); +- +-void BLASFUNC(sscal) (blasint *, float *, float *, blasint *); +-void BLASFUNC(dscal) (blasint *, double *, double *, blasint *); +-void BLASFUNC(qscal) (blasint *, xdouble *, xdouble *, blasint *); +-void BLASFUNC(cscal) (blasint *, float *, float *, blasint *); +-void BLASFUNC(zscal) (blasint *, double *, double *, blasint *); +-void BLASFUNC(xscal) (blasint *, xdouble *, xdouble *, blasint *); +-void BLASFUNC(csscal)(blasint *, float *, float *, blasint *); +-void BLASFUNC(zdscal)(blasint *, double *, double *, blasint *); +-void BLASFUNC(xqscal)(blasint *, xdouble *, xdouble *, blasint *); +- +-FLOATRET BLASFUNC(snrm2) (blasint *, float *, blasint *); +-FLOATRET BLASFUNC(scnrm2)(blasint *, float *, blasint *); +- +-double BLASFUNC(dnrm2) (blasint *, double *, blasint *); +-xdouble BLASFUNC(qnrm2) (blasint *, xdouble *, blasint *); +-double BLASFUNC(dznrm2)(blasint *, double *, blasint *); +-xdouble BLASFUNC(qxnrm2)(blasint *, xdouble *, blasint *); +- +-void BLASFUNC(srot) (blasint *, float *, blasint *, float *, blasint *, float *, float *); +-void BLASFUNC(drot) (blasint *, double *, blasint *, double *, blasint *, double *, double *); +-void BLASFUNC(qrot) (blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *); +-void BLASFUNC(csrot) (blasint *, float *, blasint *, float *, blasint *, float *, float *); +-void BLASFUNC(zdrot) (blasint *, double *, blasint *, double *, blasint *, double *, double *); +-void BLASFUNC(xqrot) (blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *); +- +-void BLASFUNC(srotg) (float *, float *, float *, float *); +-void BLASFUNC(drotg) (double *, double *, double *, double *); +-void BLASFUNC(qrotg) (xdouble *, xdouble *, xdouble *, xdouble *); +-void BLASFUNC(crotg) (float *, float *, float *, float *); +-void BLASFUNC(zrotg) (double *, double *, double *, double *); +-void BLASFUNC(xrotg) (xdouble *, xdouble *, xdouble *, xdouble *); +- +-void BLASFUNC(srotmg)(float *, float *, float *, float *, float *); +-void BLASFUNC(drotmg)(double *, double *, double *, double *, double *); +- +-void BLASFUNC(srotm) (blasint *, float *, blasint *, float *, blasint *, float *); +-void BLASFUNC(drotm) (blasint *, double *, blasint *, double *, blasint *, double *); +-void BLASFUNC(qrotm) (blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *); ++void OPENBLAS_API(saxpy) (blasint *, float *, float *, blasint *, float *, blasint *); ++void OPENBLAS_API(daxpy) (blasint *, double *, double *, blasint *, double *, blasint *); ++void OPENBLAS_API(qaxpy) (blasint *, xdouble *, xdouble *, blasint *, xdouble *, blasint *); ++void OPENBLAS_API(caxpy) (blasint *, float *, float *, blasint *, float *, blasint *); ++void OPENBLAS_API(zaxpy) (blasint *, double *, double *, blasint *, double *, blasint *); ++void OPENBLAS_API(xaxpy) (blasint *, xdouble *, xdouble *, blasint *, xdouble *, blasint *); ++void OPENBLAS_API(caxpyc)(blasint *, float *, float *, blasint *, float *, blasint *); ++void OPENBLAS_API(zaxpyc)(blasint *, double *, double *, blasint *, double *, blasint *); ++void OPENBLAS_API(xaxpyc)(blasint *, xdouble *, xdouble *, blasint *, xdouble *, blasint *); ++ ++void OPENBLAS_API(scopy) (blasint *, float *, blasint *, float *, blasint *); ++void OPENBLAS_API(dcopy) (blasint *, double *, blasint *, double *, blasint *); ++void OPENBLAS_API(qcopy) (blasint *, xdouble *, blasint *, xdouble *, blasint *); ++void OPENBLAS_API(ccopy) (blasint *, float *, blasint *, float *, blasint *); ++void OPENBLAS_API(zcopy) (blasint *, double *, blasint *, double *, blasint *); ++void OPENBLAS_API(xcopy) (blasint *, xdouble *, blasint *, xdouble *, blasint *); ++ ++void OPENBLAS_API(sswap) (blasint *, float *, blasint *, float *, blasint *); ++void OPENBLAS_API(dswap) (blasint *, double *, blasint *, double *, blasint *); ++void OPENBLAS_API(qswap) (blasint *, xdouble *, blasint *, xdouble *, blasint *); ++void OPENBLAS_API(cswap) (blasint *, float *, blasint *, float *, blasint *); ++void OPENBLAS_API(zswap) (blasint *, double *, blasint *, double *, blasint *); ++void OPENBLAS_API(xswap) (blasint *, xdouble *, blasint *, xdouble *, blasint *); ++ ++FLOATRET OPENBLAS_API(sasum) (blasint *, float *, blasint *); ++FLOATRET OPENBLAS_API(scasum)(blasint *, float *, blasint *); ++double OPENBLAS_API(dasum) (blasint *, double *, blasint *); ++xdouble OPENBLAS_API(qasum) (blasint *, xdouble *, blasint *); ++double OPENBLAS_API(dzasum)(blasint *, double *, blasint *); ++xdouble OPENBLAS_API(qxasum)(blasint *, xdouble *, blasint *); ++ ++FLOATRET OPENBLAS_API(ssum) (blasint *, float *, blasint *); ++FLOATRET OPENBLAS_API(scsum)(blasint *, float *, blasint *); ++double OPENBLAS_API(dsum) (blasint *, double *, blasint *); ++xdouble OPENBLAS_API(qsum) (blasint *, xdouble *, blasint *); ++double OPENBLAS_API(dzsum)(blasint *, double *, blasint *); ++xdouble OPENBLAS_API(qxsum)(blasint *, xdouble *, blasint *); ++ ++blasint OPENBLAS_API(isamax)(blasint *, float *, blasint *); ++blasint OPENBLAS_API(idamax)(blasint *, double *, blasint *); ++blasint OPENBLAS_API(iqamax)(blasint *, xdouble *, blasint *); ++blasint OPENBLAS_API(icamax)(blasint *, float *, blasint *); ++blasint OPENBLAS_API(izamax)(blasint *, double *, blasint *); ++blasint OPENBLAS_API(ixamax)(blasint *, xdouble *, blasint *); ++ ++blasint OPENBLAS_API(ismax) (blasint *, float *, blasint *); ++blasint OPENBLAS_API(idmax) (blasint *, double *, blasint *); ++blasint OPENBLAS_API(iqmax) (blasint *, xdouble *, blasint *); ++blasint OPENBLAS_API(icmax) (blasint *, float *, blasint *); ++blasint OPENBLAS_API(izmax) (blasint *, double *, blasint *); ++blasint OPENBLAS_API(ixmax) (blasint *, xdouble *, blasint *); ++ ++blasint OPENBLAS_API(isamin)(blasint *, float *, blasint *); ++blasint OPENBLAS_API(idamin)(blasint *, double *, blasint *); ++blasint OPENBLAS_API(iqamin)(blasint *, xdouble *, blasint *); ++blasint OPENBLAS_API(icamin)(blasint *, float *, blasint *); ++blasint OPENBLAS_API(izamin)(blasint *, double *, blasint *); ++blasint OPENBLAS_API(ixamin)(blasint *, xdouble *, blasint *); ++ ++blasint OPENBLAS_API(ismin)(blasint *, float *, blasint *); ++blasint OPENBLAS_API(idmin)(blasint *, double *, blasint *); ++blasint OPENBLAS_API(iqmin)(blasint *, xdouble *, blasint *); ++blasint OPENBLAS_API(icmin)(blasint *, float *, blasint *); ++blasint OPENBLAS_API(izmin)(blasint *, double *, blasint *); ++blasint OPENBLAS_API(ixmin)(blasint *, xdouble *, blasint *); ++ ++FLOATRET OPENBLAS_API(samax) (blasint *, float *, blasint *); ++double OPENBLAS_API(damax) (blasint *, double *, blasint *); ++xdouble OPENBLAS_API(qamax) (blasint *, xdouble *, blasint *); ++FLOATRET OPENBLAS_API(scamax)(blasint *, float *, blasint *); ++double OPENBLAS_API(dzamax)(blasint *, double *, blasint *); ++xdouble OPENBLAS_API(qxamax)(blasint *, xdouble *, blasint *); ++ ++FLOATRET OPENBLAS_API(samin) (blasint *, float *, blasint *); ++double OPENBLAS_API(damin) (blasint *, double *, blasint *); ++xdouble OPENBLAS_API(qamin) (blasint *, xdouble *, blasint *); ++FLOATRET OPENBLAS_API(scamin)(blasint *, float *, blasint *); ++double OPENBLAS_API(dzamin)(blasint *, double *, blasint *); ++xdouble OPENBLAS_API(qxamin)(blasint *, xdouble *, blasint *); ++ ++FLOATRET OPENBLAS_API(smax) (blasint *, float *, blasint *); ++double OPENBLAS_API(dmax) (blasint *, double *, blasint *); ++xdouble OPENBLAS_API(qmax) (blasint *, xdouble *, blasint *); ++FLOATRET OPENBLAS_API(scmax) (blasint *, float *, blasint *); ++double OPENBLAS_API(dzmax) (blasint *, double *, blasint *); ++xdouble OPENBLAS_API(qxmax) (blasint *, xdouble *, blasint *); ++ ++FLOATRET OPENBLAS_API(smin) (blasint *, float *, blasint *); ++double OPENBLAS_API(dmin) (blasint *, double *, blasint *); ++xdouble OPENBLAS_API(qmin) (blasint *, xdouble *, blasint *); ++FLOATRET OPENBLAS_API(scmin) (blasint *, float *, blasint *); ++double OPENBLAS_API(dzmin) (blasint *, double *, blasint *); ++xdouble OPENBLAS_API(qxmin) (blasint *, xdouble *, blasint *); ++ ++void OPENBLAS_API(sscal) (blasint *, float *, float *, blasint *); ++void OPENBLAS_API(dscal) (blasint *, double *, double *, blasint *); ++void OPENBLAS_API(qscal) (blasint *, xdouble *, xdouble *, blasint *); ++void OPENBLAS_API(cscal) (blasint *, float *, float *, blasint *); ++void OPENBLAS_API(zscal) (blasint *, double *, double *, blasint *); ++void OPENBLAS_API(xscal) (blasint *, xdouble *, xdouble *, blasint *); ++void OPENBLAS_API(csscal)(blasint *, float *, float *, blasint *); ++void OPENBLAS_API(zdscal)(blasint *, double *, double *, blasint *); ++void OPENBLAS_API(xqscal)(blasint *, xdouble *, xdouble *, blasint *); ++ ++FLOATRET OPENBLAS_API(snrm2) (blasint *, float *, blasint *); ++FLOATRET OPENBLAS_API(scnrm2)(blasint *, float *, blasint *); ++ ++double OPENBLAS_API(dnrm2) (blasint *, double *, blasint *); ++xdouble OPENBLAS_API(qnrm2) (blasint *, xdouble *, blasint *); ++double OPENBLAS_API(dznrm2)(blasint *, double *, blasint *); ++xdouble OPENBLAS_API(qxnrm2)(blasint *, xdouble *, blasint *); ++ ++void OPENBLAS_API(srot) (blasint *, float *, blasint *, float *, blasint *, float *, float *); ++void OPENBLAS_API(drot) (blasint *, double *, blasint *, double *, blasint *, double *, double *); ++void OPENBLAS_API(qrot) (blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *); ++void OPENBLAS_API(csrot) (blasint *, float *, blasint *, float *, blasint *, float *, float *); ++void OPENBLAS_API(zdrot) (blasint *, double *, blasint *, double *, blasint *, double *, double *); ++void OPENBLAS_API(xqrot) (blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *); ++ ++void OPENBLAS_API(srotg) (float *, float *, float *, float *); ++void OPENBLAS_API(drotg) (double *, double *, double *, double *); ++void OPENBLAS_API(qrotg) (xdouble *, xdouble *, xdouble *, xdouble *); ++void OPENBLAS_API(crotg) (float *, float *, float *, float *); ++void OPENBLAS_API(zrotg) (double *, double *, double *, double *); ++void OPENBLAS_API(xrotg) (xdouble *, xdouble *, xdouble *, xdouble *); ++ ++void OPENBLAS_API(srotmg)(float *, float *, float *, float *, float *); ++void OPENBLAS_API(drotmg)(double *, double *, double *, double *, double *); ++ ++void OPENBLAS_API(srotm) (blasint *, float *, blasint *, float *, blasint *, float *); ++void OPENBLAS_API(drotm) (blasint *, double *, blasint *, double *, blasint *, double *); ++void OPENBLAS_API(qrotm) (blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *); + + /* Level 2 routines */ + +-void BLASFUNC(sger)(blasint *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(sger)(blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, blasint *); +-void BLASFUNC(dger)(blasint *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(dger)(blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, blasint *); +-void BLASFUNC(qger)(blasint *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(qger)(blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, blasint *); +-void BLASFUNC(cgeru)(blasint *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(cgeru)(blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, blasint *); +-void BLASFUNC(cgerc)(blasint *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(cgerc)(blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, blasint *); +-void BLASFUNC(zgeru)(blasint *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(zgeru)(blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, blasint *); +-void BLASFUNC(zgerc)(blasint *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(zgerc)(blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, blasint *); +-void BLASFUNC(xgeru)(blasint *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(xgeru)(blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, blasint *); +-void BLASFUNC(xgerc)(blasint *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(xgerc)(blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, blasint *); + +-void BLASFUNC(bgemv)(char *, blasint *, blasint *, bfloat16 *, bfloat16 *, blasint *, ++void OPENBLAS_API(bgemv)(char *, blasint *, blasint *, bfloat16 *, bfloat16 *, blasint *, + bfloat16 *, blasint *, bfloat16 *, bfloat16 *, blasint *); +-void BLASFUNC(sbgemv)(char *, blasint *, blasint *, float *, bfloat16 *, blasint *, ++void OPENBLAS_API(sbgemv)(char *, blasint *, blasint *, float *, bfloat16 *, blasint *, + bfloat16 *, blasint *, float *, float *, blasint *); +-void BLASFUNC(shgemv)(char *, blasint *, blasint *, float *, hfloat16 *, blasint *, ++void OPENBLAS_API(shgemv)(char *, blasint *, blasint *, float *, hfloat16 *, blasint *, + hfloat16 *, blasint *, float *, float *, blasint *); +-void BLASFUNC(sgemv)(char *, blasint *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(sgemv)(char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +-void BLASFUNC(dgemv)(char *, blasint *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(dgemv)(char *, blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +-void BLASFUNC(qgemv)(char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(qgemv)(char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); +-void BLASFUNC(cgemv)(char *, blasint *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(cgemv)(char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +-void BLASFUNC(zgemv)(char *, blasint *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(zgemv)(char *, blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +-void BLASFUNC(xgemv)(char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(xgemv)(char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); + +-void BLASFUNC(strsv) (char *, char *, char *, blasint *, float *, blasint *, ++void OPENBLAS_API(strsv) (char *, char *, char *, blasint *, float *, blasint *, + float *, blasint *); +-void BLASFUNC(dtrsv) (char *, char *, char *, blasint *, double *, blasint *, ++void OPENBLAS_API(dtrsv) (char *, char *, char *, blasint *, double *, blasint *, + double *, blasint *); +-void BLASFUNC(qtrsv) (char *, char *, char *, blasint *, xdouble *, blasint *, ++void OPENBLAS_API(qtrsv) (char *, char *, char *, blasint *, xdouble *, blasint *, + xdouble *, blasint *); +-void BLASFUNC(ctrsv) (char *, char *, char *, blasint *, float *, blasint *, ++void OPENBLAS_API(ctrsv) (char *, char *, char *, blasint *, float *, blasint *, + float *, blasint *); +-void BLASFUNC(ztrsv) (char *, char *, char *, blasint *, double *, blasint *, ++void OPENBLAS_API(ztrsv) (char *, char *, char *, blasint *, double *, blasint *, + double *, blasint *); +-void BLASFUNC(xtrsv) (char *, char *, char *, blasint *, xdouble *, blasint *, ++void OPENBLAS_API(xtrsv) (char *, char *, char *, blasint *, xdouble *, blasint *, + xdouble *, blasint *); + +-void BLASFUNC(strmv) (char *, char *, char *, blasint *, float *, blasint *, ++void OPENBLAS_API(strmv) (char *, char *, char *, blasint *, float *, blasint *, + float *, blasint *); +-void BLASFUNC(dtrmv) (char *, char *, char *, blasint *, double *, blasint *, ++void OPENBLAS_API(dtrmv) (char *, char *, char *, blasint *, double *, blasint *, + double *, blasint *); +-void BLASFUNC(qtrmv) (char *, char *, char *, blasint *, xdouble *, blasint *, ++void OPENBLAS_API(qtrmv) (char *, char *, char *, blasint *, xdouble *, blasint *, + xdouble *, blasint *); +-void BLASFUNC(ctrmv) (char *, char *, char *, blasint *, float *, blasint *, ++void OPENBLAS_API(ctrmv) (char *, char *, char *, blasint *, float *, blasint *, + float *, blasint *); +-void BLASFUNC(ztrmv) (char *, char *, char *, blasint *, double *, blasint *, ++void OPENBLAS_API(ztrmv) (char *, char *, char *, blasint *, double *, blasint *, + double *, blasint *); +-void BLASFUNC(xtrmv) (char *, char *, char *, blasint *, xdouble *, blasint *, ++void OPENBLAS_API(xtrmv) (char *, char *, char *, blasint *, xdouble *, blasint *, + xdouble *, blasint *); + +-void BLASFUNC(stpsv) (char *, char *, char *, blasint *, float *, float *, blasint *); +-void BLASFUNC(dtpsv) (char *, char *, char *, blasint *, double *, double *, blasint *); +-void BLASFUNC(qtpsv) (char *, char *, char *, blasint *, xdouble *, xdouble *, blasint *); +-void BLASFUNC(ctpsv) (char *, char *, char *, blasint *, float *, float *, blasint *); +-void BLASFUNC(ztpsv) (char *, char *, char *, blasint *, double *, double *, blasint *); +-void BLASFUNC(xtpsv) (char *, char *, char *, blasint *, xdouble *, xdouble *, blasint *); +- +-void BLASFUNC(stpmv) (char *, char *, char *, blasint *, float *, float *, blasint *); +-void BLASFUNC(dtpmv) (char *, char *, char *, blasint *, double *, double *, blasint *); +-void BLASFUNC(qtpmv) (char *, char *, char *, blasint *, xdouble *, xdouble *, blasint *); +-void BLASFUNC(ctpmv) (char *, char *, char *, blasint *, float *, float *, blasint *); +-void BLASFUNC(ztpmv) (char *, char *, char *, blasint *, double *, double *, blasint *); +-void BLASFUNC(xtpmv) (char *, char *, char *, blasint *, xdouble *, xdouble *, blasint *); +- +-void BLASFUNC(stbmv) (char *, char *, char *, blasint *, blasint *, float *, blasint *, float *, blasint *); +-void BLASFUNC(dtbmv) (char *, char *, char *, blasint *, blasint *, double *, blasint *, double *, blasint *); +-void BLASFUNC(qtbmv) (char *, char *, char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, blasint *); +-void BLASFUNC(ctbmv) (char *, char *, char *, blasint *, blasint *, float *, blasint *, float *, blasint *); +-void BLASFUNC(ztbmv) (char *, char *, char *, blasint *, blasint *, double *, blasint *, double *, blasint *); +-void BLASFUNC(xtbmv) (char *, char *, char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, blasint *); +- +-void BLASFUNC(stbsv) (char *, char *, char *, blasint *, blasint *, float *, blasint *, float *, blasint *); +-void BLASFUNC(dtbsv) (char *, char *, char *, blasint *, blasint *, double *, blasint *, double *, blasint *); +-void BLASFUNC(qtbsv) (char *, char *, char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, blasint *); +-void BLASFUNC(ctbsv) (char *, char *, char *, blasint *, blasint *, float *, blasint *, float *, blasint *); +-void BLASFUNC(ztbsv) (char *, char *, char *, blasint *, blasint *, double *, blasint *, double *, blasint *); +-void BLASFUNC(xtbsv) (char *, char *, char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, blasint *); +- +-void BLASFUNC(ssymv) (char *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(stpsv) (char *, char *, char *, blasint *, float *, float *, blasint *); ++void OPENBLAS_API(dtpsv) (char *, char *, char *, blasint *, double *, double *, blasint *); ++void OPENBLAS_API(qtpsv) (char *, char *, char *, blasint *, xdouble *, xdouble *, blasint *); ++void OPENBLAS_API(ctpsv) (char *, char *, char *, blasint *, float *, float *, blasint *); ++void OPENBLAS_API(ztpsv) (char *, char *, char *, blasint *, double *, double *, blasint *); ++void OPENBLAS_API(xtpsv) (char *, char *, char *, blasint *, xdouble *, xdouble *, blasint *); ++ ++void OPENBLAS_API(stpmv) (char *, char *, char *, blasint *, float *, float *, blasint *); ++void OPENBLAS_API(dtpmv) (char *, char *, char *, blasint *, double *, double *, blasint *); ++void OPENBLAS_API(qtpmv) (char *, char *, char *, blasint *, xdouble *, xdouble *, blasint *); ++void OPENBLAS_API(ctpmv) (char *, char *, char *, blasint *, float *, float *, blasint *); ++void OPENBLAS_API(ztpmv) (char *, char *, char *, blasint *, double *, double *, blasint *); ++void OPENBLAS_API(xtpmv) (char *, char *, char *, blasint *, xdouble *, xdouble *, blasint *); ++ ++void OPENBLAS_API(stbmv) (char *, char *, char *, blasint *, blasint *, float *, blasint *, float *, blasint *); ++void OPENBLAS_API(dtbmv) (char *, char *, char *, blasint *, blasint *, double *, blasint *, double *, blasint *); ++void OPENBLAS_API(qtbmv) (char *, char *, char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, blasint *); ++void OPENBLAS_API(ctbmv) (char *, char *, char *, blasint *, blasint *, float *, blasint *, float *, blasint *); ++void OPENBLAS_API(ztbmv) (char *, char *, char *, blasint *, blasint *, double *, blasint *, double *, blasint *); ++void OPENBLAS_API(xtbmv) (char *, char *, char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, blasint *); ++ ++void OPENBLAS_API(stbsv) (char *, char *, char *, blasint *, blasint *, float *, blasint *, float *, blasint *); ++void OPENBLAS_API(dtbsv) (char *, char *, char *, blasint *, blasint *, double *, blasint *, double *, blasint *); ++void OPENBLAS_API(qtbsv) (char *, char *, char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, blasint *); ++void OPENBLAS_API(ctbsv) (char *, char *, char *, blasint *, blasint *, float *, blasint *, float *, blasint *); ++void OPENBLAS_API(ztbsv) (char *, char *, char *, blasint *, blasint *, double *, blasint *, double *, blasint *); ++void OPENBLAS_API(xtbsv) (char *, char *, char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, blasint *); ++ ++void OPENBLAS_API(ssymv) (char *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +-void BLASFUNC(dsymv) (char *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(dsymv) (char *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +-void BLASFUNC(qsymv) (char *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(qsymv) (char *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); +-void BLASFUNC(csymv) (char *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(csymv) (char *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +-void BLASFUNC(zsymv) (char *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(zsymv) (char *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +-void BLASFUNC(xsymv) (char *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(xsymv) (char *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); + +-void BLASFUNC(sspmv) (char *, blasint *, float *, float *, ++void OPENBLAS_API(sspmv) (char *, blasint *, float *, float *, + float *, blasint *, float *, float *, blasint *); +-void BLASFUNC(dspmv) (char *, blasint *, double *, double *, ++void OPENBLAS_API(dspmv) (char *, blasint *, double *, double *, + double *, blasint *, double *, double *, blasint *); +-void BLASFUNC(qspmv) (char *, blasint *, xdouble *, xdouble *, ++void OPENBLAS_API(qspmv) (char *, blasint *, xdouble *, xdouble *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); +-void BLASFUNC(cspmv) (char *, blasint *, float *, float *, ++void OPENBLAS_API(cspmv) (char *, blasint *, float *, float *, + float *, blasint *, float *, float *, blasint *); +-void BLASFUNC(zspmv) (char *, blasint *, double *, double *, ++void OPENBLAS_API(zspmv) (char *, blasint *, double *, double *, + double *, blasint *, double *, double *, blasint *); +-void BLASFUNC(xspmv) (char *, blasint *, xdouble *, xdouble *, ++void OPENBLAS_API(xspmv) (char *, blasint *, xdouble *, xdouble *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); + +-void BLASFUNC(ssyr) (char *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(ssyr) (char *, blasint *, float *, float *, blasint *, + float *, blasint *); +-void BLASFUNC(dsyr) (char *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(dsyr) (char *, blasint *, double *, double *, blasint *, + double *, blasint *); +-void BLASFUNC(qsyr) (char *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(qsyr) (char *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *); +-void BLASFUNC(csyr) (char *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(csyr) (char *, blasint *, float *, float *, blasint *, + float *, blasint *); +-void BLASFUNC(zsyr) (char *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(zsyr) (char *, blasint *, double *, double *, blasint *, + double *, blasint *); +-void BLASFUNC(xsyr) (char *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(xsyr) (char *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *); + +-void BLASFUNC(ssyr2) (char *, blasint *, float *, ++void OPENBLAS_API(ssyr2) (char *, blasint *, float *, + float *, blasint *, float *, blasint *, float *, blasint *); +-void BLASFUNC(dsyr2) (char *, blasint *, double *, ++void OPENBLAS_API(dsyr2) (char *, blasint *, double *, + double *, blasint *, double *, blasint *, double *, blasint *); +-void BLASFUNC(qsyr2) (char *, blasint *, xdouble *, ++void OPENBLAS_API(qsyr2) (char *, blasint *, xdouble *, + xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *); +-void BLASFUNC(csyr2) (char *, blasint *, float *, ++void OPENBLAS_API(csyr2) (char *, blasint *, float *, + float *, blasint *, float *, blasint *, float *, blasint *); +-void BLASFUNC(zsyr2) (char *, blasint *, double *, ++void OPENBLAS_API(zsyr2) (char *, blasint *, double *, + double *, blasint *, double *, blasint *, double *, blasint *); +-void BLASFUNC(xsyr2) (char *, blasint *, xdouble *, ++void OPENBLAS_API(xsyr2) (char *, blasint *, xdouble *, + xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *); + +-void BLASFUNC(sspr) (char *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(sspr) (char *, blasint *, float *, float *, blasint *, + float *); +-void BLASFUNC(dspr) (char *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(dspr) (char *, blasint *, double *, double *, blasint *, + double *); +-void BLASFUNC(qspr) (char *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(qspr) (char *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *); +-void BLASFUNC(cspr) (char *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(cspr) (char *, blasint *, float *, float *, blasint *, + float *); +-void BLASFUNC(zspr) (char *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(zspr) (char *, blasint *, double *, double *, blasint *, + double *); +-void BLASFUNC(xspr) (char *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(xspr) (char *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *); + +-void BLASFUNC(sspr2) (char *, blasint *, float *, ++void OPENBLAS_API(sspr2) (char *, blasint *, float *, + float *, blasint *, float *, blasint *, float *); +-void BLASFUNC(dspr2) (char *, blasint *, double *, ++void OPENBLAS_API(dspr2) (char *, blasint *, double *, + double *, blasint *, double *, blasint *, double *); +-void BLASFUNC(qspr2) (char *, blasint *, xdouble *, ++void OPENBLAS_API(qspr2) (char *, blasint *, xdouble *, + xdouble *, blasint *, xdouble *, blasint *, xdouble *); +-void BLASFUNC(cspr2) (char *, blasint *, float *, ++void OPENBLAS_API(cspr2) (char *, blasint *, float *, + float *, blasint *, float *, blasint *, float *); +-void BLASFUNC(zspr2) (char *, blasint *, double *, ++void OPENBLAS_API(zspr2) (char *, blasint *, double *, + double *, blasint *, double *, blasint *, double *); +-void BLASFUNC(xspr2) (char *, blasint *, xdouble *, ++void OPENBLAS_API(xspr2) (char *, blasint *, xdouble *, + xdouble *, blasint *, xdouble *, blasint *, xdouble *); + +-void BLASFUNC(cher) (char *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(cher) (char *, blasint *, float *, float *, blasint *, + float *, blasint *); +-void BLASFUNC(zher) (char *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(zher) (char *, blasint *, double *, double *, blasint *, + double *, blasint *); +-void BLASFUNC(xher) (char *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(xher) (char *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *); + +-void BLASFUNC(chpr) (char *, blasint *, float *, float *, blasint *, float *); +-void BLASFUNC(zhpr) (char *, blasint *, double *, double *, blasint *, double *); +-void BLASFUNC(xhpr) (char *, blasint *, xdouble *, xdouble *, blasint *, xdouble *); ++void OPENBLAS_API(chpr) (char *, blasint *, float *, float *, blasint *, float *); ++void OPENBLAS_API(zhpr) (char *, blasint *, double *, double *, blasint *, double *); ++void OPENBLAS_API(xhpr) (char *, blasint *, xdouble *, xdouble *, blasint *, xdouble *); + +-void BLASFUNC(cher2) (char *, blasint *, float *, ++void OPENBLAS_API(cher2) (char *, blasint *, float *, + float *, blasint *, float *, blasint *, float *, blasint *); +-void BLASFUNC(zher2) (char *, blasint *, double *, ++void OPENBLAS_API(zher2) (char *, blasint *, double *, + double *, blasint *, double *, blasint *, double *, blasint *); +-void BLASFUNC(xher2) (char *, blasint *, xdouble *, ++void OPENBLAS_API(xher2) (char *, blasint *, xdouble *, + xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *); + +-void BLASFUNC(chpr2) (char *, blasint *, float *, ++void OPENBLAS_API(chpr2) (char *, blasint *, float *, + float *, blasint *, float *, blasint *, float *); +-void BLASFUNC(zhpr2) (char *, blasint *, double *, ++void OPENBLAS_API(zhpr2) (char *, blasint *, double *, + double *, blasint *, double *, blasint *, double *); +-void BLASFUNC(xhpr2) (char *, blasint *, xdouble *, ++void OPENBLAS_API(xhpr2) (char *, blasint *, xdouble *, + xdouble *, blasint *, xdouble *, blasint *, xdouble *); + +-void BLASFUNC(chemv) (char *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(chemv) (char *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +-void BLASFUNC(zhemv) (char *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(zhemv) (char *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +-void BLASFUNC(xhemv) (char *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(xhemv) (char *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); + +-void BLASFUNC(chpmv) (char *, blasint *, float *, float *, ++void OPENBLAS_API(chpmv) (char *, blasint *, float *, float *, + float *, blasint *, float *, float *, blasint *); +-void BLASFUNC(zhpmv) (char *, blasint *, double *, double *, ++void OPENBLAS_API(zhpmv) (char *, blasint *, double *, double *, + double *, blasint *, double *, double *, blasint *); +-void BLASFUNC(xhpmv) (char *, blasint *, xdouble *, xdouble *, ++void OPENBLAS_API(xhpmv) (char *, blasint *, xdouble *, xdouble *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); + +-int BLASFUNC(snorm)(char *, blasint *, blasint *, float *, blasint *); +-int BLASFUNC(dnorm)(char *, blasint *, blasint *, double *, blasint *); +-int BLASFUNC(cnorm)(char *, blasint *, blasint *, float *, blasint *); +-int BLASFUNC(znorm)(char *, blasint *, blasint *, double *, blasint *); ++int OPENBLAS_API(snorm)(char *, blasint *, blasint *, float *, blasint *); ++int OPENBLAS_API(dnorm)(char *, blasint *, blasint *, double *, blasint *); ++int OPENBLAS_API(cnorm)(char *, blasint *, blasint *, float *, blasint *); ++int OPENBLAS_API(znorm)(char *, blasint *, blasint *, double *, blasint *); + +-void BLASFUNC(sgbmv)(char *, blasint *, blasint *, blasint *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(sgbmv)(char *, blasint *, blasint *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +-void BLASFUNC(dgbmv)(char *, blasint *, blasint *, blasint *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(dgbmv)(char *, blasint *, blasint *, blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +-void BLASFUNC(qgbmv)(char *, blasint *, blasint *, blasint *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(qgbmv)(char *, blasint *, blasint *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); +-void BLASFUNC(cgbmv)(char *, blasint *, blasint *, blasint *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(cgbmv)(char *, blasint *, blasint *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +-void BLASFUNC(zgbmv)(char *, blasint *, blasint *, blasint *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(zgbmv)(char *, blasint *, blasint *, blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +-void BLASFUNC(xgbmv)(char *, blasint *, blasint *, blasint *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(xgbmv)(char *, blasint *, blasint *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); + +-void BLASFUNC(ssbmv)(char *, blasint *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(ssbmv)(char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +-void BLASFUNC(dsbmv)(char *, blasint *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(dsbmv)(char *, blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +-void BLASFUNC(qsbmv)(char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(qsbmv)(char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); +-void BLASFUNC(csbmv)(char *, blasint *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(csbmv)(char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +-void BLASFUNC(zsbmv)(char *, blasint *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(zsbmv)(char *, blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +-void BLASFUNC(xsbmv)(char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(xsbmv)(char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); + +-void BLASFUNC(chbmv)(char *, blasint *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(chbmv)(char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +-void BLASFUNC(zhbmv)(char *, blasint *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(zhbmv)(char *, blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +-void BLASFUNC(xhbmv)(char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(xhbmv)(char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); + + /* Level 3 routines */ + +-void BLASFUNC(shgemm)(char *, char *, blasint *, blasint *, blasint *, float *, ++void OPENBLAS_API(shgemm)(char *, char *, blasint *, blasint *, blasint *, float *, + hfloat16 *, blasint *, hfloat16 *, blasint *, float *, float *, blasint *); +-void BLASFUNC(bgemm)(char *, char *, blasint *, blasint *, blasint *, bfloat16 *, ++void OPENBLAS_API(bgemm)(char *, char *, blasint *, blasint *, blasint *, bfloat16 *, + bfloat16 *, blasint *, bfloat16 *, blasint *, bfloat16 *, bfloat16 *, blasint *); +-void BLASFUNC(sbgemm)(char *, char *, blasint *, blasint *, blasint *, float *, ++void OPENBLAS_API(sbgemm)(char *, char *, blasint *, blasint *, blasint *, float *, + bfloat16 *, blasint *, bfloat16 *, blasint *, float *, float *, blasint *); +-void BLASFUNC(sgemm)(char *, char *, blasint *, blasint *, blasint *, float *, ++void OPENBLAS_API(sgemm)(char *, char *, blasint *, blasint *, blasint *, float *, + float *, blasint *, float *, blasint *, float *, float *, blasint *); +-void BLASFUNC(dgemm)(char *, char *, blasint *, blasint *, blasint *, double *, ++void OPENBLAS_API(dgemm)(char *, char *, blasint *, blasint *, blasint *, double *, + double *, blasint *, double *, blasint *, double *, double *, blasint *); +-void BLASFUNC(qgemm)(char *, char *, blasint *, blasint *, blasint *, xdouble *, ++void OPENBLAS_API(qgemm)(char *, char *, blasint *, blasint *, blasint *, xdouble *, + xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *, blasint *); +-void BLASFUNC(cgemm)(char *, char *, blasint *, blasint *, blasint *, float *, ++void OPENBLAS_API(cgemm)(char *, char *, blasint *, blasint *, blasint *, float *, + float *, blasint *, float *, blasint *, float *, float *, blasint *); +-void BLASFUNC(zgemm)(char *, char *, blasint *, blasint *, blasint *, double *, ++void OPENBLAS_API(zgemm)(char *, char *, blasint *, blasint *, blasint *, double *, + double *, blasint *, double *, blasint *, double *, double *, blasint *); +-void BLASFUNC(xgemm)(char *, char *, blasint *, blasint *, blasint *, xdouble *, ++void OPENBLAS_API(xgemm)(char *, char *, blasint *, blasint *, blasint *, xdouble *, + xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *, blasint *); + +-void BLASFUNC(cgemm3m)(char *, char *, blasint *, blasint *, blasint *, float *, ++void OPENBLAS_API(cgemm3m)(char *, char *, blasint *, blasint *, blasint *, float *, + float *, blasint *, float *, blasint *, float *, float *, blasint *); +-void BLASFUNC(zgemm3m)(char *, char *, blasint *, blasint *, blasint *, double *, ++void OPENBLAS_API(zgemm3m)(char *, char *, blasint *, blasint *, blasint *, double *, + double *, blasint *, double *, blasint *, double *, double *, blasint *); +-void BLASFUNC(xgemm3m)(char *, char *, blasint *, blasint *, blasint *, xdouble *, ++void OPENBLAS_API(xgemm3m)(char *, char *, blasint *, blasint *, blasint *, xdouble *, + xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *, blasint *); + +-void BLASFUNC(sgemmt)(char*, char *, char *, blasint *, blasint *, float *, ++void OPENBLAS_API(sgemmt)(char*, char *, char *, blasint *, blasint *, float *, + float *, blasint *, float *, blasint *, float *, float *, blasint *); +-void BLASFUNC(dgemmt)(char*, char *, char *, blasint *, blasint *, double *, ++void OPENBLAS_API(dgemmt)(char*, char *, char *, blasint *, blasint *, double *, + double *, blasint *, double *, blasint *, double *, double *, blasint *); +-void BLASFUNC(cgemmt)(char*, char *, char *, blasint *, blasint *, float *, ++void OPENBLAS_API(cgemmt)(char*, char *, char *, blasint *, blasint *, float *, + float *, blasint *, float *, blasint *, float *, float *, blasint *); +-void BLASFUNC(zgemmt)(char*, char *, char *, blasint *, blasint *, double *, ++void OPENBLAS_API(zgemmt)(char*, char *, char *, blasint *, blasint *, double *, + double *, blasint *, double *, blasint *, double *, double *, blasint *); + +-int BLASFUNC(sge2mm)(char *, char *, char *, blasint *, blasint *, ++int OPENBLAS_API(sge2mm)(char *, char *, char *, blasint *, blasint *, + float *, float *, blasint *, float *, blasint *, + float *, float *, blasint *); +-int BLASFUNC(dge2mm)(char *, char *, char *, blasint *, blasint *, ++int OPENBLAS_API(dge2mm)(char *, char *, char *, blasint *, blasint *, + double *, double *, blasint *, double *, blasint *, + double *, double *, blasint *); +-int BLASFUNC(cge2mm)(char *, char *, char *, blasint *, blasint *, ++int OPENBLAS_API(cge2mm)(char *, char *, char *, blasint *, blasint *, + float *, float *, blasint *, float *, blasint *, + float *, float *, blasint *); +-int BLASFUNC(zge2mm)(char *, char *, char *, blasint *, blasint *, ++int OPENBLAS_API(zge2mm)(char *, char *, char *, blasint *, blasint *, + double *, double *, blasint *, double *, blasint *, + double *, double *, blasint *); + +-void BLASFUNC(strsm)(char *, char *, char *, char *, blasint *, blasint *, ++void OPENBLAS_API(strsm)(char *, char *, char *, char *, blasint *, blasint *, + float *, float *, blasint *, float *, blasint *); +-void BLASFUNC(dtrsm)(char *, char *, char *, char *, blasint *, blasint *, ++void OPENBLAS_API(dtrsm)(char *, char *, char *, char *, blasint *, blasint *, + double *, double *, blasint *, double *, blasint *); +-void BLASFUNC(qtrsm)(char *, char *, char *, char *, blasint *, blasint *, ++void OPENBLAS_API(qtrsm)(char *, char *, char *, char *, blasint *, blasint *, + xdouble *, xdouble *, blasint *, xdouble *, blasint *); +-void BLASFUNC(ctrsm)(char *, char *, char *, char *, blasint *, blasint *, ++void OPENBLAS_API(ctrsm)(char *, char *, char *, char *, blasint *, blasint *, + float *, float *, blasint *, float *, blasint *); +-void BLASFUNC(ztrsm)(char *, char *, char *, char *, blasint *, blasint *, ++void OPENBLAS_API(ztrsm)(char *, char *, char *, char *, blasint *, blasint *, + double *, double *, blasint *, double *, blasint *); +-void BLASFUNC(xtrsm)(char *, char *, char *, char *, blasint *, blasint *, ++void OPENBLAS_API(xtrsm)(char *, char *, char *, char *, blasint *, blasint *, + xdouble *, xdouble *, blasint *, xdouble *, blasint *); + +-void BLASFUNC(strmm)(char *, char *, char *, char *, blasint *, blasint *, ++void OPENBLAS_API(strmm)(char *, char *, char *, char *, blasint *, blasint *, + float *, float *, blasint *, float *, blasint *); +-void BLASFUNC(dtrmm)(char *, char *, char *, char *, blasint *, blasint *, ++void OPENBLAS_API(dtrmm)(char *, char *, char *, char *, blasint *, blasint *, + double *, double *, blasint *, double *, blasint *); +-void BLASFUNC(qtrmm)(char *, char *, char *, char *, blasint *, blasint *, ++void OPENBLAS_API(qtrmm)(char *, char *, char *, char *, blasint *, blasint *, + xdouble *, xdouble *, blasint *, xdouble *, blasint *); +-void BLASFUNC(ctrmm)(char *, char *, char *, char *, blasint *, blasint *, ++void OPENBLAS_API(ctrmm)(char *, char *, char *, char *, blasint *, blasint *, + float *, float *, blasint *, float *, blasint *); +-void BLASFUNC(ztrmm)(char *, char *, char *, char *, blasint *, blasint *, ++void OPENBLAS_API(ztrmm)(char *, char *, char *, char *, blasint *, blasint *, + double *, double *, blasint *, double *, blasint *); +-void BLASFUNC(xtrmm)(char *, char *, char *, char *, blasint *, blasint *, ++void OPENBLAS_API(xtrmm)(char *, char *, char *, char *, blasint *, blasint *, + xdouble *, xdouble *, blasint *, xdouble *, blasint *); + +-void BLASFUNC(ssymm)(char *, char *, blasint *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(ssymm)(char *, char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +-void BLASFUNC(dsymm)(char *, char *, blasint *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(dsymm)(char *, char *, blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +-void BLASFUNC(qsymm)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(qsymm)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); +-void BLASFUNC(csymm)(char *, char *, blasint *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(csymm)(char *, char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +-void BLASFUNC(zsymm)(char *, char *, blasint *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(zsymm)(char *, char *, blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +-void BLASFUNC(xsymm)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(xsymm)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); + +-void BLASFUNC(csymm3m)(char *, char *, blasint *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(csymm3m)(char *, char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +-void BLASFUNC(zsymm3m)(char *, char *, blasint *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(zsymm3m)(char *, char *, blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +-void BLASFUNC(xsymm3m)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(xsymm3m)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); + +-void BLASFUNC(ssyrk)(char *, char *, blasint *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(ssyrk)(char *, char *, blasint *, blasint *, float *, float *, blasint *, + float *, float *, blasint *); +-void BLASFUNC(dsyrk)(char *, char *, blasint *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(dsyrk)(char *, char *, blasint *, blasint *, double *, double *, blasint *, + double *, double *, blasint *); +-void BLASFUNC(qsyrk)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(qsyrk)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, xdouble *, blasint *); +-void BLASFUNC(csyrk)(char *, char *, blasint *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(csyrk)(char *, char *, blasint *, blasint *, float *, float *, blasint *, + float *, float *, blasint *); +-void BLASFUNC(zsyrk)(char *, char *, blasint *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(zsyrk)(char *, char *, blasint *, blasint *, double *, double *, blasint *, + double *, double *, blasint *); +-void BLASFUNC(xsyrk)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(xsyrk)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, xdouble *, blasint *); + +-void BLASFUNC(ssyr2k)(char *, char *, blasint *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(ssyr2k)(char *, char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +-void BLASFUNC(dsyr2k)(char *, char *, blasint *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(dsyr2k)(char *, char *, blasint *, blasint *, double *, double *, blasint *, + double*, blasint *, double *, double *, blasint *); +-void BLASFUNC(qsyr2k)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(qsyr2k)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble*, blasint *, xdouble *, xdouble *, blasint *); +-void BLASFUNC(csyr2k)(char *, char *, blasint *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(csyr2k)(char *, char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +-void BLASFUNC(zsyr2k)(char *, char *, blasint *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(zsyr2k)(char *, char *, blasint *, blasint *, double *, double *, blasint *, + double*, blasint *, double *, double *, blasint *); +-void BLASFUNC(xsyr2k)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(xsyr2k)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble*, blasint *, xdouble *, xdouble *, blasint *); + +-void BLASFUNC(chemm)(char *, char *, blasint *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(chemm)(char *, char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +-void BLASFUNC(zhemm)(char *, char *, blasint *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(zhemm)(char *, char *, blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +-void BLASFUNC(xhemm)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(xhemm)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); + +-void BLASFUNC(chemm3m)(char *, char *, blasint *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(chemm3m)(char *, char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +-void BLASFUNC(zhemm3m)(char *, char *, blasint *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(zhemm3m)(char *, char *, blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +-void BLASFUNC(xhemm3m)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(xhemm3m)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); + +-void BLASFUNC(cherk)(char *, char *, blasint *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(cherk)(char *, char *, blasint *, blasint *, float *, float *, blasint *, + float *, float *, blasint *); +-void BLASFUNC(zherk)(char *, char *, blasint *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(zherk)(char *, char *, blasint *, blasint *, double *, double *, blasint *, + double *, double *, blasint *); +-void BLASFUNC(xherk)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(xherk)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, xdouble *, blasint *); + +-void BLASFUNC(cher2k)(char *, char *, blasint *, blasint *, float *, float *, blasint *, ++void OPENBLAS_API(cher2k)(char *, char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +-void BLASFUNC(zher2k)(char *, char *, blasint *, blasint *, double *, double *, blasint *, ++void OPENBLAS_API(zher2k)(char *, char *, blasint *, blasint *, double *, double *, blasint *, + double*, blasint *, double *, double *, blasint *); +-void BLASFUNC(xher2k)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, ++void OPENBLAS_API(xher2k)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble*, blasint *, xdouble *, xdouble *, blasint *); + +-int BLASFUNC(cher2m)(char *, char *, char *, blasint *, blasint *, float *, float *, blasint *, ++int OPENBLAS_API(cher2m)(char *, char *, char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +-int BLASFUNC(zher2m)(char *, char *, char *, blasint *, blasint *, double *, double *, blasint *, ++int OPENBLAS_API(zher2m)(char *, char *, char *, blasint *, blasint *, double *, double *, blasint *, + double*, blasint *, double *, double *, blasint *); +-int BLASFUNC(xher2m)(char *, char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, ++int OPENBLAS_API(xher2m)(char *, char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble*, blasint *, xdouble *, xdouble *, blasint *); + +-int BLASFUNC(sgemt)(char *, blasint *, blasint *, float *, float *, blasint *, ++int OPENBLAS_API(sgemt)(char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *); +-int BLASFUNC(dgemt)(char *, blasint *, blasint *, double *, double *, blasint *, ++int OPENBLAS_API(dgemt)(char *, blasint *, blasint *, double *, double *, blasint *, + double *, blasint *); +-int BLASFUNC(cgemt)(char *, blasint *, blasint *, float *, float *, blasint *, ++int OPENBLAS_API(cgemt)(char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *); +-int BLASFUNC(zgemt)(char *, blasint *, blasint *, double *, double *, blasint *, ++int OPENBLAS_API(zgemt)(char *, blasint *, blasint *, double *, double *, blasint *, + double *, blasint *); + +-int BLASFUNC(sgema)(char *, char *, blasint *, blasint *, float *, ++int OPENBLAS_API(sgema)(char *, char *, blasint *, blasint *, float *, + float *, blasint *, float *, float *, blasint *, float *, blasint *); +-int BLASFUNC(dgema)(char *, char *, blasint *, blasint *, double *, ++int OPENBLAS_API(dgema)(char *, char *, blasint *, blasint *, double *, + double *, blasint *, double*, double *, blasint *, double*, blasint *); +-int BLASFUNC(cgema)(char *, char *, blasint *, blasint *, float *, ++int OPENBLAS_API(cgema)(char *, char *, blasint *, blasint *, float *, + float *, blasint *, float *, float *, blasint *, float *, blasint *); +-int BLASFUNC(zgema)(char *, char *, blasint *, blasint *, double *, ++int OPENBLAS_API(zgema)(char *, char *, blasint *, blasint *, double *, + double *, blasint *, double*, double *, blasint *, double*, blasint *); + +-int BLASFUNC(sgems)(char *, char *, blasint *, blasint *, float *, ++int OPENBLAS_API(sgems)(char *, char *, blasint *, blasint *, float *, + float *, blasint *, float *, float *, blasint *, float *, blasint *); +-int BLASFUNC(dgems)(char *, char *, blasint *, blasint *, double *, ++int OPENBLAS_API(dgems)(char *, char *, blasint *, blasint *, double *, + double *, blasint *, double*, double *, blasint *, double*, blasint *); +-int BLASFUNC(cgems)(char *, char *, blasint *, blasint *, float *, ++int OPENBLAS_API(cgems)(char *, char *, blasint *, blasint *, float *, + float *, blasint *, float *, float *, blasint *, float *, blasint *); +-int BLASFUNC(zgems)(char *, char *, blasint *, blasint *, double *, ++int OPENBLAS_API(zgems)(char *, char *, blasint *, blasint *, double *, + double *, blasint *, double*, double *, blasint *, double*, blasint *); + +-int BLASFUNC(sgemc)(char *, char *, blasint *, blasint *, blasint *, float *, ++int OPENBLAS_API(sgemc)(char *, char *, blasint *, blasint *, blasint *, float *, + float *, blasint *, float *, blasint *, float *, blasint *, float *, float *, blasint *); +-int BLASFUNC(dgemc)(char *, char *, blasint *, blasint *, blasint *, double *, ++int OPENBLAS_API(dgemc)(char *, char *, blasint *, blasint *, blasint *, double *, + double *, blasint *, double *, blasint *, double *, blasint *, double *, double *, blasint *); +-int BLASFUNC(qgemc)(char *, char *, blasint *, blasint *, blasint *, xdouble *, ++int OPENBLAS_API(qgemc)(char *, char *, blasint *, blasint *, blasint *, xdouble *, + xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *, blasint *); +-int BLASFUNC(cgemc)(char *, char *, blasint *, blasint *, blasint *, float *, ++int OPENBLAS_API(cgemc)(char *, char *, blasint *, blasint *, blasint *, float *, + float *, blasint *, float *, blasint *, float *, blasint *, float *, float *, blasint *); +-int BLASFUNC(zgemc)(char *, char *, blasint *, blasint *, blasint *, double *, ++int OPENBLAS_API(zgemc)(char *, char *, blasint *, blasint *, blasint *, double *, + double *, blasint *, double *, blasint *, double *, blasint *, double *, double *, blasint *); +-int BLASFUNC(xgemc)(char *, char *, blasint *, blasint *, blasint *, xdouble *, ++int OPENBLAS_API(xgemc)(char *, char *, blasint *, blasint *, blasint *, xdouble *, + xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *, blasint *); + + /* Lapack routines */ + +-int BLASFUNC(sgetf2)(blasint *, blasint *, float *, blasint *, blasint *, blasint *); +-int BLASFUNC(dgetf2)(blasint *, blasint *, double *, blasint *, blasint *, blasint *); +-int BLASFUNC(qgetf2)(blasint *, blasint *, xdouble *, blasint *, blasint *, blasint *); +-int BLASFUNC(cgetf2)(blasint *, blasint *, float *, blasint *, blasint *, blasint *); +-int BLASFUNC(zgetf2)(blasint *, blasint *, double *, blasint *, blasint *, blasint *); +-int BLASFUNC(xgetf2)(blasint *, blasint *, xdouble *, blasint *, blasint *, blasint *); +- +-int BLASFUNC(sgetrf)(blasint *, blasint *, float *, blasint *, blasint *, blasint *); +-int BLASFUNC(dgetrf)(blasint *, blasint *, double *, blasint *, blasint *, blasint *); +-int BLASFUNC(qgetrf)(blasint *, blasint *, xdouble *, blasint *, blasint *, blasint *); +-int BLASFUNC(cgetrf)(blasint *, blasint *, float *, blasint *, blasint *, blasint *); +-int BLASFUNC(zgetrf)(blasint *, blasint *, double *, blasint *, blasint *, blasint *); +-int BLASFUNC(xgetrf)(blasint *, blasint *, xdouble *, blasint *, blasint *, blasint *); +- +-int BLASFUNC(slaswp)(blasint *, float *, blasint *, blasint *, blasint *, blasint *, blasint *); +-int BLASFUNC(dlaswp)(blasint *, double *, blasint *, blasint *, blasint *, blasint *, blasint *); +-int BLASFUNC(qlaswp)(blasint *, xdouble *, blasint *, blasint *, blasint *, blasint *, blasint *); +-int BLASFUNC(claswp)(blasint *, float *, blasint *, blasint *, blasint *, blasint *, blasint *); +-int BLASFUNC(zlaswp)(blasint *, double *, blasint *, blasint *, blasint *, blasint *, blasint *); +-int BLASFUNC(xlaswp)(blasint *, xdouble *, blasint *, blasint *, blasint *, blasint *, blasint *); +- +-int BLASFUNC(sgetrs)(char *, blasint *, blasint *, float *, blasint *, blasint *, float *, blasint *, blasint *); +-int BLASFUNC(dgetrs)(char *, blasint *, blasint *, double *, blasint *, blasint *, double *, blasint *, blasint *); +-int BLASFUNC(qgetrs)(char *, blasint *, blasint *, xdouble *, blasint *, blasint *, xdouble *, blasint *, blasint *); +-int BLASFUNC(cgetrs)(char *, blasint *, blasint *, float *, blasint *, blasint *, float *, blasint *, blasint *); +-int BLASFUNC(zgetrs)(char *, blasint *, blasint *, double *, blasint *, blasint *, double *, blasint *, blasint *); +-int BLASFUNC(xgetrs)(char *, blasint *, blasint *, xdouble *, blasint *, blasint *, xdouble *, blasint *, blasint *); +- +-int BLASFUNC(sgesv)(blasint *, blasint *, float *, blasint *, blasint *, float *, blasint *, blasint *); +-int BLASFUNC(dgesv)(blasint *, blasint *, double *, blasint *, blasint *, double*, blasint *, blasint *); +-int BLASFUNC(qgesv)(blasint *, blasint *, xdouble *, blasint *, blasint *, xdouble*, blasint *, blasint *); +-int BLASFUNC(cgesv)(blasint *, blasint *, float *, blasint *, blasint *, float *, blasint *, blasint *); +-int BLASFUNC(zgesv)(blasint *, blasint *, double *, blasint *, blasint *, double*, blasint *, blasint *); +-int BLASFUNC(xgesv)(blasint *, blasint *, xdouble *, blasint *, blasint *, xdouble*, blasint *, blasint *); +- +-int BLASFUNC(spotf2)(char *, blasint *, float *, blasint *, blasint *); +-int BLASFUNC(dpotf2)(char *, blasint *, double *, blasint *, blasint *); +-int BLASFUNC(qpotf2)(char *, blasint *, xdouble *, blasint *, blasint *); +-int BLASFUNC(cpotf2)(char *, blasint *, float *, blasint *, blasint *); +-int BLASFUNC(zpotf2)(char *, blasint *, double *, blasint *, blasint *); +-int BLASFUNC(xpotf2)(char *, blasint *, xdouble *, blasint *, blasint *); +- +-int BLASFUNC(spotrf)(char *, blasint *, float *, blasint *, blasint *); +-int BLASFUNC(dpotrf)(char *, blasint *, double *, blasint *, blasint *); +-int BLASFUNC(qpotrf)(char *, blasint *, xdouble *, blasint *, blasint *); +-int BLASFUNC(cpotrf)(char *, blasint *, float *, blasint *, blasint *); +-int BLASFUNC(zpotrf)(char *, blasint *, double *, blasint *, blasint *); +-int BLASFUNC(xpotrf)(char *, blasint *, xdouble *, blasint *, blasint *); +- +-int BLASFUNC(spotri)(char *, blasint *, float *, blasint *, blasint *); +-int BLASFUNC(dpotri)(char *, blasint *, double *, blasint *, blasint *); +-int BLASFUNC(qpotri)(char *, blasint *, xdouble *, blasint *, blasint *); +-int BLASFUNC(cpotri)(char *, blasint *, float *, blasint *, blasint *); +-int BLASFUNC(zpotri)(char *, blasint *, double *, blasint *, blasint *); +-int BLASFUNC(xpotri)(char *, blasint *, xdouble *, blasint *, blasint *); +- +-int BLASFUNC(spotrs)(char *, blasint *, blasint *, float *, blasint *, float *, blasint *, blasint *); +-int BLASFUNC(dpotrs)(char *, blasint *, blasint *, double *, blasint *, double *, blasint *, blasint *); +-int BLASFUNC(qpotrs)(char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, blasint *, blasint *); +-int BLASFUNC(cpotrs)(char *, blasint *, blasint *, float *, blasint *, float *, blasint *, blasint *); +-int BLASFUNC(zpotrs)(char *, blasint *, blasint *, double *, blasint *, double *, blasint *, blasint *); +-int BLASFUNC(xpotrs)(char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, blasint *, blasint *); +- +-int BLASFUNC(slauu2)(char *, blasint *, float *, blasint *, blasint *); +-int BLASFUNC(dlauu2)(char *, blasint *, double *, blasint *, blasint *); +-int BLASFUNC(qlauu2)(char *, blasint *, xdouble *, blasint *, blasint *); +-int BLASFUNC(clauu2)(char *, blasint *, float *, blasint *, blasint *); +-int BLASFUNC(zlauu2)(char *, blasint *, double *, blasint *, blasint *); +-int BLASFUNC(xlauu2)(char *, blasint *, xdouble *, blasint *, blasint *); +- +-int BLASFUNC(slauum)(char *, blasint *, float *, blasint *, blasint *); +-int BLASFUNC(dlauum)(char *, blasint *, double *, blasint *, blasint *); +-int BLASFUNC(qlauum)(char *, blasint *, xdouble *, blasint *, blasint *); +-int BLASFUNC(clauum)(char *, blasint *, float *, blasint *, blasint *); +-int BLASFUNC(zlauum)(char *, blasint *, double *, blasint *, blasint *); +-int BLASFUNC(xlauum)(char *, blasint *, xdouble *, blasint *, blasint *); +- +-int BLASFUNC(strti2)(char *, char *, blasint *, float *, blasint *, blasint *); +-int BLASFUNC(dtrti2)(char *, char *, blasint *, double *, blasint *, blasint *); +-int BLASFUNC(qtrti2)(char *, char *, blasint *, xdouble *, blasint *, blasint *); +-int BLASFUNC(ctrti2)(char *, char *, blasint *, float *, blasint *, blasint *); +-int BLASFUNC(ztrti2)(char *, char *, blasint *, double *, blasint *, blasint *); +-int BLASFUNC(xtrti2)(char *, char *, blasint *, xdouble *, blasint *, blasint *); +- +-int BLASFUNC(strtri)(char *, char *, blasint *, float *, blasint *, blasint *); +-int BLASFUNC(dtrtri)(char *, char *, blasint *, double *, blasint *, blasint *); +-int BLASFUNC(qtrtri)(char *, char *, blasint *, xdouble *, blasint *, blasint *); +-int BLASFUNC(ctrtri)(char *, char *, blasint *, float *, blasint *, blasint *); +-int BLASFUNC(ztrtri)(char *, char *, blasint *, double *, blasint *, blasint *); +-int BLASFUNC(xtrtri)(char *, char *, blasint *, xdouble *, blasint *, blasint *); +- +- +-FLOATRET BLASFUNC(slamch)(char *); +-double BLASFUNC(dlamch)(char *); +-xdouble BLASFUNC(qlamch)(char *); +- +-FLOATRET BLASFUNC(slamc3)(float *, float *); +-double BLASFUNC(dlamc3)(double *, double *); +-xdouble BLASFUNC(qlamc3)(xdouble *, xdouble *); ++int OPENBLAS_API(sgetf2)(blasint *, blasint *, float *, blasint *, blasint *, blasint *); ++int OPENBLAS_API(dgetf2)(blasint *, blasint *, double *, blasint *, blasint *, blasint *); ++int OPENBLAS_API(qgetf2)(blasint *, blasint *, xdouble *, blasint *, blasint *, blasint *); ++int OPENBLAS_API(cgetf2)(blasint *, blasint *, float *, blasint *, blasint *, blasint *); ++int OPENBLAS_API(zgetf2)(blasint *, blasint *, double *, blasint *, blasint *, blasint *); ++int OPENBLAS_API(xgetf2)(blasint *, blasint *, xdouble *, blasint *, blasint *, blasint *); ++ ++int OPENBLAS_API(sgetrf)(blasint *, blasint *, float *, blasint *, blasint *, blasint *); ++int OPENBLAS_API(dgetrf)(blasint *, blasint *, double *, blasint *, blasint *, blasint *); ++int OPENBLAS_API(qgetrf)(blasint *, blasint *, xdouble *, blasint *, blasint *, blasint *); ++int OPENBLAS_API(cgetrf)(blasint *, blasint *, float *, blasint *, blasint *, blasint *); ++int OPENBLAS_API(zgetrf)(blasint *, blasint *, double *, blasint *, blasint *, blasint *); ++int OPENBLAS_API(xgetrf)(blasint *, blasint *, xdouble *, blasint *, blasint *, blasint *); ++ ++int OPENBLAS_API(slaswp)(blasint *, float *, blasint *, blasint *, blasint *, blasint *, blasint *); ++int OPENBLAS_API(dlaswp)(blasint *, double *, blasint *, blasint *, blasint *, blasint *, blasint *); ++int OPENBLAS_API(qlaswp)(blasint *, xdouble *, blasint *, blasint *, blasint *, blasint *, blasint *); ++int OPENBLAS_API(claswp)(blasint *, float *, blasint *, blasint *, blasint *, blasint *, blasint *); ++int OPENBLAS_API(zlaswp)(blasint *, double *, blasint *, blasint *, blasint *, blasint *, blasint *); ++int OPENBLAS_API(xlaswp)(blasint *, xdouble *, blasint *, blasint *, blasint *, blasint *, blasint *); ++ ++int OPENBLAS_API(sgetrs)(char *, blasint *, blasint *, float *, blasint *, blasint *, float *, blasint *, blasint *); ++int OPENBLAS_API(dgetrs)(char *, blasint *, blasint *, double *, blasint *, blasint *, double *, blasint *, blasint *); ++int OPENBLAS_API(qgetrs)(char *, blasint *, blasint *, xdouble *, blasint *, blasint *, xdouble *, blasint *, blasint *); ++int OPENBLAS_API(cgetrs)(char *, blasint *, blasint *, float *, blasint *, blasint *, float *, blasint *, blasint *); ++int OPENBLAS_API(zgetrs)(char *, blasint *, blasint *, double *, blasint *, blasint *, double *, blasint *, blasint *); ++int OPENBLAS_API(xgetrs)(char *, blasint *, blasint *, xdouble *, blasint *, blasint *, xdouble *, blasint *, blasint *); ++ ++int OPENBLAS_API(sgesv)(blasint *, blasint *, float *, blasint *, blasint *, float *, blasint *, blasint *); ++int OPENBLAS_API(dgesv)(blasint *, blasint *, double *, blasint *, blasint *, double*, blasint *, blasint *); ++int OPENBLAS_API(qgesv)(blasint *, blasint *, xdouble *, blasint *, blasint *, xdouble*, blasint *, blasint *); ++int OPENBLAS_API(cgesv)(blasint *, blasint *, float *, blasint *, blasint *, float *, blasint *, blasint *); ++int OPENBLAS_API(zgesv)(blasint *, blasint *, double *, blasint *, blasint *, double*, blasint *, blasint *); ++int OPENBLAS_API(xgesv)(blasint *, blasint *, xdouble *, blasint *, blasint *, xdouble*, blasint *, blasint *); ++ ++int OPENBLAS_API(spotf2)(char *, blasint *, float *, blasint *, blasint *); ++int OPENBLAS_API(dpotf2)(char *, blasint *, double *, blasint *, blasint *); ++int OPENBLAS_API(qpotf2)(char *, blasint *, xdouble *, blasint *, blasint *); ++int OPENBLAS_API(cpotf2)(char *, blasint *, float *, blasint *, blasint *); ++int OPENBLAS_API(zpotf2)(char *, blasint *, double *, blasint *, blasint *); ++int OPENBLAS_API(xpotf2)(char *, blasint *, xdouble *, blasint *, blasint *); ++ ++int OPENBLAS_API(spotrf)(char *, blasint *, float *, blasint *, blasint *); ++int OPENBLAS_API(dpotrf)(char *, blasint *, double *, blasint *, blasint *); ++int OPENBLAS_API(qpotrf)(char *, blasint *, xdouble *, blasint *, blasint *); ++int OPENBLAS_API(cpotrf)(char *, blasint *, float *, blasint *, blasint *); ++int OPENBLAS_API(zpotrf)(char *, blasint *, double *, blasint *, blasint *); ++int OPENBLAS_API(xpotrf)(char *, blasint *, xdouble *, blasint *, blasint *); ++ ++int OPENBLAS_API(spotri)(char *, blasint *, float *, blasint *, blasint *); ++int OPENBLAS_API(dpotri)(char *, blasint *, double *, blasint *, blasint *); ++int OPENBLAS_API(qpotri)(char *, blasint *, xdouble *, blasint *, blasint *); ++int OPENBLAS_API(cpotri)(char *, blasint *, float *, blasint *, blasint *); ++int OPENBLAS_API(zpotri)(char *, blasint *, double *, blasint *, blasint *); ++int OPENBLAS_API(xpotri)(char *, blasint *, xdouble *, blasint *, blasint *); ++ ++int OPENBLAS_API(spotrs)(char *, blasint *, blasint *, float *, blasint *, float *, blasint *, blasint *); ++int OPENBLAS_API(dpotrs)(char *, blasint *, blasint *, double *, blasint *, double *, blasint *, blasint *); ++int OPENBLAS_API(qpotrs)(char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, blasint *, blasint *); ++int OPENBLAS_API(cpotrs)(char *, blasint *, blasint *, float *, blasint *, float *, blasint *, blasint *); ++int OPENBLAS_API(zpotrs)(char *, blasint *, blasint *, double *, blasint *, double *, blasint *, blasint *); ++int OPENBLAS_API(xpotrs)(char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, blasint *, blasint *); ++ ++int OPENBLAS_API(slauu2)(char *, blasint *, float *, blasint *, blasint *); ++int OPENBLAS_API(dlauu2)(char *, blasint *, double *, blasint *, blasint *); ++int OPENBLAS_API(qlauu2)(char *, blasint *, xdouble *, blasint *, blasint *); ++int OPENBLAS_API(clauu2)(char *, blasint *, float *, blasint *, blasint *); ++int OPENBLAS_API(zlauu2)(char *, blasint *, double *, blasint *, blasint *); ++int OPENBLAS_API(xlauu2)(char *, blasint *, xdouble *, blasint *, blasint *); ++ ++int OPENBLAS_API(slauum)(char *, blasint *, float *, blasint *, blasint *); ++int OPENBLAS_API(dlauum)(char *, blasint *, double *, blasint *, blasint *); ++int OPENBLAS_API(qlauum)(char *, blasint *, xdouble *, blasint *, blasint *); ++int OPENBLAS_API(clauum)(char *, blasint *, float *, blasint *, blasint *); ++int OPENBLAS_API(zlauum)(char *, blasint *, double *, blasint *, blasint *); ++int OPENBLAS_API(xlauum)(char *, blasint *, xdouble *, blasint *, blasint *); ++ ++int OPENBLAS_API(strti2)(char *, char *, blasint *, float *, blasint *, blasint *); ++int OPENBLAS_API(dtrti2)(char *, char *, blasint *, double *, blasint *, blasint *); ++int OPENBLAS_API(qtrti2)(char *, char *, blasint *, xdouble *, blasint *, blasint *); ++int OPENBLAS_API(ctrti2)(char *, char *, blasint *, float *, blasint *, blasint *); ++int OPENBLAS_API(ztrti2)(char *, char *, blasint *, double *, blasint *, blasint *); ++int OPENBLAS_API(xtrti2)(char *, char *, blasint *, xdouble *, blasint *, blasint *); ++ ++int OPENBLAS_API(strtri)(char *, char *, blasint *, float *, blasint *, blasint *); ++int OPENBLAS_API(dtrtri)(char *, char *, blasint *, double *, blasint *, blasint *); ++int OPENBLAS_API(qtrtri)(char *, char *, blasint *, xdouble *, blasint *, blasint *); ++int OPENBLAS_API(ctrtri)(char *, char *, blasint *, float *, blasint *, blasint *); ++int OPENBLAS_API(ztrtri)(char *, char *, blasint *, double *, blasint *, blasint *); ++int OPENBLAS_API(xtrtri)(char *, char *, blasint *, xdouble *, blasint *, blasint *); ++ ++ ++FLOATRET OPENBLAS_API(slamch)(char *); ++double OPENBLAS_API(dlamch)(char *); ++xdouble OPENBLAS_API(qlamch)(char *); ++ ++FLOATRET OPENBLAS_API(slamc3)(float *, float *); ++double OPENBLAS_API(dlamc3)(double *, double *); ++xdouble OPENBLAS_API(qlamc3)(xdouble *, xdouble *); + + /* BLAS extensions */ + +-void BLASFUNC(saxpby) (blasint *, float *, float *, blasint *, float *, float *, blasint *); +-void BLASFUNC(daxpby) (blasint *, double *, double *, blasint *, double *, double *, blasint *); +-void BLASFUNC(caxpby) (blasint *, void *, float *, blasint *, void *, float *, blasint *); +-void BLASFUNC(zaxpby) (blasint *, void *, double *, blasint *, void *, double *, blasint *); +- +-void BLASFUNC(somatcopy) (char *, char *, blasint *, blasint *, float *, float *, blasint *, float *, blasint *); +-void BLASFUNC(domatcopy) (char *, char *, blasint *, blasint *, double *, double *, blasint *, double *, blasint *); +-void BLASFUNC(comatcopy) (char *, char *, blasint *, blasint *, float *, float *, blasint *, float *, blasint *); +-void BLASFUNC(zomatcopy) (char *, char *, blasint *, blasint *, double *, double *, blasint *, double *, blasint *); +- +-void BLASFUNC(simatcopy) (char *, char *, blasint *, blasint *, float *, float *, blasint *, blasint *); +-void BLASFUNC(dimatcopy) (char *, char *, blasint *, blasint *, double *, double *, blasint *, blasint *); +-void BLASFUNC(cimatcopy) (char *, char *, blasint *, blasint *, float *, float *, blasint *, blasint *); +-void BLASFUNC(zimatcopy) (char *, char *, blasint *, blasint *, double *, double *, blasint *, blasint *); +- +-void BLASFUNC(sgeadd) (blasint *, blasint *, float *, float *, blasint *, float *, float *, blasint*); +-void BLASFUNC(dgeadd) (blasint *, blasint *, double *, double *, blasint *, double *, double *, blasint*); +-void BLASFUNC(cgeadd) (blasint *, blasint *, float *, float *, blasint *, float *, float *, blasint*); +-void BLASFUNC(zgeadd) (blasint *, blasint *, double *, double *, blasint *, double *, double *, blasint*); ++void OPENBLAS_API(saxpby) (blasint *, float *, float *, blasint *, float *, float *, blasint *); ++void OPENBLAS_API(daxpby) (blasint *, double *, double *, blasint *, double *, double *, blasint *); ++void OPENBLAS_API(caxpby) (blasint *, void *, float *, blasint *, void *, float *, blasint *); ++void OPENBLAS_API(zaxpby) (blasint *, void *, double *, blasint *, void *, double *, blasint *); ++ ++void OPENBLAS_API(somatcopy) (char *, char *, blasint *, blasint *, float *, float *, blasint *, float *, blasint *); ++void OPENBLAS_API(domatcopy) (char *, char *, blasint *, blasint *, double *, double *, blasint *, double *, blasint *); ++void OPENBLAS_API(comatcopy) (char *, char *, blasint *, blasint *, float *, float *, blasint *, float *, blasint *); ++void OPENBLAS_API(zomatcopy) (char *, char *, blasint *, blasint *, double *, double *, blasint *, double *, blasint *); ++ ++void OPENBLAS_API(simatcopy) (char *, char *, blasint *, blasint *, float *, float *, blasint *, blasint *); ++void OPENBLAS_API(dimatcopy) (char *, char *, blasint *, blasint *, double *, double *, blasint *, blasint *); ++void OPENBLAS_API(cimatcopy) (char *, char *, blasint *, blasint *, float *, float *, blasint *, blasint *); ++void OPENBLAS_API(zimatcopy) (char *, char *, blasint *, blasint *, double *, double *, blasint *, blasint *); ++ ++void OPENBLAS_API(sgeadd) (blasint *, blasint *, float *, float *, blasint *, float *, float *, blasint*); ++void OPENBLAS_API(dgeadd) (blasint *, blasint *, double *, double *, blasint *, double *, double *, blasint*); ++void OPENBLAS_API(cgeadd) (blasint *, blasint *, float *, float *, blasint *, float *, float *, blasint*); ++void OPENBLAS_API(zgeadd) (blasint *, blasint *, double *, double *, blasint *, double *, double *, blasint*); + + + #ifdef __cplusplus +diff --git a/driver/others/blas_server.c b/driver/others/blas_server.c +index 4a3182354..cd52b3479 100644 +--- a/driver/others/blas_server.c ++++ b/driver/others/blas_server.c +@@ -863,6 +863,7 @@ if (openblas_threads_callback_) { + return 0; + } + ++__attribute__ ((visibility ("default"))) + void goto_set_num_threads(int num_threads) { + + long i; +@@ -935,6 +936,7 @@ void goto_set_num_threads(int num_threads) { + + } + ++__attribute__ ((visibility ("default"))) + void openblas_set_num_threads(int num_threads) { + goto_set_num_threads(num_threads); + +diff --git a/driver/others/memory.c b/driver/others/memory.c +index c8415f348..77dc99817 100644 +--- a/driver/others/memory.c ++++ b/driver/others/memory.c +@@ -500,6 +500,7 @@ int blas_get_cpu_number(void){ + #endif + + ++__attribute__ ((visibility ("default"))) + int openblas_get_num_procs(void) { + #ifndef SMP + return 1; +@@ -508,6 +509,7 @@ int openblas_get_num_procs(void) { + #endif + } + ++__attribute__ ((visibility ("default"))) + int openblas_get_num_threads(void) { + #ifndef SMP + return 1; +@@ -2071,6 +2073,7 @@ int blas_get_cpu_number(void){ + #endif + + ++__attribute__ ((visibility ("default"))) + int openblas_get_num_procs(void) { + #ifndef SMP + return 1; +@@ -2079,6 +2082,7 @@ int openblas_get_num_procs(void) { + #endif + } + ++__attribute__ ((visibility ("default"))) + int openblas_get_num_threads(void) { + #ifndef SMP + return 1; +diff --git a/driver/others/openblas_get_config.c b/driver/others/openblas_get_config.c +index ff52cfba8..1e74b920a 100644 +--- a/driver/others/openblas_get_config.c ++++ b/driver/others/openblas_get_config.c +@@ -78,6 +78,7 @@ char *gotoblas_corename(void); + static char tmp_config_str[256]; + int openblas_get_parallel(void); + ++__attribute__ ((visibility ("default"))) + char* CNAME(void) { + char tmpstr[20]; + strcpy(tmp_config_str, openblas_config_str); +@@ -93,6 +94,7 @@ char tmpstr[20]; + } + + ++__attribute__ ((visibility ("default"))) + char* openblas_get_corename(void) { + #ifndef DYNAMIC_ARCH + return CHAR_CORENAME; +diff --git a/driver/others/openblas_get_num_procs.c b/driver/others/openblas_get_num_procs.c +index 6b0c1ec5c..fbb39e765 100644 +--- a/driver/others/openblas_get_num_procs.c ++++ b/driver/others/openblas_get_num_procs.c +@@ -35,6 +35,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + extern int openblas_get_num_procs(void); + ++__attribute__ ((visibility ("default"))) + int openblas_get_num_procs_(void) { + return openblas_get_num_procs(); + } +diff --git a/driver/others/openblas_get_num_threads.c b/driver/others/openblas_get_num_threads.c +index e31aa4b4a..d6603bb7c 100644 +--- a/driver/others/openblas_get_num_threads.c ++++ b/driver/others/openblas_get_num_threads.c +@@ -35,6 +35,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + extern int openblas_get_num_threads(void); + ++__attribute__ ((visibility ("default"))) + int openblas_get_num_threads_(void) { + return openblas_get_num_threads(); + } +diff --git a/driver/others/openblas_get_parallel.c b/driver/others/openblas_get_parallel.c +index becfa0a3a..48021ec18 100644 +--- a/driver/others/openblas_get_parallel.c ++++ b/driver/others/openblas_get_parallel.c +@@ -41,11 +41,14 @@ static int parallel = 0; + #endif + + ++__attribute__ ((visibility ("default"))) ++ + #ifdef NEEDBUNDERSCORE + int CNAME(void) { + return parallel; + } + ++__attribute__ ((visibility ("default"))) + int NAME(void) { + return parallel; + } +diff --git a/driver/others/openblas_set_num_threads.c b/driver/others/openblas_set_num_threads.c +index c938fde69..6a1647a09 100644 +--- a/driver/others/openblas_set_num_threads.c ++++ b/driver/others/openblas_set_num_threads.c +@@ -38,6 +38,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + extern void openblas_set_num_threads(int num_threads) ; + extern int openblas_get_num_threads(void) ; + ++__attribute__ ((visibility ("default"))) + void openblas_set_num_threads_(int* num_threads){ + openblas_set_num_threads(*num_threads); + } +@@ -53,9 +54,11 @@ int openblas_set_num_threads_local(int num_threads){ + #else + //Single thread + ++__attribute__ ((visibility ("default"))) + void openblas_set_num_threads(int num_threads) { + } + ++__attribute__ ((visibility ("default"))) + void openblas_set_num_threads_(int* num_threads){ + + } +diff --git a/interface/Makefile b/interface/Makefile +index 83a894b12..b894abb74 100644 +--- a/interface/Makefile ++++ b/interface/Makefile +@@ -29,6 +29,7 @@ + TOPDIR = .. + include $(TOPDIR)/Makefile.system + ++ + SUPPORT_GEMM3M = 0 + + ifeq ($(ARCH), x86) +diff --git a/interface/asum.c b/interface/asum.c +index bd83c88e0..d962b5359 100644 +--- a/interface/asum.c ++++ b/interface/asum.c +@@ -42,6 +42,7 @@ + #include "functable.h" + #endif + ++__attribute__ ((visibility ("default"))) + #ifndef CBLAS + + FLOATRET NAME(blasint *N, FLOAT *x, blasint *INCX){ +diff --git a/interface/axpby.c b/interface/axpby.c +index 63dba81a4..8650dc233 100644 +--- a/interface/axpby.c ++++ b/interface/axpby.c +@@ -36,6 +36,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + #include "functable.h" + #endif + ++__attribute__ ((visibility ("default"))) + #ifndef CBLAS + + void NAME(blasint *N, FLOAT *ALPHA, FLOAT *x, blasint *INCX, FLOAT *BETA, FLOAT *y, blasint *INCY) +diff --git a/interface/axpy.c b/interface/axpy.c +index 5304ebec3..dab4c87ec 100644 +--- a/interface/axpy.c ++++ b/interface/axpy.c +@@ -46,6 +46,9 @@ + #else + #define MULTI_THREAD_MINIMAL 10000 + #endif ++ ++ ++__attribute__ ((visibility ("default"))) + #ifndef CBLAS + + void NAME(blasint *N, FLOAT *ALPHA, FLOAT *x, blasint *INCX, FLOAT *y, blasint *INCY){ +diff --git a/interface/bf16dot.c b/interface/bf16dot.c +index 33717e374..6d9e074c3 100644 +--- a/interface/bf16dot.c ++++ b/interface/bf16dot.c +@@ -4,6 +4,7 @@ + #include "functable.h" + #endif + ++__attribute__ ((visibility ("default"))) + #ifndef CBLAS + float NAME(blasint *N, bfloat16 *x, blasint *INCX, bfloat16 *y, blasint *INCY){ + BLASLONG n = *N; +diff --git a/interface/bf16to.c b/interface/bf16to.c +index 036c0b142..d7a7fdf1c 100644 +--- a/interface/bf16to.c ++++ b/interface/bf16to.c +@@ -11,6 +11,7 @@ + #else + #endif + ++__attribute__ ((visibility ("default"))) + #ifndef CBLAS + void NAME(blasint *N, bfloat16 *in, blasint *INC_IN, FLOAT_TYPE *out, blasint *INC_OUT){ + BLASLONG n = *N; +diff --git a/interface/copy.c b/interface/copy.c +index 20b5aec0a..1885a6164 100644 +--- a/interface/copy.c ++++ b/interface/copy.c +@@ -42,6 +42,7 @@ + #include "functable.h" + #endif + ++__attribute__ ((visibility ("default"))) + #ifndef CBLAS + + void NAME(blasint *N, FLOAT *x, blasint *INCX, FLOAT *y, blasint *INCY){ +diff --git a/interface/dot.c b/interface/dot.c +index 3a918405e..074c6be73 100644 +--- a/interface/dot.c ++++ b/interface/dot.c +@@ -42,6 +42,7 @@ + #include "functable.h" + #endif + ++__attribute__ ((visibility ("default"))) + #ifndef CBLAS + + FLOATRET NAME(blasint *N, FLOAT *x, blasint *INCX, FLOAT *y, blasint *INCY){ +diff --git a/interface/dsdot.c b/interface/dsdot.c +index 32e4b492f..2454c2698 100644 +--- a/interface/dsdot.c ++++ b/interface/dsdot.c +@@ -42,6 +42,7 @@ + #include "functable.h" + #endif + ++__attribute__ ((visibility ("default"))) + #ifndef CBLAS + + double NAME(blasint *N, float *x, blasint *INCX, float *y, blasint *INCY){ +diff --git a/interface/gbmv.c b/interface/gbmv.c +index 7a6581368..772996f7e 100644 +--- a/interface/gbmv.c ++++ b/interface/gbmv.c +@@ -74,6 +74,7 @@ static int (*gbmv_thread[])(BLASLONG, BLASLONG, BLASLONG, BLASLONG, FLOAT, + }; + #endif + ++__attribute__ ((visibility ("default"))) + #ifndef CBLAS + + void NAME(char *TRANS, blasint *M, blasint *N, +diff --git a/interface/geadd.c b/interface/geadd.c +index a2e6d1081..7c506135b 100644 +--- a/interface/geadd.c ++++ b/interface/geadd.c +@@ -48,6 +48,8 @@ + #define ERROR_NAME "SGEADD " + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(blasint *M, blasint *N, FLOAT *ALPHA, FLOAT *a, blasint *LDA, +diff --git a/interface/gemm.c b/interface/gemm.c +index a16df81ec..e273f9f23 100644 +--- a/interface/gemm.c ++++ b/interface/gemm.c +@@ -252,6 +252,8 @@ static inline int get_gemm_optimal_nthreads(double MNK) { + } + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *TRANSA, char *TRANSB, +diff --git a/interface/gemm_batch.c b/interface/gemm_batch.c +index 0d8854409..0b1fe9b04 100644 +--- a/interface/gemm_batch.c ++++ b/interface/gemm_batch.c +@@ -114,6 +114,8 @@ static size_t zgemm_small_kernel_b0[] = { + #endif + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + void NAME(char *transa_array, char *transb_array, + blasint * m_array, blasint * n_array, blasint * k_array, +diff --git a/interface/gemm_batch_strided.c b/interface/gemm_batch_strided.c +index 8435b6550..f5c6c95b4 100644 +--- a/interface/gemm_batch_strided.c ++++ b/interface/gemm_batch_strided.c +@@ -114,6 +114,8 @@ static size_t zgemm_small_kernel_b0[] = { + #endif + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + void NAME(char *transa, char *transb, + blasint * M, blasint * N, blasint * K, +diff --git a/interface/gemmt.c b/interface/gemmt.c +index aa65f81ed..d2aa10940 100644 +--- a/interface/gemmt.c ++++ b/interface/gemmt.c +@@ -84,6 +84,8 @@ + #define GEMM_MULTITHREAD_THRESHOLD 4 + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, char *TRANSA, char *TRANSB, +diff --git a/interface/gemv.c b/interface/gemv.c +index 34b6addd3..eb78665de 100644 +--- a/interface/gemv.c ++++ b/interface/gemv.c +@@ -127,6 +127,8 @@ static inline int get_gemv_optimal_nthreads(BLASLONG MN) { + } + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *TRANS, blasint *M, blasint *N, +diff --git a/interface/ger.c b/interface/ger.c +index 640b8cb44..3aa404390 100644 +--- a/interface/ger.c ++++ b/interface/ger.c +@@ -66,6 +66,7 @@ + #define GER_THREAD sger_thread + #endif + ++__attribute__ ((visibility ("default"))) + + #ifndef CBLAS + +diff --git a/interface/imatcopy.c b/interface/imatcopy.c +index 69876e31e..c4c920cc2 100644 +--- a/interface/imatcopy.c ++++ b/interface/imatcopy.c +@@ -54,6 +54,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + /* Enables the New IMATCOPY code with inplace operation if lda == ldb */ + #define NEW_IMATCOPY + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + void NAME( char* ORDER, char* TRANS, blasint *rows, blasint *cols, FLOAT *alpha, FLOAT *a, blasint *lda, blasint *ldb) + { +diff --git a/interface/imax.c b/interface/imax.c +index 456460d98..c6b020fc6 100644 +--- a/interface/imax.c ++++ b/interface/imax.c +@@ -118,6 +118,8 @@ + + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + blasint NAME(blasint *N, FLOAT *x, blasint *INCX){ +diff --git a/interface/lapack/gesv.c b/interface/lapack/gesv.c +index 21fcc2097..b1773c992 100644 +--- a/interface/lapack/gesv.c ++++ b/interface/lapack/gesv.c +@@ -60,6 +60,7 @@ + #endif + #endif + ++__attribute__ ((visibility ("default"))) + int NAME(blasint *N, blasint *NRHS, FLOAT *a, blasint *ldA, blasint *ipiv, + FLOAT *b, blasint *ldB, blasint *Info){ + +diff --git a/interface/lapack/getf2.c b/interface/lapack/getf2.c +index 8506feca9..289688da6 100644 +--- a/interface/lapack/getf2.c ++++ b/interface/lapack/getf2.c +@@ -50,6 +50,7 @@ + #define ERROR_NAME "SGETF2" + #endif + ++__attribute__ ((visibility ("default"))) + int NAME(blasint *M, blasint *N, FLOAT *a, blasint *ldA, blasint *ipiv, blasint *Info){ + + blas_arg_t args; +diff --git a/interface/lapack/getrf.c b/interface/lapack/getrf.c +index 270604120..774e515e3 100644 +--- a/interface/lapack/getrf.c ++++ b/interface/lapack/getrf.c +@@ -50,6 +50,7 @@ + #define ERROR_NAME "SGETRF" + #endif + ++__attribute__ ((visibility ("default"))) + int NAME(blasint *M, blasint *N, FLOAT *a, blasint *ldA, blasint *ipiv, blasint *Info){ + + blas_arg_t args; +diff --git a/interface/lapack/getrs.c b/interface/lapack/getrs.c +index c2a9eb882..3e4b4bf0d 100644 +--- a/interface/lapack/getrs.c ++++ b/interface/lapack/getrs.c +@@ -60,6 +60,7 @@ static blasint (*getrs_parallel[])(blas_arg_t *, BLASLONG *, BLASLONG *, FLOAT * + }; + #endif + ++__attribute__ ((visibility ("default"))) + int NAME(char *TRANS, blasint *N, blasint *NRHS, FLOAT *a, blasint *ldA, + blasint *ipiv, FLOAT *b, blasint *ldB, blasint *Info){ + +diff --git a/interface/lapack/laed3.c b/interface/lapack/laed3.c +index 4e5215fcf..ee163e777 100644 +--- a/interface/lapack/laed3.c ++++ b/interface/lapack/laed3.c +@@ -40,6 +40,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + #endif + + /* ===================================================================== */ ++__attribute__ ((visibility ("default"))) + int NAME(blasint *k, blasint *n, blasint *n1, FLOAT *d, + FLOAT *q, blasint *ldq, FLOAT *rho, FLOAT *dlamda, + FLOAT *q2, blasint *indx, blasint *ctot, FLOAT *w, +diff --git a/interface/lapack/laswp.c b/interface/lapack/laswp.c +index 6544dbc5b..f7835abfb 100644 +--- a/interface/lapack/laswp.c ++++ b/interface/lapack/laswp.c +@@ -52,6 +52,7 @@ static int (*laswp[])(BLASLONG, BLASLONG, BLASLONG, FLOAT, FLOAT *, BLASLONG, FL + #endif + }; + ++__attribute__ ((visibility ("default"))) + int NAME(blasint *N, FLOAT *a, blasint *LDA, blasint *K1, blasint *K2, blasint *ipiv, blasint *INCX){ + + blasint n = *N; +diff --git a/interface/lapack/lauu2.c b/interface/lapack/lauu2.c +index e581e3c15..3cee77aad 100644 +--- a/interface/lapack/lauu2.c ++++ b/interface/lapack/lauu2.c +@@ -60,6 +60,7 @@ static blasint (*lauu2[])(blas_arg_t *, BLASLONG *, BLASLONG *, FLOAT *, FLOAT * + #endif + }; + ++__attribute__ ((visibility ("default"))) + int NAME(char *UPLO, blasint *N, FLOAT *a, blasint *ldA, blasint *Info){ + + blas_arg_t args; +diff --git a/interface/lapack/lauum.c b/interface/lapack/lauum.c +index 70f6a0ec5..37e8bd2a8 100644 +--- a/interface/lapack/lauum.c ++++ b/interface/lapack/lauum.c +@@ -60,6 +60,7 @@ static blasint (*lauum_parallel[])(blas_arg_t *, BLASLONG *, BLASLONG *, FLOAT * + }; + #endif + ++__attribute__ ((visibility ("default"))) + int NAME(char *UPLO, blasint *N, FLOAT *a, blasint *ldA, blasint *Info){ + + blas_arg_t args; +diff --git a/interface/lapack/potf2.c b/interface/lapack/potf2.c +index 1537b6ee4..b5b2e2076 100644 +--- a/interface/lapack/potf2.c ++++ b/interface/lapack/potf2.c +@@ -60,6 +60,7 @@ static blasint (*potf2[])(blas_arg_t *, BLASLONG *, BLASLONG *, FLOAT *, FLOAT * + #endif + }; + ++__attribute__ ((visibility ("default"))) + int NAME(char *UPLO, blasint *N, FLOAT *a, blasint *ldA, blasint *Info){ + + blas_arg_t args; +diff --git a/interface/lapack/potrf.c b/interface/lapack/potrf.c +index a24e48d95..58651bfde 100644 +--- a/interface/lapack/potrf.c ++++ b/interface/lapack/potrf.c +@@ -60,6 +60,7 @@ static blasint (*potrf_parallel[])(blas_arg_t *, BLASLONG *, BLASLONG *, FLOAT * + }; + #endif + ++__attribute__ ((visibility ("default"))) + int NAME(char *UPLO, blasint *N, FLOAT *a, blasint *ldA, blasint *Info){ + + blas_arg_t args; +diff --git a/interface/lapack/potri.c b/interface/lapack/potri.c +index eb0fcbe70..4d577beff 100644 +--- a/interface/lapack/potri.c ++++ b/interface/lapack/potri.c +@@ -68,6 +68,7 @@ static blasint (*lauum_parallel[])(blas_arg_t *, BLASLONG *, BLASLONG *, FLOAT * + }; + #endif + ++__attribute__ ((visibility ("default"))) + int NAME(char *UPLO, blasint *N, FLOAT *a, blasint *ldA, blasint *Info){ + + blas_arg_t args; +diff --git a/interface/lapack/trti2.c b/interface/lapack/trti2.c +index 47f04f06f..28955667d 100644 +--- a/interface/lapack/trti2.c ++++ b/interface/lapack/trti2.c +@@ -60,6 +60,7 @@ static blasint (*trti2[])(blas_arg_t *, BLASLONG *, BLASLONG *, FLOAT *, FLOAT * + #endif + }; + ++__attribute__ ((visibility ("default"))) + int NAME(char *UPLO, char *DIAG, blasint *N, FLOAT *a, blasint *ldA, blasint *Info){ + + blas_arg_t args; +diff --git a/interface/lapack/trtri.c b/interface/lapack/trtri.c +index 82d806b8c..e68a74c7c 100644 +--- a/interface/lapack/trtri.c ++++ b/interface/lapack/trtri.c +@@ -61,6 +61,7 @@ static blasint (*trtri_parallel[])(blas_arg_t *, BLASLONG *, BLASLONG *, FLOAT * + #endif + + ++__attribute__ ((visibility ("default"))) + int NAME(char *UPLO, char *DIAG, blasint *N, FLOAT *a, blasint *ldA, blasint *Info){ + + blas_arg_t args; +diff --git a/interface/lapack/trtrs.c b/interface/lapack/trtrs.c +index 3cc449318..3fc50fae8 100644 +--- a/interface/lapack/trtrs.c ++++ b/interface/lapack/trtrs.c +@@ -60,6 +60,7 @@ static blasint (*trtrs_parallel[])(blas_arg_t *, BLASLONG *, BLASLONG *, FLOAT * + }; + #endif + ++__attribute__ ((visibility ("default"))) + int NAME(char *UPLO, char* TRANS, char* DIAG, blasint *N, blasint *NRHS, FLOAT *a, blasint *ldA, + FLOAT *b, blasint *ldB, blasint *Info){ + +diff --git a/interface/lapack/zgetf2.c b/interface/lapack/zgetf2.c +index 68b9a7e4b..5b879ad57 100644 +--- a/interface/lapack/zgetf2.c ++++ b/interface/lapack/zgetf2.c +@@ -50,6 +50,7 @@ + #define ERROR_NAME "CGETF2" + #endif + ++__attribute__ ((visibility ("default"))) + int NAME(blasint *M, blasint *N, FLOAT *a, blasint *ldA, blasint *ipiv, blasint *Info){ + + blas_arg_t args; +diff --git a/interface/lapack/zgetrf.c b/interface/lapack/zgetrf.c +index d03541fad..5d178c0c7 100644 +--- a/interface/lapack/zgetrf.c ++++ b/interface/lapack/zgetrf.c +@@ -50,6 +50,7 @@ + #define ERROR_NAME "CGETRF" + #endif + ++__attribute__ ((visibility ("default"))) + int NAME(blasint *M, blasint *N, FLOAT *a, blasint *ldA, blasint *ipiv, blasint *Info){ + + blas_arg_t args; +diff --git a/interface/lapack/zgetrs.c b/interface/lapack/zgetrs.c +index 0add909ca..7ac19578a 100644 +--- a/interface/lapack/zgetrs.c ++++ b/interface/lapack/zgetrs.c +@@ -60,6 +60,7 @@ static blasint (*getrs_parallel[])(blas_arg_t *, BLASLONG *, BLASLONG *, FLOAT * + }; + #endif + ++__attribute__ ((visibility ("default"))) + int NAME(char *TRANS, blasint *N, blasint *NRHS, FLOAT *a, blasint *ldA, + blasint *ipiv, FLOAT *b, blasint *ldB, blasint *Info){ + +diff --git a/interface/lapack/zlaswp.c b/interface/lapack/zlaswp.c +index 7bb4a659e..c3e547364 100644 +--- a/interface/lapack/zlaswp.c ++++ b/interface/lapack/zlaswp.c +@@ -52,6 +52,7 @@ static int (*laswp[])(BLASLONG, BLASLONG, BLASLONG, FLOAT, FLOAT, FLOAT *, BLASL + #endif + }; + ++__attribute__ ((visibility ("default"))) + int NAME(blasint *N, FLOAT *a, blasint *LDA, blasint *K1, blasint *K2, blasint *ipiv, blasint *INCX){ + + blasint n = *N; +diff --git a/interface/lapack/zlauu2.c b/interface/lapack/zlauu2.c +index ae972543c..f1c4f8ee0 100644 +--- a/interface/lapack/zlauu2.c ++++ b/interface/lapack/zlauu2.c +@@ -61,6 +61,7 @@ static blasint (*lauu2[])(blas_arg_t *, BLASLONG *, BLASLONG *, FLOAT *, FLOAT * + #endif + }; + ++__attribute__ ((visibility ("default"))) + int NAME(char *UPLO, blasint *N, FLOAT *a, blasint *ldA, blasint *Info){ + + blas_arg_t args; +diff --git a/interface/lapack/zlauum.c b/interface/lapack/zlauum.c +index 4a36cc173..28766c74e 100644 +--- a/interface/lapack/zlauum.c ++++ b/interface/lapack/zlauum.c +@@ -60,6 +60,7 @@ static blasint (*lauum_parallel[])(blas_arg_t *, BLASLONG *, BLASLONG *, FLOAT * + }; + #endif + ++__attribute__ ((visibility ("default"))) + int NAME(char *UPLO, blasint *N, FLOAT *a, blasint *ldA, blasint *Info){ + + blas_arg_t args; +diff --git a/interface/lapack/zpotf2.c b/interface/lapack/zpotf2.c +index c74b66728..aa2d8bca6 100644 +--- a/interface/lapack/zpotf2.c ++++ b/interface/lapack/zpotf2.c +@@ -61,6 +61,7 @@ static blasint (*potf2[])(blas_arg_t *, BLASLONG *, BLASLONG *, FLOAT *, FLOAT * + #endif + }; + ++__attribute__ ((visibility ("default"))) + int NAME(char *UPLO, blasint *N, FLOAT *a, blasint *ldA, blasint *Info){ + + blas_arg_t args; +diff --git a/interface/lapack/zpotrf.c b/interface/lapack/zpotrf.c +index 298efbbc1..4443aa5b2 100644 +--- a/interface/lapack/zpotrf.c ++++ b/interface/lapack/zpotrf.c +@@ -60,6 +60,7 @@ static blasint (*potrf_parallel[])(blas_arg_t *, BLASLONG *, BLASLONG *, FLOAT * + }; + #endif + ++__attribute__ ((visibility ("default"))) + int NAME(char *UPLO, blasint *N, FLOAT *a, blasint *ldA, blasint *Info){ + + blas_arg_t args; +diff --git a/interface/lapack/zpotri.c b/interface/lapack/zpotri.c +index 8748c6352..7cd9ae699 100644 +--- a/interface/lapack/zpotri.c ++++ b/interface/lapack/zpotri.c +@@ -68,6 +68,7 @@ static blasint (*lauum_parallel[])(blas_arg_t *, BLASLONG *, BLASLONG *, FLOAT * + }; + #endif + ++__attribute__ ((visibility ("default"))) + int NAME(char *UPLO, blasint *N, FLOAT *a, blasint *ldA, blasint *Info){ + + blas_arg_t args; +diff --git a/interface/lapack/ztrti2.c b/interface/lapack/ztrti2.c +index cb9c0d557..ccf67493e 100644 +--- a/interface/lapack/ztrti2.c ++++ b/interface/lapack/ztrti2.c +@@ -60,6 +60,7 @@ static blasint (*trti2[])(blas_arg_t *, BLASLONG *, BLASLONG *, FLOAT *, FLOAT * + #endif + }; + ++__attribute__ ((visibility ("default"))) + int NAME(char *UPLO, char *DIAG, blasint *N, FLOAT *a, blasint *ldA, blasint *Info){ + + blas_arg_t args; +diff --git a/interface/lapack/ztrtri.c b/interface/lapack/ztrtri.c +index dda4a9e4b..adbba0ab3 100644 +--- a/interface/lapack/ztrtri.c ++++ b/interface/lapack/ztrtri.c +@@ -60,6 +60,7 @@ static blasint (*trtri_parallel[])(blas_arg_t *, BLASLONG *, BLASLONG *, FLOAT * + }; + #endif + ++__attribute__ ((visibility ("default"))) + int NAME(char *UPLO, char *DIAG, blasint *N, FLOAT *a, blasint *ldA, blasint *Info){ + + blas_arg_t args; +diff --git a/interface/lapack/ztrtrs.c b/interface/lapack/ztrtrs.c +index ec3343393..17666635a 100644 +--- a/interface/lapack/ztrtrs.c ++++ b/interface/lapack/ztrtrs.c +@@ -60,6 +60,7 @@ static blasint (*trtrs_parallel[])(blas_arg_t *, BLASLONG *, BLASLONG *, FLOAT * + }; + #endif + ++__attribute__ ((visibility ("default"))) + int NAME(char *UPLO, char* TRANS, char* DIAG, blasint *N, blasint *NRHS, FLOAT *a, blasint *ldA, + FLOAT *b, blasint *ldB, blasint *Info){ + +diff --git a/interface/max.c b/interface/max.c +index 7817601b9..c667509fd 100644 +--- a/interface/max.c ++++ b/interface/max.c +@@ -126,6 +126,8 @@ + + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + FLOATRET NAME(blasint *N, FLOAT *x, blasint *INCX){ +diff --git a/interface/nrm2.c b/interface/nrm2.c +index cfeb13df8..70b131601 100644 +--- a/interface/nrm2.c ++++ b/interface/nrm2.c +@@ -42,6 +42,8 @@ + #include "functable.h" + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + FLOATRET NAME(blasint *N, FLOAT *x, blasint *INCX){ +diff --git a/interface/omatcopy.c b/interface/omatcopy.c +index c26446f5c..4cf5e11af 100644 +--- a/interface/omatcopy.c ++++ b/interface/omatcopy.c +@@ -47,6 +47,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + #define BlasNoTrans 0 + #define BlasTrans 1 + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + void NAME( char* ORDER, char* TRANS, blasint *rows, blasint *cols, FLOAT *alpha, FLOAT *a, blasint *lda, FLOAT *b, blasint *ldb) + { +diff --git a/interface/rot.c b/interface/rot.c +index 125275a18..deb7dcd66 100644 +--- a/interface/rot.c ++++ b/interface/rot.c +@@ -42,6 +42,8 @@ + #include "functable.h" + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(blasint *N, FLOAT *x, blasint *INCX, FLOAT *y, blasint *INCY, FLOAT *C, FLOAT *S){ +diff --git a/interface/rotg.c b/interface/rotg.c +index 423ebda21..4d9e9c4f6 100644 +--- a/interface/rotg.c ++++ b/interface/rotg.c +@@ -5,6 +5,7 @@ + #include "functable.h" + #endif + ++__attribute__ ((visibility ("default"))) + + #ifndef CBLAS + +diff --git a/interface/rotm.c b/interface/rotm.c +index 9ef87da32..576d51b14 100644 +--- a/interface/rotm.c ++++ b/interface/rotm.c +@@ -3,6 +3,8 @@ + #include "functable.h" + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(blasint *N, FLOAT *dx, blasint *INCX, FLOAT *dy, blasint *INCY, FLOAT *dparam){ +diff --git a/interface/rotmg.c b/interface/rotmg.c +index b8f627221..08a339b4f 100644 +--- a/interface/rotmg.c ++++ b/interface/rotmg.c +@@ -50,6 +50,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + #define ABS(x) fabsf(x) + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(FLOAT *dd1, FLOAT *dd2, FLOAT *dx1, FLOAT *DY1, FLOAT *dparam){ +diff --git a/interface/sbgemmt.c b/interface/sbgemmt.c +index 67914fe65..b5861b51d 100644 +--- a/interface/sbgemmt.c ++++ b/interface/sbgemmt.c +@@ -43,6 +43,8 @@ + #define GEMM_MULTITHREAD_THRESHOLD 4 + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, char *TRANSA, char *TRANSB, +diff --git a/interface/sbgemv.c b/interface/sbgemv.c +index 12db2dfb1..e2f745d80 100644 +--- a/interface/sbgemv.c ++++ b/interface/sbgemv.c +@@ -64,6 +64,8 @@ static int (*gemv_thread[])(BLASLONG, BLASLONG, FLOAT, IFLOAT *, BLASLONG, IFLOA + }; + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *TRANS, blasint *M, blasint *N, FLOAT *ALPHA, IFLOAT *a, blasint *LDA, IFLOAT *x, blasint *INCX, FLOAT *BETA, FLOAT *y, blasint *INCY) +diff --git a/interface/sbmv.c b/interface/sbmv.c +index 25e99ca34..96d2c7a5c 100644 +--- a/interface/sbmv.c ++++ b/interface/sbmv.c +@@ -81,6 +81,8 @@ static int (*sbmv_thread[])(BLASLONG, BLASLONG, FLOAT, FLOAT *, BLASLONG, FLOAT + }; + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, blasint *N, blasint *K, FLOAT *ALPHA, FLOAT *a, blasint *LDA, +diff --git a/interface/scal.c b/interface/scal.c +index 4f12df7c0..62859cc57 100644 +--- a/interface/scal.c ++++ b/interface/scal.c +@@ -43,6 +43,8 @@ + #include "functable.h" + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(blasint *N, FLOAT *ALPHA, FLOAT *x, blasint *INCX){ +diff --git a/interface/sdsdot.c b/interface/sdsdot.c +index 6c457fa6c..45a258564 100644 +--- a/interface/sdsdot.c ++++ b/interface/sdsdot.c +@@ -42,6 +42,8 @@ + #include "functable.h" + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + FLOATRET NAME(blasint *N, FLOAT *a, FLOAT *x, blasint *INCX, FLOAT *y, blasint *INCY){ +diff --git a/interface/spmv.c b/interface/spmv.c +index e08ae3f6e..aa2186094 100644 +--- a/interface/spmv.c ++++ b/interface/spmv.c +@@ -73,6 +73,8 @@ static int (*spmv_thread[])(BLASLONG, FLOAT, FLOAT *, FLOAT *, BLASLONG, FLOAT + }; + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, blasint *N, FLOAT *ALPHA, FLOAT *a, +diff --git a/interface/spr.c b/interface/spr.c +index 8aafc9f85..c6e28fb21 100644 +--- a/interface/spr.c ++++ b/interface/spr.c +@@ -73,6 +73,8 @@ static int (*spr_thread[])(BLASLONG, FLOAT, FLOAT *, BLASLONG, FLOAT *, FLOAT *, + }; + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, blasint *N, FLOAT *ALPHA, +diff --git a/interface/spr2.c b/interface/spr2.c +index b5aab1767..8f99394f3 100644 +--- a/interface/spr2.c ++++ b/interface/spr2.c +@@ -73,6 +73,8 @@ static int (*spr2_thread[])(BLASLONG, FLOAT, FLOAT *, BLASLONG, FLOAT *, BLASLON + }; + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, blasint *N, FLOAT *ALPHA, +diff --git a/interface/sum.c b/interface/sum.c +index dfdcc5dcc..eb37604c8 100644 +--- a/interface/sum.c ++++ b/interface/sum.c +@@ -42,6 +42,8 @@ + #include "functable.h" + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + FLOATRET NAME(blasint *N, FLOAT *x, blasint *INCX){ +diff --git a/interface/swap.c b/interface/swap.c +index ea40b1fc2..82829d0ed 100644 +--- a/interface/swap.c ++++ b/interface/swap.c +@@ -50,6 +50,8 @@ + #undef SMP + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(blasint *N, FLOAT *x, blasint *INCX, FLOAT *y, blasint *INCY){ +diff --git a/interface/symm.c b/interface/symm.c +index 04a8fab7d..01dbc7c51 100644 +--- a/interface/symm.c ++++ b/interface/symm.c +@@ -146,6 +146,8 @@ static int (*symm[])(blas_arg_t *, BLASLONG *, BLASLONG *, FLOAT *, FLOAT *, BLA + #endif + }; + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *SIDE, char *UPLO, +diff --git a/interface/symv.c b/interface/symv.c +index 1f23ce4ee..85828085c 100644 +--- a/interface/symv.c ++++ b/interface/symv.c +@@ -51,6 +51,8 @@ + #define ERROR_NAME "SSYMV " + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, blasint *N, FLOAT *ALPHA, FLOAT *a, blasint *LDA, +diff --git a/interface/syr.c b/interface/syr.c +index ad75264b1..9ebd4e484 100644 +--- a/interface/syr.c ++++ b/interface/syr.c +@@ -73,6 +73,8 @@ static int (*syr_thread[])(BLASLONG, FLOAT, FLOAT *, BLASLONG, FLOAT *, BLASLONG + }; + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, blasint *N, FLOAT *ALPHA, +diff --git a/interface/syr2.c b/interface/syr2.c +index 632906d28..cd1a4cb2f 100644 +--- a/interface/syr2.c ++++ b/interface/syr2.c +@@ -73,6 +73,8 @@ static int (*syr2_thread[])(BLASLONG, FLOAT, FLOAT *, BLASLONG, FLOAT *, BLASLON + }; + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, blasint *N, FLOAT *ALPHA, +diff --git a/interface/syr2k.c b/interface/syr2k.c +index 47df7f89f..61f2864cc 100644 +--- a/interface/syr2k.c ++++ b/interface/syr2k.c +@@ -79,6 +79,8 @@ static int (*syr2k[])(blas_arg_t *, BLASLONG *, BLASLONG *, FLOAT *, FLOAT *, BL + #endif + }; + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, char *TRANS, +diff --git a/interface/syrk.c b/interface/syrk.c +index 9e493b00f..4af62cae5 100644 +--- a/interface/syrk.c ++++ b/interface/syrk.c +@@ -91,6 +91,8 @@ static int (*syrk[])(blas_arg_t *, BLASLONG *, BLASLONG *, FLOAT *, FLOAT *, BLA + #endif + }; + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, char *TRANS, +diff --git a/interface/tbmv.c b/interface/tbmv.c +index b5f3ab740..256060261 100644 +--- a/interface/tbmv.c ++++ b/interface/tbmv.c +@@ -79,6 +79,8 @@ static int (*tbmv_thread[])(BLASLONG, BLASLONG, FLOAT *, BLASLONG, FLOAT *, BLAS + }; + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, char *TRANS, char *DIAG, +diff --git a/interface/tbsv.c b/interface/tbsv.c +index 12a1eb003..2de5814df 100644 +--- a/interface/tbsv.c ++++ b/interface/tbsv.c +@@ -64,6 +64,8 @@ static int (*tbsv[])(BLASLONG, BLASLONG, FLOAT *, BLASLONG, FLOAT *, BLASLONG, v + #endif + }; + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, char *TRANS, char *DIAG, +diff --git a/interface/tobf16.c b/interface/tobf16.c +index 787d9d689..f070911ee 100644 +--- a/interface/tobf16.c ++++ b/interface/tobf16.c +@@ -11,6 +11,8 @@ + #else + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + void NAME(blasint *N, FLOAT_TYPE *in, blasint *INC_IN, bfloat16 *out, blasint *INC_OUT){ + BLASLONG n = *N; +diff --git a/interface/tpmv.c b/interface/tpmv.c +index 262af2285..e7092c71a 100644 +--- a/interface/tpmv.c ++++ b/interface/tpmv.c +@@ -79,6 +79,8 @@ static int (*tpmv_thread[])(BLASLONG, FLOAT *, FLOAT *, BLASLONG, FLOAT *, int) + }; + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, char *TRANS, char *DIAG, +diff --git a/interface/tpsv.c b/interface/tpsv.c +index 58be77cd3..e2ca6be31 100644 +--- a/interface/tpsv.c ++++ b/interface/tpsv.c +@@ -64,6 +64,8 @@ static int (*tpsv[])(BLASLONG, FLOAT *, FLOAT *, BLASLONG, void *) = { + #endif + }; + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, char *TRANS, char *DIAG, +diff --git a/interface/trmv.c b/interface/trmv.c +index 029a83499..df34d4b18 100644 +--- a/interface/trmv.c ++++ b/interface/trmv.c +@@ -79,6 +79,8 @@ static int (*trmv_thread[])(BLASLONG, FLOAT *, BLASLONG, FLOAT *, BLASLONG, FLOA + }; + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, char *TRANS, char *DIAG, +diff --git a/interface/trsm.c b/interface/trsm.c +index dcc64769d..ea72e5fc4 100644 +--- a/interface/trsm.c ++++ b/interface/trsm.c +@@ -109,6 +109,8 @@ static int (*trsm[])(blas_arg_t *, BLASLONG *, BLASLONG *, FLOAT *, FLOAT *, BLA + #endif + }; + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *SIDE, char *UPLO, char *TRANS, char *DIAG, +diff --git a/interface/trsv.c b/interface/trsv.c +index a054d8eeb..2dfdbb5a3 100644 +--- a/interface/trsv.c ++++ b/interface/trsv.c +@@ -64,6 +64,8 @@ static int (*trsv[])(BLASLONG, FLOAT *, BLASLONG, FLOAT *, BLASLONG, void *) = { + #endif + }; + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, char *TRANS, char *DIAG, +diff --git a/interface/xerbla.c b/interface/xerbla.c +index c3a174552..acb6c4991 100644 +--- a/interface/xerbla.c ++++ b/interface/xerbla.c +@@ -6,6 +6,8 @@ + #include + #include "common.h" + ++__attribute__ ((visibility ("default"))) ++ + void CNAME(blasint p, char *rout, char *form, ...) + { + va_list args; +diff --git a/interface/zaxpby.c b/interface/zaxpby.c +index e5065270d..38788d7b6 100644 +--- a/interface/zaxpby.c ++++ b/interface/zaxpby.c +@@ -37,6 +37,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + #include "functable.h" + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(blasint *N, void *VALPHA, FLOAT *x, blasint *INCX, void *VBETA, FLOAT *y, blasint *INCY) +diff --git a/interface/zaxpy.c b/interface/zaxpy.c +index 0e168606d..6250b9220 100644 +--- a/interface/zaxpy.c ++++ b/interface/zaxpy.c +@@ -46,6 +46,9 @@ + #else + #define MULTI_THREAD_MINIMAL 10000 + #endif ++ ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(blasint *N, FLOAT *ALPHA, FLOAT *x, blasint *INCX, FLOAT *y, blasint *INCY){ +diff --git a/interface/zdot.c b/interface/zdot.c +index af91b96d5..838d738f8 100644 +--- a/interface/zdot.c ++++ b/interface/zdot.c +@@ -52,6 +52,8 @@ + #endif + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + #ifdef RETURN_BY_STRUCT +diff --git a/interface/zgbmv.c b/interface/zgbmv.c +index 5128b22e1..59eb24ae8 100644 +--- a/interface/zgbmv.c ++++ b/interface/zgbmv.c +@@ -80,6 +80,8 @@ static int (*gbmv_thread[])(BLASLONG, BLASLONG, BLASLONG, BLASLONG, FLOAT *, + }; + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *TRANS, blasint *M, blasint *N, +diff --git a/interface/zgeadd.c b/interface/zgeadd.c +index de71f27b8..cce09f255 100644 +--- a/interface/zgeadd.c ++++ b/interface/zgeadd.c +@@ -48,6 +48,8 @@ + #define ERROR_NAME "CGEADD " + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(blasint *M, blasint *N, FLOAT *ALPHA, FLOAT *a, blasint *LDA, +diff --git a/interface/zgemv.c b/interface/zgemv.c +index 3438575b9..64932f4a3 100644 +--- a/interface/zgemv.c ++++ b/interface/zgemv.c +@@ -62,6 +62,8 @@ static int (*gemv_thread[])(BLASLONG, BLASLONG, FLOAT *, FLOAT *, BLASLONG, FLO + }; + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *TRANS, blasint *M, blasint *N, +diff --git a/interface/zger.c b/interface/zger.c +index 1360c5873..97adb05bd 100644 +--- a/interface/zger.c ++++ b/interface/zger.c +@@ -101,6 +101,8 @@ + #endif + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(blasint *M, blasint *N, FLOAT *Alpha, +diff --git a/interface/zhbmv.c b/interface/zhbmv.c +index 656f137c6..0a61d9338 100644 +--- a/interface/zhbmv.c ++++ b/interface/zhbmv.c +@@ -73,6 +73,8 @@ static int (*hbmv_thread[])(BLASLONG, BLASLONG, FLOAT *, FLOAT *, BLASLONG, FLO + }; + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, blasint *N, blasint *K, FLOAT *ALPHA, FLOAT *a, blasint *LDA, +diff --git a/interface/zhemv.c b/interface/zhemv.c +index 9c31f31d9..14c155780 100644 +--- a/interface/zhemv.c ++++ b/interface/zhemv.c +@@ -55,6 +55,8 @@ + #define ERROR_NAME "CHEMV " + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, blasint *N, FLOAT *ALPHA, FLOAT *a, blasint *LDA, +diff --git a/interface/zher.c b/interface/zher.c +index 49b1cec03..501a6c18f 100644 +--- a/interface/zher.c ++++ b/interface/zher.c +@@ -73,6 +73,8 @@ static int (*her_thread[])(BLASLONG, FLOAT, FLOAT *, BLASLONG, FLOAT *, BLASLONG + }; + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, blasint *N, FLOAT *ALPHA, +diff --git a/interface/zher2.c b/interface/zher2.c +index eba4c4f41..44444e3a9 100644 +--- a/interface/zher2.c ++++ b/interface/zher2.c +@@ -73,6 +73,8 @@ static int (*her2_thread[])(BLASLONG, FLOAT *, FLOAT *, BLASLONG, FLOAT *, BLASL + }; + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, blasint *N, FLOAT *ALPHA, +diff --git a/interface/zhpmv.c b/interface/zhpmv.c +index ff49716b5..0de9a4107 100644 +--- a/interface/zhpmv.c ++++ b/interface/zhpmv.c +@@ -73,6 +73,8 @@ static int (*hpmv_thread[])(BLASLONG, FLOAT *, FLOAT *, FLOAT *, BLASLONG, FLOA + }; + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, blasint *N, FLOAT *ALPHA, FLOAT *a, +diff --git a/interface/zhpr.c b/interface/zhpr.c +index 34700549e..b5fc02245 100644 +--- a/interface/zhpr.c ++++ b/interface/zhpr.c +@@ -73,6 +73,8 @@ static int (*hpr_thread[])(BLASLONG, FLOAT, FLOAT *, BLASLONG, FLOAT *, FLOAT *, + }; + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, blasint *N, FLOAT *ALPHA, +diff --git a/interface/zhpr2.c b/interface/zhpr2.c +index 1cbaaa062..9f0d9a04a 100644 +--- a/interface/zhpr2.c ++++ b/interface/zhpr2.c +@@ -73,6 +73,8 @@ static int (*hpr2_thread[])(BLASLONG, FLOAT *, FLOAT *, BLASLONG, FLOAT *, BLASL + }; + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, blasint *N, FLOAT *ALPHA, +diff --git a/interface/zimatcopy.c b/interface/zimatcopy.c +index b879c9ac2..5bad04a14 100644 +--- a/interface/zimatcopy.c ++++ b/interface/zimatcopy.c +@@ -52,6 +52,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #define NEW_IMATCOPY + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + void NAME( char* ORDER, char* TRANS, blasint *rows, blasint *cols, FLOAT *alpha, FLOAT *a, blasint *lda, blasint *ldb) + { +diff --git a/interface/zomatcopy.c b/interface/zomatcopy.c +index 7121711d8..bc7b78a47 100644 +--- a/interface/zomatcopy.c ++++ b/interface/zomatcopy.c +@@ -49,6 +49,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + #define BlasTransConj 2 + #define BlasConj 3 + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + void NAME( char* ORDER, char* TRANS, blasint *rows, blasint *cols, FLOAT *alpha, FLOAT *a, blasint *lda, FLOAT *b, blasint *ldb) + { +diff --git a/interface/zrot.c b/interface/zrot.c +index 228c5ee45..33e0cbbee 100644 +--- a/interface/zrot.c ++++ b/interface/zrot.c +@@ -42,6 +42,8 @@ + #include "functable.h" + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + void NAME(blasint *N, FLOAT *x, blasint *INCX, FLOAT *y, blasint *INCY, FLOAT *C, FLOAT *S){ + BLASLONG n = *N; +diff --git a/interface/zrotg.c b/interface/zrotg.c +index 8acc3c9b2..c90fb2522 100644 +--- a/interface/zrotg.c ++++ b/interface/zrotg.c +@@ -6,6 +6,7 @@ + #endif + + ++__attribute__ ((visibility ("default"))) + #ifndef CBLAS + void NAME(FLOAT *DA, FLOAT *DB, FLOAT *C, FLOAT *S){ + +diff --git a/interface/zsbmv.c b/interface/zsbmv.c +index cd5cefed9..c47c5f9c3 100644 +--- a/interface/zsbmv.c ++++ b/interface/zsbmv.c +@@ -81,6 +81,7 @@ static int (*sbmv_thread[])(BLASLONG, BLASLONG, FLOAT *, FLOAT *, BLASLONG, FLO + }; + #endif + ++__attribute__ ((visibility ("default"))) + void NAME(char *UPLO, blasint *N, blasint *K, FLOAT *ALPHA, FLOAT *a, blasint *LDA, + FLOAT *b, blasint *INCX, FLOAT *BETA, FLOAT *c, blasint *INCY){ + +diff --git a/interface/zscal.c b/interface/zscal.c +index 0e52d113b..956972acc 100644 +--- a/interface/zscal.c ++++ b/interface/zscal.c +@@ -42,6 +42,8 @@ + #include "functable.h" + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(blasint *N, FLOAT *ALPHA, FLOAT *x, blasint *INCX){ +diff --git a/interface/zspmv.c b/interface/zspmv.c +index be11463c0..1e78f33b3 100644 +--- a/interface/zspmv.c ++++ b/interface/zspmv.c +@@ -73,6 +73,8 @@ static int (*spmv_thread[])(BLASLONG, FLOAT *, FLOAT *, FLOAT *, BLASLONG, FLOA + }; + #endif + ++__attribute__ ((visibility ("default"))) ++ + void NAME(char *UPLO, blasint *N, FLOAT *ALPHA, FLOAT *a, + FLOAT *b, blasint *INCX, FLOAT *BETA, FLOAT *c, blasint *INCY){ + +diff --git a/interface/zspr.c b/interface/zspr.c +index 574b59aa2..1d04c3d09 100644 +--- a/interface/zspr.c ++++ b/interface/zspr.c +@@ -73,6 +73,7 @@ static int (*spr_thread[])(BLASLONG, FLOAT *, FLOAT *, BLASLONG, FLOAT *, FLOAT + }; + #endif + ++__attribute__ ((visibility ("default"))) + void NAME(char *UPLO, blasint *N, FLOAT *ALPHA, + FLOAT *x, blasint *INCX, FLOAT *a){ + +diff --git a/interface/zspr2.c b/interface/zspr2.c +index 44c36d553..2f4415a7f 100644 +--- a/interface/zspr2.c ++++ b/interface/zspr2.c +@@ -73,6 +73,7 @@ static int (*spr2_thread[])(BLASLONG, FLOAT *, FLOAT *, BLASLONG, FLOAT *, BLASL + }; + #endif + ++__attribute__ ((visibility ("default"))) + void NAME(char *UPLO, blasint *N, FLOAT *ALPHA, + FLOAT *x, blasint *INCX, FLOAT *y, blasint *INCY, FLOAT *a){ + +diff --git a/interface/zswap.c b/interface/zswap.c +index 43971b73e..a18dc9baa 100644 +--- a/interface/zswap.c ++++ b/interface/zswap.c +@@ -50,6 +50,8 @@ + #undef SMP + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(blasint *N, FLOAT *x, blasint *INCX, FLOAT *y, blasint *INCY){ +diff --git a/interface/zsymv.c b/interface/zsymv.c +index 1d6ff1f34..c1714cc01 100644 +--- a/interface/zsymv.c ++++ b/interface/zsymv.c +@@ -51,6 +51,8 @@ + #define ERROR_NAME "CSYMV " + #endif + ++__attribute__ ((visibility ("default"))) ++ + void NAME(char *UPLO, blasint *N, FLOAT *ALPHA, FLOAT *a, blasint *LDA, + FLOAT *b, blasint *INCX, FLOAT *BETA, FLOAT *c, blasint *INCY){ + +diff --git a/interface/zsyr.c b/interface/zsyr.c +index 51cca84ee..4720b4f78 100644 +--- a/interface/zsyr.c ++++ b/interface/zsyr.c +@@ -73,6 +73,7 @@ static int (*syr_thread[])(BLASLONG, FLOAT *, FLOAT *, BLASLONG, FLOAT *, BLASLO + }; + #endif + ++__attribute__ ((visibility ("default"))) + + #ifndef CBLAS + +diff --git a/interface/zsyr2.c b/interface/zsyr2.c +index 7c81c2093..98d77a6b6 100644 +--- a/interface/zsyr2.c ++++ b/interface/zsyr2.c +@@ -73,6 +73,7 @@ static int (*syr2_thread[])(BLASLONG, FLOAT *, FLOAT *, BLASLONG, FLOAT *, BLASL + }; + #endif + ++__attribute__ ((visibility ("default"))) + void NAME(char *UPLO, blasint *N, FLOAT *ALPHA, + FLOAT *x, blasint *INCX, FLOAT *y, blasint *INCY, FLOAT *a, blasint *LDA){ + +diff --git a/interface/ztbmv.c b/interface/ztbmv.c +index d56620c5b..69bc7522c 100644 +--- a/interface/ztbmv.c ++++ b/interface/ztbmv.c +@@ -91,6 +91,8 @@ static int (*tbmv_thread[])(BLASLONG, BLASLONG, FLOAT *, BLASLONG, FLOAT *, BLAS + }; + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, char *TRANS, char *DIAG, +diff --git a/interface/ztbsv.c b/interface/ztbsv.c +index 7e144ce75..1badcb3cf 100644 +--- a/interface/ztbsv.c ++++ b/interface/ztbsv.c +@@ -70,6 +70,8 @@ static int (*tbsv[])(BLASLONG, BLASLONG, FLOAT *, BLASLONG, FLOAT *, BLASLONG, v + #endif + }; + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, char *TRANS, char *DIAG, +diff --git a/interface/ztpmv.c b/interface/ztpmv.c +index 3791d1602..a973e37a7 100644 +--- a/interface/ztpmv.c ++++ b/interface/ztpmv.c +@@ -91,6 +91,8 @@ static int (*tpmv_thread[])(BLASLONG, FLOAT *, FLOAT *, BLASLONG, FLOAT *, int) + }; + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, char *TRANS, char *DIAG, +diff --git a/interface/ztpsv.c b/interface/ztpsv.c +index fa706b565..32028a20b 100644 +--- a/interface/ztpsv.c ++++ b/interface/ztpsv.c +@@ -70,6 +70,8 @@ static int (*tpsv[])(BLASLONG, FLOAT *, FLOAT *, BLASLONG, void *) = { + #endif + }; + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, char *TRANS, char *DIAG, +diff --git a/interface/ztrmv.c b/interface/ztrmv.c +index 4c47e9e91..dc16ec8cc 100644 +--- a/interface/ztrmv.c ++++ b/interface/ztrmv.c +@@ -91,6 +91,8 @@ static int (*trmv_thread[])(BLASLONG, FLOAT *, BLASLONG, FLOAT *, BLASLONG, FLOA + }; + #endif + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, char *TRANS, char *DIAG, +diff --git a/interface/ztrsv.c b/interface/ztrsv.c +index cbb7bba13..bf5d0fa4c 100644 +--- a/interface/ztrsv.c ++++ b/interface/ztrsv.c +@@ -70,6 +70,8 @@ static int (*trsv[])(BLASLONG, FLOAT *, BLASLONG, FLOAT *, BLASLONG, void *) = { + #endif + }; + ++__attribute__ ((visibility ("default"))) ++ + #ifndef CBLAS + + void NAME(char *UPLO, char *TRANS, char *DIAG, diff --git a/pyproject.toml b/pyproject.toml index aae8c91..c538cb8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,7 +9,7 @@ build-backend = "setuptools.build_meta" [project] name = "scipy-openblas64" # v0.3.30-359-g29fab2b9 -version = "0.3.30.359.0" +version = "0.3.30.359.1" requires-python = ">=3.7" description = "Provides OpenBLAS for python packaging" readme = "README.md" diff --git a/tools/build_steps.sh b/tools/build_steps.sh index e21e7a2..9f769ec 100644 --- a/tools/build_steps.sh +++ b/tools/build_steps.sh @@ -112,6 +112,8 @@ function patch_source { echo applying patch $f git apply ../patches/$f done + # local version=$(git describe --tags --abbrev=8 | sed -e "s/^v//" | sed -e "s/\\./-/g") + # sed -e "s/^VERSION = .*/VERSION = ${version}/" -i.bak Makefile.rule } function do_build_lib { @@ -208,16 +210,16 @@ function do_build_lib { echo "QEMU has a race condition preventing fork tests to work as expected" fi if [ -n "$dynamic_list" ]; then - CFLAGS="$CFLAGS -fvisibility=protected -Wno-uninitialized" \ - make BUFFERSIZE=20 DYNAMIC_ARCH=1 QUIET_MAKE=1 \ - USE_OPENMP=0 NUM_THREADS=64 \ + CFLAGS="$CFLAGS -fvisibility=hidden -Wno-uninitialized" \ + make BUFFERSIZE=20 DYNAMIC_ARCH=1 \ + USE_OPENMP=0 NUM_THREADS=64 NO_LAPACKE=1 \ DYNAMIC_LIST="$dynamic_list" \ BINARY="$bitness" $interface_flags \ TARGET="$target" else - CFLAGS="$CFLAGS -fvisibility=protected -Wno-uninitialized" \ - make BUFFERSIZE=20 DYNAMIC_ARCH=1 QUIET_MAKE=1 \ - USE_OPENMP=0 NUM_THREADS=64 \ + CFLAGS="$CFLAGS -fvisibility=hidden -Wno-uninitialized" \ + make BUFFERSIZE=20 DYNAMIC_ARCH=1 \ + USE_OPENMP=0 NUM_THREADS=64 NO_LAPACKE=1 \ BINARY="$bitness" $interface_flags \ TARGET="$target" fi @@ -291,7 +293,7 @@ function build_lib_on_travis { function build_on_travis { if [ ${TRAVIS_EVENT_TYPE} == "cron" ]; then build_lib_on_travis "$PLAT" "$INTERFACE64" 1 - version=$(cd OpenBLAS && git describe --tags --abbrev=8 | sed -e "s/^v\(.*\)-g.*/\1/" | sed -e "s/-/./g") + local version=$(cd OpenBLAS && git describe --tags --abbrev=8 | sed -e "s/^v\(.*\)-g.*/\1/" | sed -e "s/-/./g") sed -e "s/^version = .*/version = \"${version}\"/" -i.bak pyproject.toml else build_lib_on_travis "$PLAT" "$INTERFACE64" 0 diff --git a/tools/local_build.sh b/tools/local_build.sh index 441375d..fc23581 100755 --- a/tools/local_build.sh +++ b/tools/local_build.sh @@ -30,4 +30,4 @@ export BUILD_PREFIX=/tmp/openblas mkdir -p $BUILD_PREFIX ROOT_DIR=$(dirname $(dirname $0)) -bash ${ROOT_DIR}/build-openblas.sh +${ROOT_DIR}/build-openblas.sh From 2b0f2414231abc143083f274c0dd3e9f4bd4ac64 Mon Sep 17 00:00:00 2001 From: mattip Date: Wed, 10 Dec 2025 23:06:37 +0200 Subject: [PATCH 2/3] add patch for arm64-specific external functions --- OpenBLAS | 2 +- patches/extern_arm64.patch | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 patches/extern_arm64.patch diff --git a/OpenBLAS b/OpenBLAS index 29fab2b..68ff451 160000 --- a/OpenBLAS +++ b/OpenBLAS @@ -1 +1 @@ -Subproject commit 29fab2b912d3130b3caa84c2c1178f94ed25d1a6 +Subproject commit 68ff451eccea3e7d7d2afb2588b63552bde7ea89 diff --git a/patches/extern_arm64.patch b/patches/extern_arm64.patch new file mode 100644 index 0000000..4a650c9 --- /dev/null +++ b/patches/extern_arm64.patch @@ -0,0 +1,24 @@ +diff --git a/kernel/generic/cabs.c b/kernel/generic/cabs.c +index f76f69b20..e2454b41e 100644 +--- a/kernel/generic/cabs.c ++++ b/kernel/generic/cabs.c +@@ -39,6 +39,7 @@ + #include + #include "common.h" + ++__attribute__ ((visibility ("default"))) + FLOAT NAME(FLOAT *a){ + return fabs(a[0]) + fabs(a[1]); + } +diff --git a/kernel/generic/lsame.c b/kernel/generic/lsame.c +index 83fff1798..3ef95f3d4 100644 +--- a/kernel/generic/lsame.c ++++ b/kernel/generic/lsame.c +@@ -38,6 +38,7 @@ + + #include + ++__attribute__ ((visibility ("default"))) + int NAME(const char *A, const char *B){ + + char a = *A; From 709bec3e4eca245249325672bfe742bb60691f36 Mon Sep 17 00:00:00 2001 From: mattip Date: Thu, 11 Dec 2025 14:09:48 +0200 Subject: [PATCH 3/3] add 'hidden' to assembler directives, use generic lsame and cabs --- patches/extern_asm_hidden.patch | 84 +++++++++++++++++++++++++++++++++ patches/use_generics.patch | 12 +++++ 2 files changed, 96 insertions(+) create mode 100644 patches/extern_asm_hidden.patch create mode 100644 patches/use_generics.patch diff --git a/patches/extern_asm_hidden.patch b/patches/extern_asm_hidden.patch new file mode 100644 index 0000000..38149e1 --- /dev/null +++ b/patches/extern_asm_hidden.patch @@ -0,0 +1,84 @@ +diff --git a/common_loongarch64.h b/common_loongarch64.h +index 6e96984f6..f0c925132 100644 +--- a/common_loongarch64.h ++++ b/common_loongarch64.h +@@ -270,6 +270,7 @@ static inline int get_cpu_model(char *model_name) { + .text ;\ + .align 5 ;\ + .globl REALNAME ;\ ++ .hidden REALNAME ;\ + .type REALNAME, @function ;\ + REALNAME: ;\ + +diff --git a/common_mips64.h b/common_mips64.h +index c7eb212df..2f4640323 100644 +--- a/common_mips64.h ++++ b/common_mips64.h +@@ -210,6 +210,7 @@ static inline int blas_quickdivide(blasint x, blasint y){ + .set ASSEMBLER_ARCH ;\ + .align 5 ;\ + .globl REALNAME ;\ ++ .hidden REALNAME ;\ + .ent REALNAME ;\ + .type REALNAME, @function ;\ + REALNAME: ;\ +diff --git a/common_power.h b/common_power.h +index ded76ad51..1bf964528 100644 +--- a/common_power.h ++++ b/common_power.h +@@ -535,6 +535,7 @@ static inline int blas_quickdivide(blasint x, blasint y){ + .section .text;\ + .align 6;\ + .globl REALNAME;\ ++ .hidden REALNAME ;\ + .type REALNAME, @function;\ + REALNAME: + #define EPILOGUE .size REALNAME, .-REALNAME +@@ -544,6 +545,7 @@ REALNAME: + .section .text;\ + .align 6;\ + .globl REALNAME;\ ++ .hidden REALNAME ;\ + .type REALNAME, @function;\ + REALNAME: + #define EPILOGUE .size REALNAME, .-REALNAME +@@ -552,6 +554,7 @@ REALNAME: + .section .text;\ + .align 5;\ + .globl REALNAME;\ ++ .hidden REALNAME ;\ + .section ".opd","aw";\ + .align 3;\ + REALNAME:;\ +@@ -560,6 +563,7 @@ REALNAME:;\ + .size REALNAME, 24;\ + .type .REALNAME, @function;\ + .globl .REALNAME;\ ++ .hidden .REALNAME ;\ + .REALNAME: + #define EPILOGUE \ + .long 0 ; \ +diff --git a/common_x86.h b/common_x86.h +index 65fb9a460..12c854df4 100644 +--- a/common_x86.h ++++ b/common_x86.h +@@ -339,6 +339,7 @@ REALNAME: + .text; \ + .align 16; \ + .globl REALNAME ;\ ++ .hidden REALNAME ;\ + .type REALNAME, @function; \ + REALNAME: \ + _CET_ENDBR +diff --git a/common_x86_64.h b/common_x86_64.h +index 143e188a7..fff5eefbc 100644 +--- a/common_x86_64.h ++++ b/common_x86_64.h +@@ -454,6 +454,7 @@ REALNAME: + .text; \ + .align 512; \ + .globl REALNAME ;\ ++ .hidden REALNAME ;\ + .type REALNAME, @function; \ + REALNAME: \ + _CET_ENDBR diff --git a/patches/use_generics.patch b/patches/use_generics.patch new file mode 100644 index 0000000..747ebef --- /dev/null +++ b/patches/use_generics.patch @@ -0,0 +1,12 @@ +diff --git a/kernel/Makefile.LA b/kernel/Makefile.LA +index 88342718c..3b1939d26 100644 +--- a/kernel/Makefile.LA ++++ b/kernel/Makefile.LA +@@ -49,3 +49,7 @@ $(KDIR)zlaswp_ncopy$(TSUFFIX).$(SUFFIX) $(KDIR)zlaswp_ncopy$(TSUFFIX).$(PSUFFIX) + $(KDIR)xlaswp_ncopy$(TSUFFIX).$(SUFFIX) $(KDIR)xlaswp_ncopy$(TSUFFIX).$(PSUFFIX) : generic/zlaswp_ncopy_$(XGEMM_UNROLL_N).c + $(CC) -c $(CFLAGS) $< -o $@ + ++LSAME_KERNEL = ../generic/lsame.c ++SCABS_KERNEL = ../generic/cabs.c ++DCABS_KERNEL = ../generic/cabs.c ++QCABS_KERNEL = ../generic/cabs.c