MIPS P5600(32 bit) and I6400(64 bit) cores support added.tags/v0.2.19^2
@@ -0,0 +1,3 @@ | |||||
ifdef BINARY64 | |||||
else | |||||
endif |
@@ -462,7 +462,7 @@ endif | |||||
endif | endif | ||||
endif | endif | ||||
ifeq ($(ARCH), mips64) | |||||
ifeq ($(ARCH), $(filter $(ARCH),mips64 mips)) | |||||
NO_BINARY_MODE = 1 | NO_BINARY_MODE = 1 | ||||
endif | endif | ||||
@@ -502,11 +502,11 @@ endif | |||||
ifdef NO_BINARY_MODE | ifdef NO_BINARY_MODE | ||||
ifeq ($(ARCH), mips64) | |||||
ifeq ($(ARCH), $(filter $(ARCH),mips64 mips)) | |||||
ifdef BINARY64 | ifdef BINARY64 | ||||
CCOMMON_OPT += -mabi=64 | CCOMMON_OPT += -mabi=64 | ||||
else | else | ||||
CCOMMON_OPT += -mabi=n32 | |||||
CCOMMON_OPT += -mabi=32 | |||||
endif | endif | ||||
BINARY_DEFINED = 1 | BINARY_DEFINED = 1 | ||||
endif | endif | ||||
@@ -589,11 +589,11 @@ ifneq ($(NO_LAPACK), 1) | |||||
EXTRALIB += -lgfortran | EXTRALIB += -lgfortran | ||||
endif | endif | ||||
ifdef NO_BINARY_MODE | ifdef NO_BINARY_MODE | ||||
ifeq ($(ARCH), mips64) | |||||
ifeq ($(ARCH), $(filter $(ARCH),mips64 mips)) | |||||
ifdef BINARY64 | ifdef BINARY64 | ||||
FCOMMON_OPT += -mabi=64 | FCOMMON_OPT += -mabi=64 | ||||
else | else | ||||
FCOMMON_OPT += -mabi=n32 | |||||
FCOMMON_OPT += -mabi=32 | |||||
endif | endif | ||||
endif | endif | ||||
else | else | ||||
@@ -678,7 +678,7 @@ endif | |||||
endif | endif | ||||
endif | endif | ||||
ifneq ($(ARCH), mips64) | |||||
ifeq ($(filter $(ARCH),mips64 mips)) | |||||
ifndef BINARY64 | ifndef BINARY64 | ||||
FCOMMON_OPT += -m32 | FCOMMON_OPT += -m32 | ||||
else | else | ||||
@@ -688,7 +688,7 @@ else | |||||
ifdef BINARY64 | ifdef BINARY64 | ||||
FCOMMON_OPT += -mabi=64 | FCOMMON_OPT += -mabi=64 | ||||
else | else | ||||
FCOMMON_OPT += -mabi=n32 | |||||
FCOMMON_OPT += -mabi=32 | |||||
endif | endif | ||||
endif | endif | ||||
@@ -707,7 +707,7 @@ endif | |||||
endif | endif | ||||
endif | endif | ||||
ifeq ($(ARCH), mips64) | |||||
ifeq ($(ARCH), $(filter $(ARCH),mips64 mips)) | |||||
ifndef BINARY64 | ifndef BINARY64 | ||||
FCOMMON_OPT += -n32 | FCOMMON_OPT += -n32 | ||||
else | else | ||||
@@ -737,7 +737,7 @@ endif | |||||
ifeq ($(C_COMPILER), OPEN64) | ifeq ($(C_COMPILER), OPEN64) | ||||
ifeq ($(ARCH), mips64) | |||||
ifeq ($(ARCH), $(filter $(ARCH),mips64 mips)) | |||||
ifndef BINARY64 | ifndef BINARY64 | ||||
CCOMMON_OPT += -n32 | CCOMMON_OPT += -n32 | ||||
else | else | ||||
@@ -53,26 +53,30 @@ PPC440 | |||||
PPC440FP2 | PPC440FP2 | ||||
CELL | CELL | ||||
3.MIPS64 CPU: | |||||
3.MIPS CPU: | |||||
P5600 | |||||
4.MIPS64 CPU: | |||||
SICORTEX | SICORTEX | ||||
LOONGSON3A | LOONGSON3A | ||||
LOONGSON3B | LOONGSON3B | ||||
I6400 | |||||
4.IA64 CPU: | |||||
5.IA64 CPU: | |||||
ITANIUM2 | ITANIUM2 | ||||
5.SPARC CPU: | |||||
6.SPARC CPU: | |||||
SPARC | SPARC | ||||
SPARCV7 | SPARCV7 | ||||
6.ARM CPU: | |||||
7.ARM CPU: | |||||
CORTEXA15 | CORTEXA15 | ||||
CORTEXA9 | CORTEXA9 | ||||
ARMV7 | ARMV7 | ||||
ARMV6 | ARMV6 | ||||
ARMV5 | ARMV5 | ||||
7.ARM 64-bit CPU: | |||||
8.ARM 64-bit CPU: | |||||
ARMV8 | ARMV8 | ||||
CORTEXA57 | CORTEXA57 | ||||
@@ -63,7 +63,7 @@ $os = Android if ($data =~ /OS_ANDROID/); | |||||
$architecture = x86 if ($data =~ /ARCH_X86/); | $architecture = x86 if ($data =~ /ARCH_X86/); | ||||
$architecture = x86_64 if ($data =~ /ARCH_X86_64/); | $architecture = x86_64 if ($data =~ /ARCH_X86_64/); | ||||
$architecture = power if ($data =~ /ARCH_POWER/); | $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 = mips64 if ($data =~ /ARCH_MIPS64/); | ||||
$architecture = alpha if ($data =~ /ARCH_ALPHA/); | $architecture = alpha if ($data =~ /ARCH_ALPHA/); | ||||
$architecture = sparc if ($data =~ /ARCH_SPARC/); | $architecture = sparc if ($data =~ /ARCH_SPARC/); | ||||
@@ -79,8 +79,8 @@ if ($os eq "AIX") { | |||||
$defined = 1; | $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"); | $compiler_name .= " -mabi=64" if ($binary eq "64"); | ||||
$defined = 1; | $defined = 1; | ||||
} | } | ||||
@@ -155,7 +155,7 @@ if ($?) { | |||||
$architecture = x86 if ($data =~ /ARCH_X86/); | $architecture = x86 if ($data =~ /ARCH_X86/); | ||||
$architecture = x86_64 if ($data =~ /ARCH_X86_64/); | $architecture = x86_64 if ($data =~ /ARCH_X86_64/); | ||||
$architecture = power if ($data =~ /ARCH_POWER/); | $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 = mips64 if ($data =~ /ARCH_MIPS64/); | ||||
$architecture = alpha if ($data =~ /ARCH_ALPHA/); | $architecture = alpha if ($data =~ /ARCH_ALPHA/); | ||||
$architecture = sparc if ($data =~ /ARCH_SPARC/); | $architecture = sparc if ($data =~ /ARCH_SPARC/); | ||||
@@ -397,6 +397,10 @@ please https://github.com/xianyi/OpenBLAS/issues/246 | |||||
#include "common_sparc.h" | #include "common_sparc.h" | ||||
#endif | #endif | ||||
#ifdef ARCH_MIPS | |||||
#include "common_mips.h" | |||||
#endif | |||||
#ifdef ARCH_MIPS64 | #ifdef ARCH_MIPS64 | ||||
#include "common_mips64.h" | #include "common_mips64.h" | ||||
#endif | #endif | ||||
@@ -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 |
@@ -102,7 +102,7 @@ static void INLINE blas_lock(volatile unsigned long *address){ | |||||
static inline unsigned int rpcc(void){ | static inline unsigned int rpcc(void){ | ||||
unsigned long ret; | unsigned long ret; | ||||
#if defined(LOONGSON3A) || defined(LOONGSON3B) | |||||
// unsigned long long tmp; | // unsigned long long tmp; | ||||
//__asm__ __volatile__("dmfc0 %0, $25, 1": "=r"(tmp):: "memory"); | //__asm__ __volatile__("dmfc0 %0, $25, 1": "=r"(tmp):: "memory"); | ||||
//ret=tmp; | //ret=tmp; | ||||
@@ -111,17 +111,10 @@ static inline unsigned int rpcc(void){ | |||||
"rdhwr %0, $2\n" | "rdhwr %0, $2\n" | ||||
".set pop": "=r"(ret):: "memory"); | ".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; | return ret; | ||||
} | } | ||||
#define RPCC_DEFINED | #define RPCC_DEFINED | ||||
#if defined(LOONGSON3A) || defined(LOONGSON3B) | |||||
#ifndef NO_AFFINITY | #ifndef NO_AFFINITY | ||||
#define WHEREAMI | #define WHEREAMI | ||||
static inline int WhereAmI(void){ | static inline int WhereAmI(void){ | ||||
@@ -134,7 +127,6 @@ static inline int WhereAmI(void){ | |||||
} | } | ||||
#endif | #endif | ||||
#endif | |||||
static inline int blas_quickdivide(blasint x, blasint y){ | static inline int blas_quickdivide(blasint x, blasint y){ | ||||
return x / y; | return x / y; | ||||
@@ -71,15 +71,11 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||||
/*********************************************************************/ | /*********************************************************************/ | ||||
#define CPU_UNKNOWN 0 | #define CPU_UNKNOWN 0 | ||||
#define CPU_SICORTEX 1 | |||||
#define CPU_LOONGSON3A 2 | |||||
#define CPU_LOONGSON3B 3 | |||||
#define CPU_P5600 1 | |||||
static char *cpuname[] = { | static char *cpuname[] = { | ||||
"UNKOWN", | "UNKOWN", | ||||
"SICORTEX", | |||||
"LOONGSON3A", | |||||
"LOONGSON3B" | |||||
"P5600" | |||||
}; | }; | ||||
int detect(void){ | int detect(void){ | ||||
@@ -120,7 +116,7 @@ int detect(void){ | |||||
if (strstr(p, "loongson3a")) | if (strstr(p, "loongson3a")) | ||||
return CPU_LOONGSON3A; | return CPU_LOONGSON3A; | ||||
}else{ | }else{ | ||||
return CPU_SICORTEX; | |||||
return CPU_UNKNOWN; | |||||
} | } | ||||
} | } | ||||
//Check model name for Loongson3 | //Check model name for Loongson3 | ||||
@@ -149,64 +145,40 @@ char *get_corename(void){ | |||||
} | } | ||||
void get_architecture(void){ | void get_architecture(void){ | ||||
printf("MIPS64"); | |||||
printf("MIPS"); | |||||
} | } | ||||
void get_subarchitecture(void){ | void get_subarchitecture(void){ | ||||
if(detect()==CPU_LOONGSON3A) { | |||||
printf("LOONGSON3A"); | |||||
}else if(detect()==CPU_LOONGSON3B){ | |||||
printf("LOONGSON3B"); | |||||
if(detect()==CPU_P5600){ | |||||
printf("P5600"); | |||||
}else{ | }else{ | ||||
printf("SICORTEX"); | |||||
printf("UNKNOWN"); | |||||
} | } | ||||
} | } | ||||
void get_subdirname(void){ | void get_subdirname(void){ | ||||
printf("mips64"); | |||||
printf("mips"); | |||||
} | } | ||||
void get_cpuconfig(void){ | 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_SIZE 65536\n"); | ||||
printf("#define L1_DATA_LINESIZE 32\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 L2_LINESIZE 32\n"); | ||||
printf("#define DTB_DEFAULT_ENTRIES 64\n"); | printf("#define DTB_DEFAULT_ENTRIES 64\n"); | ||||
printf("#define DTB_SIZE 4096\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"); | printf("#define L2_ASSOCIATIVE 8\n"); | ||||
}else{ | |||||
printf("#define UNKNOWN\n"); | |||||
} | } | ||||
} | } | ||||
void get_libname(void){ | 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{ | }else{ | ||||
#ifdef __mips64 | |||||
printf("mips64\n"); | |||||
#else | |||||
printf("mips32\n"); | |||||
#endif | |||||
printf("mips\n"); | |||||
} | } | ||||
} | } |
@@ -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"); | |||||
} | |||||
} |
@@ -110,7 +110,7 @@ ARCH_MIPS64 | |||||
#endif | #endif | ||||
#if defined(__mips32) || defined(__mips) | #if defined(__mips32) || defined(__mips) | ||||
ARCH_MIPS32 | |||||
ARCH_MIPS | |||||
#endif | #endif | ||||
#ifdef __alpha | #ifdef __alpha | ||||
@@ -131,6 +131,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||||
/* #define FORCE_SICORTEX */ | /* #define FORCE_SICORTEX */ | ||||
/* #define FORCE_LOONGSON3A */ | /* #define FORCE_LOONGSON3A */ | ||||
/* #define FORCE_LOONGSON3B */ | /* #define FORCE_LOONGSON3B */ | ||||
/* #define FORCE_I6400 */ | |||||
/* #define FORCE_P5600 */ | |||||
/* #define FORCE_ITANIUM2 */ | /* #define FORCE_ITANIUM2 */ | ||||
/* #define FORCE_SPARC */ | /* #define FORCE_SPARC */ | ||||
/* #define FORCE_SPARCV7 */ | /* #define FORCE_SPARCV7 */ | ||||
@@ -699,6 +701,34 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||||
#else | #else | ||||
#endif | #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 | #ifdef FORCE_ITANIUM2 | ||||
#define FORCE | #define FORCE | ||||
#define ARCHITECTURE "IA64" | #define ARCHITECTURE "IA64" | ||||
@@ -888,7 +918,11 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||||
#endif | #endif | ||||
#ifdef __mips__ | #ifdef __mips__ | ||||
#ifdef __mips64 | |||||
#include "cpuid_mips64.c" | |||||
#else | |||||
#include "cpuid_mips.c" | #include "cpuid_mips.c" | ||||
#endif | |||||
#define OPENBLAS_SUPPORTED | #define OPENBLAS_SUPPORTED | ||||
#endif | #endif | ||||
@@ -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 | |||||
@@ -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 |
@@ -0,0 +1,2 @@ | |||||
clean :: | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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; | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -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); | |||||
} | |||||
@@ -0,0 +1 @@ | |||||
include $(KERNELDIR)/../mips/KERNEL.P5600 |
@@ -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 | |||||
@@ -2174,6 +2174,83 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||||
#define SYMV_P 16 | #define SYMV_P 16 | ||||
#endif | #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 | #ifdef ARMV7 | ||||
#define SNUMOPT 2 | #define SNUMOPT 2 | ||||