diff --git a/openblas-0.3.0-riscv64.patch b/openblas-0.3.0-riscv64.patch deleted file mode 100644 index 126b41a..0000000 --- a/openblas-0.3.0-riscv64.patch +++ /dev/null @@ -1,4593 +0,0 @@ -diff --git a/OpenBLAS-0.3.0/Makefile.riscv64 b/OpenBLAS-0.3.0/Makefile.riscv64 -new file mode 100644 -index 0000000..e69de29 -diff --git a/OpenBLAS-0.3.0/Makefile.system b/OpenBLAS-0.3.0/Makefile.system -index e9450c1..af7a629 100644 ---- a/OpenBLAS-0.3.0/Makefile.system -+++ b/OpenBLAS-0.3.0/Makefile.system -@@ -602,7 +602,9 @@ endif - ifndef BINARY_DEFINED - ifneq ($(OSNAME), AIX) - ifdef BINARY64 -+ifneq ($(ARCH), riscv64) - CCOMMON_OPT += -m64 -+endif - else - CCOMMON_OPT += -m32 - endif -@@ -696,8 +698,10 @@ endif - else - ifdef BINARY64 - ifneq ($(OSNAME), AIX) -+ifneq ($(ARCH), riscv64) - FCOMMON_OPT += -m64 - endif -+endif - ifdef INTERFACE64 - ifneq ($(INTERFACE64), 0) - FCOMMON_OPT += -fdefault-integer-8 -diff --git a/OpenBLAS-0.3.0/c_check b/OpenBLAS-0.3.0/c_check -index a3b3376..c564855 100644 ---- a/OpenBLAS-0.3.0/c_check -+++ b/OpenBLAS-0.3.0/c_check -@@ -76,6 +76,7 @@ $architecture = ia64 if ($data =~ /ARCH_IA64/); - $architecture = arm if ($data =~ /ARCH_ARM/); - $architecture = arm64 if ($data =~ /ARCH_ARM64/); - $architecture = zarch if ($data =~ /ARCH_ZARCH/); -+$architecture = riscv64 if ($data =~ /ARCH_RISCV64/); - - $defined = 0; - -diff --git a/OpenBLAS-0.3.0/common.h b/OpenBLAS-0.3.0/common.h -index 123e3de..3e9b09a 100644 ---- a/OpenBLAS-0.3.0/common.h -+++ b/OpenBLAS-0.3.0/common.h -@@ -408,6 +408,11 @@ please https://github.com/xianyi/OpenBLAS/issues/246 - #include "common_mips.h" - #endif - -+ -+#ifdef ARCH_RISCV64 -+#include "common_riscv64.h" -+#endif -+ - #ifdef ARCH_MIPS64 - #include "common_mips64.h" - #endif -diff --git a/OpenBLAS-0.3.0/common_riscv64.h b/OpenBLAS-0.3.0/common_riscv64.h -new file mode 100644 -index 0000000..fe4e0a6 ---- /dev/null -+++ b/OpenBLAS-0.3.0/common_riscv64.h -@@ -0,0 +1,93 @@ -+/***************************************************************************** -+Copyright (c) 2011-2014, The OpenBLAS Project -+All rights reserved. -+ -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+ -+ 1. Redistributions of source code must retain the above copyright -+ notice, this list of conditions and the following disclaimer. -+ -+ 2. Redistributions in binary form must reproduce the above copyright -+ notice, this list of conditions and the following disclaimer in -+ the documentation and/or other materials provided with the -+ distribution. -+ 3. Neither the name of the OpenBLAS project nor the names of -+ its contributors may be used to endorse or promote products -+ derived from this software without specific prior written -+ permission. -+ -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+**********************************************************************************/ -+ -+/*********************************************************************/ -+/* Copyright 2009, 2010 The University of Texas at Austin. */ -+/* All rights reserved. */ -+/* */ -+/* Redistribution and use in source and binary forms, with or */ -+/* without modification, are permitted provided that the following */ -+/* conditions are met: */ -+/* */ -+/* 1. Redistributions of source code must retain the above */ -+/* copyright notice, this list of conditions and the following */ -+/* disclaimer. */ -+/* */ -+/* 2. Redistributions in binary form must reproduce the above */ -+/* copyright notice, this list of conditions and the following */ -+/* disclaimer in the documentation and/or other materials */ -+/* provided with the distribution. */ -+/* */ -+/* THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF TEXAS AT */ -+/* AUSTIN ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -+/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -+/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -+/* DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT */ -+/* AUSTIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, */ -+/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */ -+/* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE */ -+/* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR */ -+/* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */ -+/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */ -+/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */ -+/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */ -+/* POSSIBILITY OF SUCH DAMAGE. */ -+/* */ -+/* The views and conclusions contained in the software and */ -+/* documentation are those of the authors and should not be */ -+/* interpreted as representing official policies, either expressed */ -+/* or implied, of The University of Texas at Austin. */ -+/*********************************************************************/ -+ -+#ifndef COMMON_RISCV64 -+#define COMMON_RISCV64 -+ -+#define MB __sync_synchronize() -+#define WMB __sync_synchronize() -+ -+#define INLINE inline -+ -+#ifndef ASSEMBLER -+ -+ -+static inline int blas_quickdivide(blasint x, blasint y){ -+ return x / y; -+} -+ -+#endif -+ -+ -+ -+#define BUFFER_SIZE ( 32 << 20) -+#define SEEK_ADDRESS -+ -+#endif -diff --git a/OpenBLAS-0.3.0/cpuid_riscv64.c b/OpenBLAS-0.3.0/cpuid_riscv64.c -new file mode 100644 -index 0000000..129ed11 ---- /dev/null -+++ b/OpenBLAS-0.3.0/cpuid_riscv64.c -@@ -0,0 +1,111 @@ -+/***************************************************************************** -+Copyright (c) 2011-2014, The OpenBLAS Project -+All rights reserved. -+ -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+ -+ 1. Redistributions of source code must retain the above copyright -+ notice, this list of conditions and the following disclaimer. -+ -+ 2. Redistributions in binary form must reproduce the above copyright -+ notice, this list of conditions and the following disclaimer in -+ the documentation and/or other materials provided with the -+ distribution. -+ 3. Neither the name of the OpenBLAS project nor the names of -+ its contributors may be used to endorse or promote products -+ derived from this software without specific prior written -+ permission. -+ -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ -+**********************************************************************************/ -+ -+ -+/*********************************************************************/ -+/* Copyright 2009, 2010 The University of Texas at Austin. */ -+/* All rights reserved. */ -+/* */ -+/* Redistribution and use in source and binary forms, with or */ -+/* without modification, are permitted provided that the following */ -+/* conditions are met: */ -+/* */ -+/* 1. Redistributions of source code must retain the above */ -+/* copyright notice, this list of conditions and the following */ -+/* disclaimer. */ -+/* */ -+/* 2. Redistributions in binary form must reproduce the above */ -+/* copyright notice, this list of conditions and the following */ -+/* disclaimer in the documentation and/or other materials */ -+/* provided with the distribution. */ -+/* */ -+/* THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF TEXAS AT */ -+/* AUSTIN ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -+/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -+/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -+/* DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT */ -+/* AUSTIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, */ -+/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */ -+/* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE */ -+/* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR */ -+/* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */ -+/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */ -+/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */ -+/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */ -+/* POSSIBILITY OF SUCH DAMAGE. */ -+/* */ -+/* The views and conclusions contained in the software and */ -+/* documentation are those of the authors and should not be */ -+/* interpreted as representing official policies, either expressed */ -+/* or implied, of The University of Texas at Austin. */ -+/*********************************************************************/ -+ -+#define CPU_UNKNOWN 0 -+ -+static char *cpuname[] = { -+ "UNKOWN", -+}; -+ -+int detect(void){ -+ return CPU_UNKNOWN; -+} -+ -+char *get_corename(void){ -+ return cpuname[detect()]; -+} -+ -+void get_architecture(void){ -+ printf("RISCV64"); -+} -+ -+void get_subarchitecture(void){ -+} -+ -+void get_subdirname(void){ -+ printf("riscv64"); -+} -+ -+void get_cpuconfig(void){ -+ printf("#define UNKNOWN\n"); -+ printf("#define L1_DATA_SIZE 65536\n"); -+ printf("#define L1_DATA_LINESIZE 32\n"); -+ printf("#define L2_SIZE 512488\n"); -+ printf("#define L2_LINESIZE 32\n"); -+ printf("#define DTB_DEFAULT_ENTRIES 64\n"); -+ printf("#define DTB_SIZE 4096\n"); -+ printf("#define L2_ASSOCIATIVE 4\n"); -+} -+ -+void get_libname(void){ -+ printf("riscv64\n"); -+} -diff --git a/OpenBLAS-0.3.0/ctest.c b/OpenBLAS-0.3.0/ctest.c -index 00be423..cab9398 100644 ---- a/OpenBLAS-0.3.0/ctest.c -+++ b/OpenBLAS-0.3.0/ctest.c -@@ -149,3 +149,7 @@ ARCH_ARM - ARCH_ARM64 - #endif - -+#if defined(__riscv) -+ARCH_RISCV64 -+#endif -+ -diff --git a/OpenBLAS-0.3.0/getarch.c b/OpenBLAS-0.3.0/getarch.c -index 992fc2b..7f7fd97 100644 ---- a/OpenBLAS-0.3.0/getarch.c -+++ b/OpenBLAS-0.3.0/getarch.c -@@ -604,6 +604,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - #endif - - -+ - #ifdef FORCE_PPCG4 - #define FORCE - #define ARCHITECTURE "POWER" -@@ -859,6 +860,20 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - #else - #endif - -+#ifdef FORCE_RISCV64 -+#define FORCE -+#define ARCHITECTURE "RISCV64" -+#define SUBARCHITECTURE "RISCV64" -+#define SUBDIRNAME "riscv64" -+#define ARCHCONFIG "-DRISCV64 " \ -+ "-DL1_DATA_SIZE=32768 -DL1_DATA_LINESIZE=32 " \ -+ "-DL2_SIZE=1048576 -DL2_LINESIZE=32 " \ -+ "-DDTB_DEFAULT_ENTRIES=128 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=4 " -+#define LIBNAME "riscv64" -+#define CORENAME "RISCV64" -+#else -+#endif -+ - #ifdef FORCE_CORTEXA15 - #define FORCE - #define ARCHITECTURE "ARM" -@@ -1051,6 +1066,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - #define OPENBLAS_SUPPORTED - #endif - -+#ifdef __riscv -+#include "cpuid_riscv64.c" -+#endif -+ - #ifdef __arm__ - #include "cpuid_arm.c" - #define OPENBLAS_SUPPORTED -diff --git a/OpenBLAS-0.3.0/kernel/Makefile.L3 b/OpenBLAS-0.3.0/kernel/Makefile.L3 -index 0664263..18896cf 100644 ---- a/OpenBLAS-0.3.0/kernel/Makefile.L3 -+++ b/OpenBLAS-0.3.0/kernel/Makefile.L3 -@@ -20,6 +20,10 @@ ifeq ($(ARCH), arm64) - USE_TRMM = 1 - endif - -+ifeq ($(ARCH), riscv64) -+USE_TRMM = 1 -+endif -+ - ifeq ($(TARGET), LOONGSON3B) - USE_TRMM = 1 - endif -diff --git a/OpenBLAS-0.3.0/kernel/riscv64/KERNEL b/OpenBLAS-0.3.0/kernel/riscv64/KERNEL -new file mode 100644 -index 0000000..04d82b4 ---- /dev/null -+++ b/OpenBLAS-0.3.0/kernel/riscv64/KERNEL -@@ -0,0 +1,159 @@ -+SAMAXKERNEL = ../riscv64/amax.c -+DAMAXKERNEL = ../riscv64/amax.c -+CAMAXKERNEL = ../riscv64/zamax.c -+ZAMAXKERNEL = ../riscv64/zamax.c -+ -+SAMINKERNEL = ../riscv64/amin.c -+DAMINKERNEL = ../riscv64/amin.c -+CAMINKERNEL = ../riscv64/zamin.c -+ZAMINKERNEL = ../riscv64/zamin.c -+ -+SMAXKERNEL = ../riscv64/max.c -+DMAXKERNEL = ../riscv64/max.c -+ -+SMINKERNEL = ../riscv64/min.c -+DMINKERNEL = ../riscv64/min.c -+ -+ISAMAXKERNEL = ../riscv64/iamax.c -+IDAMAXKERNEL = ../riscv64/iamax.c -+ICAMAXKERNEL = ../riscv64/izamax.c -+IZAMAXKERNEL = ../riscv64/izamax.c -+ -+ISAMINKERNEL = ../riscv64/iamin.c -+IDAMINKERNEL = ../riscv64/iamin.c -+ICAMINKERNEL = ../riscv64/izamin.c -+IZAMINKERNEL = ../riscv64/izamin.c -+ -+ISMAXKERNEL = ../riscv64/imax.c -+IDMAXKERNEL = ../riscv64/imax.c -+ -+ISMINKERNEL = ../riscv64/imin.c -+IDMINKERNEL = ../riscv64/imin.c -+ -+SASUMKERNEL = ../riscv64/asum.c -+DASUMKERNEL = ../riscv64/asum.c -+CASUMKERNEL = ../riscv64/zasum.c -+ZASUMKERNEL = ../riscv64/zasum.c -+ -+SAXPYKERNEL = ../riscv64/axpy.c -+DAXPYKERNEL = ../riscv64/axpy.c -+CAXPYKERNEL = ../riscv64/zaxpy.c -+ZAXPYKERNEL = ../riscv64/zaxpy.c -+ -+SCOPYKERNEL = ../riscv64/copy.c -+DCOPYKERNEL = ../riscv64/copy.c -+CCOPYKERNEL = ../riscv64/zcopy.c -+ZCOPYKERNEL = ../riscv64/zcopy.c -+ -+SDOTKERNEL = ../riscv64/dot.c -+DDOTKERNEL = ../riscv64/dot.c -+CDOTKERNEL = ../riscv64/zdot.c -+ZDOTKERNEL = ../riscv64/zdot.c -+ -+SNRM2KERNEL = ../riscv64/nrm2.c -+DNRM2KERNEL = ../riscv64/nrm2.c -+CNRM2KERNEL = ../riscv64/znrm2.c -+ZNRM2KERNEL = ../riscv64/znrm2.c -+ -+SROTKERNEL = ../riscv64/rot.c -+DROTKERNEL = ../riscv64/rot.c -+CROTKERNEL = ../riscv64/zrot.c -+ZROTKERNEL = ../riscv64/zrot.c -+ -+SSCALKERNEL = ../riscv64/scal.c -+DSCALKERNEL = ../riscv64/scal.c -+CSCALKERNEL = ../riscv64/zscal.c -+ZSCALKERNEL = ../riscv64/zscal.c -+ -+SSWAPKERNEL = ../riscv64/swap.c -+DSWAPKERNEL = ../riscv64/swap.c -+CSWAPKERNEL = ../riscv64/zswap.c -+ZSWAPKERNEL = ../riscv64/zswap.c -+ -+SGEMVNKERNEL = ../riscv64/gemv_n.c -+DGEMVNKERNEL = ../riscv64/gemv_n.c -+CGEMVNKERNEL = ../riscv64/zgemv_n.c -+ZGEMVNKERNEL = ../riscv64/zgemv_n.c -+ -+SGEMVTKERNEL = ../riscv64/gemv_t.c -+DGEMVTKERNEL = ../riscv64/gemv_t.c -+CGEMVTKERNEL = ../riscv64/zgemv_t.c -+ZGEMVTKERNEL = ../riscv64/zgemv_t.c -+ -+STRMMKERNEL = ../generic/trmmkernel_2x2.c -+DTRMMKERNEL = ../generic/trmmkernel_2x2.c -+CTRMMKERNEL = ../generic/ztrmmkernel_2x2.c -+ZTRMMKERNEL = ../generic/ztrmmkernel_2x2.c -+ -+SGEMMKERNEL = ../generic/gemmkernel_2x2.c -+SGEMMONCOPY = ../generic/gemm_ncopy_2.c -+SGEMMOTCOPY = ../generic/gemm_tcopy_2.c -+SGEMMONCOPYOBJ = sgemm_oncopy.o -+SGEMMOTCOPYOBJ = sgemm_otcopy.o -+ -+DGEMMKERNEL = ../generic/gemmkernel_2x2.c -+DGEMMONCOPY = ../generic/gemm_ncopy_2.c -+DGEMMOTCOPY = ../generic/gemm_tcopy_2.c -+DGEMMONCOPYOBJ = dgemm_oncopy.o -+DGEMMOTCOPYOBJ = dgemm_otcopy.o -+ -+CGEMMKERNEL = ../generic/zgemmkernel_2x2.c -+CGEMMONCOPY = ../generic/zgemm_ncopy_2.c -+CGEMMOTCOPY = ../generic/zgemm_tcopy_2.c -+CGEMMONCOPYOBJ = cgemm_oncopy.o -+CGEMMOTCOPYOBJ = cgemm_otcopy.o -+ -+ZGEMMKERNEL = ../generic/zgemmkernel_2x2.c -+ZGEMMONCOPY = ../generic/zgemm_ncopy_2.c -+ZGEMMOTCOPY = ../generic/zgemm_tcopy_2.c -+ZGEMMONCOPYOBJ = zgemm_oncopy.o -+ZGEMMOTCOPYOBJ = zgemm_otcopy.o -+ -+STRSMKERNEL_LN = ../generic/trsm_kernel_LN.c -+STRSMKERNEL_LT = ../generic/trsm_kernel_LT.c -+STRSMKERNEL_RN = ../generic/trsm_kernel_RN.c -+STRSMKERNEL_RT = ../generic/trsm_kernel_RT.c -+ -+DTRSMKERNEL_LN = ../generic/trsm_kernel_LN.c -+DTRSMKERNEL_LT = ../generic/trsm_kernel_LT.c -+DTRSMKERNEL_RN = ../generic/trsm_kernel_RN.c -+DTRSMKERNEL_RT = ../generic/trsm_kernel_RT.c -+ -+CTRSMKERNEL_LN = ../generic/trsm_kernel_LN.c -+CTRSMKERNEL_LT = ../generic/trsm_kernel_LT.c -+CTRSMKERNEL_RN = ../generic/trsm_kernel_RN.c -+CTRSMKERNEL_RT = ../generic/trsm_kernel_RT.c -+ -+ZTRSMKERNEL_LN = ../generic/trsm_kernel_LN.c -+ZTRSMKERNEL_LT = ../generic/trsm_kernel_LT.c -+ZTRSMKERNEL_RN = ../generic/trsm_kernel_RN.c -+ZTRSMKERNEL_RT = ../generic/trsm_kernel_RT.c -+ -+SSYMV_U_KERNEL = ../generic/symv_k.c -+SSYMV_L_KERNEL = ../generic/symv_k.c -+DSYMV_U_KERNEL = ../generic/symv_k.c -+DSYMV_L_KERNEL = ../generic/symv_k.c -+CSYMV_U_KERNEL = ../generic/zsymv_k.c -+CSYMV_L_KERNEL = ../generic/zsymv_k.c -+ZSYMV_U_KERNEL = ../generic/zsymv_k.c -+ZSYMV_L_KERNEL = ../generic/zsymv_k.c -+ -+ -+LSAME_KERNEL = ../generic/lsame.c -+ -+SCABS_KERNEL = ../generic/cabs.c -+DCABS_KERNEL = ../generic/cabs.c -+QCABS_KERNEL = ../generic/cabs.c -+ -+ifndef SGEMM_BETA -+SGEMM_BETA = ../generic/gemm_beta.c -+endif -+ifndef DGEMM_BETA -+DGEMM_BETA = ../generic/gemm_beta.c -+endif -+ifndef CGEMM_BETA -+CGEMM_BETA = ../generic/zgemm_beta.c -+endif -+ifndef ZGEMM_BETA -+ZGEMM_BETA = ../generic/zgemm_beta.c -+endif -diff --git a/OpenBLAS-0.3.0/kernel/riscv64/amax.c b/OpenBLAS-0.3.0/kernel/riscv64/amax.c -new file mode 100644 -index 0000000..792e68b ---- /dev/null -+++ b/OpenBLAS-0.3.0/kernel/riscv64/amax.c -@@ -0,0 +1,75 @@ -+/*************************************************************************** -+Copyright (c) 2013, The OpenBLAS Project -+All rights reserved. -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+1. Redistributions of source code must retain the above copyright -+notice, this list of conditions and the following disclaimer. -+2. Redistributions in binary form must reproduce the above copyright -+notice, this list of conditions and the following disclaimer in -+the documentation and/or other materials provided with the -+distribution. -+3. Neither the name of the OpenBLAS project nor the names of -+its contributors may be used to endorse or promote products -+derived from this software without specific prior written permission. -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+*****************************************************************************/ -+ -+/************************************************************************************** -+* 2013/09/14 Saar -+* BLASTEST float : OK -+* BLASTEST double : OK -+* CTEST : NoTest -+* TEST : NoTest -+* -+**************************************************************************************/ -+ -+#include "common.h" -+#include -+ -+#if defined(DOUBLE) -+ -+#define ABS fabs -+ -+#else -+ -+#define ABS fabsf -+ -+#endif -+ -+ -+FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) -+{ -+ BLASLONG i=0; -+ BLASLONG ix=0; -+ FLOAT maxf=0.0; -+ -+ if (n <= 0 || inc_x <= 0) return(maxf); -+ -+ maxf=ABS(x[0]); -+ ix += inc_x; -+ i++; -+ -+ while(i < n) -+ { -+ if( ABS(x[ix]) > maxf ) -+ { -+ maxf = ABS(x[ix]); -+ } -+ ix += inc_x; -+ i++; -+ } -+ return(maxf); -+} -+ -+ -diff --git a/OpenBLAS-0.3.0/kernel/riscv64/amin.c b/OpenBLAS-0.3.0/kernel/riscv64/amin.c -new file mode 100644 -index 0000000..78495a8 ---- /dev/null -+++ b/OpenBLAS-0.3.0/kernel/riscv64/amin.c -@@ -0,0 +1,75 @@ -+/*************************************************************************** -+Copyright (c) 2013, The OpenBLAS Project -+All rights reserved. -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+1. Redistributions of source code must retain the above copyright -+notice, this list of conditions and the following disclaimer. -+2. Redistributions in binary form must reproduce the above copyright -+notice, this list of conditions and the following disclaimer in -+the documentation and/or other materials provided with the -+distribution. -+3. Neither the name of the OpenBLAS project nor the names of -+its contributors may be used to endorse or promote products -+derived from this software without specific prior written permission. -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+*****************************************************************************/ -+ -+/************************************************************************************** -+* 2013/09/14 Saar -+* BLASTEST float : OK -+* BLASTEST double : OK -+* CTEST : NoTest -+* TEST : NoTest -+* -+**************************************************************************************/ -+ -+#include "common.h" -+#include -+ -+#if defined(DOUBLE) -+ -+#define ABS fabs -+ -+#else -+ -+#define ABS fabsf -+ -+#endif -+ -+ -+FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) -+{ -+ BLASLONG i=0; -+ BLASLONG ix=0; -+ FLOAT minf=0.0; -+ -+ if (n <= 0 || inc_x <= 0) return(minf); -+ -+ minf=ABS(x[0]); -+ ix += inc_x; -+ i++; -+ -+ while(i < n) -+ { -+ if( ABS(x[ix]) < minf ) -+ { -+ minf = ABS(x[ix]); -+ } -+ ix += inc_x; -+ i++; -+ } -+ return(minf); -+} -+ -+ -diff --git a/OpenBLAS-0.3.0/kernel/riscv64/asum.c b/OpenBLAS-0.3.0/kernel/riscv64/asum.c -new file mode 100644 -index 0000000..b284ae3 ---- /dev/null -+++ b/OpenBLAS-0.3.0/kernel/riscv64/asum.c -@@ -0,0 +1,67 @@ -+/*************************************************************************** -+Copyright (c) 2013, The OpenBLAS Project -+All rights reserved. -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+1. Redistributions of source code must retain the above copyright -+notice, this list of conditions and the following disclaimer. -+2. Redistributions in binary form must reproduce the above copyright -+notice, this list of conditions and the following disclaimer in -+the documentation and/or other materials provided with the -+distribution. -+3. Neither the name of the OpenBLAS project nor the names of -+its contributors may be used to endorse or promote products -+derived from this software without specific prior written permission. -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+*****************************************************************************/ -+ -+/************************************************************************************** -+* 2013/09/14 Saar -+* BLASTEST float : OK -+* BLASTEST double : OK -+* CTEST : OK -+* TEST : OK -+* -+**************************************************************************************/ -+ -+ -+#include "common.h" -+#include -+ -+#if defined(DOUBLE) -+ -+#define ABS fabs -+ -+#else -+ -+#define ABS fabsf -+ -+#endif -+ -+ -+FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) -+{ -+ BLASLONG i=0; -+ FLOAT sumf = 0.0; -+ if (n <= 0 || inc_x <= 0) return(sumf); -+ -+ n *= inc_x; -+ while(i < n) -+ { -+ sumf += ABS(x[i]); -+ i += inc_x; -+ } -+ return(sumf); -+} -+ -+ -diff --git a/OpenBLAS-0.3.0/kernel/riscv64/axpby.c b/OpenBLAS-0.3.0/kernel/riscv64/axpby.c -new file mode 100644 -index 0000000..278747f ---- /dev/null -+++ b/OpenBLAS-0.3.0/kernel/riscv64/axpby.c -@@ -0,0 +1,96 @@ -+/*************************************************************************** -+Copyright (c) 2013, The OpenBLAS Project -+All rights reserved. -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+1. Redistributions of source code must retain the above copyright -+notice, this list of conditions and the following disclaimer. -+2. Redistributions in binary form must reproduce the above copyright -+notice, this list of conditions and the following disclaimer in -+the documentation and/or other materials provided with the -+distribution. -+3. Neither the name of the OpenBLAS project nor the names of -+its contributors may be used to endorse or promote products -+derived from this software without specific prior written permission. -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+*****************************************************************************/ -+ -+ -+#include "common.h" -+ -+int CNAME(BLASLONG n, FLOAT alpha, FLOAT *x, BLASLONG inc_x, FLOAT beta, FLOAT *y, BLASLONG inc_y) -+{ -+ BLASLONG i=0; -+ BLASLONG ix,iy; -+ -+ if ( n < 0 ) return(0); -+ -+ ix = 0; -+ iy = 0; -+ -+ if ( beta == 0.0 ) -+ { -+ -+ if ( alpha == 0.0 ) -+ { -+ while(i < n) -+ { -+ y[iy] = 0.0 ; -+ iy += inc_y ; -+ i++ ; -+ } -+ } -+ else -+ { -+ while(i < n) -+ { -+ y[iy] = alpha * x[ix] ; -+ ix += inc_x ; -+ iy += inc_y ; -+ i++ ; -+ } -+ -+ -+ } -+ -+ } -+ else -+ { -+ -+ if ( alpha == 0.0 ) -+ { -+ while(i < n) -+ { -+ y[iy] = beta * y[iy] ; -+ iy += inc_y ; -+ i++ ; -+ } -+ } -+ else -+ { -+ while(i < n) -+ { -+ y[iy] = alpha * x[ix] + beta * y[iy] ; -+ ix += inc_x ; -+ iy += inc_y ; -+ i++ ; -+ } -+ } -+ -+ } -+ -+ return(0); -+ -+} -+ -+ -diff --git a/OpenBLAS-0.3.0/kernel/riscv64/axpy.c b/OpenBLAS-0.3.0/kernel/riscv64/axpy.c -new file mode 100644 -index 0000000..fb1094d ---- /dev/null -+++ b/OpenBLAS-0.3.0/kernel/riscv64/axpy.c -@@ -0,0 +1,64 @@ -+/*************************************************************************** -+Copyright (c) 2013, The OpenBLAS Project -+All rights reserved. -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+1. Redistributions of source code must retain the above copyright -+notice, this list of conditions and the following disclaimer. -+2. Redistributions in binary form must reproduce the above copyright -+notice, this list of conditions and the following disclaimer in -+the documentation and/or other materials provided with the -+distribution. -+3. Neither the name of the OpenBLAS project nor the names of -+its contributors may be used to endorse or promote products -+derived from this software without specific prior written permission. -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+*****************************************************************************/ -+ -+/************************************************************************************** -+* 2013/09/14 Saar -+* BLASTEST float : OK -+* BLASTEST double : OK -+* CTEST : OK -+* TEST : OK -+* -+**************************************************************************************/ -+ -+ -+#include "common.h" -+ -+int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y, FLOAT *dummy, BLASLONG dummy2) -+{ -+ BLASLONG i=0; -+ BLASLONG ix,iy; -+ -+ if ( n < 0 ) return(0); -+ if ( da == 0.0 ) return(0); -+ -+ ix = 0; -+ iy = 0; -+ -+ while(i < n) -+ { -+ -+ y[iy] += da * x[ix] ; -+ ix += inc_x ; -+ iy += inc_y ; -+ i++ ; -+ -+ } -+ return(0); -+ -+} -+ -+ -diff --git a/OpenBLAS-0.3.0/kernel/riscv64/copy.c b/OpenBLAS-0.3.0/kernel/riscv64/copy.c -new file mode 100644 -index 0000000..7b4f04f ---- /dev/null -+++ b/OpenBLAS-0.3.0/kernel/riscv64/copy.c -@@ -0,0 +1,59 @@ -+/*************************************************************************** -+Copyright (c) 2013, The OpenBLAS Project -+All rights reserved. -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+1. Redistributions of source code must retain the above copyright -+notice, this list of conditions and the following disclaimer. -+2. Redistributions in binary form must reproduce the above copyright -+notice, this list of conditions and the following disclaimer in -+the documentation and/or other materials provided with the -+distribution. -+3. Neither the name of the OpenBLAS project nor the names of -+its contributors may be used to endorse or promote products -+derived from this software without specific prior written permission. -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+*****************************************************************************/ -+ -+/************************************************************************************** -+* 2013/09/14 Saar -+* BLASTEST float : OK -+* BLASTEST double : OK -+* CTEST : OK -+* TEST : OK -+* -+**************************************************************************************/ -+ -+#include "common.h" -+ -+int CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y) -+{ -+ BLASLONG i=0; -+ BLASLONG ix=0,iy=0; -+ -+ if ( n < 0 ) return(0); -+ -+ while(i < n) -+ { -+ -+ y[iy] = x[ix] ; -+ ix += inc_x ; -+ iy += inc_y ; -+ i++ ; -+ -+ } -+ return(0); -+ -+} -+ -+ -diff --git a/OpenBLAS-0.3.0/kernel/riscv64/dot.c b/OpenBLAS-0.3.0/kernel/riscv64/dot.c -new file mode 100644 -index 0000000..46a84ad ---- /dev/null -+++ b/OpenBLAS-0.3.0/kernel/riscv64/dot.c -@@ -0,0 +1,64 @@ -+/*************************************************************************** -+Copyright (c) 2013, The OpenBLAS Project -+All rights reserved. -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+1. Redistributions of source code must retain the above copyright -+notice, this list of conditions and the following disclaimer. -+2. Redistributions in binary form must reproduce the above copyright -+notice, this list of conditions and the following disclaimer in -+the documentation and/or other materials provided with the -+distribution. -+3. Neither the name of the OpenBLAS project nor the names of -+its contributors may be used to endorse or promote products -+derived from this software without specific prior written permission. -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+*****************************************************************************/ -+ -+/************************************************************************************** -+* 2013/09/14 Saar -+* BLASTEST float : OK -+* BLASTEST double : OK -+* CTEST : OK -+* TEST : OK -+* -+**************************************************************************************/ -+ -+#include "common.h" -+ -+#if defined(DSDOT) -+double CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y) -+#else -+FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y) -+#endif -+{ -+ BLASLONG i=0; -+ BLASLONG ix=0,iy=0; -+ double dot = 0.0 ; -+ -+ if ( n < 0 ) return(dot); -+ -+ while(i < n) -+ { -+ -+ dot += y[iy] * x[ix] ; -+ ix += inc_x ; -+ iy += inc_y ; -+ i++ ; -+ -+ } -+ return(dot); -+ -+} -+ -+ -diff --git a/OpenBLAS-0.3.0/kernel/riscv64/gemv_n.c b/OpenBLAS-0.3.0/kernel/riscv64/gemv_n.c -new file mode 100644 -index 0000000..ef61b24 ---- /dev/null -+++ b/OpenBLAS-0.3.0/kernel/riscv64/gemv_n.c -@@ -0,0 +1,67 @@ -+/*************************************************************************** -+Copyright (c) 2013, The OpenBLAS Project -+All rights reserved. -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+1. Redistributions of source code must retain the above copyright -+notice, this list of conditions and the following disclaimer. -+2. Redistributions in binary form must reproduce the above copyright -+notice, this list of conditions and the following disclaimer in -+the documentation and/or other materials provided with the -+distribution. -+3. Neither the name of the OpenBLAS project nor the names of -+its contributors may be used to endorse or promote products -+derived from this software without specific prior written permission. -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+*****************************************************************************/ -+ -+ -+/************************************************************************************** -+ * * 2013/09/14 Saar -+ * * BLASTEST float : OK -+ * * BLASTEST double : OK -+ * CTEST : OK -+ * TEST : OK -+ * * -+ * **************************************************************************************/ -+ -+ -+#include "common.h" -+ -+int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha, FLOAT *a, BLASLONG lda, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y, FLOAT *buffer) -+{ -+ BLASLONG i; -+ BLASLONG ix,iy; -+ BLASLONG j; -+ FLOAT *a_ptr; -+ FLOAT temp; -+ -+ ix = 0; -+ a_ptr = a; -+ -+ for (j=0; j -+ -+#if defined(DOUBLE) -+ -+#define ABS fabs -+ -+#else -+ -+#define ABS fabsf -+ -+#endif -+ -+ -+BLASLONG CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) -+{ -+ BLASLONG i=0; -+ BLASLONG ix=0; -+ FLOAT maxf=0.0; -+ BLASLONG max=0; -+ -+ if (n <= 0 || inc_x <= 0) return(max); -+ -+ maxf=ABS(x[0]); -+ ix += inc_x; -+ i++; -+ -+ while(i < n) -+ { -+ if( ABS(x[ix]) > maxf ) -+ { -+ max = i; -+ maxf = ABS(x[ix]); -+ } -+ ix += inc_x; -+ i++; -+ } -+ return(max+1); -+} -+ -+ -diff --git a/OpenBLAS-0.3.0/kernel/riscv64/iamin.c b/OpenBLAS-0.3.0/kernel/riscv64/iamin.c -new file mode 100644 -index 0000000..155292b ---- /dev/null -+++ b/OpenBLAS-0.3.0/kernel/riscv64/iamin.c -@@ -0,0 +1,77 @@ -+/*************************************************************************** -+Copyright (c) 2013, The OpenBLAS Project -+All rights reserved. -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+1. Redistributions of source code must retain the above copyright -+notice, this list of conditions and the following disclaimer. -+2. Redistributions in binary form must reproduce the above copyright -+notice, this list of conditions and the following disclaimer in -+the documentation and/or other materials provided with the -+distribution. -+3. Neither the name of the OpenBLAS project nor the names of -+its contributors may be used to endorse or promote products -+derived from this software without specific prior written permission. -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+*****************************************************************************/ -+ -+/************************************************************************************** -+* 2013/09/14 Saar -+* BLASTEST float : NoTest -+* BLASTEST double : NoTest -+* CTEST : NoTest -+* TEST : NoTest -+* -+**************************************************************************************/ -+ -+#include "common.h" -+#include -+ -+#if defined(DOUBLE) -+ -+#define ABS fabs -+ -+#else -+ -+#define ABS fabsf -+ -+#endif -+ -+ -+BLASLONG CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) -+{ -+ BLASLONG i=0; -+ BLASLONG ix=0; -+ FLOAT minf=0.0; -+ BLASLONG min=0; -+ -+ if (n <= 0 || inc_x <= 0) return(min); -+ -+ minf=ABS(x[0]); -+ ix += inc_x; -+ i++; -+ -+ while(i < n) -+ { -+ if( ABS(x[ix]) < ABS(minf) ) -+ { -+ min = i; -+ minf = ABS(x[ix]); -+ } -+ ix += inc_x; -+ i++; -+ } -+ return(min+1); -+} -+ -+ -diff --git a/OpenBLAS-0.3.0/kernel/riscv64/imax.c b/OpenBLAS-0.3.0/kernel/riscv64/imax.c -new file mode 100644 -index 0000000..5072dd1 ---- /dev/null -+++ b/OpenBLAS-0.3.0/kernel/riscv64/imax.c -@@ -0,0 +1,69 @@ -+/*************************************************************************** -+Copyright (c) 2013, The OpenBLAS Project -+All rights reserved. -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+1. Redistributions of source code must retain the above copyright -+notice, this list of conditions and the following disclaimer. -+2. Redistributions in binary form must reproduce the above copyright -+notice, this list of conditions and the following disclaimer in -+the documentation and/or other materials provided with the -+distribution. -+3. Neither the name of the OpenBLAS project nor the names of -+its contributors may be used to endorse or promote products -+derived from this software without specific prior written permission. -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+*****************************************************************************/ -+ -+ -+/************************************************************************************** -+* 2013/09/14 Saar -+* BLASTEST float : NoTest -+* BLASTEST double : NoTest -+* CTEST : NoTest -+* TEST : NoTest -+* -+**************************************************************************************/ -+ -+#include "common.h" -+#include -+ -+ -+ -+BLASLONG CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) -+{ -+ BLASLONG i=0; -+ BLASLONG ix=0; -+ FLOAT maxf=0.0; -+ BLASLONG max=0; -+ -+ if (n <= 0 || inc_x <= 0) return(max); -+ -+ maxf=x[0]; -+ ix += inc_x; -+ i++; -+ -+ while(i < n) -+ { -+ if( x[ix] > maxf ) -+ { -+ max = i; -+ maxf = x[ix]; -+ } -+ ix += inc_x; -+ i++; -+ } -+ return(max+1); -+} -+ -+ -diff --git a/OpenBLAS-0.3.0/kernel/riscv64/imin.c b/OpenBLAS-0.3.0/kernel/riscv64/imin.c -new file mode 100644 -index 0000000..598cba3 ---- /dev/null -+++ b/OpenBLAS-0.3.0/kernel/riscv64/imin.c -@@ -0,0 +1,67 @@ -+/*************************************************************************** -+Copyright (c) 2013, The OpenBLAS Project -+All rights reserved. -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+1. Redistributions of source code must retain the above copyright -+notice, this list of conditions and the following disclaimer. -+2. Redistributions in binary form must reproduce the above copyright -+notice, this list of conditions and the following disclaimer in -+the documentation and/or other materials provided with the -+distribution. -+3. Neither the name of the OpenBLAS project nor the names of -+its contributors may be used to endorse or promote products -+derived from this software without specific prior written permission. -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+*****************************************************************************/ -+ -+ -+/************************************************************************************** -+* 2013/08/19 Saar -+* BLASTEST float -+* BLASTEST double -+* -+**************************************************************************************/ -+ -+#include "common.h" -+#include -+ -+ -+ -+BLASLONG CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) -+{ -+ BLASLONG i=0; -+ BLASLONG ix=0; -+ FLOAT minf=0.0; -+ BLASLONG min=0; -+ -+ if (n <= 0 || inc_x <= 0) return(min); -+ -+ minf=x[0]; -+ ix += inc_x; -+ i++; -+ -+ while(i < n) -+ { -+ if( x[ix] > minf ) -+ { -+ min = i; -+ minf = x[ix]; -+ } -+ ix += inc_x; -+ i++; -+ } -+ return(min+1); -+} -+ -+ -diff --git a/OpenBLAS-0.3.0/kernel/riscv64/izamax.c b/OpenBLAS-0.3.0/kernel/riscv64/izamax.c -new file mode 100644 -index 0000000..8fe33e9 ---- /dev/null -+++ b/OpenBLAS-0.3.0/kernel/riscv64/izamax.c -@@ -0,0 +1,81 @@ -+/*************************************************************************** -+Copyright (c) 2013, The OpenBLAS Project -+All rights reserved. -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+1. Redistributions of source code must retain the above copyright -+notice, this list of conditions and the following disclaimer. -+2. Redistributions in binary form must reproduce the above copyright -+notice, this list of conditions and the following disclaimer in -+the documentation and/or other materials provided with the -+distribution. -+3. Neither the name of the OpenBLAS project nor the names of -+its contributors may be used to endorse or promote products -+derived from this software without specific prior written permission. -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+*****************************************************************************/ -+ -+/************************************************************************************** -+* 2013/09/14 Saar -+* BLASTEST float : NoTest -+* BLASTEST double : NoTest -+* CTEST : OK -+* TEST : OK -+* -+**************************************************************************************/ -+ -+#include "common.h" -+#include -+ -+#if defined(DOUBLE) -+ -+#define ABS fabs -+ -+#else -+ -+#define ABS fabsf -+ -+#endif -+ -+#define CABS1(x,i) ABS(x[i])+ABS(x[i+1]) -+ -+BLASLONG CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) -+{ -+ BLASLONG i=0; -+ BLASLONG ix=0; -+ FLOAT maxf; -+ BLASLONG max=0; -+ BLASLONG inc_x2; -+ -+ if (n <= 0 || inc_x <= 0) return(max); -+ -+ inc_x2 = 2 * inc_x; -+ -+ maxf = CABS1(x,0); -+ ix += inc_x2; -+ i++; -+ -+ while(i < n) -+ { -+ if( CABS1(x,ix) > maxf ) -+ { -+ max = i; -+ maxf = CABS1(x,ix); -+ } -+ ix += inc_x2; -+ i++; -+ } -+ return(max+1); -+} -+ -+ -diff --git a/OpenBLAS-0.3.0/kernel/riscv64/izamin.c b/OpenBLAS-0.3.0/kernel/riscv64/izamin.c -new file mode 100644 -index 0000000..fb5a0d4 ---- /dev/null -+++ b/OpenBLAS-0.3.0/kernel/riscv64/izamin.c -@@ -0,0 +1,81 @@ -+/*************************************************************************** -+Copyright (c) 2013, The OpenBLAS Project -+All rights reserved. -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+1. Redistributions of source code must retain the above copyright -+notice, this list of conditions and the following disclaimer. -+2. Redistributions in binary form must reproduce the above copyright -+notice, this list of conditions and the following disclaimer in -+the documentation and/or other materials provided with the -+distribution. -+3. Neither the name of the OpenBLAS project nor the names of -+its contributors may be used to endorse or promote products -+derived from this software without specific prior written permission. -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+*****************************************************************************/ -+ -+/************************************************************************************** -+* 2013/09/14 Saar -+* BLASTEST float : NoTest -+* BLASTEST double : NoTest -+* CTEST : NoTest -+* TEST : NoTest -+* -+**************************************************************************************/ -+ -+#include "common.h" -+#include -+ -+#if defined(DOUBLE) -+ -+#define ABS fabs -+ -+#else -+ -+#define ABS fabsf -+ -+#endif -+ -+#define CABS1(x,i) ABS(x[i])+ABS(x[i+1]) -+ -+BLASLONG CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) -+{ -+ BLASLONG i=0; -+ BLASLONG ix=0; -+ FLOAT minf; -+ BLASLONG min=0; -+ BLASLONG inc_x2; -+ -+ if (n <= 0 || inc_x <= 0) return(min); -+ -+ inc_x2 = 2 * inc_x; -+ -+ minf = CABS1(x,0); -+ ix += inc_x2; -+ i++; -+ -+ while(i < n) -+ { -+ if( CABS1(x,ix) < minf ) -+ { -+ min = i; -+ minf = CABS1(x,ix); -+ } -+ ix += inc_x2; -+ i++; -+ } -+ return(min+1); -+} -+ -+ -diff --git a/OpenBLAS-0.3.0/kernel/riscv64/max.c b/OpenBLAS-0.3.0/kernel/riscv64/max.c -new file mode 100644 -index 0000000..2ad956b ---- /dev/null -+++ b/OpenBLAS-0.3.0/kernel/riscv64/max.c -@@ -0,0 +1,65 @@ -+/*************************************************************************** -+Copyright (c) 2013, The OpenBLAS Project -+All rights reserved. -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+1. Redistributions of source code must retain the above copyright -+notice, this list of conditions and the following disclaimer. -+2. Redistributions in binary form must reproduce the above copyright -+notice, this list of conditions and the following disclaimer in -+the documentation and/or other materials provided with the -+distribution. -+3. Neither the name of the OpenBLAS project nor the names of -+its contributors may be used to endorse or promote products -+derived from this software without specific prior written permission. -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+*****************************************************************************/ -+ -+/************************************************************************************** -+* 2013/09/14 Saar -+* BLASTEST float : NoTest -+* BLASTEST double : NoTest -+* CTEST : NoTest -+* TEST : NoTest -+* -+**************************************************************************************/ -+ -+#include "common.h" -+#include -+ -+ -+FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) -+{ -+ BLASLONG i=0; -+ BLASLONG ix=0; -+ FLOAT maxf=0.0; -+ -+ if (n <= 0 || inc_x <= 0) return(maxf); -+ -+ maxf=x[0]; -+ ix += inc_x; -+ i++; -+ -+ while(i < n) -+ { -+ if( x[ix] > maxf ) -+ { -+ maxf = x[ix]; -+ } -+ ix += inc_x; -+ i++; -+ } -+ return(maxf); -+} -+ -+ -diff --git a/OpenBLAS-0.3.0/kernel/riscv64/min.c b/OpenBLAS-0.3.0/kernel/riscv64/min.c -new file mode 100644 -index 0000000..2812fe3 ---- /dev/null -+++ b/OpenBLAS-0.3.0/kernel/riscv64/min.c -@@ -0,0 +1,65 @@ -+/*************************************************************************** -+Copyright (c) 2013, The OpenBLAS Project -+All rights reserved. -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+1. Redistributions of source code must retain the above copyright -+notice, this list of conditions and the following disclaimer. -+2. Redistributions in binary form must reproduce the above copyright -+notice, this list of conditions and the following disclaimer in -+the documentation and/or other materials provided with the -+distribution. -+3. Neither the name of the OpenBLAS project nor the names of -+its contributors may be used to endorse or promote products -+derived from this software without specific prior written permission. -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+*****************************************************************************/ -+ -+/************************************************************************************** -+* 2013/09/14 Saar -+* BLASTEST float : NoTest -+* BLASTEST double : NoTest -+* CTEST : NoTest -+* TEST : NoTest -+* -+**************************************************************************************/ -+ -+#include "common.h" -+#include -+ -+ -+FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) -+{ -+ BLASLONG i=0; -+ BLASLONG ix=0; -+ FLOAT minf=0.0; -+ -+ if (n <= 0 || inc_x <= 0) return(minf); -+ -+ minf=x[0]; -+ ix += inc_x; -+ i++; -+ -+ while(i < n) -+ { -+ if( x[ix] < minf ) -+ { -+ minf = x[ix]; -+ } -+ ix += inc_x; -+ i++; -+ } -+ return(minf); -+} -+ -+ -diff --git a/OpenBLAS-0.3.0/kernel/riscv64/nrm2.c b/OpenBLAS-0.3.0/kernel/riscv64/nrm2.c -new file mode 100644 -index 0000000..fcff093 ---- /dev/null -+++ b/OpenBLAS-0.3.0/kernel/riscv64/nrm2.c -@@ -0,0 +1,88 @@ -+/*************************************************************************** -+Copyright (c) 2013, The OpenBLAS Project -+All rights reserved. -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+1. Redistributions of source code must retain the above copyright -+notice, this list of conditions and the following disclaimer. -+2. Redistributions in binary form must reproduce the above copyright -+notice, this list of conditions and the following disclaimer in -+the documentation and/or other materials provided with the -+distribution. -+3. Neither the name of the OpenBLAS project nor the names of -+its contributors may be used to endorse or promote products -+derived from this software without specific prior written permission. -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+*****************************************************************************/ -+ -+/************************************************************************************** -+* 2013/09/13 Saar -+* BLASTEST float : OK -+* BLASTEST double : OK -+* CTEST : OK -+* TEST : OK -+* -+**************************************************************************************/ -+ -+#include "common.h" -+#include -+ -+#if defined(DOUBLE) -+ -+#define ABS fabs -+ -+#else -+ -+#define ABS fabsf -+ -+#endif -+ -+ -+ -+FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) -+{ -+ BLASLONG i=0; -+ FLOAT scale = 0.0; -+ FLOAT ssq = 1.0; -+ FLOAT absxi = 0.0; -+ -+ -+ if (n <= 0 || inc_x <= 0) return(0.0); -+ if ( n == 1 ) return( ABS(x[0]) ); -+ -+ n *= inc_x; -+ while(i < n) -+ { -+ -+ if ( x[i] != 0.0 ) -+ { -+ absxi = ABS( x[i] ); -+ if ( scale < absxi ) -+ { -+ ssq = 1 + ssq * ( scale / absxi ) * ( scale / absxi ); -+ scale = absxi ; -+ } -+ else -+ { -+ ssq += ( absxi/scale ) * ( absxi/scale ); -+ } -+ -+ } -+ i += inc_x; -+ } -+ scale = scale * sqrt( ssq ); -+ return(scale); -+ -+} -+ -+ -diff --git a/OpenBLAS-0.3.0/kernel/riscv64/omatcopy_cn.c b/OpenBLAS-0.3.0/kernel/riscv64/omatcopy_cn.c -new file mode 100644 -index 0000000..4d11b91 ---- /dev/null -+++ b/OpenBLAS-0.3.0/kernel/riscv64/omatcopy_cn.c -@@ -0,0 +1,90 @@ -+/*************************************************************************** -+Copyright (c) 2013, The OpenBLAS Project -+All rights reserved. -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+1. Redistributions of source code must retain the above copyright -+notice, this list of conditions and the following disclaimer. -+2. Redistributions in binary form must reproduce the above copyright -+notice, this list of conditions and the following disclaimer in -+the documentation and/or other materials provided with the -+distribution. -+3. Neither the name of the OpenBLAS project nor the names of -+its contributors may be used to endorse or promote products -+derived from this software without specific prior written permission. -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+*****************************************************************************/ -+ -+#include "common.h" -+ -+/***************************************************** -+ * 2014/06/09 Saar -+ * -+ * Order ColMajor -+ * No Trans -+ * -+******************************************************/ -+ -+int CNAME(BLASLONG rows, BLASLONG cols, FLOAT alpha, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG ldb) -+{ -+ BLASLONG i,j; -+ FLOAT *aptr,*bptr; -+ -+ if ( rows <= 0 ) return(0); -+ if ( cols <= 0 ) return(0); -+ -+ aptr = a; -+ bptr = b; -+ -+ if ( alpha == 0.0 ) -+ { -+ for ( i=0; i -+ -+int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT dummy3, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y, FLOAT *dummy, BLASLONG dummy2) -+{ -+ BLASLONG i=0; -+ BLASLONG ix=0,iy=0; -+ FLOAT temp; -+ -+ if ( n < 0 ) return(0); -+ -+ while(i < n) -+ { -+ -+ temp = x[ix] ; -+ x[ix] = y[iy] ; -+ y[iy] = temp ; -+ -+ ix += inc_x ; -+ iy += inc_y ; -+ i++ ; -+ -+ } -+ return(0); -+ -+} -+ -+ -diff --git a/OpenBLAS-0.3.0/kernel/riscv64/symv_L.c b/OpenBLAS-0.3.0/kernel/riscv64/symv_L.c -new file mode 100644 -index 0000000..8f48d03 ---- /dev/null -+++ b/OpenBLAS-0.3.0/kernel/riscv64/symv_L.c -@@ -0,0 +1,70 @@ -+/*************************************************************************** -+Copyright (c) 2013, The OpenBLAS Project -+All rights reserved. -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+1. Redistributions of source code must retain the above copyright -+notice, this list of conditions and the following disclaimer. -+2. Redistributions in binary form must reproduce the above copyright -+notice, this list of conditions and the following disclaimer in -+the documentation and/or other materials provided with the -+distribution. -+3. Neither the name of the OpenBLAS project nor the names of -+its contributors may be used to endorse or promote products -+derived from this software without specific prior written permission. -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+*****************************************************************************/ -+ -+ -+#include "common.h" -+ -+int CNAME(BLASLONG m, BLASLONG offset, FLOAT alpha, FLOAT *a, BLASLONG lda, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y, FLOAT *buffer) -+{ -+ BLASLONG i; -+ BLASLONG ix,iy; -+ BLASLONG jx,jy; -+ BLASLONG j; -+ FLOAT temp1; -+ FLOAT temp2; -+ -+#if 0 -+ if ( m != offset ) -+ printf("Symv_L: m=%d offset=%d\n",m,offset); -+#endif -+ -+ jx = 0; -+ jy = 0; -+ -+ for (j=0; j -+ -+#if defined(DOUBLE) -+ -+#define ABS fabs -+ -+#else -+ -+#define ABS fabsf -+ -+#endif -+ -+#define CABS1(x,i) ABS(x[i])+ABS(x[i+1]) -+ -+FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) -+{ -+ BLASLONG i=0; -+ BLASLONG ix=0; -+ FLOAT maxf; -+ BLASLONG inc_x2; -+ -+ if (n <= 0 || inc_x <= 0) return(0.0); -+ -+ inc_x2 = 2 * inc_x; -+ -+ maxf = CABS1(x,0); -+ ix += inc_x2; -+ i++; -+ -+ while(i < n) -+ { -+ if( CABS1(x,ix) > maxf ) -+ { -+ maxf = CABS1(x,ix); -+ } -+ ix += inc_x2; -+ i++; -+ } -+ return(maxf); -+} -+ -+ -diff --git a/OpenBLAS-0.3.0/kernel/riscv64/zamin.c b/OpenBLAS-0.3.0/kernel/riscv64/zamin.c -new file mode 100644 -index 0000000..02eab3e ---- /dev/null -+++ b/OpenBLAS-0.3.0/kernel/riscv64/zamin.c -@@ -0,0 +1,79 @@ -+/*************************************************************************** -+Copyright (c) 2013, The OpenBLAS Project -+All rights reserved. -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+1. Redistributions of source code must retain the above copyright -+notice, this list of conditions and the following disclaimer. -+2. Redistributions in binary form must reproduce the above copyright -+notice, this list of conditions and the following disclaimer in -+the documentation and/or other materials provided with the -+distribution. -+3. Neither the name of the OpenBLAS project nor the names of -+its contributors may be used to endorse or promote products -+derived from this software without specific prior written permission. -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+*****************************************************************************/ -+ -+/************************************************************************************** -+* 2013/09/14 Saar -+* BLASTEST float : OK -+* BLASTEST double : OK -+* CTEST : NoTest -+* TEST : NoTest -+* -+**************************************************************************************/ -+ -+#include "common.h" -+#include -+ -+#if defined(DOUBLE) -+ -+#define ABS fabs -+ -+#else -+ -+#define ABS fabsf -+ -+#endif -+ -+#define CABS1(x,i) ABS(x[i])+ABS(x[i+1]) -+ -+FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) -+{ -+ BLASLONG i=0; -+ BLASLONG ix=0; -+ FLOAT minf; -+ BLASLONG inc_x2; -+ -+ if (n <= 0 || inc_x <= 0) return(0.0); -+ -+ inc_x2 = 2 * inc_x; -+ -+ minf = CABS1(x,0); -+ ix += inc_x2; -+ i++; -+ -+ while(i < n) -+ { -+ if( CABS1(x,ix) < minf ) -+ { -+ minf = CABS1(x,ix); -+ } -+ ix += inc_x2; -+ i++; -+ } -+ return(minf); -+} -+ -+ -diff --git a/OpenBLAS-0.3.0/kernel/riscv64/zasum.c b/OpenBLAS-0.3.0/kernel/riscv64/zasum.c -new file mode 100644 -index 0000000..61e85ca ---- /dev/null -+++ b/OpenBLAS-0.3.0/kernel/riscv64/zasum.c -@@ -0,0 +1,72 @@ -+/*************************************************************************** -+Copyright (c) 2013, The OpenBLAS Project -+All rights reserved. -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+1. Redistributions of source code must retain the above copyright -+notice, this list of conditions and the following disclaimer. -+2. Redistributions in binary form must reproduce the above copyright -+notice, this list of conditions and the following disclaimer in -+the documentation and/or other materials provided with the -+distribution. -+3. Neither the name of the OpenBLAS project nor the names of -+its contributors may be used to endorse or promote products -+derived from this software without specific prior written permission. -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+*****************************************************************************/ -+ -+/************************************************************************************** -+* 2013/09/14 Saar -+* BLASTEST float : OK -+* BLASTEST double : OK -+* CTEST : OK -+* TEST : OK -+* -+**************************************************************************************/ -+ -+ -+#include "common.h" -+#include -+ -+#if defined(DOUBLE) -+ -+#define ABS fabs -+ -+#else -+ -+#define ABS fabsf -+ -+#endif -+ -+#define CABS1(x,i) ABS(x[i])+ABS(x[i+1]) -+ -+FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) -+{ -+ BLASLONG i=0; -+ FLOAT sumf = 0.0; -+ BLASLONG inc_x2; -+ -+ if (n <= 0 || inc_x <= 0) return(sumf); -+ -+ inc_x2 = 2 * inc_x; -+ -+ n *= inc_x2; -+ while(i < n) -+ { -+ sumf += CABS1(x,i); -+ i += inc_x2; -+ } -+ return(sumf); -+} -+ -+ -diff --git a/OpenBLAS-0.3.0/kernel/riscv64/zaxpby.c b/OpenBLAS-0.3.0/kernel/riscv64/zaxpby.c -new file mode 100644 -index 0000000..4453544 ---- /dev/null -+++ b/OpenBLAS-0.3.0/kernel/riscv64/zaxpby.c -@@ -0,0 +1,118 @@ -+/*************************************************************************** -+Copyright (c) 2013, The OpenBLAS Project -+All rights reserved. -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+1. Redistributions of source code must retain the above copyright -+notice, this list of conditions and the following disclaimer. -+2. Redistributions in binary form must reproduce the above copyright -+notice, this list of conditions and the following disclaimer in -+the documentation and/or other materials provided with the -+distribution. -+3. Neither the name of the OpenBLAS project nor the names of -+its contributors may be used to endorse or promote products -+derived from this software without specific prior written permission. -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+*****************************************************************************/ -+ -+/*************************************************************************** -+* 2014/06/07 Saar -+* -+***************************************************************************/ -+ -+#include "common.h" -+ -+int CNAME(BLASLONG n, FLOAT alpha_r, FLOAT alpha_i, FLOAT *x, BLASLONG inc_x, FLOAT beta_r, FLOAT beta_i,FLOAT *y, BLASLONG inc_y) -+{ -+ BLASLONG i=0; -+ BLASLONG ix,iy; -+ FLOAT temp; -+ BLASLONG inc_x2, inc_y2; -+ -+ if ( n <= 0 ) return(0); -+ -+ ix = 0; -+ iy = 0; -+ -+ inc_x2 = 2 * inc_x; -+ inc_y2 = 2 * inc_y; -+ -+ if ( beta_r == 0.0 && beta_i == 0.0) -+ { -+ if ( alpha_r == 0.0 && alpha_i == 0.0 ) -+ { -+ -+ while(i < n) -+ { -+ y[iy] = 0.0 ; -+ y[iy+1] = 0.0 ; -+ iy += inc_y2 ; -+ i++ ; -+ } -+ -+ } -+ else -+ { -+ -+ while(i < n) -+ { -+ y[iy] = ( alpha_r * x[ix] - alpha_i * x[ix+1] ) ; -+ y[iy+1] = ( alpha_r * x[ix+1] + alpha_i * x[ix] ) ; -+ ix += inc_x2 ; -+ iy += inc_y2 ; -+ i++ ; -+ } -+ -+ -+ } -+ -+ } -+ else -+ { -+ if ( alpha_r == 0.0 && alpha_i == 0.0 ) -+ { -+ -+ while(i < n) -+ { -+ temp = ( beta_r * y[iy] - beta_i * y[iy+1] ) ; -+ y[iy+1] = ( beta_r * y[iy+1] + beta_i * y[iy] ) ; -+ y[iy] = temp; -+ iy += inc_y2 ; -+ i++ ; -+ } -+ -+ } -+ else -+ { -+ -+ while(i < n) -+ { -+ temp = ( alpha_r * x[ix] - alpha_i * x[ix+1] ) + ( beta_r * y[iy] - beta_i * y[iy+1] ) ; -+ y[iy+1] = ( alpha_r * x[ix+1] + alpha_i * x[ix] ) + ( beta_r * y[iy+1] + beta_i * y[iy] ) ; -+ y[iy] = temp; -+ ix += inc_x2 ; -+ iy += inc_y2 ; -+ i++ ; -+ } -+ -+ -+ } -+ -+ -+ -+ } -+ return(0); -+ -+} -+ -+ -diff --git a/OpenBLAS-0.3.0/kernel/riscv64/zaxpy.c b/OpenBLAS-0.3.0/kernel/riscv64/zaxpy.c -new file mode 100644 -index 0000000..1dcaeac ---- /dev/null -+++ b/OpenBLAS-0.3.0/kernel/riscv64/zaxpy.c -@@ -0,0 +1,74 @@ -+/*************************************************************************** -+Copyright (c) 2013, The OpenBLAS Project -+All rights reserved. -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+1. Redistributions of source code must retain the above copyright -+notice, this list of conditions and the following disclaimer. -+2. Redistributions in binary form must reproduce the above copyright -+notice, this list of conditions and the following disclaimer in -+the documentation and/or other materials provided with the -+distribution. -+3. Neither the name of the OpenBLAS project nor the names of -+its contributors may be used to endorse or promote products -+derived from this software without specific prior written permission. -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+*****************************************************************************/ -+ -+/************************************************************************************** -+* 2013/09/15 Saar -+* BLASTEST float : OK -+* BLASTEST double : OK -+* CTEST : OK -+* TEST : OK -+* -+**************************************************************************************/ -+ -+ -+#include "common.h" -+ -+int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r, FLOAT da_i, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y, FLOAT *dummy, BLASLONG dummy2) -+{ -+ BLASLONG i=0; -+ BLASLONG ix,iy; -+ BLASLONG inc_x2; -+ BLASLONG inc_y2; -+ -+ if ( n < 0 ) return(0); -+ if ( da_r == 0.0 && da_i == 0.0 ) return(0); -+ -+ ix = 0; -+ iy = 0; -+ -+ inc_x2 = 2 * inc_x; -+ inc_y2 = 2 * inc_y; -+ -+ while(i < n) -+ { -+#if !defined(CONJ) -+ y[iy] += ( da_r * x[ix] - da_i * x[ix+1] ) ; -+ y[iy+1] += ( da_r * x[ix+1] + da_i * x[ix] ) ; -+#else -+ y[iy] += ( da_r * x[ix] + da_i * x[ix+1] ) ; -+ y[iy+1] -= ( da_r * x[ix+1] - da_i * x[ix] ) ; -+#endif -+ ix += inc_x2 ; -+ iy += inc_y2 ; -+ i++ ; -+ -+ } -+ return(0); -+ -+} -+ -+ -diff --git a/OpenBLAS-0.3.0/kernel/riscv64/zcopy.c b/OpenBLAS-0.3.0/kernel/riscv64/zcopy.c -new file mode 100644 -index 0000000..07fe584 ---- /dev/null -+++ b/OpenBLAS-0.3.0/kernel/riscv64/zcopy.c -@@ -0,0 +1,65 @@ -+/*************************************************************************** -+Copyright (c) 2013, The OpenBLAS Project -+All rights reserved. -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+1. Redistributions of source code must retain the above copyright -+notice, this list of conditions and the following disclaimer. -+2. Redistributions in binary form must reproduce the above copyright -+notice, this list of conditions and the following disclaimer in -+the documentation and/or other materials provided with the -+distribution. -+3. Neither the name of the OpenBLAS project nor the names of -+its contributors may be used to endorse or promote products -+derived from this software without specific prior written permission. -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+*****************************************************************************/ -+ -+/************************************************************************************** -+* 2013/09/14 Saar -+* BLASTEST float : OK -+* BLASTEST double : OK -+* CTEST : OK -+* TEST : OK -+* -+**************************************************************************************/ -+ -+#include "common.h" -+ -+int CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y) -+{ -+ BLASLONG i=0; -+ BLASLONG ix=0,iy=0; -+ BLASLONG inc_x2; -+ BLASLONG inc_y2; -+ -+ if ( n < 0 ) return(0); -+ -+ inc_x2 = 2 * inc_x; -+ inc_y2 = 2 * inc_y; -+ -+ while(i < n) -+ { -+ -+ y[iy] = x[ix] ; -+ y[iy+1] = x[ix+1] ; -+ ix += inc_x2; -+ iy += inc_y2; -+ i++ ; -+ -+ } -+ return(0); -+ -+} -+ -+ -diff --git a/OpenBLAS-0.3.0/kernel/riscv64/zdot.c b/OpenBLAS-0.3.0/kernel/riscv64/zdot.c -new file mode 100644 -index 0000000..733c235 ---- /dev/null -+++ b/OpenBLAS-0.3.0/kernel/riscv64/zdot.c -@@ -0,0 +1,80 @@ -+/*************************************************************************** -+Copyright (c) 2013, The OpenBLAS Project -+All rights reserved. -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+1. Redistributions of source code must retain the above copyright -+notice, this list of conditions and the following disclaimer. -+2. Redistributions in binary form must reproduce the above copyright -+notice, this list of conditions and the following disclaimer in -+the documentation and/or other materials provided with the -+distribution. -+3. Neither the name of the OpenBLAS project nor the names of -+its contributors may be used to endorse or promote products -+derived from this software without specific prior written permission. -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+*****************************************************************************/ -+ -+/************************************************************************************** -+* 2013/09/14 Saar -+* BLASTEST float : FAIL -+* BLASTEST double : FAIL -+* CTEST : OK -+* TEST : OK -+* -+**************************************************************************************/ -+ -+#include "common.h" -+ -+OPENBLAS_COMPLEX_FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y) -+ -+{ -+ BLASLONG i=0; -+ BLASLONG ix=0,iy=0; -+ FLOAT dot[2]; -+ OPENBLAS_COMPLEX_FLOAT result; -+ BLASLONG inc_x2; -+ BLASLONG inc_y2; -+ -+ dot[0]=0.0; -+ dot[1]=0.0; -+ -+ CREAL(result) = 0.0 ; -+ CIMAG(result) = 0.0 ; -+ -+ if ( n < 1 ) return(result); -+ -+ inc_x2 = 2 * inc_x ; -+ inc_y2 = 2 * inc_y ; -+ -+ while(i < n) -+ { -+#if !defined(CONJ) -+ dot[0] += ( x[ix] * y[iy] - x[ix+1] * y[iy+1] ) ; -+ dot[1] += ( x[ix+1] * y[iy] + x[ix] * y[iy+1] ) ; -+#else -+ dot[0] += ( x[ix] * y[iy] + x[ix+1] * y[iy+1] ) ; -+ dot[1] -= ( x[ix+1] * y[iy] - x[ix] * y[iy+1] ) ; -+#endif -+ ix += inc_x2 ; -+ iy += inc_y2 ; -+ i++ ; -+ -+ } -+ CREAL(result) = dot[0]; -+ CIMAG(result) = dot[1]; -+ return(result); -+ -+} -+ -+ -diff --git a/OpenBLAS-0.3.0/kernel/riscv64/zgemv_n.c b/OpenBLAS-0.3.0/kernel/riscv64/zgemv_n.c -new file mode 100644 -index 0000000..b9b03f7 ---- /dev/null -+++ b/OpenBLAS-0.3.0/kernel/riscv64/zgemv_n.c -@@ -0,0 +1,157 @@ -+/*************************************************************************** -+Copyright (c) 2013, The OpenBLAS Project -+All rights reserved. -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+1. Redistributions of source code must retain the above copyright -+notice, this list of conditions and the following disclaimer. -+2. Redistributions in binary form must reproduce the above copyright -+notice, this list of conditions and the following disclaimer in -+the documentation and/or other materials provided with the -+distribution. -+3. Neither the name of the OpenBLAS project nor the names of -+its contributors may be used to endorse or promote products -+derived from this software without specific prior written permission. -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+*****************************************************************************/ -+ -+/************************************************************************************** -+ * * 2013/11/23 Saar -+ * * BLASTEST float : OK -+ * * BLASTEST double : OK -+ * CTEST : OK -+ * TEST : OK -+ * * -+ * **************************************************************************************/ -+ -+ -+#include "common.h" -+ -+int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha_r, FLOAT alpha_i, FLOAT *a, BLASLONG lda, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y, FLOAT *buffer) -+{ -+ BLASLONG i; -+ BLASLONG ix,iy; -+ BLASLONG j; -+ FLOAT *a_ptr; -+ FLOAT temp_r,temp_i; -+ BLASLONG inc_x2,inc_y2; -+ BLASLONG lda2; -+ BLASLONG i2; -+ -+ lda2 = 2*lda; -+ -+ ix = 0; -+ a_ptr = a; -+ -+ if ( inc_x == 1 && inc_y == 1 ) -+ { -+ -+ for (j=0; j -+ -+#if defined(DOUBLE) -+ -+#define ABS fabs -+ -+#else -+ -+#define ABS fabsf -+ -+#endif -+ -+ -+ -+FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) -+{ -+ BLASLONG i=0; -+ FLOAT scale = 0.0; -+ FLOAT ssq = 1.0; -+ BLASLONG inc_x2; -+ FLOAT temp; -+ -+ if (n <= 0 || inc_x <= 0) return(0.0); -+ -+ inc_x2 = 2 * inc_x; -+ -+ n *= inc_x2; -+ while(i < n) -+ { -+ -+ if ( x[i] != 0.0 ) -+ { -+ temp = ABS( x[i] ); -+ if ( scale < temp ) -+ { -+ ssq = 1 + ssq * ( scale / temp ) * ( scale / temp ); -+ scale = temp ; -+ } -+ else -+ { -+ ssq += ( temp / scale ) * ( temp / scale ); -+ } -+ -+ } -+ -+ if ( x[i+1] != 0.0 ) -+ { -+ temp = ABS( x[i+1] ); -+ if ( scale < temp ) -+ { -+ ssq = 1 + ssq * ( scale / temp ) * ( scale / temp ); -+ scale = temp ; -+ } -+ else -+ { -+ ssq += ( temp / scale ) * ( temp / scale ); -+ } -+ -+ } -+ -+ -+ i += inc_x2; -+ } -+ scale = scale * sqrt( ssq ); -+ return(scale); -+ -+} -+ -+ -diff --git a/OpenBLAS-0.3.0/kernel/riscv64/zomatcopy_cn.c b/OpenBLAS-0.3.0/kernel/riscv64/zomatcopy_cn.c -new file mode 100644 -index 0000000..f5a7a62 ---- /dev/null -+++ b/OpenBLAS-0.3.0/kernel/riscv64/zomatcopy_cn.c -@@ -0,0 +1,70 @@ -+/*************************************************************************** -+Copyright (c) 2013, The OpenBLAS Project -+All rights reserved. -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+1. Redistributions of source code must retain the above copyright -+notice, this list of conditions and the following disclaimer. -+2. Redistributions in binary form must reproduce the above copyright -+notice, this list of conditions and the following disclaimer in -+the documentation and/or other materials provided with the -+distribution. -+3. Neither the name of the OpenBLAS project nor the names of -+its contributors may be used to endorse or promote products -+derived from this software without specific prior written permission. -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+*****************************************************************************/ -+ -+#include "common.h" -+ -+/***************************************************** -+ * 2014/06/09 Saar -+ * -+ * Order ColMajor -+ * No Trans -+ * -+******************************************************/ -+ -+int CNAME(BLASLONG rows, BLASLONG cols, FLOAT alpha_r, FLOAT alpha_i, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG ldb) -+{ -+ BLASLONG i,j,ia; -+ FLOAT *aptr,*bptr; -+ -+ if ( rows <= 0 ) return(0); -+ if ( cols <= 0 ) return(0); -+ -+ aptr = a; -+ bptr = b; -+ -+ lda *= 2; -+ ldb *= 2; -+ -+ for ( i=0; i -+ -+int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT dummy3, FLOAT dummy4, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y, FLOAT *dummy, BLASLONG dummy2) -+{ -+ BLASLONG i=0; -+ BLASLONG ix=0,iy=0; -+ FLOAT temp[2]; -+ BLASLONG inc_x2; -+ BLASLONG inc_y2; -+ -+ if ( n < 0 ) return(0); -+ -+ inc_x2 = 2 * inc_x; -+ inc_y2 = 2 * inc_y; -+ -+ while(i < n) -+ { -+ -+ temp[0] = x[ix] ; -+ temp[1] = x[ix+1] ; -+ x[ix] = y[iy] ; -+ x[ix+1] = y[iy+1] ; -+ y[iy] = temp[0] ; -+ y[iy+1] = temp[1] ; -+ -+ ix += inc_x2 ; -+ iy += inc_y2 ; -+ i++ ; -+ -+ } -+ return(0); -+ -+} -+ -+ -diff --git a/OpenBLAS-0.3.0/lapack/laswp/riscv64/Makefile b/OpenBLAS-0.3.0/lapack/laswp/riscv64/Makefile -new file mode 100644 -index 0000000..75411de ---- /dev/null -+++ b/OpenBLAS-0.3.0/lapack/laswp/riscv64/Makefile -@@ -0,0 +1,13 @@ -+TOPDIR = ../../.. -+include ../../../Makefile.system -+ -+ifndef LASWP -+LASWP = ../generic/laswp_k.c -+endif -+ -+ifndef ZLASWP -+ZLASWP = ../generic/zlaswp_k.c -+endif -+ -+include ../generic/Makefile -+ -diff --git a/OpenBLAS-0.3.0/param.h b/OpenBLAS-0.3.0/param.h -index 4227d54..03c19f5 100644 ---- a/OpenBLAS-0.3.0/param.h -+++ b/OpenBLAS-0.3.0/param.h -@@ -2343,6 +2343,45 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - #define SYMV_P 16 - #endif - -+#ifdef RISCV64 -+#define GEMM_DEFAULT_OFFSET_A 0 -+#define GEMM_DEFAULT_OFFSET_B 0 -+#define GEMM_DEFAULT_ALIGN 0x03fffUL -+ -+#define SGEMM_DEFAULT_UNROLL_M 2 -+#define SGEMM_DEFAULT_UNROLL_N 2 -+ -+#define DGEMM_DEFAULT_UNROLL_M 2 -+#define DGEMM_DEFAULT_UNROLL_N 2 -+ -+#define CGEMM_DEFAULT_UNROLL_M 2 -+#define CGEMM_DEFAULT_UNROLL_N 2 -+ -+#define ZGEMM_DEFAULT_UNROLL_M 2 -+#define ZGEMM_DEFAULT_UNROLL_N 2 -+ -+#define SGEMM_DEFAULT_P 128 -+#define DGEMM_DEFAULT_P 128 -+#define CGEMM_DEFAULT_P 96 -+#define ZGEMM_DEFAULT_P 64 -+ -+#define SGEMM_DEFAULT_Q 240 -+#define DGEMM_DEFAULT_Q 120 -+#define CGEMM_DEFAULT_Q 120 -+#define ZGEMM_DEFAULT_Q 120 -+ -+#define SGEMM_DEFAULT_R 12288 -+#define DGEMM_DEFAULT_R 8192 -+#define CGEMM_DEFAULT_R 4096 -+#define ZGEMM_DEFAULT_R 4096 -+ -+#define SYMV_P 16 -+ -+#define GEMM_DEFAULT_OFFSET_A 0 -+#define GEMM_DEFAULT_OFFSET_B 0 -+ -+#endif -+ - #ifdef ARMV7 - #define SNUMOPT 2 - #define DNUMOPT 2