4658 lines
149 KiB
Diff
4658 lines
149 KiB
Diff
diff --git a/Makefile.riscv64 b/Makefile.riscv64
|
|
new file mode 100644
|
|
index 00000000..e69de29b
|
|
diff --git a/Makefile.system b/Makefile.system
|
|
index a928b6e2..8c725137 100644
|
|
--- a/Makefile.system
|
|
+++ b/Makefile.system
|
|
@@ -712,7 +712,9 @@ endif
|
|
ifndef BINARY_DEFINED
|
|
ifneq ($(OSNAME), AIX)
|
|
ifdef BINARY64
|
|
+ifneq ($(ARCH), riscv64)
|
|
CCOMMON_OPT += -m64
|
|
+endif
|
|
else
|
|
CCOMMON_OPT += -m32
|
|
endif
|
|
@@ -813,8 +815,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/TargetList.txt b/TargetList.txt
|
|
index 6a57bf1a..3b018e17 100644
|
|
--- a/TargetList.txt
|
|
+++ b/TargetList.txt
|
|
@@ -97,3 +97,6 @@ TSV110
|
|
ZARCH_GENERIC
|
|
Z13
|
|
Z14
|
|
+
|
|
+10.RISC-V 64:
|
|
+RISCV64_GENERIC
|
|
diff --git a/c_check b/c_check
|
|
index c7899c84..b645d1b5 100644
|
|
--- a/c_check
|
|
+++ b/c_check
|
|
@@ -91,6 +91,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;
|
|
|
|
@@ -135,6 +136,11 @@ if (($architecture eq "x86") && ($os ne Darwin) && ($os ne SunOS)) {
|
|
$binary =32;
|
|
}
|
|
|
|
+if ($architecture eq "riscv64") {
|
|
+ $defined = 1;
|
|
+ $binary = 64;
|
|
+}
|
|
+
|
|
if ($compiler eq "PGI") {
|
|
$compiler_name .= " -tp p7" if ($binary eq "32");
|
|
$compiler_name .= " -tp p7-64" if ($binary eq "64");
|
|
diff --git a/common.h b/common.h
|
|
index a9fe8d91..7b3619cd 100644
|
|
--- a/common.h
|
|
+++ b/common.h
|
|
@@ -425,6 +425,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/common_riscv64.h b/common_riscv64.h
|
|
new file mode 100644
|
|
index 00000000..fe4e0a6d
|
|
--- /dev/null
|
|
+++ b/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/cpuid_riscv64.c b/cpuid_riscv64.c
|
|
new file mode 100644
|
|
index 00000000..129ed11b
|
|
--- /dev/null
|
|
+++ b/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/ctest.c b/ctest.c
|
|
index 5e869b90..b0102745 100644
|
|
--- a/ctest.c
|
|
+++ b/ctest.c
|
|
@@ -153,3 +153,7 @@ ARCH_ARM
|
|
ARCH_ARM64
|
|
#endif
|
|
|
|
+#if defined(__riscv)
|
|
+ARCH_RISCV64
|
|
+#endif
|
|
+
|
|
diff --git a/getarch.c b/getarch.c
|
|
index d29f6369..58706c45 100644
|
|
--- a/getarch.c
|
|
+++ b/getarch.c
|
|
@@ -650,6 +650,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
#define CORENAME "POWER9"
|
|
#endif
|
|
|
|
+
|
|
#ifdef FORCE_PPCG4
|
|
#define FORCE
|
|
#define ARCHITECTURE "POWER"
|
|
@@ -905,6 +906,20 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
#else
|
|
#endif
|
|
|
|
+#ifdef FORCE_RISCV64_GENERIC
|
|
+#define FORCE
|
|
+#define ARCHITECTURE "RISCV64"
|
|
+#define SUBARCHITECTURE "RISCV64_GENERIC"
|
|
+#define SUBDIRNAME "riscv64"
|
|
+#define ARCHCONFIG "-DRISCV64_GENERIC " \
|
|
+ "-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_generic"
|
|
+#define CORENAME "RISCV64_GENERIC"
|
|
+#else
|
|
+#endif
|
|
+
|
|
#ifdef FORCE_CORTEXA15
|
|
#define FORCE
|
|
#define ARCHITECTURE "ARM"
|
|
@@ -1194,6 +1209,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/kernel/Makefile.L3 b/kernel/Makefile.L3
|
|
index 6d96abb2..3ed782df 100644
|
|
--- a/kernel/Makefile.L3
|
|
+++ b/kernel/Makefile.L3
|
|
@@ -21,6 +21,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/kernel/riscv64/KERNEL b/kernel/riscv64/KERNEL
|
|
new file mode 100644
|
|
index 00000000..68d68b5f
|
|
--- /dev/null
|
|
+++ b/kernel/riscv64/KERNEL
|
|
@@ -0,0 +1,30 @@
|
|
+ifndef SCABS_KERNEL
|
|
+SCABS_KERNEL = ../generic/cabs.c
|
|
+endif
|
|
+
|
|
+ifndef DCABS_KERNEL
|
|
+DCABS_KERNEL = ../generic/cabs.c
|
|
+endif
|
|
+
|
|
+ifndef QCABS_KERNEL
|
|
+QCABS_KERNEL = ../generic/cabs.c
|
|
+endif
|
|
+
|
|
+ifndef LSAME_KERNEL
|
|
+LSAME_KERNEL = ../generic/lsame.c
|
|
+endif
|
|
+
|
|
+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/kernel/riscv64/KERNEL.RISCV64_GENERIC b/kernel/riscv64/KERNEL.RISCV64_GENERIC
|
|
new file mode 100644
|
|
index 00000000..ea6a8cf2
|
|
--- /dev/null
|
|
+++ b/kernel/riscv64/KERNEL.RISCV64_GENERIC
|
|
@@ -0,0 +1,164 @@
|
|
+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
|
|
+
|
|
+SSUMKERNEL = ../arm/sum.c
|
|
+DSUMKERNEL = ../arm/sum.c
|
|
+CSUMKERNEL = ../arm/zsum.c
|
|
+ZSUMKERNEL = ../arm/zsum.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/kernel/riscv64/amax.c b/kernel/riscv64/amax.c
|
|
new file mode 100644
|
|
index 00000000..792e68bd
|
|
--- /dev/null
|
|
+++ b/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 <math.h>
|
|
+
|
|
+#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/kernel/riscv64/amin.c b/kernel/riscv64/amin.c
|
|
new file mode 100644
|
|
index 00000000..78495a8e
|
|
--- /dev/null
|
|
+++ b/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 <math.h>
|
|
+
|
|
+#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/kernel/riscv64/asum.c b/kernel/riscv64/asum.c
|
|
new file mode 100644
|
|
index 00000000..b284ae3f
|
|
--- /dev/null
|
|
+++ b/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 <math.h>
|
|
+
|
|
+#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/kernel/riscv64/axpby.c b/kernel/riscv64/axpby.c
|
|
new file mode 100644
|
|
index 00000000..278747f7
|
|
--- /dev/null
|
|
+++ b/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/kernel/riscv64/axpy.c b/kernel/riscv64/axpy.c
|
|
new file mode 100644
|
|
index 00000000..fb1094dd
|
|
--- /dev/null
|
|
+++ b/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/kernel/riscv64/copy.c b/kernel/riscv64/copy.c
|
|
new file mode 100644
|
|
index 00000000..7b4f04f3
|
|
--- /dev/null
|
|
+++ b/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/kernel/riscv64/dot.c b/kernel/riscv64/dot.c
|
|
new file mode 100644
|
|
index 00000000..46a84ad1
|
|
--- /dev/null
|
|
+++ b/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/kernel/riscv64/gemv_n.c b/kernel/riscv64/gemv_n.c
|
|
new file mode 100644
|
|
index 00000000..ef61b245
|
|
--- /dev/null
|
|
+++ b/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<n; j++)
|
|
+ {
|
|
+ temp = alpha * x[ix];
|
|
+ iy = 0;
|
|
+ for (i=0; i<m; i++)
|
|
+ {
|
|
+ y[iy] += temp * a_ptr[i];
|
|
+ iy += inc_y;
|
|
+ }
|
|
+ a_ptr += lda;
|
|
+ ix += inc_x;
|
|
+ }
|
|
+ return(0);
|
|
+}
|
|
+
|
|
+
|
|
diff --git a/kernel/riscv64/gemv_t.c b/kernel/riscv64/gemv_t.c
|
|
new file mode 100644
|
|
index 00000000..169047b7
|
|
--- /dev/null
|
|
+++ b/kernel/riscv64/gemv_t.c
|
|
@@ -0,0 +1,68 @@
|
|
+/***************************************************************************
|
|
+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;
|
|
+
|
|
+ iy = 0;
|
|
+ a_ptr = a;
|
|
+
|
|
+ for (j=0; j<n; j++)
|
|
+ {
|
|
+ temp = 0.0;
|
|
+ ix = 0;
|
|
+ for (i=0; i<m; i++)
|
|
+ {
|
|
+ temp += a_ptr[i] * x[ix];
|
|
+ ix += inc_x;
|
|
+ }
|
|
+ y[iy] += alpha * temp;
|
|
+ iy += inc_y;
|
|
+ a_ptr += lda;
|
|
+ }
|
|
+ return(0);
|
|
+
|
|
+}
|
|
+
|
|
+
|
|
diff --git a/kernel/riscv64/iamax.c b/kernel/riscv64/iamax.c
|
|
new file mode 100644
|
|
index 00000000..8c016ce4
|
|
--- /dev/null
|
|
+++ b/kernel/riscv64/iamax.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 : OK
|
|
+* TEST : OK
|
|
+*
|
|
+**************************************************************************************/
|
|
+
|
|
+#include "common.h"
|
|
+#include <math.h>
|
|
+
|
|
+#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/kernel/riscv64/iamin.c b/kernel/riscv64/iamin.c
|
|
new file mode 100644
|
|
index 00000000..155292bd
|
|
--- /dev/null
|
|
+++ b/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 <math.h>
|
|
+
|
|
+#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/kernel/riscv64/imax.c b/kernel/riscv64/imax.c
|
|
new file mode 100644
|
|
index 00000000..5072dd16
|
|
--- /dev/null
|
|
+++ b/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 <math.h>
|
|
+
|
|
+
|
|
+
|
|
+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/kernel/riscv64/imin.c b/kernel/riscv64/imin.c
|
|
new file mode 100644
|
|
index 00000000..598cba38
|
|
--- /dev/null
|
|
+++ b/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 <math.h>
|
|
+
|
|
+
|
|
+
|
|
+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/kernel/riscv64/izamax.c b/kernel/riscv64/izamax.c
|
|
new file mode 100644
|
|
index 00000000..8fe33e95
|
|
--- /dev/null
|
|
+++ b/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 <math.h>
|
|
+
|
|
+#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/kernel/riscv64/izamin.c b/kernel/riscv64/izamin.c
|
|
new file mode 100644
|
|
index 00000000..fb5a0d4c
|
|
--- /dev/null
|
|
+++ b/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 <math.h>
|
|
+
|
|
+#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/kernel/riscv64/max.c b/kernel/riscv64/max.c
|
|
new file mode 100644
|
|
index 00000000..2ad956bc
|
|
--- /dev/null
|
|
+++ b/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 <math.h>
|
|
+
|
|
+
|
|
+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/kernel/riscv64/min.c b/kernel/riscv64/min.c
|
|
new file mode 100644
|
|
index 00000000..2812fe39
|
|
--- /dev/null
|
|
+++ b/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 <math.h>
|
|
+
|
|
+
|
|
+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/kernel/riscv64/nrm2.c b/kernel/riscv64/nrm2.c
|
|
new file mode 100644
|
|
index 00000000..fcff0933
|
|
--- /dev/null
|
|
+++ b/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 <math.h>
|
|
+
|
|
+#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/kernel/riscv64/omatcopy_cn.c b/kernel/riscv64/omatcopy_cn.c
|
|
new file mode 100644
|
|
index 00000000..4d11b912
|
|
--- /dev/null
|
|
+++ b/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<cols ; i++ )
|
|
+ {
|
|
+ for(j=0; j<rows; j++)
|
|
+ {
|
|
+ bptr[j] = 0.0;
|
|
+ }
|
|
+ bptr += ldb;
|
|
+ }
|
|
+ return(0);
|
|
+ }
|
|
+
|
|
+ if ( alpha == 1.0 )
|
|
+ {
|
|
+ for ( i=0; i<cols ; i++ )
|
|
+ {
|
|
+ for(j=0; j<rows; j++)
|
|
+ {
|
|
+ bptr[j] = aptr[j];
|
|
+ }
|
|
+ aptr += lda;
|
|
+ bptr += ldb;
|
|
+ }
|
|
+ return(0);
|
|
+ }
|
|
+
|
|
+ for ( i=0; i<cols ; i++ )
|
|
+ {
|
|
+ for(j=0; j<rows; j++)
|
|
+ {
|
|
+ bptr[j] = alpha * aptr[j];
|
|
+ }
|
|
+ aptr += lda;
|
|
+ bptr += ldb;
|
|
+ }
|
|
+
|
|
+ return(0);
|
|
+
|
|
+}
|
|
+
|
|
+
|
|
diff --git a/kernel/riscv64/omatcopy_ct.c b/kernel/riscv64/omatcopy_ct.c
|
|
new file mode 100644
|
|
index 00000000..b2587813
|
|
--- /dev/null
|
|
+++ b/kernel/riscv64/omatcopy_ct.c
|
|
@@ -0,0 +1,89 @@
|
|
+/***************************************************************************
|
|
+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
|
|
+ * 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;
|
|
+
|
|
+ if ( alpha == 0.0 )
|
|
+ {
|
|
+ for ( i=0; i<cols ; i++ )
|
|
+ {
|
|
+ bptr = &b[i];
|
|
+ for(j=0; j<rows; j++)
|
|
+ {
|
|
+ bptr[j*ldb] = 0.0;
|
|
+ }
|
|
+ }
|
|
+ return(0);
|
|
+ }
|
|
+
|
|
+ if ( alpha == 1.0 )
|
|
+ {
|
|
+ for ( i=0; i<cols ; i++ )
|
|
+ {
|
|
+ bptr = &b[i];
|
|
+ for(j=0; j<rows; j++)
|
|
+ {
|
|
+ bptr[j*ldb] = aptr[j];
|
|
+ }
|
|
+ aptr += lda;
|
|
+ }
|
|
+ return(0);
|
|
+ }
|
|
+
|
|
+ for ( i=0; i<cols ; i++ )
|
|
+ {
|
|
+ bptr = &b[i];
|
|
+ for(j=0; j<rows; j++)
|
|
+ {
|
|
+ bptr[j*ldb] = alpha * aptr[j];
|
|
+ }
|
|
+ aptr += lda;
|
|
+ }
|
|
+
|
|
+ return(0);
|
|
+
|
|
+}
|
|
+
|
|
+
|
|
diff --git a/kernel/riscv64/omatcopy_rn.c b/kernel/riscv64/omatcopy_rn.c
|
|
new file mode 100644
|
|
index 00000000..57515e72
|
|
--- /dev/null
|
|
+++ b/kernel/riscv64/omatcopy_rn.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 rowMajor
|
|
+ * 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<rows ; i++ )
|
|
+ {
|
|
+ for(j=0; j<cols; j++)
|
|
+ {
|
|
+ bptr[j] = 0.0;
|
|
+ }
|
|
+ bptr += ldb;
|
|
+ }
|
|
+ return(0);
|
|
+ }
|
|
+
|
|
+ if ( alpha == 1.0 )
|
|
+ {
|
|
+ for ( i=0; i<rows ; i++ )
|
|
+ {
|
|
+ for(j=0; j<cols; j++)
|
|
+ {
|
|
+ bptr[j] = aptr[j];
|
|
+ }
|
|
+ aptr += lda;
|
|
+ bptr += ldb;
|
|
+ }
|
|
+ return(0);
|
|
+ }
|
|
+
|
|
+ for ( i=0; i<rows ; i++ )
|
|
+ {
|
|
+ for(j=0; j<cols; j++)
|
|
+ {
|
|
+ bptr[j] = alpha * aptr[j];
|
|
+ }
|
|
+ aptr += lda;
|
|
+ bptr += ldb;
|
|
+ }
|
|
+
|
|
+ return(0);
|
|
+
|
|
+}
|
|
+
|
|
+
|
|
diff --git a/kernel/riscv64/omatcopy_rt.c b/kernel/riscv64/omatcopy_rt.c
|
|
new file mode 100644
|
|
index 00000000..9d58350d
|
|
--- /dev/null
|
|
+++ b/kernel/riscv64/omatcopy_rt.c
|
|
@@ -0,0 +1,62 @@
|
|
+/***************************************************************************
|
|
+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 rowMajor
|
|
+ * 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;
|
|
+
|
|
+ for ( i=0; i<rows ; i++ )
|
|
+ {
|
|
+ bptr = &b[i];
|
|
+ for(j=0; j<cols; j++)
|
|
+ {
|
|
+ bptr[j*ldb] = alpha * aptr[j];
|
|
+ }
|
|
+ aptr += lda;
|
|
+ }
|
|
+
|
|
+ return(0);
|
|
+
|
|
+}
|
|
+
|
|
+
|
|
diff --git a/kernel/riscv64/rot.c b/kernel/riscv64/rot.c
|
|
new file mode 100644
|
|
index 00000000..18b4ca25
|
|
--- /dev/null
|
|
+++ b/kernel/riscv64/rot.c
|
|
@@ -0,0 +1,62 @@
|
|
+/***************************************************************************
|
|
+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, FLOAT c, FLOAT s)
|
|
+{
|
|
+ BLASLONG i=0;
|
|
+ BLASLONG ix=0,iy=0;
|
|
+ FLOAT temp;
|
|
+
|
|
+ if ( n <= 0 ) return(0);
|
|
+
|
|
+ while(i < n)
|
|
+ {
|
|
+ temp = c*x[ix] + s*y[iy] ;
|
|
+ y[iy] = c*y[iy] - s*x[ix] ;
|
|
+ x[ix] = temp ;
|
|
+
|
|
+ ix += inc_x ;
|
|
+ iy += inc_y ;
|
|
+ i++ ;
|
|
+
|
|
+ }
|
|
+ return(0);
|
|
+
|
|
+}
|
|
+
|
|
+
|
|
diff --git a/kernel/riscv64/scal.c b/kernel/riscv64/scal.c
|
|
new file mode 100644
|
|
index 00000000..4ef49e29
|
|
--- /dev/null
|
|
+++ b/kernel/riscv64/scal.c
|
|
@@ -0,0 +1,63 @@
|
|
+/***************************************************************************
|
|
+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,j=0;
|
|
+
|
|
+ if ( (n <= 0) || (inc_x <= 0))
|
|
+ return(0);
|
|
+
|
|
+
|
|
+ while(j < n)
|
|
+ {
|
|
+
|
|
+ if ( da == 0.0 )
|
|
+ x[i]=0.0;
|
|
+ else
|
|
+ x[i] = da * x[i] ;
|
|
+
|
|
+ i += inc_x ;
|
|
+ j++;
|
|
+
|
|
+ }
|
|
+ return 0;
|
|
+
|
|
+}
|
|
+
|
|
+
|
|
diff --git a/kernel/riscv64/swap.c b/kernel/riscv64/swap.c
|
|
new file mode 100644
|
|
index 00000000..eac621fb
|
|
--- /dev/null
|
|
+++ b/kernel/riscv64/swap.c
|
|
@@ -0,0 +1,62 @@
|
|
+/***************************************************************************
|
|
+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/20 Saar
|
|
+* BLASTEST float OK
|
|
+* BLASTEST double OK
|
|
+*
|
|
+**************************************************************************************/
|
|
+
|
|
+#include "common.h"
|
|
+#include <stdio.h>
|
|
+
|
|
+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/kernel/riscv64/symv_L.c b/kernel/riscv64/symv_L.c
|
|
new file mode 100644
|
|
index 00000000..8f48d03f
|
|
--- /dev/null
|
|
+++ b/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<offset; j++)
|
|
+ {
|
|
+ temp1 = alpha * x[jx];
|
|
+ temp2 = 0.0;
|
|
+ y[jy] += temp1 * a[j*lda+j];
|
|
+ iy = jy;
|
|
+ ix = jx;
|
|
+ for (i=j+1; i<m; i++)
|
|
+ {
|
|
+ ix += inc_x;
|
|
+ iy += inc_y;
|
|
+ y[iy] += temp1 * a[j*lda+i];
|
|
+ temp2 += a[j*lda+i] * x[ix];
|
|
+
|
|
+ }
|
|
+ y[jy] += alpha * temp2;
|
|
+ jx += inc_x;
|
|
+ jy += inc_y;
|
|
+ }
|
|
+ return(0);
|
|
+}
|
|
+
|
|
+
|
|
diff --git a/kernel/riscv64/symv_U.c b/kernel/riscv64/symv_U.c
|
|
new file mode 100644
|
|
index 00000000..b5a0c96e
|
|
--- /dev/null
|
|
+++ b/kernel/riscv64/symv_U.c
|
|
@@ -0,0 +1,71 @@
|
|
+/***************************************************************************
|
|
+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_U: m=%d offset=%d\n",m,offset);
|
|
+#endif
|
|
+
|
|
+ BLASLONG m1 = m - offset;
|
|
+
|
|
+ jx = m1 * inc_x;
|
|
+ jy = m1 * inc_y;
|
|
+
|
|
+ for (j=m1; j<m; j++)
|
|
+ {
|
|
+ temp1 = alpha * x[jx];
|
|
+ temp2 = 0.0;
|
|
+ iy = 0;
|
|
+ ix = 0;
|
|
+ for (i=0; i<j; i++)
|
|
+ {
|
|
+ y[iy] += temp1 * a[j*lda+i];
|
|
+ temp2 += a[j*lda+i] * x[ix];
|
|
+ ix += inc_x;
|
|
+ iy += inc_y;
|
|
+
|
|
+ }
|
|
+ y[jy] += temp1 * a[j*lda+j] + alpha * temp2;
|
|
+ jx += inc_x;
|
|
+ jy += inc_y;
|
|
+ }
|
|
+ return(0);
|
|
+}
|
|
+
|
|
+
|
|
diff --git a/kernel/riscv64/zamax.c b/kernel/riscv64/zamax.c
|
|
new file mode 100644
|
|
index 00000000..a39bd782
|
|
--- /dev/null
|
|
+++ b/kernel/riscv64/zamax.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 <math.h>
|
|
+
|
|
+#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/kernel/riscv64/zamin.c b/kernel/riscv64/zamin.c
|
|
new file mode 100644
|
|
index 00000000..02eab3e7
|
|
--- /dev/null
|
|
+++ b/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 <math.h>
|
|
+
|
|
+#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/kernel/riscv64/zasum.c b/kernel/riscv64/zasum.c
|
|
new file mode 100644
|
|
index 00000000..61e85cae
|
|
--- /dev/null
|
|
+++ b/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 <math.h>
|
|
+
|
|
+#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/kernel/riscv64/zaxpby.c b/kernel/riscv64/zaxpby.c
|
|
new file mode 100644
|
|
index 00000000..44535441
|
|
--- /dev/null
|
|
+++ b/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/kernel/riscv64/zaxpy.c b/kernel/riscv64/zaxpy.c
|
|
new file mode 100644
|
|
index 00000000..1dcaeac2
|
|
--- /dev/null
|
|
+++ b/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/kernel/riscv64/zcopy.c b/kernel/riscv64/zcopy.c
|
|
new file mode 100644
|
|
index 00000000..07fe584c
|
|
--- /dev/null
|
|
+++ b/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/kernel/riscv64/zdot.c b/kernel/riscv64/zdot.c
|
|
new file mode 100644
|
|
index 00000000..733c235c
|
|
--- /dev/null
|
|
+++ b/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/kernel/riscv64/zgemv_n.c b/kernel/riscv64/zgemv_n.c
|
|
new file mode 100644
|
|
index 00000000..b9b03f79
|
|
--- /dev/null
|
|
+++ b/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<n; j++)
|
|
+ {
|
|
+
|
|
+#if !defined(XCONJ)
|
|
+ temp_r = alpha_r * x[ix] - alpha_i * x[ix+1];
|
|
+ temp_i = alpha_r * x[ix+1] + alpha_i * x[ix];
|
|
+#else
|
|
+ temp_r = alpha_r * x[ix] + alpha_i * x[ix+1];
|
|
+ temp_i = alpha_r * x[ix+1] - alpha_i * x[ix];
|
|
+#endif
|
|
+ iy = 0;
|
|
+ i2=0;
|
|
+
|
|
+ for (i=0; i<m; i++)
|
|
+ {
|
|
+#if !defined(CONJ)
|
|
+
|
|
+#if !defined(XCONJ)
|
|
+ y[iy] += temp_r * a_ptr[i2] - temp_i * a_ptr[i2+1];
|
|
+ y[iy+1] += temp_r * a_ptr[i2+1] + temp_i * a_ptr[i2];
|
|
+#else
|
|
+ y[iy] += temp_r * a_ptr[i2] + temp_i * a_ptr[i2+1];
|
|
+ y[iy+1] += temp_r * a_ptr[i2+1] - temp_i * a_ptr[i2];
|
|
+#endif
|
|
+
|
|
+#else
|
|
+
|
|
+#if !defined(XCONJ)
|
|
+ y[iy] += temp_r * a_ptr[i2] + temp_i * a_ptr[i2+1];
|
|
+ y[iy+1] -= temp_r * a_ptr[i2+1] - temp_i * a_ptr[i2];
|
|
+#else
|
|
+ y[iy] += temp_r * a_ptr[i2] - temp_i * a_ptr[i2+1];
|
|
+ y[iy+1] -= temp_r * a_ptr[i2+1] + temp_i * a_ptr[i2];
|
|
+#endif
|
|
+
|
|
+#endif
|
|
+ i2 += 2;
|
|
+ iy += 2;
|
|
+ }
|
|
+ a_ptr += lda2;
|
|
+ ix += 2;
|
|
+ }
|
|
+
|
|
+ return(0);
|
|
+
|
|
+ }
|
|
+
|
|
+
|
|
+ inc_x2 = 2 * inc_x;
|
|
+ inc_y2 = 2 * inc_y;
|
|
+
|
|
+ for (j=0; j<n; j++)
|
|
+ {
|
|
+
|
|
+#if !defined(XCONJ)
|
|
+ temp_r = alpha_r * x[ix] - alpha_i * x[ix+1];
|
|
+ temp_i = alpha_r * x[ix+1] + alpha_i * x[ix];
|
|
+#else
|
|
+ temp_r = alpha_r * x[ix] + alpha_i * x[ix+1];
|
|
+ temp_i = alpha_r * x[ix+1] - alpha_i * x[ix];
|
|
+#endif
|
|
+ iy = 0;
|
|
+ i2=0;
|
|
+
|
|
+ for (i=0; i<m; i++)
|
|
+ {
|
|
+#if !defined(CONJ)
|
|
+
|
|
+#if !defined(XCONJ)
|
|
+ y[iy] += temp_r * a_ptr[i2] - temp_i * a_ptr[i2+1];
|
|
+ y[iy+1] += temp_r * a_ptr[i2+1] + temp_i * a_ptr[i2];
|
|
+#else
|
|
+ y[iy] += temp_r * a_ptr[i2] + temp_i * a_ptr[i2+1];
|
|
+ y[iy+1] += temp_r * a_ptr[i2+1] - temp_i * a_ptr[i2];
|
|
+#endif
|
|
+
|
|
+#else
|
|
+
|
|
+#if !defined(XCONJ)
|
|
+ y[iy] += temp_r * a_ptr[i2] + temp_i * a_ptr[i2+1];
|
|
+ y[iy+1] -= temp_r * a_ptr[i2+1] - temp_i * a_ptr[i2];
|
|
+#else
|
|
+ y[iy] += temp_r * a_ptr[i2] - temp_i * a_ptr[i2+1];
|
|
+ y[iy+1] -= temp_r * a_ptr[i2+1] + temp_i * a_ptr[i2];
|
|
+#endif
|
|
+
|
|
+#endif
|
|
+ i2 += 2;
|
|
+ iy += inc_y2;
|
|
+ }
|
|
+ a_ptr += lda2;
|
|
+ ix += inc_x2;
|
|
+ }
|
|
+
|
|
+
|
|
+ return(0);
|
|
+}
|
|
+
|
|
+
|
|
diff --git a/kernel/riscv64/zgemv_t.c b/kernel/riscv64/zgemv_t.c
|
|
new file mode 100644
|
|
index 00000000..1239cf3f
|
|
--- /dev/null
|
|
+++ b/kernel/riscv64/zgemv_t.c
|
|
@@ -0,0 +1,140 @@
|
|
+/***************************************************************************
|
|
+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;
|
|
+
|
|
+ iy = 0;
|
|
+ a_ptr = a;
|
|
+
|
|
+ if ( inc_x == 1 && inc_y == 1 )
|
|
+ {
|
|
+
|
|
+ for (j=0; j<n; j++)
|
|
+ {
|
|
+ temp_r = 0.0;
|
|
+ temp_i = 0.0;
|
|
+ ix = 0;
|
|
+ i2=0;
|
|
+
|
|
+ for (i=0; i<m; i++)
|
|
+ {
|
|
+
|
|
+#if ( !defined(CONJ) && !defined(XCONJ) ) || ( defined(CONJ) && defined(XCONJ) )
|
|
+ temp_r += a_ptr[i2] * x[ix] - a_ptr[i2+1] * x[ix+1];
|
|
+ temp_i += a_ptr[i2] * x[ix+1] + a_ptr[i2+1] * x[ix];
|
|
+#else
|
|
+ temp_r += a_ptr[i2] * x[ix] + a_ptr[i2+1] * x[ix+1];
|
|
+ temp_i += a_ptr[i2] * x[ix+1] - a_ptr[i2+1] * x[ix];
|
|
+#endif
|
|
+
|
|
+ i2 += 2;
|
|
+ ix += 2;
|
|
+ }
|
|
+
|
|
+#if !defined(XCONJ)
|
|
+ y[iy] += alpha_r * temp_r - alpha_i * temp_i;
|
|
+ y[iy+1] += alpha_r * temp_i + alpha_i * temp_r;
|
|
+#else
|
|
+ y[iy] += alpha_r * temp_r + alpha_i * temp_i;
|
|
+ y[iy+1] -= alpha_r * temp_i - alpha_i * temp_r;
|
|
+#endif
|
|
+
|
|
+ a_ptr += lda2;
|
|
+ iy += 2;
|
|
+ }
|
|
+
|
|
+ return(0);
|
|
+
|
|
+ }
|
|
+
|
|
+
|
|
+ inc_x2 = 2 * inc_x;
|
|
+ inc_y2 = 2 * inc_y;
|
|
+
|
|
+ for (j=0; j<n; j++)
|
|
+ {
|
|
+ temp_r = 0.0;
|
|
+ temp_i = 0.0;
|
|
+ ix = 0;
|
|
+ i2=0;
|
|
+
|
|
+ for (i=0; i<m; i++)
|
|
+ {
|
|
+
|
|
+#if ( !defined(CONJ) && !defined(XCONJ) ) || ( defined(CONJ) && defined(XCONJ) )
|
|
+ temp_r += a_ptr[i2] * x[ix] - a_ptr[i2+1] * x[ix+1];
|
|
+ temp_i += a_ptr[i2] * x[ix+1] + a_ptr[i2+1] * x[ix];
|
|
+#else
|
|
+ temp_r += a_ptr[i2] * x[ix] + a_ptr[i2+1] * x[ix+1];
|
|
+ temp_i += a_ptr[i2] * x[ix+1] - a_ptr[i2+1] * x[ix];
|
|
+#endif
|
|
+
|
|
+ i2 += 2;
|
|
+ ix += inc_x2;
|
|
+ }
|
|
+
|
|
+#if !defined(XCONJ)
|
|
+ y[iy] += alpha_r * temp_r - alpha_i * temp_i;
|
|
+ y[iy+1] += alpha_r * temp_i + alpha_i * temp_r;
|
|
+#else
|
|
+ y[iy] += alpha_r * temp_r + alpha_i * temp_i;
|
|
+ y[iy+1] -= alpha_r * temp_i - alpha_i * temp_r;
|
|
+#endif
|
|
+
|
|
+ a_ptr += lda2;
|
|
+ iy += inc_y2;
|
|
+ }
|
|
+
|
|
+ return(0);
|
|
+
|
|
+}
|
|
+
|
|
+
|
|
+
|
|
diff --git a/kernel/riscv64/znrm2.c b/kernel/riscv64/znrm2.c
|
|
new file mode 100644
|
|
index 00000000..fc1c8b54
|
|
--- /dev/null
|
|
+++ b/kernel/riscv64/znrm2.c
|
|
@@ -0,0 +1,106 @@
|
|
+/***************************************************************************
|
|
+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 <math.h>
|
|
+
|
|
+#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/kernel/riscv64/zomatcopy_cn.c b/kernel/riscv64/zomatcopy_cn.c
|
|
new file mode 100644
|
|
index 00000000..f5a7a628
|
|
--- /dev/null
|
|
+++ b/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<cols ; i++ )
|
|
+ {
|
|
+ ia = 0;
|
|
+
|
|
+ for(j=0; j<rows; j++)
|
|
+ {
|
|
+ bptr[ia] = alpha_r * aptr[ia] - alpha_i * aptr[ia+1];
|
|
+ bptr[ia+1] = alpha_r * aptr[ia+1] + alpha_i * aptr[ia];
|
|
+ ia+=2;
|
|
+ }
|
|
+ aptr += lda;
|
|
+ bptr += ldb;
|
|
+ }
|
|
+
|
|
+ return(0);
|
|
+
|
|
+}
|
|
+
|
|
+
|
|
diff --git a/kernel/riscv64/zomatcopy_cnc.c b/kernel/riscv64/zomatcopy_cnc.c
|
|
new file mode 100644
|
|
index 00000000..210c3f71
|
|
--- /dev/null
|
|
+++ b/kernel/riscv64/zomatcopy_cnc.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.
|
|
+*****************************************************************************/
|
|
+
|
|
+#include "common.h"
|
|
+
|
|
+/*****************************************************
|
|
+ * 2014/06/09 Saar
|
|
+ *
|
|
+ * Order ColMajor
|
|
+ * No Trans, conjugate
|
|
+ *
|
|
+******************************************************/
|
|
+
|
|
+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<cols ; i++ )
|
|
+ {
|
|
+ ia = 0;
|
|
+
|
|
+ for(j=0; j<rows; j++)
|
|
+ {
|
|
+ bptr[ia] = alpha_r * aptr[ia] + alpha_i * aptr[ia+1];
|
|
+ bptr[ia+1] = - alpha_r * aptr[ia+1] + alpha_i * aptr[ia];
|
|
+ ia += 2;
|
|
+ }
|
|
+ aptr += lda;
|
|
+ bptr += ldb;
|
|
+ }
|
|
+
|
|
+ return(0);
|
|
+
|
|
+}
|
|
+
|
|
+
|
|
diff --git a/kernel/riscv64/zomatcopy_ct.c b/kernel/riscv64/zomatcopy_ct.c
|
|
new file mode 100644
|
|
index 00000000..38bc9b9f
|
|
--- /dev/null
|
|
+++ b/kernel/riscv64/zomatcopy_ct.c
|
|
@@ -0,0 +1,71 @@
|
|
+/***************************************************************************
|
|
+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
|
|
+ * 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,ib;
|
|
+ FLOAT *aptr,*bptr;
|
|
+
|
|
+ if ( rows <= 0 ) return(0);
|
|
+ if ( cols <= 0 ) return(0);
|
|
+
|
|
+ aptr = a;
|
|
+
|
|
+ lda *= 2;
|
|
+ ldb *= 2;
|
|
+ ib = 0;
|
|
+ for ( i=0; i<cols ; i++ )
|
|
+ {
|
|
+ bptr = &b[ib];
|
|
+ ia = 0;
|
|
+
|
|
+ for(j=0; j<rows; j++)
|
|
+ {
|
|
+ bptr[0] = alpha_r * aptr[ia] - alpha_i * aptr[ia+1];
|
|
+ bptr[1] = alpha_r * aptr[ia+1] + alpha_i * aptr[ia];
|
|
+ ia += 2;
|
|
+ bptr += ldb;
|
|
+ }
|
|
+ aptr += lda;
|
|
+ ib += 2;
|
|
+ }
|
|
+
|
|
+ return(0);
|
|
+
|
|
+}
|
|
+
|
|
+
|
|
diff --git a/kernel/riscv64/zomatcopy_ctc.c b/kernel/riscv64/zomatcopy_ctc.c
|
|
new file mode 100644
|
|
index 00000000..34e7e919
|
|
--- /dev/null
|
|
+++ b/kernel/riscv64/zomatcopy_ctc.c
|
|
@@ -0,0 +1,71 @@
|
|
+/***************************************************************************
|
|
+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
|
|
+ * Trans, conjugate
|
|
+ *
|
|
+******************************************************/
|
|
+
|
|
+int CNAME(BLASLONG rows, BLASLONG cols, FLOAT alpha_r, FLOAT alpha_i, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG ldb)
|
|
+{
|
|
+ BLASLONG i,j,ia,ib;
|
|
+ FLOAT *aptr,*bptr;
|
|
+
|
|
+ if ( rows <= 0 ) return(0);
|
|
+ if ( cols <= 0 ) return(0);
|
|
+
|
|
+ aptr = a;
|
|
+
|
|
+ lda *= 2;
|
|
+ ldb *= 2;
|
|
+ ib = 0;
|
|
+ for ( i=0; i<cols ; i++ )
|
|
+ {
|
|
+ bptr = &b[ib];
|
|
+ ia = 0;
|
|
+
|
|
+ for(j=0; j<rows; j++)
|
|
+ {
|
|
+ bptr[0] = alpha_r * aptr[ia] + alpha_i * aptr[ia+1];
|
|
+ bptr[1] = - alpha_r * aptr[ia+1] + alpha_i * aptr[ia];
|
|
+ ia += 2;
|
|
+ bptr += ldb;
|
|
+ }
|
|
+ aptr += lda;
|
|
+ ib += 2;
|
|
+ }
|
|
+
|
|
+ return(0);
|
|
+
|
|
+}
|
|
+
|
|
+
|
|
diff --git a/kernel/riscv64/zomatcopy_rn.c b/kernel/riscv64/zomatcopy_rn.c
|
|
new file mode 100644
|
|
index 00000000..ded381e1
|
|
--- /dev/null
|
|
+++ b/kernel/riscv64/zomatcopy_rn.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 rowMajor
|
|
+ * 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<rows ; i++ )
|
|
+ {
|
|
+ ia = 0;
|
|
+
|
|
+ for(j=0; j<cols; j++)
|
|
+ {
|
|
+ bptr[ia] = alpha_r * aptr[ia] - alpha_i * aptr[ia+1];
|
|
+ bptr[ia+1] = alpha_r * aptr[ia+1] + alpha_i * aptr[ia];
|
|
+ ia += 2;
|
|
+ }
|
|
+ aptr += lda;
|
|
+ bptr += ldb;
|
|
+ }
|
|
+
|
|
+ return(0);
|
|
+
|
|
+}
|
|
+
|
|
+
|
|
diff --git a/kernel/riscv64/zomatcopy_rnc.c b/kernel/riscv64/zomatcopy_rnc.c
|
|
new file mode 100644
|
|
index 00000000..fc27f17e
|
|
--- /dev/null
|
|
+++ b/kernel/riscv64/zomatcopy_rnc.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.
|
|
+*****************************************************************************/
|
|
+
|
|
+#include "common.h"
|
|
+
|
|
+/*****************************************************
|
|
+ * 2014/06/09 Saar
|
|
+ *
|
|
+ * Order rowMajor
|
|
+ * No Trans , conjugate
|
|
+ *
|
|
+******************************************************/
|
|
+
|
|
+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<rows ; i++ )
|
|
+ {
|
|
+ ia = 0;
|
|
+ for(j=0; j<cols; j++)
|
|
+ {
|
|
+ bptr[ia] = alpha_r * aptr[ia] + alpha_i * aptr[ia+1];
|
|
+ bptr[ia+1] = - alpha_r * aptr[ia+1] + alpha_i * aptr[ia];
|
|
+ ia += 2;
|
|
+ }
|
|
+ aptr += lda;
|
|
+ bptr += ldb;
|
|
+ }
|
|
+
|
|
+ return(0);
|
|
+
|
|
+}
|
|
+
|
|
+
|
|
diff --git a/kernel/riscv64/zomatcopy_rt.c b/kernel/riscv64/zomatcopy_rt.c
|
|
new file mode 100644
|
|
index 00000000..d34db24e
|
|
--- /dev/null
|
|
+++ b/kernel/riscv64/zomatcopy_rt.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.
|
|
+*****************************************************************************/
|
|
+
|
|
+#include "common.h"
|
|
+
|
|
+/*****************************************************
|
|
+ * 2014/06/09 Saar
|
|
+ *
|
|
+ * Order rowMajor
|
|
+ * 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,ib;
|
|
+ FLOAT *aptr,*bptr;
|
|
+
|
|
+ if ( rows <= 0 ) return(0);
|
|
+ if ( cols <= 0 ) return(0);
|
|
+
|
|
+ aptr = a;
|
|
+
|
|
+ lda *= 2;
|
|
+ ldb *= 2;
|
|
+ ib = 0;
|
|
+
|
|
+ for ( i=0; i<rows ; i++ )
|
|
+ {
|
|
+ bptr = &b[ib];
|
|
+ ia = 0;
|
|
+
|
|
+ for(j=0; j<cols; j++)
|
|
+ {
|
|
+ bptr[0] = alpha_r * aptr[ia] - alpha_i * aptr[ia+1];
|
|
+ bptr[1] = alpha_r * aptr[ia+1] + alpha_i * aptr[ia];
|
|
+ ia += 2;
|
|
+ bptr += ldb;
|
|
+ }
|
|
+ aptr += lda;
|
|
+ ib += 2;
|
|
+ }
|
|
+
|
|
+ return(0);
|
|
+
|
|
+}
|
|
+
|
|
+
|
|
diff --git a/kernel/riscv64/zomatcopy_rtc.c b/kernel/riscv64/zomatcopy_rtc.c
|
|
new file mode 100644
|
|
index 00000000..a80ee6df
|
|
--- /dev/null
|
|
+++ b/kernel/riscv64/zomatcopy_rtc.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.
|
|
+*****************************************************************************/
|
|
+
|
|
+#include "common.h"
|
|
+
|
|
+/*****************************************************
|
|
+ * 2014/06/09 Saar
|
|
+ *
|
|
+ * Order rowMajor
|
|
+ * Trans, conjugate
|
|
+ *
|
|
+******************************************************/
|
|
+
|
|
+int CNAME(BLASLONG rows, BLASLONG cols, FLOAT alpha_r, FLOAT alpha_i, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG ldb)
|
|
+{
|
|
+ BLASLONG i,j,ia,ib;
|
|
+ FLOAT *aptr,*bptr;
|
|
+
|
|
+ if ( rows <= 0 ) return(0);
|
|
+ if ( cols <= 0 ) return(0);
|
|
+
|
|
+ aptr = a;
|
|
+
|
|
+ lda *= 2;
|
|
+ ldb *= 2;
|
|
+ ib = 0;
|
|
+
|
|
+ for ( i=0; i<rows ; i++ )
|
|
+ {
|
|
+ bptr = &b[ib];
|
|
+ ia = 0;
|
|
+
|
|
+ for(j=0; j<cols; j++)
|
|
+ {
|
|
+ bptr[0] = alpha_r * aptr[ia] + alpha_i * aptr[ia+1];
|
|
+ bptr[1] = - alpha_r * aptr[ia+1] + alpha_i * aptr[ia];
|
|
+ ia += 2;
|
|
+ bptr += ldb;
|
|
+ }
|
|
+ aptr += lda;
|
|
+ ib += 2;
|
|
+ }
|
|
+
|
|
+ return(0);
|
|
+
|
|
+}
|
|
+
|
|
+
|
|
diff --git a/kernel/riscv64/zrot.c b/kernel/riscv64/zrot.c
|
|
new file mode 100644
|
|
index 00000000..98be68db
|
|
--- /dev/null
|
|
+++ b/kernel/riscv64/zrot.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.
|
|
+*****************************************************************************/
|
|
+
|
|
+/**************************************************************************************
|
|
+* 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, FLOAT c, FLOAT s)
|
|
+{
|
|
+ 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] = c*x[ix] + s*y[iy] ;
|
|
+ temp[1] = c*x[ix+1] + s*y[iy+1] ;
|
|
+ y[iy] = c*y[iy] - s*x[ix] ;
|
|
+ y[iy+1] = c*y[iy+1] - s*x[ix+1] ;
|
|
+ x[ix] = temp[0] ;
|
|
+ x[ix+1] = temp[1] ;
|
|
+
|
|
+ ix += inc_x2 ;
|
|
+ iy += inc_y2 ;
|
|
+ i++ ;
|
|
+
|
|
+ }
|
|
+ return(0);
|
|
+
|
|
+}
|
|
+
|
|
+
|
|
diff --git a/kernel/riscv64/zscal.c b/kernel/riscv64/zscal.c
|
|
new file mode 100644
|
|
index 00000000..0521aaa0
|
|
--- /dev/null
|
|
+++ b/kernel/riscv64/zscal.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/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_r,FLOAT da_i, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y, FLOAT *dummy, BLASLONG dummy2)
|
|
+{
|
|
+ BLASLONG i=0;
|
|
+ BLASLONG inc_x2;
|
|
+ BLASLONG ip = 0;
|
|
+ FLOAT temp;
|
|
+
|
|
+ if ( (n <= 0) || (inc_x <= 0))
|
|
+ return(0);
|
|
+
|
|
+
|
|
+ inc_x2 = 2 * inc_x;
|
|
+ for ( i=0; i<n; i++ )
|
|
+ {
|
|
+ if ( da_r == 0.0 )
|
|
+ {
|
|
+ if ( da_i == 0.0 )
|
|
+ {
|
|
+ temp = 0.0;
|
|
+ x[ip+1] = 0.0 ;
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ temp = - da_i * x[ip+1] ;
|
|
+ x[ip+1] = da_i * x[ip] ;
|
|
+ }
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ if ( da_i == 0.0 )
|
|
+ {
|
|
+ temp = da_r * x[ip] ;
|
|
+ x[ip+1] = da_r * x[ip+1];
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ temp = da_r * x[ip] - da_i * x[ip+1] ;
|
|
+ x[ip+1] = da_r * x[ip+1] + da_i * x[ip] ;
|
|
+ }
|
|
+ }
|
|
+ x[ip] = temp;
|
|
+
|
|
+ ip += inc_x2;
|
|
+ }
|
|
+
|
|
+ return(0);
|
|
+
|
|
+}
|
|
+
|
|
+
|
|
diff --git a/kernel/riscv64/zswap.c b/kernel/riscv64/zswap.c
|
|
new file mode 100644
|
|
index 00000000..ae4760ae
|
|
--- /dev/null
|
|
+++ b/kernel/riscv64/zswap.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 <stdio.h>
|
|
+
|
|
+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/lapack/laswp/riscv64/Makefile b/lapack/laswp/riscv64/Makefile
|
|
new file mode 100644
|
|
index 00000000..75411deb
|
|
--- /dev/null
|
|
+++ b/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/param.h b/param.h
|
|
index 055749dc..4a776501 100644
|
|
--- a/param.h
|
|
+++ b/param.h
|
|
@@ -2509,6 +2509,45 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
#define SYMV_P 16
|
|
#endif
|
|
|
|
+#ifdef RISCV64_GENERIC
|
|
+#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
|