Merge pull request #3456 from martin-frbg/issue3444
Add/restore a GENERIC target for MIPS32 and support MIPS32 cross-compilation using CMAKE
This commit is contained in:
commit
bc4c98de26
|
@ -109,7 +109,7 @@ if (${ARCH} STREQUAL "ia64")
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (MIPS64)
|
if (MIPS32 OR MIPS64)
|
||||||
set(NO_BINARY_MODE 1)
|
set(NO_BINARY_MODE 1)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,11 @@ if (${CMAKE_C_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_C_COMPILER_ID} STREQUAL "LS
|
||||||
|
|
||||||
if (NO_BINARY_MODE)
|
if (NO_BINARY_MODE)
|
||||||
|
|
||||||
|
if (MIPS32)
|
||||||
|
set(CCOMMON_OPT "${CCOMMON_OPT} -mabi=32")
|
||||||
|
set(BINARY_DEFINED 1)
|
||||||
|
endif ()
|
||||||
|
|
||||||
if (MIPS64)
|
if (MIPS64)
|
||||||
if (BINARY64)
|
if (BINARY64)
|
||||||
set(CCOMMON_OPT "${CCOMMON_OPT} -mabi=64")
|
set(CCOMMON_OPT "${CCOMMON_OPT} -mabi=64")
|
||||||
|
|
|
@ -416,7 +416,7 @@ endif ()
|
||||||
set(ZGEMM_UNROLL_M 4)
|
set(ZGEMM_UNROLL_M 4)
|
||||||
set(ZGEMM_UNROLL_N 4)
|
set(ZGEMM_UNROLL_N 4)
|
||||||
set(SYMV_P 16)
|
set(SYMV_P 16)
|
||||||
elseif ("${TCORE}" STREQUAL "VORTEX")
|
elseif ("${TCORE}" STREQUAL "VORTEX")
|
||||||
file(APPEND ${TARGET_CONF_TEMP}
|
file(APPEND ${TARGET_CONF_TEMP}
|
||||||
"#define ARMV8\n"
|
"#define ARMV8\n"
|
||||||
"#define L1_CODE_SIZE\t32768\n"
|
"#define L1_CODE_SIZE\t32768\n"
|
||||||
|
@ -439,6 +439,34 @@ elseif ("${TCORE}" STREQUAL "VORTEX")
|
||||||
set(ZGEMM_UNROLL_M 4)
|
set(ZGEMM_UNROLL_M 4)
|
||||||
set(ZGEMM_UNROLL_N 4)
|
set(ZGEMM_UNROLL_N 4)
|
||||||
set(SYMV_P 16)
|
set(SYMV_P 16)
|
||||||
|
elseif ("${TCORE}" STREQUAL "P5600")
|
||||||
|
file(APPEND ${TARGET_CONF_TEMP}
|
||||||
|
"#define L2_SIZE 1048576\n"
|
||||||
|
"#define DTB_SIZE 4096\n"
|
||||||
|
"#define DTB_DEFAULT_ENTRIES 64\n")
|
||||||
|
set(SGEMM_UNROLL_M 2)
|
||||||
|
set(SGEMM_UNROLL_N 2)
|
||||||
|
set(DGEMM_UNROLL_M 2)
|
||||||
|
set(DGEMM_UNROLL_N 2)
|
||||||
|
set(CGEMM_UNROLL_M 2)
|
||||||
|
set(CGEMM_UNROLL_N 2)
|
||||||
|
set(ZGEMM_UNROLL_M 2)
|
||||||
|
set(ZGEMM_UNROLL_N 2)
|
||||||
|
set(SYMV_P 16)
|
||||||
|
elseif ("${TCORE}" MATCHES "MIPS")
|
||||||
|
file(APPEND ${TARGET_CONF_TEMP}
|
||||||
|
"#define L2_SIZE 262144\n"
|
||||||
|
"#define DTB_SIZE 4096\n"
|
||||||
|
"#define DTB_DEFAULT_ENTRIES 64\n")
|
||||||
|
set(SGEMM_UNROLL_M 2)
|
||||||
|
set(SGEMM_UNROLL_N 2)
|
||||||
|
set(DGEMM_UNROLL_M 2)
|
||||||
|
set(DGEMM_UNROLL_N 2)
|
||||||
|
set(CGEMM_UNROLL_M 2)
|
||||||
|
set(CGEMM_UNROLL_N 2)
|
||||||
|
set(ZGEMM_UNROLL_M 2)
|
||||||
|
set(ZGEMM_UNROLL_N 2)
|
||||||
|
set(SYMV_P 16)
|
||||||
elseif ("${TCORE}" STREQUAL "POWER6")
|
elseif ("${TCORE}" STREQUAL "POWER6")
|
||||||
file(APPEND ${TARGET_CONF_TEMP}
|
file(APPEND ${TARGET_CONF_TEMP}
|
||||||
"#define L1_DATA_SIZE 32768\n"
|
"#define L1_DATA_SIZE 32768\n"
|
||||||
|
|
|
@ -73,6 +73,8 @@ elseif (${CMAKE_CROSSCOMPILING})
|
||||||
else ()
|
else ()
|
||||||
set(X86 1)
|
set(X86 1)
|
||||||
endif()
|
endif()
|
||||||
|
elseif (${TARGET} STREQUAL "P5600" OR ${TARGET} MATCHES "MIPS.*")
|
||||||
|
set(MIPS32 1)
|
||||||
elseif (${TARGET} STREQUAL "ARMV7")
|
elseif (${TARGET} STREQUAL "ARMV7")
|
||||||
set(ARM 1)
|
set(ARM 1)
|
||||||
else()
|
else()
|
||||||
|
@ -88,6 +90,10 @@ elseif(X86)
|
||||||
set(ARCH "x86")
|
set(ARCH "x86")
|
||||||
elseif(PPC)
|
elseif(PPC)
|
||||||
set(ARCH "power")
|
set(ARCH "power")
|
||||||
|
elseif(MIPS32)
|
||||||
|
set(ARCH "mips")
|
||||||
|
elseif(MIPS64)
|
||||||
|
set(ARCH "mips64")
|
||||||
elseif(ARM)
|
elseif(ARM)
|
||||||
set(ARCH "arm")
|
set(ARCH "arm")
|
||||||
elseif(ARM64)
|
elseif(ARM64)
|
||||||
|
|
|
@ -0,0 +1,160 @@
|
||||||
|
SGEMM_BETA = ../generic/gemm_beta.c
|
||||||
|
DGEMM_BETA = ../generic/gemm_beta.c
|
||||||
|
CGEMM_BETA = ../generic/zgemm_beta.c
|
||||||
|
ZGEMM_BETA = ../generic/zgemm_beta.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
|
||||||
|
|
||||||
|
#Pure C for other kernels
|
||||||
|
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
|
||||||
|
|
||||||
|
SSUMKERNEL = ../mips/sum.c
|
||||||
|
DSUMKERNEL = ../mips/sum.c
|
||||||
|
CSUMKERNEL = ../mips/zsum.c
|
||||||
|
ZSUMKERNEL = ../mips/zsum.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
|
||||||
|
|
||||||
|
SSYMV_U_KERNEL = ../generic/symv_k.c
|
||||||
|
SSYMV_L_KERNEL = ../generic/symv_k.c
|
||||||
|
DSYMV_U_KERNEL = ../generic/symv_k.c
|
||||||
|
DSYMV_L_KERNEL = ../generic/symv_k.c
|
||||||
|
QSYMV_U_KERNEL = ../generic/symv_k.c
|
||||||
|
QSYMV_L_KERNEL = ../generic/symv_k.c
|
||||||
|
CSYMV_U_KERNEL = ../generic/zsymv_k.c
|
||||||
|
CSYMV_L_KERNEL = ../generic/zsymv_k.c
|
||||||
|
ZSYMV_U_KERNEL = ../generic/zsymv_k.c
|
||||||
|
ZSYMV_L_KERNEL = ../generic/zsymv_k.c
|
||||||
|
XSYMV_U_KERNEL = ../generic/zsymv_k.c
|
||||||
|
XSYMV_L_KERNEL = ../generic/zsymv_k.c
|
||||||
|
|
||||||
|
ZHEMV_U_KERNEL = ../generic/zhemv_k.c
|
||||||
|
ZHEMV_L_KERNEL = ../generic/zhemv_k.c
|
||||||
|
|
||||||
|
CGEMM3MKERNEL = ../generic/zgemm3mkernel_dump.c
|
||||||
|
ZGEMM3MKERNEL = ../generic/zgemm3mkernel_dump.c
|
15
param.h
15
param.h
|
@ -3602,6 +3602,20 @@ is a big desktop or server with abundant cache rather than a phone or embedded d
|
||||||
#define XGEMM_DEFAULT_UNROLL_M 1
|
#define XGEMM_DEFAULT_UNROLL_M 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef ARCH_MIPS
|
||||||
|
#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
|
||||||
|
#else
|
||||||
#define SGEMM_DEFAULT_P sgemm_p
|
#define SGEMM_DEFAULT_P sgemm_p
|
||||||
#define DGEMM_DEFAULT_P dgemm_p
|
#define DGEMM_DEFAULT_P dgemm_p
|
||||||
#define QGEMM_DEFAULT_P qgemm_p
|
#define QGEMM_DEFAULT_P qgemm_p
|
||||||
|
@ -3622,6 +3636,7 @@ is a big desktop or server with abundant cache rather than a phone or embedded d
|
||||||
#define CGEMM_DEFAULT_Q 128
|
#define CGEMM_DEFAULT_Q 128
|
||||||
#define ZGEMM_DEFAULT_Q 128
|
#define ZGEMM_DEFAULT_Q 128
|
||||||
#define XGEMM_DEFAULT_Q 128
|
#define XGEMM_DEFAULT_Q 128
|
||||||
|
#endif
|
||||||
|
|
||||||
#define SYMV_P 16
|
#define SYMV_P 16
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue