Add AMD Excavator target.
This commit is contained in:
parent
905534942a
commit
51ff17d46e
|
@ -65,6 +65,9 @@ endif
|
||||||
ifeq ($(TARGET), STEAMROLLER)
|
ifeq ($(TARGET), STEAMROLLER)
|
||||||
GETARCH_FLAGS := -DFORCE_BARCELONA
|
GETARCH_FLAGS := -DFORCE_BARCELONA
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(TARGET), EXCAVATOR)
|
||||||
|
GETARCH_FLAGS := -DFORCE_BARCELONA
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -92,6 +95,9 @@ endif
|
||||||
ifeq ($(TARGET_CORE), STEAMROLLER)
|
ifeq ($(TARGET_CORE), STEAMROLLER)
|
||||||
GETARCH_FLAGS := -DFORCE_BARCELONA
|
GETARCH_FLAGS := -DFORCE_BARCELONA
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(TARGET_CORE), EXCAVATOR)
|
||||||
|
GETARCH_FLAGS := -DFORCE_BARCELONA
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -409,7 +415,7 @@ endif
|
||||||
ifeq ($(ARCH), x86_64)
|
ifeq ($(ARCH), x86_64)
|
||||||
DYNAMIC_CORE = PRESCOTT CORE2 PENRYN DUNNINGTON NEHALEM OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO
|
DYNAMIC_CORE = PRESCOTT CORE2 PENRYN DUNNINGTON NEHALEM OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO
|
||||||
ifneq ($(NO_AVX), 1)
|
ifneq ($(NO_AVX), 1)
|
||||||
DYNAMIC_CORE += SANDYBRIDGE BULLDOZER PILEDRIVER STEAMROLLER
|
DYNAMIC_CORE += SANDYBRIDGE BULLDOZER PILEDRIVER STEAMROLLER EXCAVATOR
|
||||||
endif
|
endif
|
||||||
ifneq ($(NO_AVX2), 1)
|
ifneq ($(NO_AVX2), 1)
|
||||||
DYNAMIC_CORE += HASWELL
|
DYNAMIC_CORE += HASWELL
|
||||||
|
|
|
@ -33,6 +33,7 @@ BOBCAT
|
||||||
BULLDOZER
|
BULLDOZER
|
||||||
PILEDRIVER
|
PILEDRIVER
|
||||||
STEAMROLLER
|
STEAMROLLER
|
||||||
|
EXCAVATOR
|
||||||
|
|
||||||
c)VIA CPU:
|
c)VIA CPU:
|
||||||
SSE_GENERIC
|
SSE_GENERIC
|
||||||
|
|
|
@ -171,7 +171,7 @@ static __inline int blas_quickdivide(unsigned int x, unsigned int y){
|
||||||
#define MMXSTORE movd
|
#define MMXSTORE movd
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(PILEDRIVER) || defined(BULLDOZER) || defined(STEAMROLLER)
|
#if defined(PILEDRIVER) || defined(BULLDOZER) || defined(STEAMROLLER) || defined(EXCAVATOR)
|
||||||
//Enable some optimazation for barcelona.
|
//Enable some optimazation for barcelona.
|
||||||
#define BARCELONA_OPTIMIZATION
|
#define BARCELONA_OPTIMIZATION
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -226,7 +226,7 @@ static __inline int blas_quickdivide(unsigned int x, unsigned int y){
|
||||||
|
|
||||||
#ifdef ASSEMBLER
|
#ifdef ASSEMBLER
|
||||||
|
|
||||||
#if defined(PILEDRIVER) || defined(BULLDOZER) || defined(STEAMROLLER)
|
#if defined(PILEDRIVER) || defined(BULLDOZER) || defined(STEAMROLLER) || defined(EXCAVATOR)
|
||||||
//Enable some optimazation for barcelona.
|
//Enable some optimazation for barcelona.
|
||||||
#define BARCELONA_OPTIMIZATION
|
#define BARCELONA_OPTIMIZATION
|
||||||
#endif
|
#endif
|
||||||
|
|
2
cpuid.h
2
cpuid.h
|
@ -109,6 +109,7 @@
|
||||||
#define CORE_PILEDRIVER 23
|
#define CORE_PILEDRIVER 23
|
||||||
#define CORE_HASWELL 24
|
#define CORE_HASWELL 24
|
||||||
#define CORE_STEAMROLLER 25
|
#define CORE_STEAMROLLER 25
|
||||||
|
#define CORE_EXCAVATOR 26
|
||||||
|
|
||||||
#define HAVE_SSE (1 << 0)
|
#define HAVE_SSE (1 << 0)
|
||||||
#define HAVE_SSE2 (1 << 1)
|
#define HAVE_SSE2 (1 << 1)
|
||||||
|
@ -203,5 +204,6 @@ typedef struct {
|
||||||
#define CPUTYPE_PILEDRIVER 47
|
#define CPUTYPE_PILEDRIVER 47
|
||||||
#define CPUTYPE_HASWELL 48
|
#define CPUTYPE_HASWELL 48
|
||||||
#define CPUTYPE_STEAMROLLER 49
|
#define CPUTYPE_STEAMROLLER 49
|
||||||
|
#define CPUTYPE_EXCAVATOR 50
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
39
cpuid_x86.c
39
cpuid_x86.c
|
@ -1198,11 +1198,20 @@ int get_cpuname(void){
|
||||||
else
|
else
|
||||||
return CPUTYPE_BARCELONA; //OS don't support AVX.
|
return CPUTYPE_BARCELONA; //OS don't support AVX.
|
||||||
case 0:
|
case 0:
|
||||||
if(support_avx())
|
switch(exmodel){
|
||||||
return CPUTYPE_STEAMROLLER;
|
case 3:
|
||||||
else
|
if(support_avx())
|
||||||
return CPUTYPE_BARCELONA; //OS don't support AVX.
|
return CPUTYPE_STEAMROLLER;
|
||||||
|
else
|
||||||
|
return CPUTYPE_BARCELONA; //OS don't support AVX.
|
||||||
|
|
||||||
|
case 6:
|
||||||
|
if(support_avx())
|
||||||
|
return CPUTYPE_EXCAVATOR;
|
||||||
|
else
|
||||||
|
return CPUTYPE_BARCELONA; //OS don't support AVX.
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
|
@ -1332,6 +1341,7 @@ static char *cpuname[] = {
|
||||||
"PILEDRIVER",
|
"PILEDRIVER",
|
||||||
"HASWELL",
|
"HASWELL",
|
||||||
"STEAMROLLER",
|
"STEAMROLLER",
|
||||||
|
"EXCAVATOR",
|
||||||
};
|
};
|
||||||
|
|
||||||
static char *lowercpuname[] = {
|
static char *lowercpuname[] = {
|
||||||
|
@ -1384,6 +1394,7 @@ static char *lowercpuname[] = {
|
||||||
"piledriver",
|
"piledriver",
|
||||||
"haswell",
|
"haswell",
|
||||||
"steamroller",
|
"steamroller",
|
||||||
|
"excavator",
|
||||||
};
|
};
|
||||||
|
|
||||||
static char *corename[] = {
|
static char *corename[] = {
|
||||||
|
@ -1413,6 +1424,7 @@ static char *corename[] = {
|
||||||
"PILEDRIVER",
|
"PILEDRIVER",
|
||||||
"HASWELL",
|
"HASWELL",
|
||||||
"STEAMROLLER",
|
"STEAMROLLER",
|
||||||
|
"EXCAVATOR",
|
||||||
};
|
};
|
||||||
|
|
||||||
static char *corename_lower[] = {
|
static char *corename_lower[] = {
|
||||||
|
@ -1442,6 +1454,7 @@ static char *corename_lower[] = {
|
||||||
"piledriver",
|
"piledriver",
|
||||||
"haswell",
|
"haswell",
|
||||||
"steamroller",
|
"steamroller",
|
||||||
|
"excavator",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -1644,10 +1657,20 @@ int get_coretype(void){
|
||||||
return CORE_BARCELONA; //OS don't support AVX.
|
return CORE_BARCELONA; //OS don't support AVX.
|
||||||
|
|
||||||
case 0:
|
case 0:
|
||||||
if(support_avx())
|
switch(exmodel){
|
||||||
return CORE_STEAMROLLER;
|
case 3:
|
||||||
else
|
if(support_avx())
|
||||||
return CORE_BARCELONA; //OS don't support AVX.
|
return CORE_STEAMROLLER;
|
||||||
|
else
|
||||||
|
return CORE_BARCELONA; //OS don't support AVX.
|
||||||
|
|
||||||
|
case 6:
|
||||||
|
if(support_avx())
|
||||||
|
return CORE_EXCAVATOR;
|
||||||
|
else
|
||||||
|
return CORE_BARCELONA; //OS don't support AVX.
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -67,6 +67,7 @@ extern gotoblas_t gotoblas_SANDYBRIDGE;
|
||||||
extern gotoblas_t gotoblas_BULLDOZER;
|
extern gotoblas_t gotoblas_BULLDOZER;
|
||||||
extern gotoblas_t gotoblas_PILEDRIVER;
|
extern gotoblas_t gotoblas_PILEDRIVER;
|
||||||
extern gotoblas_t gotoblas_STEAMROLLER;
|
extern gotoblas_t gotoblas_STEAMROLLER;
|
||||||
|
extern gotoblas_t gotoblas_EXCAVATOR;
|
||||||
#ifdef NO_AVX2
|
#ifdef NO_AVX2
|
||||||
#define gotoblas_HASWELL gotoblas_SANDYBRIDGE
|
#define gotoblas_HASWELL gotoblas_SANDYBRIDGE
|
||||||
#else
|
#else
|
||||||
|
@ -79,6 +80,7 @@ extern gotoblas_t gotoblas_HASWELL;
|
||||||
#define gotoblas_BULLDOZER gotoblas_BARCELONA
|
#define gotoblas_BULLDOZER gotoblas_BARCELONA
|
||||||
#define gotoblas_PILEDRIVER gotoblas_BARCELONA
|
#define gotoblas_PILEDRIVER gotoblas_BARCELONA
|
||||||
#define gotoblas_STEAMROLLER gotoblas_BARCELONA
|
#define gotoblas_STEAMROLLER gotoblas_BARCELONA
|
||||||
|
#define gotoblas_EXCAVATOR gotoblas_BARCELONA
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -307,12 +309,22 @@ static gotoblas_t *get_coretype(void){
|
||||||
return &gotoblas_BARCELONA; //OS doesn't support AVX. Use old kernels.
|
return &gotoblas_BARCELONA; //OS doesn't support AVX. Use old kernels.
|
||||||
}
|
}
|
||||||
}else if(model == 0){
|
}else if(model == 0){
|
||||||
//AMD STEAMROLLER
|
if (exmodel == 3) {
|
||||||
if(support_avx())
|
//AMD STEAMROLLER
|
||||||
return &gotoblas_STEAMROLLER;
|
if(support_avx())
|
||||||
else{
|
return &gotoblas_STEAMROLLER;
|
||||||
openblas_warning(FALLBACK_VERBOSE, BARCELONA_FALLBACK);
|
else{
|
||||||
return &gotoblas_BARCELONA; //OS doesn't support AVX. Use old kernels.
|
openblas_warning(FALLBACK_VERBOSE, BARCELONA_FALLBACK);
|
||||||
|
return &gotoblas_BARCELONA; //OS doesn't support AVX. Use old kernels.
|
||||||
|
}
|
||||||
|
}else if (exmodel == 6) {
|
||||||
|
if(support_avx())
|
||||||
|
return &gotoblas_EXCAVATOR;
|
||||||
|
else{
|
||||||
|
openblas_warning(FALLBACK_VERBOSE, BARCELONA_FALLBACK);
|
||||||
|
return &gotoblas_BARCELONA; //OS doesn't support AVX. Use old kernels.
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -357,6 +369,7 @@ static char *corename[] = {
|
||||||
"Piledriver",
|
"Piledriver",
|
||||||
"Haswell",
|
"Haswell",
|
||||||
"Steamroller",
|
"Steamroller",
|
||||||
|
"Excavator",
|
||||||
};
|
};
|
||||||
|
|
||||||
char *gotoblas_corename(void) {
|
char *gotoblas_corename(void) {
|
||||||
|
@ -382,6 +395,7 @@ char *gotoblas_corename(void) {
|
||||||
if (gotoblas == &gotoblas_PILEDRIVER) return corename[19];
|
if (gotoblas == &gotoblas_PILEDRIVER) return corename[19];
|
||||||
if (gotoblas == &gotoblas_HASWELL) return corename[20];
|
if (gotoblas == &gotoblas_HASWELL) return corename[20];
|
||||||
if (gotoblas == &gotoblas_STEAMROLLER) return corename[21];
|
if (gotoblas == &gotoblas_STEAMROLLER) return corename[21];
|
||||||
|
if (gotoblas == &gotoblas_EXCAVATOR) return corename[22];
|
||||||
|
|
||||||
return corename[0];
|
return corename[0];
|
||||||
}
|
}
|
||||||
|
@ -412,7 +426,7 @@ static gotoblas_t *force_coretype(char *coretype){
|
||||||
|
|
||||||
switch (found)
|
switch (found)
|
||||||
{
|
{
|
||||||
|
case 22: return (&gotoblas_EXCAVATOR);
|
||||||
case 21: return (&gotoblas_STEAMROLLER);
|
case 21: return (&gotoblas_STEAMROLLER);
|
||||||
case 20: return (&gotoblas_HASWELL);
|
case 20: return (&gotoblas_HASWELL);
|
||||||
case 19: return (&gotoblas_PILEDRIVER);
|
case 19: return (&gotoblas_PILEDRIVER);
|
||||||
|
|
16
getarch.c
16
getarch.c
|
@ -448,6 +448,22 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#define CORENAME "STEAMROLLER"
|
#define CORENAME "STEAMROLLER"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined (FORCE_EXCAVATOR)
|
||||||
|
#define FORCE
|
||||||
|
#define FORCE_INTEL
|
||||||
|
#define ARCHITECTURE "X86"
|
||||||
|
#define SUBARCHITECTURE "EXCAVATOR"
|
||||||
|
#define ARCHCONFIG "-DEXCAVATOR " \
|
||||||
|
"-DL1_DATA_SIZE=16384 -DL1_DATA_LINESIZE=64 " \
|
||||||
|
"-DL2_SIZE=2097152 -DL2_LINESIZE=64 -DL3_SIZE=12582912 " \
|
||||||
|
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 " \
|
||||||
|
"-DHAVE_MMX -DHAVE_SSE -DHAVE_SSE2 -DHAVE_SSE3 -DHAVE_SSE4_1 -DHAVE_SSE4_2 " \
|
||||||
|
"-DHAVE_SSE4A -DHAVE_MISALIGNSSE -DHAVE_128BITFPU -DHAVE_FASTMOVU -DHAVE_CFLUSH " \
|
||||||
|
"-DHAVE_AVX -DHAVE_FMA4 -DHAVE_FMA3"
|
||||||
|
#define LIBNAME "excavator"
|
||||||
|
#define CORENAME "EXCAVATOR"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef FORCE_SSE_GENERIC
|
#ifdef FORCE_SSE_GENERIC
|
||||||
#define FORCE
|
#define FORCE
|
||||||
|
|
|
@ -0,0 +1,92 @@
|
||||||
|
SAXPYKERNEL = saxpy.c
|
||||||
|
DAXPYKERNEL = daxpy.c
|
||||||
|
CAXPYKERNEL = caxpy.c
|
||||||
|
ZAXPYKERNEL = zaxpy.c
|
||||||
|
|
||||||
|
SDOTKERNEL = sdot.c
|
||||||
|
DDOTKERNEL = ddot.c
|
||||||
|
CDOTKERNEL = cdot.c
|
||||||
|
ZDOTKERNEL = zdot.c
|
||||||
|
|
||||||
|
|
||||||
|
DSYMV_U_KERNEL = dsymv_U.c
|
||||||
|
DSYMV_L_KERNEL = dsymv_L.c
|
||||||
|
SSYMV_U_KERNEL = ssymv_U.c
|
||||||
|
SSYMV_L_KERNEL = ssymv_L.c
|
||||||
|
|
||||||
|
SGEMVNKERNEL = sgemv_n_4.c
|
||||||
|
SGEMVTKERNEL = sgemv_t_4.c
|
||||||
|
|
||||||
|
DGEMVNKERNEL = dgemv_n_4.c
|
||||||
|
DGEMVTKERNEL = dgemv_t_4.c
|
||||||
|
|
||||||
|
ZGEMVNKERNEL = zgemv_n_dup.S
|
||||||
|
ZGEMVTKERNEL = zgemv_t_4.c
|
||||||
|
|
||||||
|
DCOPYKERNEL = dcopy_bulldozer.S
|
||||||
|
|
||||||
|
|
||||||
|
SGEMMKERNEL = sgemm_kernel_16x2_piledriver.S
|
||||||
|
SGEMMINCOPY = ../generic/gemm_ncopy_16.c
|
||||||
|
SGEMMITCOPY = ../generic/gemm_tcopy_16.c
|
||||||
|
SGEMMONCOPY = gemm_ncopy_2_bulldozer.S
|
||||||
|
SGEMMOTCOPY = gemm_tcopy_2_bulldozer.S
|
||||||
|
SGEMMINCOPYOBJ = sgemm_incopy$(TSUFFIX).$(SUFFIX)
|
||||||
|
SGEMMITCOPYOBJ = sgemm_itcopy$(TSUFFIX).$(SUFFIX)
|
||||||
|
SGEMMONCOPYOBJ = sgemm_oncopy$(TSUFFIX).$(SUFFIX)
|
||||||
|
SGEMMOTCOPYOBJ = sgemm_otcopy$(TSUFFIX).$(SUFFIX)
|
||||||
|
|
||||||
|
DGEMMKERNEL = dgemm_kernel_8x2_piledriver.S
|
||||||
|
DGEMMINCOPY = ../generic/gemm_ncopy_8.c
|
||||||
|
DGEMMITCOPY = ../generic/gemm_tcopy_8.c
|
||||||
|
DGEMMONCOPY = gemm_ncopy_2_bulldozer.S
|
||||||
|
DGEMMOTCOPY = gemm_tcopy_2_bulldozer.S
|
||||||
|
DGEMMINCOPYOBJ = dgemm_incopy$(TSUFFIX).$(SUFFIX)
|
||||||
|
DGEMMITCOPYOBJ = dgemm_itcopy$(TSUFFIX).$(SUFFIX)
|
||||||
|
DGEMMONCOPYOBJ = dgemm_oncopy$(TSUFFIX).$(SUFFIX)
|
||||||
|
DGEMMOTCOPYOBJ = dgemm_otcopy$(TSUFFIX).$(SUFFIX)
|
||||||
|
|
||||||
|
CGEMMKERNEL = cgemm_kernel_4x2_piledriver.S
|
||||||
|
CGEMMINCOPY = ../generic/zgemm_ncopy_4.c
|
||||||
|
CGEMMITCOPY = ../generic/zgemm_tcopy_4.c
|
||||||
|
CGEMMONCOPY = ../generic/zgemm_ncopy_2.c
|
||||||
|
CGEMMOTCOPY = ../generic/zgemm_tcopy_2.c
|
||||||
|
CGEMMINCOPYOBJ = cgemm_incopy$(TSUFFIX).$(SUFFIX)
|
||||||
|
CGEMMITCOPYOBJ = cgemm_itcopy$(TSUFFIX).$(SUFFIX)
|
||||||
|
CGEMMONCOPYOBJ = cgemm_oncopy$(TSUFFIX).$(SUFFIX)
|
||||||
|
CGEMMOTCOPYOBJ = cgemm_otcopy$(TSUFFIX).$(SUFFIX)
|
||||||
|
ZGEMMKERNEL = zgemm_kernel_2x2_piledriver.S
|
||||||
|
ZGEMMINCOPY =
|
||||||
|
ZGEMMITCOPY =
|
||||||
|
ZGEMMONCOPY = ../generic/zgemm_ncopy_2.c
|
||||||
|
ZGEMMOTCOPY = ../generic/zgemm_tcopy_2.c
|
||||||
|
ZGEMMINCOPYOBJ =
|
||||||
|
ZGEMMITCOPYOBJ =
|
||||||
|
ZGEMMONCOPYOBJ = zgemm_oncopy$(TSUFFIX).$(SUFFIX)
|
||||||
|
ZGEMMOTCOPYOBJ = zgemm_otcopy$(TSUFFIX).$(SUFFIX)
|
||||||
|
|
||||||
|
CGEMM3MKERNEL = zgemm3m_kernel_8x4_barcelona.S
|
||||||
|
ZGEMM3MKERNEL = zgemm3m_kernel_4x4_barcelona.S
|
||||||
|
|
||||||
|
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 = dtrsm_kernel_LT_8x2_bulldozer.S
|
||||||
|
DTRSMKERNEL_RN = dtrsm_kernel_RN_8x2_bulldozer.S
|
||||||
|
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
|
||||||
|
|
||||||
|
|
92
param.h
92
param.h
|
@ -499,6 +499,98 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef EXCAVATOR
|
||||||
|
#define SNUMOPT 8
|
||||||
|
#define DNUMOPT 4
|
||||||
|
|
||||||
|
#define GEMM_DEFAULT_OFFSET_A 64
|
||||||
|
#define GEMM_DEFAULT_OFFSET_B 832
|
||||||
|
#define GEMM_DEFAULT_ALIGN 0x0fffUL
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define QGEMM_DEFAULT_UNROLL_N 2
|
||||||
|
#define CGEMM_DEFAULT_UNROLL_N 2
|
||||||
|
#define ZGEMM_DEFAULT_UNROLL_N 2
|
||||||
|
#define XGEMM_DEFAULT_UNROLL_N 1
|
||||||
|
|
||||||
|
#ifdef ARCH_X86
|
||||||
|
#define SGEMM_DEFAULT_UNROLL_N 4
|
||||||
|
#define DGEMM_DEFAULT_UNROLL_N 4
|
||||||
|
#define SGEMM_DEFAULT_UNROLL_M 4
|
||||||
|
#define DGEMM_DEFAULT_UNROLL_M 2
|
||||||
|
#define QGEMM_DEFAULT_UNROLL_M 2
|
||||||
|
#define CGEMM_DEFAULT_UNROLL_M 2
|
||||||
|
#define ZGEMM_DEFAULT_UNROLL_M 1
|
||||||
|
#define XGEMM_DEFAULT_UNROLL_M 1
|
||||||
|
#else
|
||||||
|
#define SGEMM_DEFAULT_UNROLL_N 2
|
||||||
|
#define DGEMM_DEFAULT_UNROLL_N 2
|
||||||
|
#define SGEMM_DEFAULT_UNROLL_M 16
|
||||||
|
#define DGEMM_DEFAULT_UNROLL_M 8
|
||||||
|
#define QGEMM_DEFAULT_UNROLL_M 2
|
||||||
|
#define CGEMM_DEFAULT_UNROLL_M 4
|
||||||
|
#define ZGEMM_DEFAULT_UNROLL_M 2
|
||||||
|
#define XGEMM_DEFAULT_UNROLL_M 1
|
||||||
|
#define CGEMM3M_DEFAULT_UNROLL_N 4
|
||||||
|
#define CGEMM3M_DEFAULT_UNROLL_M 8
|
||||||
|
#define ZGEMM3M_DEFAULT_UNROLL_N 4
|
||||||
|
#define ZGEMM3M_DEFAULT_UNROLL_M 4
|
||||||
|
#define GEMV_UNROLL 8
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARCH_X86_64)
|
||||||
|
#define SGEMM_DEFAULT_P 768
|
||||||
|
#define DGEMM_DEFAULT_P 576
|
||||||
|
#define ZGEMM_DEFAULT_P 288
|
||||||
|
#define CGEMM_DEFAULT_P 576
|
||||||
|
#else
|
||||||
|
#define SGEMM_DEFAULT_P 448
|
||||||
|
#define DGEMM_DEFAULT_P 480
|
||||||
|
#define ZGEMM_DEFAULT_P 112
|
||||||
|
#define CGEMM_DEFAULT_P 224
|
||||||
|
#endif
|
||||||
|
#define QGEMM_DEFAULT_P 112
|
||||||
|
#define XGEMM_DEFAULT_P 56
|
||||||
|
|
||||||
|
#if defined(ARCH_X86_64)
|
||||||
|
#define SGEMM_DEFAULT_Q 192
|
||||||
|
#define DGEMM_DEFAULT_Q 160
|
||||||
|
#define ZGEMM_DEFAULT_Q 160
|
||||||
|
#define CGEMM_DEFAULT_Q 160
|
||||||
|
#else
|
||||||
|
#define SGEMM_DEFAULT_Q 224
|
||||||
|
#define DGEMM_DEFAULT_Q 224
|
||||||
|
#define ZGEMM_DEFAULT_Q 224
|
||||||
|
#define CGEMM_DEFAULT_Q 224
|
||||||
|
#endif
|
||||||
|
#define QGEMM_DEFAULT_Q 224
|
||||||
|
#define XGEMM_DEFAULT_Q 224
|
||||||
|
|
||||||
|
#define CGEMM3M_DEFAULT_P 448
|
||||||
|
#define ZGEMM3M_DEFAULT_P 224
|
||||||
|
#define XGEMM3M_DEFAULT_P 112
|
||||||
|
#define CGEMM3M_DEFAULT_Q 224
|
||||||
|
#define ZGEMM3M_DEFAULT_Q 224
|
||||||
|
#define XGEMM3M_DEFAULT_Q 224
|
||||||
|
#define CGEMM3M_DEFAULT_R 12288
|
||||||
|
#define ZGEMM3M_DEFAULT_R 12288
|
||||||
|
#define XGEMM3M_DEFAULT_R 12288
|
||||||
|
|
||||||
|
#define SGEMM_DEFAULT_R 12288
|
||||||
|
#define QGEMM_DEFAULT_R qgemm_r
|
||||||
|
#define DGEMM_DEFAULT_R 12288
|
||||||
|
#define CGEMM_DEFAULT_R cgemm_r
|
||||||
|
#define ZGEMM_DEFAULT_R zgemm_r
|
||||||
|
#define XGEMM_DEFAULT_R xgemm_r
|
||||||
|
|
||||||
|
#define SYMV_P 16
|
||||||
|
#define HAVE_EXCLUSIVE_CACHE
|
||||||
|
|
||||||
|
#define GEMM_THREAD gemm_thread_mn
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef ATHLON
|
#ifdef ATHLON
|
||||||
|
|
||||||
#define SNUMOPT 4
|
#define SNUMOPT 4
|
||||||
|
|
Loading…
Reference in New Issue