diff --git a/openblas.spec b/openblas.spec index ec6749e..539cb49 100644 --- a/openblas.spec +++ b/openblas.spec @@ -15,7 +15,7 @@ Name: openblas Version: 0.3.0 -Release: 1%{?dist} +Release: 1.0.riscv64%{?dist} Summary: An optimized BLAS library based on GotoBLAS2 Group: Development/Libraries License: BSD @@ -31,6 +31,10 @@ Patch2: openblas-0.2.15-constructor.patch Patch3: openblas-0.2.19-tests.patch # Upstream pull 1572, fixes fail on ppc64le Patch4: 1572.patch +# Add support for RISC-V (riscv64) +# Taken from https://github.com/xianyi/OpenBLAS/pull/1526 +# No additional modifications done +Patch5: openblass-0.3.0-riscv64.patch BuildRequires: gcc BuildRequires: gcc-gfortran @@ -231,6 +235,7 @@ cd OpenBLAS-%{version} %endif %patch3 -p1 -b .tests %patch4 -p1 -b .ppc64le +%patch5 -p2 -b .riscv64 # Fix source permissions find -name \*.f -exec chmod 644 {} \; @@ -368,6 +373,9 @@ TARGET="TARGET=POWER8 DYNAMIC_ARCH=0" %ifarch aarch64 TARGET="TARGET=ARMV8 DYNAMIC_ARCH=0" %endif +%ifarch riscv64 +TARGET="DYNAMIC_ARCH=0" +%endif %if 0%{?rhel} == 5 # Gfortran too old to recognize -frecursive @@ -441,6 +449,9 @@ suffix="_armv8" %ifarch s390x suffix="_zarch_generic" %endif +%ifarch riscv64 +suffix="_riscv64" +%endif slibname=`basename %{buildroot}%{_libdir}/libopenblas${suffix}-*.so .so` mv %{buildroot}%{_libdir}/${slibname}.a %{buildroot}%{_libdir}/lib%{name}.a if [[ "$suffix" != "" ]]; then @@ -663,6 +674,9 @@ rm -rf %{buildroot}%{_libdir}/pkgconfig %endif %changelog +* Sun Jun 03 2018 David Abdurachmanov - 0.3.0-1.0.riscv64 +- Add support for RISC-V (riscv64) + * Thu May 24 2018 Susi Lehtola - 0.3.0-1 - Update to 0.3.0. diff --git a/openblass-0.3.0-riscv64.patch b/openblass-0.3.0-riscv64.patch new file mode 100644 index 0000000..126b41a --- /dev/null +++ b/openblass-0.3.0-riscv64.patch @@ -0,0 +1,4593 @@ +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