MIPS P5600(32 bit) and I6400(64 bit) cores support added.
authorShivraj Patil <shivraj.patil@imgtec.com>
Fri, 22 Apr 2016 08:33:18 +0000 (14:03 +0530)
committerShivraj Patil <shivraj.patil@imgtec.com>
Fri, 22 Apr 2016 08:33:18 +0000 (14:03 +0530)
Seperated mips and mips64 files.
Configurations support for mips 32 bit.

Signed-off-by: Shivraj Patil <shivraj.patil@imgtec.com>
65 files changed:
Makefile.mips [new file with mode: 0644]
Makefile.system
TargetList.txt
c_check
common.h
common_mips.h [new file with mode: 0644]
common_mips64.h
cpuid_mips.c
cpuid_mips64.c [new file with mode: 0644]
ctest.c
getarch.c
kernel/mips/KERNEL [new file with mode: 0644]
kernel/mips/KERNEL.P5600 [new file with mode: 0644]
kernel/mips/Makefile [new file with mode: 0644]
kernel/mips/amax.c [new file with mode: 0644]
kernel/mips/amin.c [new file with mode: 0644]
kernel/mips/asum.c [new file with mode: 0644]
kernel/mips/axpby.c [new file with mode: 0644]
kernel/mips/axpy.c [new file with mode: 0644]
kernel/mips/copy.c [new file with mode: 0644]
kernel/mips/dot.c [new file with mode: 0644]
kernel/mips/gemv_n.c [new file with mode: 0644]
kernel/mips/gemv_t.c [new file with mode: 0644]
kernel/mips/iamax.c [new file with mode: 0644]
kernel/mips/iamin.c [new file with mode: 0644]
kernel/mips/imax.c [new file with mode: 0644]
kernel/mips/imin.c [new file with mode: 0644]
kernel/mips/izamax.c [new file with mode: 0644]
kernel/mips/izamin.c [new file with mode: 0644]
kernel/mips/max.c [new file with mode: 0644]
kernel/mips/min.c [new file with mode: 0644]
kernel/mips/nrm2.c [new file with mode: 0644]
kernel/mips/omatcopy_cn.c [new file with mode: 0644]
kernel/mips/omatcopy_ct.c [new file with mode: 0644]
kernel/mips/omatcopy_rn.c [new file with mode: 0644]
kernel/mips/omatcopy_rt.c [new file with mode: 0644]
kernel/mips/rot.c [new file with mode: 0644]
kernel/mips/scal.c [new file with mode: 0644]
kernel/mips/swap.c [new file with mode: 0644]
kernel/mips/symv_L.c [new file with mode: 0644]
kernel/mips/symv_U.c [new file with mode: 0644]
kernel/mips/zamax.c [new file with mode: 0644]
kernel/mips/zamin.c [new file with mode: 0644]
kernel/mips/zasum.c [new file with mode: 0644]
kernel/mips/zaxpby.c [new file with mode: 0644]
kernel/mips/zaxpy.c [new file with mode: 0644]
kernel/mips/zcopy.c [new file with mode: 0644]
kernel/mips/zdot.c [new file with mode: 0644]
kernel/mips/zgemv_n.c [new file with mode: 0644]
kernel/mips/zgemv_t.c [new file with mode: 0644]
kernel/mips/znrm2.c [new file with mode: 0644]
kernel/mips/zomatcopy_cn.c [new file with mode: 0644]
kernel/mips/zomatcopy_cnc.c [new file with mode: 0644]
kernel/mips/zomatcopy_ct.c [new file with mode: 0644]
kernel/mips/zomatcopy_ctc.c [new file with mode: 0644]
kernel/mips/zomatcopy_rn.c [new file with mode: 0644]
kernel/mips/zomatcopy_rnc.c [new file with mode: 0644]
kernel/mips/zomatcopy_rt.c [new file with mode: 0644]
kernel/mips/zomatcopy_rtc.c [new file with mode: 0644]
kernel/mips/zrot.c [new file with mode: 0644]
kernel/mips/zscal.c [new file with mode: 0644]
kernel/mips/zswap.c [new file with mode: 0644]
kernel/mips64/KERNEL.I6400 [new file with mode: 0644]
lapack/laswp/mips/Makefile [new file with mode: 0644]
param.h

diff --git a/Makefile.mips b/Makefile.mips
new file mode 100644 (file)
index 0000000..05ea9c6
--- /dev/null
@@ -0,0 +1,3 @@
+ifdef BINARY64
+else
+endif
index b89f60e..73361fe 100644 (file)
@@ -462,7 +462,7 @@ endif
 endif
 endif
 
-ifeq ($(ARCH), mips64)
+ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
 NO_BINARY_MODE = 1
 endif
 
@@ -502,11 +502,11 @@ endif
 
 ifdef NO_BINARY_MODE
 
-ifeq ($(ARCH), mips64)
+ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
 ifdef BINARY64
 CCOMMON_OPT += -mabi=64
 else
-CCOMMON_OPT += -mabi=n32
+CCOMMON_OPT += -mabi=32
 endif
 BINARY_DEFINED = 1
 endif
@@ -589,11 +589,11 @@ ifneq ($(NO_LAPACK), 1)
 EXTRALIB += -lgfortran
 endif
 ifdef NO_BINARY_MODE
-ifeq ($(ARCH), mips64)
+ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
 ifdef BINARY64
 FCOMMON_OPT += -mabi=64
 else
-FCOMMON_OPT += -mabi=n32
+FCOMMON_OPT += -mabi=32
 endif
 endif
 else
@@ -678,7 +678,7 @@ endif
 endif
 endif
 
-ifneq ($(ARCH), mips64)
+ifeq ($(filter $(ARCH),mips64 mips))
 ifndef BINARY64
 FCOMMON_OPT += -m32
 else
@@ -688,7 +688,7 @@ else
 ifdef BINARY64
 FCOMMON_OPT += -mabi=64
 else
-FCOMMON_OPT += -mabi=n32
+FCOMMON_OPT += -mabi=32
 endif
 endif
 
@@ -707,7 +707,7 @@ endif
 endif
 endif
 
-ifeq ($(ARCH), mips64)
+ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
 ifndef BINARY64
 FCOMMON_OPT += -n32
 else
@@ -737,7 +737,7 @@ endif
 
 ifeq ($(C_COMPILER), OPEN64)
 
-ifeq ($(ARCH), mips64)
+ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
 ifndef BINARY64
 CCOMMON_OPT += -n32
 else
index dc1e087..248f643 100644 (file)
@@ -53,26 +53,30 @@ PPC440
 PPC440FP2
 CELL
 
-3.MIPS64 CPU:
+3.MIPS CPU:
+P5600
+
+4.MIPS64 CPU:
 SICORTEX
 LOONGSON3A
 LOONGSON3B
+I6400
 
-4.IA64 CPU:
+5.IA64 CPU:
 ITANIUM2
 
-5.SPARC CPU:
+6.SPARC CPU:
 SPARC
 SPARCV7
 
-6.ARM CPU:
+7.ARM CPU:
 CORTEXA15
 CORTEXA9
 ARMV7
 ARMV6
 ARMV5
 
-7.ARM 64-bit CPU:
+8.ARM 64-bit CPU:
 ARMV8
 CORTEXA57
 
diff --git a/c_check b/c_check
index bcf4c2c..d624472 100644 (file)
--- a/c_check
+++ b/c_check
@@ -63,7 +63,7 @@ $os = Android         if ($data =~ /OS_ANDROID/);
 $architecture = x86    if ($data =~ /ARCH_X86/);
 $architecture = x86_64 if ($data =~ /ARCH_X86_64/);
 $architecture = power  if ($data =~ /ARCH_POWER/);
-$architecture = mips32 if ($data =~ /ARCH_MIPS32/);
+$architecture = mips   if ($data =~ /ARCH_MIPS/);
 $architecture = mips64 if ($data =~ /ARCH_MIPS64/);
 $architecture = alpha  if ($data =~ /ARCH_ALPHA/);
 $architecture = sparc  if ($data =~ /ARCH_SPARC/);
@@ -79,8 +79,8 @@ if ($os eq "AIX") {
     $defined = 1;
 }
 
-if (($architecture eq "mips32") || ($architecture eq "mips64")) {
-    $compiler_name .= " -mabi=n32" if ($binary eq "32");
+if (($architecture eq "mips") || ($architecture eq "mips64")) {
+    $compiler_name .= " -mabi=32" if ($binary eq "32");
     $compiler_name .= " -mabi=64" if ($binary eq "64");
     $defined = 1;
 }
@@ -155,7 +155,7 @@ if ($?) {
 $architecture = x86    if ($data =~ /ARCH_X86/);
 $architecture = x86_64 if ($data =~ /ARCH_X86_64/);
 $architecture = power  if ($data =~ /ARCH_POWER/);
-$architecture = mips32 if ($data =~ /ARCH_MIPS32/);
+$architecture = mips   if ($data =~ /ARCH_MIPS/);
 $architecture = mips64 if ($data =~ /ARCH_MIPS64/);
 $architecture = alpha  if ($data =~ /ARCH_ALPHA/);
 $architecture = sparc  if ($data =~ /ARCH_SPARC/);
index e045e42..c6f7ea2 100644 (file)
--- a/common.h
+++ b/common.h
@@ -397,6 +397,10 @@ please https://github.com/xianyi/OpenBLAS/issues/246
 #include "common_sparc.h"
 #endif
 
+#ifdef ARCH_MIPS
+#include "common_mips.h"
+#endif
+
 #ifdef ARCH_MIPS64
 #include "common_mips64.h"
 #endif
diff --git a/common_mips.h b/common_mips.h
new file mode 100644 (file)
index 0000000..ae12694
--- /dev/null
@@ -0,0 +1,109 @@
+/*****************************************************************************
+Copyright (c) 2016, 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.
+**********************************************************************************/
+
+#ifndef COMMON_MIPS
+#define COMMON_MIPS
+
+#define MB
+#define WMB
+
+#define INLINE inline
+
+#define RETURN_BY_COMPLEX
+
+#ifndef ASSEMBLER
+
+static void INLINE blas_lock(volatile unsigned long *address){
+
+}
+#define BLAS_LOCK_DEFINED
+
+static inline unsigned int rpcc(void){
+  unsigned long ret;
+
+  __asm__ __volatile__(".set   push    \n"
+          "rdhwr %0, $30  \n"
+          ".set pop" : "=r"(ret) : : "memory");
+
+  return ret;
+}
+#define RPCC_DEFINED
+
+static inline int blas_quickdivide(blasint x, blasint y){
+  return x / y;
+}
+
+#define GET_IMAGE(res)
+
+#define GET_IMAGE_CANCEL
+
+#endif
+
+
+#ifndef F_INTERFACE
+#define REALNAME ASMNAME
+#else
+#define REALNAME ASMFNAME
+#endif
+
+#if defined(ASSEMBLER) && !defined(NEEDPARAM)
+
+#define PROLOGUE \
+       .arm             ;\
+       .global REALNAME ;\
+       .func   REALNAME  ;\
+REALNAME:
+
+#define EPILOGUE
+
+#define PROFCODE
+
+#endif
+
+
+#define SEEK_ADDRESS
+
+#ifndef PAGESIZE
+#define PAGESIZE        ( 4 << 10)
+#endif
+#define HUGE_PAGESIZE   ( 4 << 20)
+
+#define BUFFER_SIZE     (16 << 20)
+
+
+#define BASE_ADDRESS (START_ADDRESS - BUFFER_SIZE * MAX_CPU_NUMBER)
+
+#ifndef MAP_ANONYMOUS
+#define MAP_ANONYMOUS MAP_ANON
+#endif
+
+#endif
index f5c0ec7..6078bf3 100644 (file)
@@ -102,7 +102,7 @@ static void INLINE blas_lock(volatile unsigned long *address){
 
 static inline unsigned int rpcc(void){
   unsigned long ret;
-#if defined(LOONGSON3A) || defined(LOONGSON3B)
+
   //  unsigned long long tmp;
   //__asm__ __volatile__("dmfc0 %0, $25, 1": "=r"(tmp):: "memory");
   //ret=tmp;
@@ -111,17 +111,10 @@ static inline unsigned int rpcc(void){
                        "rdhwr %0, $2\n"
                        ".set pop": "=r"(ret):: "memory");
 
-#else
-  __asm__ __volatile__(".set   push    \n"
-          ".set   mips32r2\n"
-          "rdhwr %0, $30  \n"
-          ".set pop" : "=r"(ret) : : "memory");
-#endif
   return ret;
 }
 #define RPCC_DEFINED
 
-#if defined(LOONGSON3A) || defined(LOONGSON3B)
 #ifndef NO_AFFINITY
 #define WHEREAMI
 static inline int WhereAmI(void){
@@ -134,7 +127,6 @@ static inline int WhereAmI(void){
 
 }
 #endif
-#endif
 
 static inline int blas_quickdivide(blasint x, blasint y){
   return x / y;
index 22beff7..15c5895 100644 (file)
@@ -71,15 +71,11 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 /*********************************************************************/
 
 #define CPU_UNKNOWN     0
-#define CPU_SICORTEX    1
-#define CPU_LOONGSON3A  2
-#define CPU_LOONGSON3B  3
+#define CPU_P5600       1
 
 static char *cpuname[] = {
   "UNKOWN",
-  "SICORTEX",
-  "LOONGSON3A",
-  "LOONGSON3B"
+  "P5600"
 };
 
 int detect(void){
@@ -120,7 +116,7 @@ int detect(void){
     if (strstr(p, "loongson3a"))
       return CPU_LOONGSON3A;
   }else{
-    return CPU_SICORTEX;
+    return CPU_UNKNOWN;
   }
   }
   //Check model name for Loongson3
@@ -149,64 +145,40 @@ char *get_corename(void){
 }
 
 void get_architecture(void){
-  printf("MIPS64");
+  printf("MIPS");
 }
 
 void get_subarchitecture(void){
-  if(detect()==CPU_LOONGSON3A) {
-    printf("LOONGSON3A");
-  }else if(detect()==CPU_LOONGSON3B){
-    printf("LOONGSON3B");
+  if(detect()==CPU_P5600){
+    printf("P5600");
   }else{
-    printf("SICORTEX");
+    printf("UNKNOWN");
   }
 }
 
 void get_subdirname(void){
-  printf("mips64");
+  printf("mips");
 }
 
 void get_cpuconfig(void){
-  if(detect()==CPU_LOONGSON3A) {
-    printf("#define LOONGSON3A\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");
-  }else if(detect()==CPU_LOONGSON3B){
-    printf("#define LOONGSON3B\n");
+  if(detect()==CPU_P5600){
+    printf("#define P5600\n");
     printf("#define L1_DATA_SIZE 65536\n");
     printf("#define L1_DATA_LINESIZE 32\n");
-    printf("#define L2_SIZE 512488\n");
+    printf("#define L2_SIZE 1048576\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");
-  }else{
-    printf("#define SICORTEX\n");
-    printf("#define L1_DATA_SIZE 32768\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 32\n");
-    printf("#define DTB_SIZE 4096\n");
     printf("#define L2_ASSOCIATIVE 8\n");
+  }else{
+    printf("#define UNKNOWN\n");
   }
 }
 
 void get_libname(void){
-  if(detect()==CPU_LOONGSON3A) {
-    printf("loongson3a\n");
-  }else if(detect()==CPU_LOONGSON3B) {
-    printf("loongson3b\n");
+  if(detect()==CPU_P5600) {
+    printf("p5600\n");
   }else{
-#ifdef __mips64
-  printf("mips64\n");
-#else
-  printf("mips32\n");
-#endif
+    printf("mips\n");
   }
 }
diff --git a/cpuid_mips64.c b/cpuid_mips64.c
new file mode 100644 (file)
index 0000000..13f1517
--- /dev/null
@@ -0,0 +1,223 @@
+/*****************************************************************************
+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
+#define CPU_SICORTEX    1
+#define CPU_LOONGSON3A  2
+#define CPU_LOONGSON3B  3
+#define CPU_I6400       4
+
+static char *cpuname[] = {
+  "UNKOWN",
+  "SICORTEX",
+  "LOONGSON3A",
+  "LOONGSON3B",
+  "I6400"
+};
+
+int detect(void){
+
+#ifdef linux
+  FILE *infile;
+  char buffer[512], *p;
+
+  p = (char *)NULL;
+  infile = fopen("/proc/cpuinfo", "r");
+  while (fgets(buffer, sizeof(buffer), infile)){
+    if (!strncmp("cpu", buffer, 3)){
+       p = strchr(buffer, ':') + 2;
+#if 0
+       fprintf(stderr, "%s\n", p);
+#endif
+       break;
+      }
+  }
+
+  fclose(infile);
+
+  if(p != NULL){
+  if (strstr(p, "Loongson-3A")){
+    return CPU_LOONGSON3A;
+  }else if(strstr(p, "Loongson-3B")){
+    return CPU_LOONGSON3B;
+  }else if (strstr(p, "Loongson-3")){
+    infile = fopen("/proc/cpuinfo", "r");
+    p = (char *)NULL;
+    while (fgets(buffer, sizeof(buffer), infile)){
+      if (!strncmp("system type", buffer, 11)){
+       p = strchr(buffer, ':') + 2;
+       break;
+      }
+    }
+    fclose(infile);
+    if (strstr(p, "loongson3a"))
+      return CPU_LOONGSON3A;
+  }else{
+    return CPU_SICORTEX;
+  }
+  }
+  //Check model name for Loongson3
+  infile = fopen("/proc/cpuinfo", "r");
+  p = (char *)NULL;
+  while (fgets(buffer, sizeof(buffer), infile)){
+    if (!strncmp("model name", buffer, 10)){
+      p = strchr(buffer, ':') + 2;
+      break;
+    }
+  }
+  fclose(infile);
+  if(p != NULL){
+  if (strstr(p, "Loongson-3A")){
+    return CPU_LOONGSON3A;
+  }else if(strstr(p, "Loongson-3B")){
+    return CPU_LOONGSON3B;
+  }
+  }
+#endif
+    return CPU_UNKNOWN;
+}
+
+char *get_corename(void){
+  return cpuname[detect()];
+}
+
+void get_architecture(void){
+  printf("MIPS64");
+}
+
+void get_subarchitecture(void){
+  if(detect()==CPU_LOONGSON3A) {
+    printf("LOONGSON3A");
+  }else if(detect()==CPU_LOONGSON3B){
+    printf("LOONGSON3B");
+  }else if(detect()==CPU_I6400){
+    printf("I6400");
+  }else{
+    printf("SICORTEX");
+  }
+}
+
+void get_subdirname(void){
+  printf("mips64");
+}
+
+void get_cpuconfig(void){
+  if(detect()==CPU_LOONGSON3A) {
+    printf("#define LOONGSON3A\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");
+  }else if(detect()==CPU_LOONGSON3B){
+    printf("#define LOONGSON3B\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");
+  }else if(detect()==CPU_I6400){
+    printf("#define I6400\n");
+    printf("#define L1_DATA_SIZE 65536\n");
+    printf("#define L1_DATA_LINESIZE 32\n");
+    printf("#define L2_SIZE 1048576\n");
+    printf("#define L2_LINESIZE 32\n");
+    printf("#define DTB_DEFAULT_ENTRIES 64\n");
+    printf("#define DTB_SIZE 4096\n");
+    printf("#define L2_ASSOCIATIVE 8\n");
+  }else{
+    printf("#define SICORTEX\n");
+    printf("#define L1_DATA_SIZE 32768\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 32\n");
+    printf("#define DTB_SIZE 4096\n");
+    printf("#define L2_ASSOCIATIVE 8\n");
+  }
+}
+
+void get_libname(void){
+  if(detect()==CPU_LOONGSON3A) {
+    printf("loongson3a\n");
+  }else if(detect()==CPU_LOONGSON3B) {
+    printf("loongson3b\n");
+  }else if(detect()==CPU_I6400) {
+    printf("i6400\n");
+  }else{
+    printf("mips64\n");
+  }
+}
diff --git a/ctest.c b/ctest.c
index b5c74f1..e0ef46e 100644 (file)
--- a/ctest.c
+++ b/ctest.c
@@ -110,7 +110,7 @@ ARCH_MIPS64
 #endif
 
 #if defined(__mips32) || defined(__mips)
-ARCH_MIPS32
+ARCH_MIPS
 #endif
 
 #ifdef __alpha
index 1e0b086..2f5d18a 100644 (file)
--- a/getarch.c
+++ b/getarch.c
@@ -131,6 +131,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 /* #define FORCE_SICORTEX      */
 /* #define FORCE_LOONGSON3A    */
 /* #define FORCE_LOONGSON3B    */
+/* #define FORCE_I6400         */
+/* #define FORCE_P5600         */
 /* #define FORCE_ITANIUM2      */
 /* #define FORCE_SPARC         */
 /* #define FORCE_SPARCV7       */
@@ -699,6 +701,34 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #else
 #endif
 
+#ifdef FORCE_I6400
+#define FORCE
+#define ARCHITECTURE    "MIPS"
+#define SUBARCHITECTURE "I6400"
+#define SUBDIRNAME      "mips64"
+#define ARCHCONFIG   "-DI6400 " \
+       "-DL1_DATA_SIZE=65536 -DL1_DATA_LINESIZE=32 " \
+       "-DL2_SIZE=1048576 -DL2_LINESIZE=32 " \
+       "-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=8 "
+#define LIBNAME   "i6400"
+#define CORENAME  "I6400"
+#else
+#endif
+
+#ifdef FORCE_P5600
+#define FORCE
+#define ARCHITECTURE    "MIPS"
+#define SUBARCHITECTURE "P5600"
+#define SUBDIRNAME      "mips"
+#define ARCHCONFIG   "-DP5600 " \
+       "-DL1_DATA_SIZE=65536 -DL1_DATA_LINESIZE=32 " \
+       "-DL2_SIZE=1048576 -DL2_LINESIZE=32 " \
+       "-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=8 "
+#define LIBNAME   "p5600"
+#define CORENAME  "P5600"
+#else
+#endif
+
 #ifdef FORCE_ITANIUM2
 #define FORCE
 #define ARCHITECTURE    "IA64"
@@ -888,7 +918,11 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #endif
 
 #ifdef __mips__
+#ifdef __mips64
+#include "cpuid_mips64.c"
+#else
 #include "cpuid_mips.c"
+#endif
 #define OPENBLAS_SUPPORTED
 #endif
 
diff --git a/kernel/mips/KERNEL b/kernel/mips/KERNEL
new file mode 100644 (file)
index 0000000..aeccfbf
--- /dev/null
@@ -0,0 +1,46 @@
+ifndef SNRM2KERNEL
+SNRM2KERNEL = nrm2.c
+endif
+
+ifndef DNRM2KERNEL
+DNRM2KERNEL = nrm2.c
+endif
+
+ifndef CNRM2KERNEL
+CNRM2KERNEL = znrm2.c
+endif
+
+ifndef ZNRM2KERNEL
+ZNRM2KERNEL = znrm2.c
+endif
+
+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/mips/KERNEL.P5600 b/kernel/mips/KERNEL.P5600
new file mode 100644 (file)
index 0000000..09064fe
--- /dev/null
@@ -0,0 +1,130 @@
+SAMAXKERNEL  = ../mips/amax.c
+DAMAXKERNEL  = ../mips/amax.c
+CAMAXKERNEL  = ../mips/zamax.c
+ZAMAXKERNEL  = ../mips/zamax.c
+
+SAMINKERNEL  = ../mips/amin.c
+DAMINKERNEL  = ../mips/amin.c
+CAMINKERNEL  = ../mips/zamin.c
+ZAMINKERNEL  = ../mips/zamin.c
+
+SMAXKERNEL   = ../mips/max.c
+DMAXKERNEL   = ../mips/max.c
+
+SMINKERNEL   = ../mips/min.c
+DMINKERNEL   = ../mips/min.c
+
+ISAMAXKERNEL = ../mips/iamax.c
+IDAMAXKERNEL = ../mips/iamax.c
+ICAMAXKERNEL = ../mips/izamax.c
+IZAMAXKERNEL = ../mips/izamax.c
+
+ISAMINKERNEL = ../mips/iamin.c
+IDAMINKERNEL = ../mips/iamin.c
+ICAMINKERNEL = ../mips/izamin.c
+IZAMINKERNEL = ../mips/izamin.c
+
+ISMAXKERNEL  = ../mips/imax.c
+IDMAXKERNEL  = ../mips/imax.c
+
+ISMINKERNEL  = ../mips/imin.c
+IDMINKERNEL  = ../mips/imin.c
+
+SASUMKERNEL  = ../mips/asum.c
+DASUMKERNEL  = ../mips/asum.c
+CASUMKERNEL  = ../mips/zasum.c
+ZASUMKERNEL  = ../mips/zasum.c
+
+SAXPYKERNEL  = ../mips/axpy.c
+DAXPYKERNEL  = ../mips/axpy.c
+CAXPYKERNEL  = ../mips/zaxpy.c
+ZAXPYKERNEL  = ../mips/zaxpy.c
+
+SCOPYKERNEL  = ../mips/copy.c
+DCOPYKERNEL  = ../mips/copy.c
+CCOPYKERNEL  = ../mips/zcopy.c
+ZCOPYKERNEL  = ../mips/zcopy.c
+
+SDOTKERNEL   = ../mips/dot.c
+DDOTKERNEL   = ../mips/dot.c
+CDOTKERNEL   = ../mips/zdot.c
+ZDOTKERNEL   = ../mips/zdot.c
+
+SNRM2KERNEL  = ../mips/nrm2.c
+DNRM2KERNEL  = ../mips/nrm2.c
+CNRM2KERNEL  = ../mips/znrm2.c
+ZNRM2KERNEL  = ../mips/znrm2.c
+
+SROTKERNEL   = ../mips/rot.c
+DROTKERNEL   = ../mips/rot.c
+CROTKERNEL   = ../mips/zrot.c
+ZROTKERNEL   = ../mips/zrot.c
+
+SSCALKERNEL  = ../mips/scal.c
+DSCALKERNEL  = ../mips/scal.c
+CSCALKERNEL  = ../mips/zscal.c
+ZSCALKERNEL  = ../mips/zscal.c
+
+SSWAPKERNEL  = ../mips/swap.c
+DSWAPKERNEL  = ../mips/swap.c
+CSWAPKERNEL  = ../mips/zswap.c
+ZSWAPKERNEL  = ../mips/zswap.c
+
+SGEMVNKERNEL = ../mips/gemv_n.c
+DGEMVNKERNEL = ../mips/gemv_n.c
+CGEMVNKERNEL = ../mips/zgemv_n.c
+ZGEMVNKERNEL = ../mips/zgemv_n.c
+
+SGEMVTKERNEL = ../mips/gemv_t.c
+DGEMVTKERNEL = ../mips/gemv_t.c
+CGEMVTKERNEL = ../mips/zgemv_t.c
+ZGEMVTKERNEL = ../mips/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
diff --git a/kernel/mips/Makefile b/kernel/mips/Makefile
new file mode 100644 (file)
index 0000000..efae70d
--- /dev/null
@@ -0,0 +1,2 @@
+clean ::
+
diff --git a/kernel/mips/amax.c b/kernel/mips/amax.c
new file mode 100644 (file)
index 0000000..ad14081
--- /dev/null
@@ -0,0 +1,66 @@
+/***************************************************************************
+Copyright (c) 2016, 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"
+#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/mips/amin.c b/kernel/mips/amin.c
new file mode 100644 (file)
index 0000000..8079450
--- /dev/null
@@ -0,0 +1,66 @@
+/***************************************************************************
+Copyright (c) 2016, 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"
+#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/mips/asum.c b/kernel/mips/asum.c
new file mode 100644 (file)
index 0000000..d221464
--- /dev/null
@@ -0,0 +1,57 @@
+/***************************************************************************
+Copyright (c) 2016, 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"
+#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/mips/axpby.c b/kernel/mips/axpby.c
new file mode 100644 (file)
index 0000000..af4fccd
--- /dev/null
@@ -0,0 +1,95 @@
+/***************************************************************************
+Copyright (c) 2016, 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/mips/axpy.c b/kernel/mips/axpy.c
new file mode 100644 (file)
index 0000000..42f181e
--- /dev/null
@@ -0,0 +1,54 @@
+/***************************************************************************
+Copyright (c) 2016, 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, 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/mips/copy.c b/kernel/mips/copy.c
new file mode 100644 (file)
index 0000000..9f488dd
--- /dev/null
@@ -0,0 +1,50 @@
+/***************************************************************************
+Copyright (c) 2016, 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 *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/mips/dot.c b/kernel/mips/dot.c
new file mode 100644 (file)
index 0000000..de7f716
--- /dev/null
@@ -0,0 +1,55 @@
+/***************************************************************************
+Copyright (c) 2016, 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"
+
+#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/mips/gemv_n.c b/kernel/mips/gemv_n.c
new file mode 100644 (file)
index 0000000..4cc1772
--- /dev/null
@@ -0,0 +1,56 @@
+/***************************************************************************
+Copyright (c) 2016, 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 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/mips/gemv_t.c b/kernel/mips/gemv_t.c
new file mode 100644 (file)
index 0000000..5f290c7
--- /dev/null
@@ -0,0 +1,58 @@
+/***************************************************************************
+Copyright (c) 2016, 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 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/mips/iamax.c b/kernel/mips/iamax.c
new file mode 100644 (file)
index 0000000..fcc0b82
--- /dev/null
@@ -0,0 +1,68 @@
+/***************************************************************************
+Copyright (c) 2016, 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"
+#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/mips/iamin.c b/kernel/mips/iamin.c
new file mode 100644 (file)
index 0000000..7f1c4d9
--- /dev/null
@@ -0,0 +1,68 @@
+/***************************************************************************
+Copyright (c) 2016, 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"
+#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/mips/imax.c b/kernel/mips/imax.c
new file mode 100644 (file)
index 0000000..744bfc0
--- /dev/null
@@ -0,0 +1,59 @@
+/***************************************************************************
+Copyright (c) 2016, 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"
+#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/mips/imin.c b/kernel/mips/imin.c
new file mode 100644 (file)
index 0000000..d9b283d
--- /dev/null
@@ -0,0 +1,59 @@
+/***************************************************************************
+Copyright (c) 2016, 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"
+#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/mips/izamax.c b/kernel/mips/izamax.c
new file mode 100644 (file)
index 0000000..708ee92
--- /dev/null
@@ -0,0 +1,72 @@
+/***************************************************************************
+Copyright (c) 2016, 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"
+#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/mips/izamin.c b/kernel/mips/izamin.c
new file mode 100644 (file)
index 0000000..523605e
--- /dev/null
@@ -0,0 +1,72 @@
+/***************************************************************************
+Copyright (c) 2016, 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"
+#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/mips/max.c b/kernel/mips/max.c
new file mode 100644 (file)
index 0000000..2ad956b
--- /dev/null
@@ -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/mips/min.c b/kernel/mips/min.c
new file mode 100644 (file)
index 0000000..2812fe3
--- /dev/null
@@ -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/mips/nrm2.c b/kernel/mips/nrm2.c
new file mode 100644 (file)
index 0000000..fcff093
--- /dev/null
@@ -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/mips/omatcopy_cn.c b/kernel/mips/omatcopy_cn.c
new file mode 100644 (file)
index 0000000..11357ec
--- /dev/null
@@ -0,0 +1,82 @@
+/***************************************************************************
+Copyright (c) 2016, 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 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/mips/omatcopy_ct.c b/kernel/mips/omatcopy_ct.c
new file mode 100644 (file)
index 0000000..b1bcb56
--- /dev/null
@@ -0,0 +1,81 @@
+/***************************************************************************
+Copyright (c) 2016, 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 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/mips/omatcopy_rn.c b/kernel/mips/omatcopy_rn.c
new file mode 100644 (file)
index 0000000..34c666f
--- /dev/null
@@ -0,0 +1,82 @@
+/***************************************************************************
+Copyright (c) 2016, 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 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/mips/omatcopy_rt.c b/kernel/mips/omatcopy_rt.c
new file mode 100644 (file)
index 0000000..e50f51b
--- /dev/null
@@ -0,0 +1,54 @@
+/***************************************************************************
+Copyright (c) 2016, 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 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/mips/rot.c b/kernel/mips/rot.c
new file mode 100644 (file)
index 0000000..2d7d463
--- /dev/null
@@ -0,0 +1,53 @@
+/***************************************************************************
+Copyright (c) 2016, 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 *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/mips/scal.c b/kernel/mips/scal.c
new file mode 100644 (file)
index 0000000..01f708b
--- /dev/null
@@ -0,0 +1,50 @@
+/***************************************************************************
+Copyright (c) 2016, 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, 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;
+
+       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/mips/swap.c b/kernel/mips/swap.c
new file mode 100644 (file)
index 0000000..23f7a35
--- /dev/null
@@ -0,0 +1,55 @@
+/***************************************************************************
+Copyright (c) 2016, 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"
+#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/mips/symv_L.c b/kernel/mips/symv_L.c
new file mode 100644 (file)
index 0000000..6a83d73
--- /dev/null
@@ -0,0 +1,70 @@
+/***************************************************************************
+Copyright (c) 2016, 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/mips/symv_U.c b/kernel/mips/symv_U.c
new file mode 100644 (file)
index 0000000..8ec7f23
--- /dev/null
@@ -0,0 +1,71 @@
+/***************************************************************************
+Copyright (c) 2016, 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/mips/zamax.c b/kernel/mips/zamax.c
new file mode 100644 (file)
index 0000000..c3191d9
--- /dev/null
@@ -0,0 +1,70 @@
+/***************************************************************************
+Copyright (c) 2016, 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"
+#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/mips/zamin.c b/kernel/mips/zamin.c
new file mode 100644 (file)
index 0000000..97c07da
--- /dev/null
@@ -0,0 +1,70 @@
+/***************************************************************************
+Copyright (c) 2016, 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"
+#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/mips/zasum.c b/kernel/mips/zasum.c
new file mode 100644 (file)
index 0000000..77a2ed6
--- /dev/null
@@ -0,0 +1,62 @@
+/***************************************************************************
+Copyright (c) 2016, 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"
+#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/mips/zaxpby.c b/kernel/mips/zaxpby.c
new file mode 100644 (file)
index 0000000..97452e9
--- /dev/null
@@ -0,0 +1,113 @@
+/***************************************************************************
+Copyright (c) 2016, 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_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/mips/zaxpy.c b/kernel/mips/zaxpy.c
new file mode 100644 (file)
index 0000000..f0fbab4
--- /dev/null
@@ -0,0 +1,64 @@
+/***************************************************************************
+Copyright (c) 2016, 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, 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/mips/zcopy.c b/kernel/mips/zcopy.c
new file mode 100644 (file)
index 0000000..6bb6e33
--- /dev/null
@@ -0,0 +1,56 @@
+/***************************************************************************
+Copyright (c) 2016, 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 *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/mips/zdot.c b/kernel/mips/zdot.c
new file mode 100644 (file)
index 0000000..da9ec70
--- /dev/null
@@ -0,0 +1,75 @@
+/***************************************************************************
+Copyright (c) 2016, 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"
+
+#ifndef _MSC_VER
+#include <complex.h>
+FLOAT _Complex CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y)
+#else
+OPENBLAS_COMPLEX_FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y)
+#endif
+{
+       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/mips/zgemv_n.c b/kernel/mips/zgemv_n.c
new file mode 100644 (file)
index 0000000..9bf1f6b
--- /dev/null
@@ -0,0 +1,147 @@
+/***************************************************************************
+Copyright (c) 2016, 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 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/mips/zgemv_t.c b/kernel/mips/zgemv_t.c
new file mode 100644 (file)
index 0000000..2dfb9d2
--- /dev/null
@@ -0,0 +1,130 @@
+/***************************************************************************
+Copyright (c) 2016, 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 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/mips/znrm2.c b/kernel/mips/znrm2.c
new file mode 100644 (file)
index 0000000..85be39c
--- /dev/null
@@ -0,0 +1,97 @@
+/***************************************************************************
+Copyright (c) 2016, 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"
+#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/mips/zomatcopy_cn.c b/kernel/mips/zomatcopy_cn.c
new file mode 100644 (file)
index 0000000..bf6d3c7
--- /dev/null
@@ -0,0 +1,62 @@
+/***************************************************************************
+Copyright (c) 2016, 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 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/mips/zomatcopy_cnc.c b/kernel/mips/zomatcopy_cnc.c
new file mode 100644 (file)
index 0000000..50f2b11
--- /dev/null
@@ -0,0 +1,61 @@
+/***************************************************************************
+Copyright (c) 2016, 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 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/mips/zomatcopy_ct.c b/kernel/mips/zomatcopy_ct.c
new file mode 100644 (file)
index 0000000..16bd018
--- /dev/null
@@ -0,0 +1,63 @@
+/***************************************************************************
+Copyright (c) 2016, 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 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/mips/zomatcopy_ctc.c b/kernel/mips/zomatcopy_ctc.c
new file mode 100644 (file)
index 0000000..47ba53b
--- /dev/null
@@ -0,0 +1,63 @@
+/***************************************************************************
+Copyright (c) 2016, 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 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/mips/zomatcopy_rn.c b/kernel/mips/zomatcopy_rn.c
new file mode 100644 (file)
index 0000000..febfbf6
--- /dev/null
@@ -0,0 +1,62 @@
+/***************************************************************************
+Copyright (c) 2016, 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 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/mips/zomatcopy_rnc.c b/kernel/mips/zomatcopy_rnc.c
new file mode 100644 (file)
index 0000000..63dfc81
--- /dev/null
@@ -0,0 +1,61 @@
+/***************************************************************************
+Copyright (c) 2016, 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 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/mips/zomatcopy_rt.c b/kernel/mips/zomatcopy_rt.c
new file mode 100644 (file)
index 0000000..93c4457
--- /dev/null
@@ -0,0 +1,64 @@
+/***************************************************************************
+Copyright (c) 2016, 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 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/mips/zomatcopy_rtc.c b/kernel/mips/zomatcopy_rtc.c
new file mode 100644 (file)
index 0000000..03a5dcc
--- /dev/null
@@ -0,0 +1,64 @@
+/***************************************************************************
+Copyright (c) 2016, 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 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/mips/zrot.c b/kernel/mips/zrot.c
new file mode 100644 (file)
index 0000000..53b648c
--- /dev/null
@@ -0,0 +1,61 @@
+/***************************************************************************
+Copyright (c) 2016, 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 *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/mips/zscal.c b/kernel/mips/zscal.c
new file mode 100644 (file)
index 0000000..bca1155
--- /dev/null
@@ -0,0 +1,75 @@
+/***************************************************************************
+Copyright (c) 2016, 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, 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;
+
+       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/mips/zswap.c b/kernel/mips/zswap.c
new file mode 100644 (file)
index 0000000..abc3c9c
--- /dev/null
@@ -0,0 +1,63 @@
+/***************************************************************************
+Copyright (c) 2016, 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"
+#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/kernel/mips64/KERNEL.I6400 b/kernel/mips64/KERNEL.I6400
new file mode 100644 (file)
index 0000000..abf4481
--- /dev/null
@@ -0,0 +1 @@
+include $(KERNELDIR)/../mips/KERNEL.P5600
diff --git a/lapack/laswp/mips/Makefile b/lapack/laswp/mips/Makefile
new file mode 100644 (file)
index 0000000..75411de
--- /dev/null
@@ -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 8ecc812..93b1220 100644 (file)
--- a/param.h
+++ b/param.h
@@ -2174,6 +2174,83 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #define SYMV_P 16
 #endif
 
+#if defined(I6400)
+#define SNUMOPT  2
+#define DNUMOPT  2
+
+#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
+#endif
+
+#if defined(P5600)
+#define SNUMOPT  2
+#define DNUMOPT  2
+
+#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
+#endif
 
 #ifdef ARMV7
 #define SNUMOPT                2