Add CSKY support
This commit is contained in:
parent
13c764eaaa
commit
ec89466e14
|
@ -218,4 +218,7 @@ In chronological order:
|
||||||
* [2022-08] Fix building from sources for QNX
|
* [2022-08] Fix building from sources for QNX
|
||||||
|
|
||||||
* Mark Seminatore <https://github.com/mseminatore>
|
* Mark Seminatore <https://github.com/mseminatore>
|
||||||
* [2023-11-09] Improve Windows threading performance scaling
|
* [2023-11-09] Improve Windows threading performance scaling
|
||||||
|
|
||||||
|
* Dirreke <https://github.com/mseminatore>
|
||||||
|
* [2024-01-16] Add basic support for the CSKY architecture
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
ifeq ($(CORE), CK860FV)
|
||||||
|
CCOMMON_OPT += -march=ck860v -mcpu=ck860fv -mfdivdu -mhard-float
|
||||||
|
FCOMMON_OPT += -march=ck860v -mcpu=ck860fv -mfdivdu -mhard-float -static
|
||||||
|
endif
|
|
@ -55,6 +55,10 @@ ifeq ($(TARGET), C910V)
|
||||||
TARGET_FLAGS = -march=rv64gcv0p7_zfh_xtheadc -mabi=lp64d
|
TARGET_FLAGS = -march=rv64gcv0p7_zfh_xtheadc -mabi=lp64d
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(TARGET), CK860FV)
|
||||||
|
TARGET_FLAGS = -march=ck860v -mcpu=ck860fv -mfdivdu -mhard-float
|
||||||
|
endif
|
||||||
|
|
||||||
all: getarch_2nd
|
all: getarch_2nd
|
||||||
./getarch_2nd 0 >> $(TARGET_MAKE)
|
./getarch_2nd 0 >> $(TARGET_MAKE)
|
||||||
./getarch_2nd 1 >> $(TARGET_CONF)
|
./getarch_2nd 1 >> $(TARGET_CONF)
|
||||||
|
|
|
@ -873,6 +873,11 @@ endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(ARCH), csky)
|
||||||
|
NO_BINARY_MODE = 1
|
||||||
|
BINARY_DEFINED = 1
|
||||||
|
endif
|
||||||
|
|
||||||
#
|
#
|
||||||
# C Compiler dependent settings
|
# C Compiler dependent settings
|
||||||
#
|
#
|
||||||
|
|
|
@ -133,3 +133,7 @@ E2K
|
||||||
EV4
|
EV4
|
||||||
EV5
|
EV5
|
||||||
EV6
|
EV6
|
||||||
|
|
||||||
|
14.CSKY
|
||||||
|
CSKY
|
||||||
|
CK860FV
|
||||||
|
|
2
c_check
2
c_check
|
@ -91,6 +91,7 @@ case "$data" in
|
||||||
*ARCH_ZARCH*) architecture=zarch ;;
|
*ARCH_ZARCH*) architecture=zarch ;;
|
||||||
*ARCH_RISCV64*) architecture=riscv64 ;;
|
*ARCH_RISCV64*) architecture=riscv64 ;;
|
||||||
*ARCH_LOONGARCH64*) architecture=loongarch64 ;;
|
*ARCH_LOONGARCH64*) architecture=loongarch64 ;;
|
||||||
|
*ARCH_CSKY*) architecture=csky ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
defined=0
|
defined=0
|
||||||
|
@ -236,6 +237,7 @@ case "$data" in
|
||||||
*ARCH_ARM*) architecture=arm ;;
|
*ARCH_ARM*) architecture=arm ;;
|
||||||
*ARCH_ZARCH*) architecture=zarch ;;
|
*ARCH_ZARCH*) architecture=zarch ;;
|
||||||
*ARCH_LOONGARCH64*) architecture=loongarch64 ;;
|
*ARCH_LOONGARCH64*) architecture=loongarch64 ;;
|
||||||
|
*ARCH_CSKY*) architecture=csky ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
binformat='bin32'
|
binformat='bin32'
|
||||||
|
|
|
@ -97,6 +97,7 @@ $architecture = arm64 if ($data =~ /ARCH_ARM64/);
|
||||||
$architecture = zarch if ($data =~ /ARCH_ZARCH/);
|
$architecture = zarch if ($data =~ /ARCH_ZARCH/);
|
||||||
$architecture = riscv64 if ($data =~ /ARCH_RISCV64/);
|
$architecture = riscv64 if ($data =~ /ARCH_RISCV64/);
|
||||||
$architecture = loongarch64 if ($data =~ /ARCH_LOONGARCH64/);
|
$architecture = loongarch64 if ($data =~ /ARCH_LOONGARCH64/);
|
||||||
|
$architecture = csky if ($data =~ /ARCH_CSKY/);
|
||||||
|
|
||||||
$defined = 0;
|
$defined = 0;
|
||||||
|
|
||||||
|
@ -156,6 +157,11 @@ if ($architecture eq "loongarch64") {
|
||||||
$binary = 64;
|
$binary = 64;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($architecture eq "csky") {
|
||||||
|
$defined = 1;
|
||||||
|
$binary = 32;
|
||||||
|
}
|
||||||
|
|
||||||
if ($compiler eq "PGI") {
|
if ($compiler eq "PGI") {
|
||||||
$compiler_name .= " -tp p7" if ($binary eq "32");
|
$compiler_name .= " -tp p7" if ($binary eq "32");
|
||||||
$compiler_name .= " -tp p7-64" if ($binary eq "64");
|
$compiler_name .= " -tp p7-64" if ($binary eq "64");
|
||||||
|
@ -284,6 +290,7 @@ $architecture = arm if ($data =~ /ARCH_ARM/);
|
||||||
$architecture = arm64 if ($data =~ /ARCH_ARM64/);
|
$architecture = arm64 if ($data =~ /ARCH_ARM64/);
|
||||||
$architecture = zarch if ($data =~ /ARCH_ZARCH/);
|
$architecture = zarch if ($data =~ /ARCH_ZARCH/);
|
||||||
$architecture = loongarch64 if ($data =~ /ARCH_LOONGARCH64/);
|
$architecture = loongarch64 if ($data =~ /ARCH_LOONGARCH64/);
|
||||||
|
$architecture = csky if ($data =~ /ARCH_CSKY/);
|
||||||
|
|
||||||
$binformat = bin32;
|
$binformat = bin32;
|
||||||
$binformat = bin64 if ($data =~ /BINARY_64/);
|
$binformat = bin64 if ($data =~ /BINARY_64/);
|
||||||
|
|
4
common.h
4
common.h
|
@ -482,6 +482,10 @@ please https://github.com/xianyi/OpenBLAS/issues/246
|
||||||
#include "common_e2k.h"
|
#include "common_e2k.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef ARCH_CSKY
|
||||||
|
#include "common_csky.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef ASSEMBLER
|
#ifndef ASSEMBLER
|
||||||
#ifdef OS_WINDOWSSTORE
|
#ifdef OS_WINDOWSSTORE
|
||||||
typedef char env_var_t[MAX_PATH];
|
typedef char env_var_t[MAX_PATH];
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
/*****************************************************************************
|
||||||
|
Copyright (c) 2011-2015, 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_CSKY
|
||||||
|
#define COMMON_CSKY
|
||||||
|
|
||||||
|
#define MB __sync_synchronize()
|
||||||
|
#define WMB __sync_synchronize()
|
||||||
|
#define RMB __sync_synchronize()
|
||||||
|
|
||||||
|
#define INLINE inline
|
||||||
|
|
||||||
|
#ifndef ASSEMBLER
|
||||||
|
|
||||||
|
|
||||||
|
static inline int blas_quickdivide(blasint x, blasint y){
|
||||||
|
return x / y;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define BUFFER_SIZE ( 32 << 20)
|
||||||
|
#define SEEK_ADDRESS
|
||||||
|
|
||||||
|
#endif
|
4
ctest.c
4
ctest.c
|
@ -173,6 +173,10 @@ HAVE_C11
|
||||||
ARCH_E2K
|
ARCH_E2K
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(__csky__)
|
||||||
|
ARCH_CSKY
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(__EMSCRIPTEN__)
|
#if defined(__EMSCRIPTEN__)
|
||||||
ARCH_RISCV64
|
ARCH_RISCV64
|
||||||
OS_WINDOWS
|
OS_WINDOWS
|
||||||
|
|
34
getarch.c
34
getarch.c
|
@ -150,6 +150,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
/* #define FORCE_EV4 */
|
/* #define FORCE_EV4 */
|
||||||
/* #define FORCE_EV5 */
|
/* #define FORCE_EV5 */
|
||||||
/* #define FORCE_EV6 */
|
/* #define FORCE_EV6 */
|
||||||
|
/* #define FORCE_CSKY */
|
||||||
|
/* #define FORCE_CK860FV */
|
||||||
/* #define FORCE_GENERIC */
|
/* #define FORCE_GENERIC */
|
||||||
|
|
||||||
#ifdef FORCE_P2
|
#ifdef FORCE_P2
|
||||||
|
@ -1692,6 +1694,33 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#define CORENAME "generic"
|
#define CORENAME "generic"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef FORCE_CSKY
|
||||||
|
#define FORCE
|
||||||
|
#define ARCHITECTURE "CSKY"
|
||||||
|
#define SUBARCHITECTURE "CSKY"
|
||||||
|
#define SUBDIRNAME "csky"
|
||||||
|
#define ARCHCONFIG "-DCSKY" \
|
||||||
|
"-DL1_DATA_SIZE=65536 -DL1_DATA_LINESIZE=32 " \
|
||||||
|
"-DL2_SIZE=524288 -DL2_LINESIZE=32 " \
|
||||||
|
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=8 "
|
||||||
|
#define LIBNAME "csky"
|
||||||
|
#define CORENAME "CSKY"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FORCE_CK860FV
|
||||||
|
#define FORCE
|
||||||
|
#define ARCHITECTURE "CSKY"
|
||||||
|
#define SUBARCHITECTURE "CK860V"
|
||||||
|
#define SUBDIRNAME "csky"
|
||||||
|
#define ARCHCONFIG "-DCK860FV " \
|
||||||
|
"-DL1_DATA_SIZE=65536 -DL1_DATA_LINESIZE=32 " \
|
||||||
|
"-DL2_SIZE=524288 -DL2_LINESIZE=32 " \
|
||||||
|
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=8 "
|
||||||
|
#define LIBNAME "ck860fv"
|
||||||
|
#define CORENAME "CK860FV"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifndef FORCE
|
#ifndef FORCE
|
||||||
|
|
||||||
#ifdef USER_TARGET
|
#ifdef USER_TARGET
|
||||||
|
@ -1766,7 +1795,6 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#define OPENBLAS_SUPPORTED
|
#define OPENBLAS_SUPPORTED
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifndef OPENBLAS_SUPPORTED
|
#ifndef OPENBLAS_SUPPORTED
|
||||||
#error "This arch/CPU is not supported by OpenBLAS."
|
#error "This arch/CPU is not supported by OpenBLAS."
|
||||||
#endif
|
#endif
|
||||||
|
@ -1831,7 +1859,7 @@ int main(int argc, char *argv[]){
|
||||||
#ifdef FORCE
|
#ifdef FORCE
|
||||||
printf("CORE=%s\n", CORENAME);
|
printf("CORE=%s\n", CORENAME);
|
||||||
#else
|
#else
|
||||||
#if defined(INTEL_AMD) || defined(POWER) || defined(__mips__) || defined(__arm__) || defined(__aarch64__) || defined(ZARCH) || defined(sparc) || defined(__loongarch__) || defined(__riscv) || defined(__alpha__)
|
#if defined(INTEL_AMD) || defined(POWER) || defined(__mips__) || defined(__arm__) || defined(__aarch64__) || defined(ZARCH) || defined(sparc) || defined(__loongarch__) || defined(__riscv) || defined(__alpha__) || defined(__csky__)
|
||||||
printf("CORE=%s\n", get_corename());
|
printf("CORE=%s\n", get_corename());
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
@ -1979,7 +2007,7 @@ printf("ELF_VERSION=2\n");
|
||||||
#ifdef FORCE
|
#ifdef FORCE
|
||||||
printf("#define CHAR_CORENAME \"%s\"\n", CORENAME);
|
printf("#define CHAR_CORENAME \"%s\"\n", CORENAME);
|
||||||
#else
|
#else
|
||||||
#if defined(INTEL_AMD) || defined(POWER) || defined(__mips__) || defined(__arm__) || defined(__aarch64__) || defined(ZARCH) || defined(sparc) || defined(__loongarch__) || defined(__riscv)
|
#if defined(INTEL_AMD) || defined(POWER) || defined(__mips__) || defined(__arm__) || defined(__aarch64__) || defined(ZARCH) || defined(sparc) || defined(__loongarch__) || defined(__riscv) || defined(__csky__)
|
||||||
printf("#define CHAR_CORENAME \"%s\"\n", get_corename());
|
printf("#define CHAR_CORENAME \"%s\"\n", get_corename());
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -0,0 +1,149 @@
|
||||||
|
SAMAXKERNEL = ../arm/amax.c
|
||||||
|
DAMAXKERNEL = ../arm/amax.c
|
||||||
|
CAMAXKERNEL = ../arm/zamax.c
|
||||||
|
ZAMAXKERNEL = ../arm/zamax.c
|
||||||
|
|
||||||
|
SAMINKERNEL = ../arm/amin.c
|
||||||
|
DAMINKERNEL = ../arm/amin.c
|
||||||
|
CAMINKERNEL = ../arm/zamin.c
|
||||||
|
ZAMINKERNEL = ../arm/zamin.c
|
||||||
|
|
||||||
|
SMAXKERNEL = ../arm/max.c
|
||||||
|
DMAXKERNEL = ../arm/max.c
|
||||||
|
|
||||||
|
SMINKERNEL = ../arm/min.c
|
||||||
|
DMINKERNEL = ../arm/min.c
|
||||||
|
|
||||||
|
ISAMAXKERNEL = ../arm/iamax.c
|
||||||
|
IDAMAXKERNEL = ../arm/iamax.c
|
||||||
|
ICAMAXKERNEL = ../arm/izamax.c
|
||||||
|
IZAMAXKERNEL = ../arm/izamax.c
|
||||||
|
|
||||||
|
ISAMINKERNEL = ../arm/iamin.c
|
||||||
|
IDAMINKERNEL = ../arm/iamin.c
|
||||||
|
ICAMINKERNEL = ../arm/izamin.c
|
||||||
|
IZAMINKERNEL = ../arm/izamin.c
|
||||||
|
|
||||||
|
ISMAXKERNEL = ../arm/imax.c
|
||||||
|
IDMAXKERNEL = ../arm/imax.c
|
||||||
|
|
||||||
|
ISMINKERNEL = ../arm/imin.c
|
||||||
|
IDMINKERNEL = ../arm/imin.c
|
||||||
|
|
||||||
|
SASUMKERNEL = ../arm/asum.c
|
||||||
|
DASUMKERNEL = ../arm/asum.c
|
||||||
|
CASUMKERNEL = ../arm/zasum.c
|
||||||
|
ZASUMKERNEL = ../arm/zasum.c
|
||||||
|
|
||||||
|
SSUMKERNEL = ../arm/sum.c
|
||||||
|
DSUMKERNEL = ../arm/sum.c
|
||||||
|
CSUMKERNEL = ../arm/zsum.c
|
||||||
|
ZSUMKERNEL = ../arm/zsum.c
|
||||||
|
|
||||||
|
SAXPYKERNEL = ../arm/axpy.c
|
||||||
|
DAXPYKERNEL = ../arm/axpy.c
|
||||||
|
CAXPYKERNEL = ../arm/zaxpy.c
|
||||||
|
ZAXPYKERNEL = ../arm/zaxpy.c
|
||||||
|
|
||||||
|
SCOPYKERNEL = ../arm/copy.c
|
||||||
|
DCOPYKERNEL = ../arm/copy.c
|
||||||
|
CCOPYKERNEL = ../arm/zcopy.c
|
||||||
|
ZCOPYKERNEL = ../arm/zcopy.c
|
||||||
|
|
||||||
|
SDOTKERNEL = ../arm/dot.c
|
||||||
|
DDOTKERNEL = ../arm/dot.c
|
||||||
|
CDOTKERNEL = ../arm/zdot.c
|
||||||
|
ZDOTKERNEL = ../arm/zdot.c
|
||||||
|
DSDOTKERNEL = ../generic/dot.c
|
||||||
|
|
||||||
|
SNRM2KERNEL = ../arm/nrm2.c
|
||||||
|
DNRM2KERNEL = ../arm/nrm2.c
|
||||||
|
CNRM2KERNEL = ../arm/znrm2.c
|
||||||
|
ZNRM2KERNEL = ../arm/znrm2.c
|
||||||
|
|
||||||
|
SROTKERNEL = ../arm/rot.c
|
||||||
|
DROTKERNEL = ../arm/rot.c
|
||||||
|
CROTKERNEL = ../arm/zrot.c
|
||||||
|
ZROTKERNEL = ../arm/zrot.c
|
||||||
|
|
||||||
|
SSCALKERNEL = ../arm/scal.c
|
||||||
|
DSCALKERNEL = ../arm/scal.c
|
||||||
|
CSCALKERNEL = ../arm/zscal.c
|
||||||
|
ZSCALKERNEL = ../arm/zscal.c
|
||||||
|
|
||||||
|
SSWAPKERNEL = ../arm/swap.c
|
||||||
|
DSWAPKERNEL = ../arm/swap.c
|
||||||
|
CSWAPKERNEL = ../arm/zswap.c
|
||||||
|
ZSWAPKERNEL = ../arm/zswap.c
|
||||||
|
|
||||||
|
SGEMVNKERNEL = ../arm/gemv_n.c
|
||||||
|
DGEMVNKERNEL = ../arm/gemv_n.c
|
||||||
|
CGEMVNKERNEL = ../arm/zgemv_n.c
|
||||||
|
ZGEMVNKERNEL = ../arm/zgemv_n.c
|
||||||
|
|
||||||
|
SGEMVTKERNEL = ../arm/gemv_t.c
|
||||||
|
DGEMVTKERNEL = ../arm/gemv_t.c
|
||||||
|
CGEMVTKERNEL = ../arm/zgemv_t.c
|
||||||
|
ZGEMVTKERNEL = ../arm/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$(TSUFFIX).$(SUFFIX)
|
||||||
|
SGEMMOTCOPYOBJ = sgemm_otcopy$(TSUFFIX).$(SUFFIX)
|
||||||
|
|
||||||
|
DGEMMKERNEL = ../generic/gemmkernel_2x2.c
|
||||||
|
DGEMMONCOPY = ../generic/gemm_ncopy_2.c
|
||||||
|
DGEMMOTCOPY = ../generic/gemm_tcopy_2.c
|
||||||
|
DGEMMONCOPYOBJ = dgemm_oncopy$(TSUFFIX).$(SUFFIX)
|
||||||
|
DGEMMOTCOPYOBJ = dgemm_otcopy$(TSUFFIX).$(SUFFIX)
|
||||||
|
|
||||||
|
CGEMMKERNEL = ../generic/zgemmkernel_2x2.c
|
||||||
|
CGEMMONCOPY = ../generic/zgemm_ncopy_2.c
|
||||||
|
CGEMMOTCOPY = ../generic/zgemm_tcopy_2.c
|
||||||
|
CGEMMONCOPYOBJ = cgemm_oncopy$(TSUFFIX).$(SUFFIX)
|
||||||
|
CGEMMOTCOPYOBJ = cgemm_otcopy$(TSUFFIX).$(SUFFIX)
|
||||||
|
|
||||||
|
ZGEMMKERNEL = ../generic/zgemmkernel_2x2.c
|
||||||
|
ZGEMMONCOPY = ../generic/zgemm_ncopy_2.c
|
||||||
|
ZGEMMOTCOPY = ../generic/zgemm_tcopy_2.c
|
||||||
|
ZGEMMONCOPYOBJ = zgemm_oncopy$(TSUFFIX).$(SUFFIX)
|
||||||
|
ZGEMMOTCOPYOBJ = zgemm_otcopy$(TSUFFIX).$(SUFFIX)
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
|
||||||
|
SCABS_KERNEL = ../generic/cabs.c
|
||||||
|
DCABS_KERNEL = ../generic/cabs.c
|
||||||
|
QCABS_KERNEL = ../generic/cabs.c
|
||||||
|
LSAME_KERNEL = ../generic/lsame.c
|
||||||
|
|
||||||
|
SGEMM_BETA = ../generic/gemm_beta.c
|
||||||
|
DGEMM_BETA = ../generic/gemm_beta.c
|
||||||
|
CGEMM_BETA = ../generic/zgemm_beta.c
|
||||||
|
ZGEMM_BETA = ../generic/zgemm_beta.c
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
clean ::
|
|
@ -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
|
||||||
|
|
37
param.h
37
param.h
|
@ -3807,7 +3807,44 @@ Until then, just keep it different than DGEMM_DEFAULT_UNROLL_N to keep copy rout
|
||||||
#define SYMV_P 16
|
#define SYMV_P 16
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(CSKY) || defined(CK860FV)
|
||||||
|
#define GEMM_DEFAULT_OFFSET_A 0
|
||||||
|
#define GEMM_DEFAULT_OFFSET_B 0
|
||||||
|
#define GEMM_DEFAULT_ALIGN (BLASLONG)0x03fffUL
|
||||||
|
|
||||||
|
#define SGEMM_DEFAULT_UNROLL_M 2
|
||||||
|
#define SGEMM_DEFAULT_UNROLL_N 2
|
||||||
|
|
||||||
|
#define DGEMM_DEFAULT_UNROLL_M 2
|
||||||
|
#define DGEMM_DEFAULT_UNROLL_N 2
|
||||||
|
|
||||||
|
#define CGEMM_DEFAULT_UNROLL_M 2
|
||||||
|
#define CGEMM_DEFAULT_UNROLL_N 2
|
||||||
|
|
||||||
|
#define ZGEMM_DEFAULT_UNROLL_M 2
|
||||||
|
#define ZGEMM_DEFAULT_UNROLL_N 2
|
||||||
|
|
||||||
|
#define SGEMM_DEFAULT_P 128
|
||||||
|
#define DGEMM_DEFAULT_P 128
|
||||||
|
#define CGEMM_DEFAULT_P 96
|
||||||
|
#define ZGEMM_DEFAULT_P 64
|
||||||
|
|
||||||
|
#define SGEMM_DEFAULT_Q 240
|
||||||
|
#define DGEMM_DEFAULT_Q 120
|
||||||
|
#define CGEMM_DEFAULT_Q 120
|
||||||
|
#define ZGEMM_DEFAULT_Q 120
|
||||||
|
|
||||||
|
#define SGEMM_DEFAULT_R 12288
|
||||||
|
#define DGEMM_DEFAULT_R 8192
|
||||||
|
#define CGEMM_DEFAULT_R 4096
|
||||||
|
#define ZGEMM_DEFAULT_R 4096
|
||||||
|
|
||||||
|
#define SYMV_P 16
|
||||||
|
|
||||||
|
#define GEMM_DEFAULT_OFFSET_A 0
|
||||||
|
#define GEMM_DEFAULT_OFFSET_B 0
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef GENERIC
|
#ifdef GENERIC
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue