@@ -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 |
@@ -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/); | ||||
@@ -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 |
@@ -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 | ||||
@@ -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 | |||||
@@ -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 | ||||