From 5f85e9d9dca301a2360932be496d4790929f4cf9 Mon Sep 17 00:00:00 2001
From: David Abdurachmanov <david.abdurachmanov@sifive.com>
Date: Mon, 4 May 2020 08:28:35 +0300
Subject: [PATCH] Add the latest RISC-V development

Signed-off-by: David Abdurachmanov <david.abdurachmanov@sifive.com>
---
 openblas.spec |   15 +-
 riscv64.patch | 4657 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 4671 insertions(+), 1 deletion(-)
 create mode 100644 riscv64.patch

diff --git a/openblas.spec b/openblas.spec
index dfe496d..fcbf2fb 100644
--- a/openblas.spec
+++ b/openblas.spec
@@ -32,6 +32,9 @@ Patch3:         openblas-0.3.7-tests.patch
 # Fix C++ compatibility (BZ #1820131)
 Patch4:         https://github.com/xianyi/OpenBLAS/commit/ee2e758278b5d82b7242f505ea694f082ef65879.patch
 
+# RISC-V 64-bit support (generated from risc-v upstream branch)
+Patch10:        riscv64.patch
+
 BuildRequires:  gcc
 BuildRequires:  gcc-c++
 BuildRequires:  gcc-gfortran
@@ -250,6 +253,10 @@ cd OpenBLAS-%{version}
 %patch3 -p1 -b .tests
 %patch4 -p1 -b .cplusplus
 
+%ifarch riscv64
+%patch10 -p1 -b .riscv64
+%endif
+
 # Fix source permissions
 find -name \*.f -exec chmod 644 {} \;
 
@@ -391,7 +398,7 @@ TARGET="TARGET=ARMV8 DYNAMIC_ARCH=1 DYNAMIC_OLDER=1"
 TARGET="TARGET=ZARCH_GENERIC DYNAMIC_ARCH=1 DYNAMIC_OLDER=1"
 %endif
 %ifarch riscv64
-TARGET="TARGET=RISCV64 DYNAMIC_ARCH=0"
+TARGET="TARGET=RISCV64_GENERIC DYNAMIC_ARCH=0"
 %endif
 
 %if 0%{?rhel} == 5
@@ -457,6 +464,9 @@ suffix=""
 %ifarch armv7hl
 suffix="_armv7"
 %endif
+%ifarch riscv64
+suffix="_riscv64_generic"
+%endif
 slibname=`basename %{buildroot}%{_libdir}/libopenblas${suffix}-*.so .so`
 mv %{buildroot}%{_libdir}/${slibname}.a %{buildroot}%{_libdir}/lib%{name}.a
 if [[ "$suffix" != "" ]]; then
@@ -675,6 +685,9 @@ rm -rf %{buildroot}%{_libdir}/pkgconfig
 %endif
 
 %changelog
+* Mon May 04 2020 David Abdurachmanov <david.abdurachmanvo@sifive.com> - 0.3.9-2.0.riscv64
+- Enable RISC-V 64-bit (riscv64) support
+
 * Thu Apr 02 2020 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.3.9-2
 - Patch for BZ #1820131.
 
diff --git a/riscv64.patch b/riscv64.patch
new file mode 100644
index 0000000..ef8c97b
--- /dev/null
+++ b/riscv64.patch
@@ -0,0 +1,4657 @@
+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