Merge pull request #3459 from rafaelcfsousa/fix_cmake
Fix issues when building OpenBLAS with cmake
This commit is contained in:
commit
bcfbdc81b2
|
@ -1,214 +1,218 @@
|
|||
# helper functions for the kernel CMakeLists.txt
|
||||
|
||||
function(SetFallback KERNEL SOURCE_PATH)
|
||||
if (NOT (DEFINED ${KERNEL}))
|
||||
set(${KERNEL} ${SOURCE_PATH} PARENT_SCOPE)
|
||||
endif ()
|
||||
endfunction()
|
||||
|
||||
# Set the default filenames for L1 objects. Most of these will be overridden by the appropriate KERNEL file.
|
||||
macro(SetDefaultL1)
|
||||
set(SAMAXKERNEL amax.S)
|
||||
set(DAMAXKERNEL amax.S)
|
||||
set(QAMAXKERNEL amax.S)
|
||||
set(CAMAXKERNEL zamax.S)
|
||||
set(ZAMAXKERNEL zamax.S)
|
||||
set(XAMAXKERNEL zamax.S)
|
||||
set(SAMINKERNEL amin.S)
|
||||
set(DAMINKERNEL amin.S)
|
||||
set(QAMINKERNEL amin.S)
|
||||
set(CAMINKERNEL zamin.S)
|
||||
set(ZAMINKERNEL zamin.S)
|
||||
set(XAMINKERNEL zamin.S)
|
||||
set(SMAXKERNEL max.S)
|
||||
set(DMAXKERNEL max.S)
|
||||
set(QMAXKERNEL max.S)
|
||||
set(SMINKERNEL min.S)
|
||||
set(DMINKERNEL min.S)
|
||||
set(QMINKERNEL min.S)
|
||||
set(ISAMAXKERNEL iamax.S)
|
||||
set(IDAMAXKERNEL iamax.S)
|
||||
set(IQAMAXKERNEL iamax.S)
|
||||
set(ICAMAXKERNEL izamax.S)
|
||||
set(IZAMAXKERNEL izamax.S)
|
||||
set(IXAMAXKERNEL izamax.S)
|
||||
set(ISAMINKERNEL iamin.S)
|
||||
set(IDAMINKERNEL iamin.S)
|
||||
set(IQAMINKERNEL iamin.S)
|
||||
set(ICAMINKERNEL izamin.S)
|
||||
set(IZAMINKERNEL izamin.S)
|
||||
set(IXAMINKERNEL izamin.S)
|
||||
set(ISMAXKERNEL iamax.S)
|
||||
set(IDMAXKERNEL iamax.S)
|
||||
set(IQMAXKERNEL iamax.S)
|
||||
set(ISMINKERNEL iamin.S)
|
||||
set(IDMINKERNEL iamin.S)
|
||||
set(IQMINKERNEL iamin.S)
|
||||
set(SASUMKERNEL asum.S)
|
||||
set(DASUMKERNEL asum.S)
|
||||
set(CASUMKERNEL zasum.S)
|
||||
set(ZASUMKERNEL zasum.S)
|
||||
set(QASUMKERNEL asum.S)
|
||||
set(XASUMKERNEL zasum.S)
|
||||
set(SAXPYKERNEL axpy.S)
|
||||
set(DAXPYKERNEL axpy.S)
|
||||
set(CAXPYKERNEL zaxpy.S)
|
||||
set(ZAXPYKERNEL zaxpy.S)
|
||||
set(QAXPYKERNEL axpy.S)
|
||||
set(XAXPYKERNEL zaxpy.S)
|
||||
set(SCOPYKERNEL copy.S)
|
||||
set(DCOPYKERNEL copy.S)
|
||||
set(CCOPYKERNEL zcopy.S)
|
||||
set(ZCOPYKERNEL zcopy.S)
|
||||
set(QCOPYKERNEL copy.S)
|
||||
set(XCOPYKERNEL zcopy.S)
|
||||
set(SDOTKERNEL dot.S)
|
||||
set(DDOTKERNEL dot.S)
|
||||
set(CDOTKERNEL zdot.S)
|
||||
set(ZDOTKERNEL zdot.S)
|
||||
set(QDOTKERNEL dot.S)
|
||||
set(XDOTKERNEL zdot.S)
|
||||
set(SNRM2KERNEL nrm2.S)
|
||||
set(DNRM2KERNEL nrm2.S)
|
||||
set(QNRM2KERNEL nrm2.S)
|
||||
set(CNRM2KERNEL znrm2.S)
|
||||
set(ZNRM2KERNEL znrm2.S)
|
||||
set(XNRM2KERNEL znrm2.S)
|
||||
set(SROTKERNEL rot.S)
|
||||
set(DROTKERNEL rot.S)
|
||||
set(QROTKERNEL rot.S)
|
||||
set(CROTKERNEL zrot.S)
|
||||
set(ZROTKERNEL zrot.S)
|
||||
set(XROTKERNEL zrot.S)
|
||||
set(SSCALKERNEL scal.S)
|
||||
set(DSCALKERNEL scal.S)
|
||||
set(CSCALKERNEL zscal.S)
|
||||
set(ZSCALKERNEL zscal.S)
|
||||
set(QSCALKERNEL scal.S)
|
||||
set(XSCALKERNEL zscal.S)
|
||||
set(SSWAPKERNEL swap.S)
|
||||
set(DSWAPKERNEL swap.S)
|
||||
set(CSWAPKERNEL zswap.S)
|
||||
set(ZSWAPKERNEL zswap.S)
|
||||
set(QSWAPKERNEL swap.S)
|
||||
set(XSWAPKERNEL zswap.S)
|
||||
set(SGEMVNKERNEL gemv_n.S)
|
||||
set(SGEMVTKERNEL gemv_t.S)
|
||||
set(DGEMVNKERNEL gemv_n.S)
|
||||
set(DGEMVTKERNEL gemv_t.S)
|
||||
set(CGEMVNKERNEL zgemv_n.S)
|
||||
set(CGEMVTKERNEL zgemv_t.S)
|
||||
set(ZGEMVNKERNEL zgemv_n.S)
|
||||
set(ZGEMVTKERNEL zgemv_t.S)
|
||||
set(QGEMVNKERNEL gemv_n.S)
|
||||
set(QGEMVTKERNEL gemv_t.S)
|
||||
set(XGEMVNKERNEL zgemv_n.S)
|
||||
set(XGEMVTKERNEL zgemv_t.S)
|
||||
set(SCABS_KERNEL ../generic/cabs.c)
|
||||
set(DCABS_KERNEL ../generic/cabs.c)
|
||||
set(QCABS_KERNEL ../generic/cabs.c)
|
||||
set(LSAME_KERNEL ../generic/lsame.c)
|
||||
set(SAXPBYKERNEL ../arm/axpby.c)
|
||||
set(DAXPBYKERNEL ../arm/axpby.c)
|
||||
set(CAXPBYKERNEL ../arm/zaxpby.c)
|
||||
set(ZAXPBYKERNEL ../arm/zaxpby.c)
|
||||
set(SSUMKERNEL sum.S)
|
||||
set(DSUMKERNEL sum.S)
|
||||
set(CSUMKERNEL zsum.S)
|
||||
set(ZSUMKERNEL zsum.S)
|
||||
set(QSUMKERNEL sum.S)
|
||||
set(XSUMKERNEL zsum.S)
|
||||
SetFallback(SAMAXKERNEL amax.S)
|
||||
SetFallback(DAMAXKERNEL amax.S)
|
||||
SetFallback(QAMAXKERNEL amax.S)
|
||||
SetFallback(CAMAXKERNEL zamax.S)
|
||||
SetFallback(ZAMAXKERNEL zamax.S)
|
||||
SetFallback(XAMAXKERNEL zamax.S)
|
||||
SetFallback(SAMINKERNEL amin.S)
|
||||
SetFallback(DAMINKERNEL amin.S)
|
||||
SetFallback(QAMINKERNEL amin.S)
|
||||
SetFallback(CAMINKERNEL zamin.S)
|
||||
SetFallback(ZAMINKERNEL zamin.S)
|
||||
SetFallback(XAMINKERNEL zamin.S)
|
||||
SetFallback(SMAXKERNEL max.S)
|
||||
SetFallback(DMAXKERNEL max.S)
|
||||
SetFallback(QMAXKERNEL max.S)
|
||||
SetFallback(SMINKERNEL min.S)
|
||||
SetFallback(DMINKERNEL min.S)
|
||||
SetFallback(QMINKERNEL min.S)
|
||||
SetFallback(ISAMAXKERNEL iamax.S)
|
||||
SetFallback(IDAMAXKERNEL iamax.S)
|
||||
SetFallback(IQAMAXKERNEL iamax.S)
|
||||
SetFallback(ICAMAXKERNEL izamax.S)
|
||||
SetFallback(IZAMAXKERNEL izamax.S)
|
||||
SetFallback(IXAMAXKERNEL izamax.S)
|
||||
SetFallback(ISAMINKERNEL iamin.S)
|
||||
SetFallback(IDAMINKERNEL iamin.S)
|
||||
SetFallback(IQAMINKERNEL iamin.S)
|
||||
SetFallback(ICAMINKERNEL izamin.S)
|
||||
SetFallback(IZAMINKERNEL izamin.S)
|
||||
SetFallback(IXAMINKERNEL izamin.S)
|
||||
SetFallback(ISMAXKERNEL iamax.S)
|
||||
SetFallback(IDMAXKERNEL iamax.S)
|
||||
SetFallback(IQMAXKERNEL iamax.S)
|
||||
SetFallback(ISMINKERNEL iamin.S)
|
||||
SetFallback(IDMINKERNEL iamin.S)
|
||||
SetFallback(IQMINKERNEL iamin.S)
|
||||
SetFallback(SASUMKERNEL asum.S)
|
||||
SetFallback(DASUMKERNEL asum.S)
|
||||
SetFallback(CASUMKERNEL zasum.S)
|
||||
SetFallback(ZASUMKERNEL zasum.S)
|
||||
SetFallback(QASUMKERNEL asum.S)
|
||||
SetFallback(XASUMKERNEL zasum.S)
|
||||
SetFallback(SAXPYKERNEL axpy.S)
|
||||
SetFallback(DAXPYKERNEL axpy.S)
|
||||
SetFallback(CAXPYKERNEL zaxpy.S)
|
||||
SetFallback(ZAXPYKERNEL zaxpy.S)
|
||||
SetFallback(QAXPYKERNEL axpy.S)
|
||||
SetFallback(XAXPYKERNEL zaxpy.S)
|
||||
SetFallback(SCOPYKERNEL copy.S)
|
||||
SetFallback(DCOPYKERNEL copy.S)
|
||||
SetFallback(CCOPYKERNEL zcopy.S)
|
||||
SetFallback(ZCOPYKERNEL zcopy.S)
|
||||
SetFallback(QCOPYKERNEL copy.S)
|
||||
SetFallback(XCOPYKERNEL zcopy.S)
|
||||
SetFallback(SDOTKERNEL dot.S)
|
||||
SetFallback(DDOTKERNEL dot.S)
|
||||
SetFallback(CDOTKERNEL zdot.S)
|
||||
SetFallback(ZDOTKERNEL zdot.S)
|
||||
SetFallback(QDOTKERNEL dot.S)
|
||||
SetFallback(XDOTKERNEL zdot.S)
|
||||
SetFallback(SNRM2KERNEL nrm2.S)
|
||||
SetFallback(DNRM2KERNEL nrm2.S)
|
||||
SetFallback(QNRM2KERNEL nrm2.S)
|
||||
SetFallback(CNRM2KERNEL znrm2.S)
|
||||
SetFallback(ZNRM2KERNEL znrm2.S)
|
||||
SetFallback(XNRM2KERNEL znrm2.S)
|
||||
SetFallback(SROTKERNEL rot.S)
|
||||
SetFallback(DROTKERNEL rot.S)
|
||||
SetFallback(QROTKERNEL rot.S)
|
||||
SetFallback(CROTKERNEL zrot.S)
|
||||
SetFallback(ZROTKERNEL zrot.S)
|
||||
SetFallback(XROTKERNEL zrot.S)
|
||||
SetFallback(SSCALKERNEL scal.S)
|
||||
SetFallback(DSCALKERNEL scal.S)
|
||||
SetFallback(CSCALKERNEL zscal.S)
|
||||
SetFallback(ZSCALKERNEL zscal.S)
|
||||
SetFallback(QSCALKERNEL scal.S)
|
||||
SetFallback(XSCALKERNEL zscal.S)
|
||||
SetFallback(SSWAPKERNEL swap.S)
|
||||
SetFallback(DSWAPKERNEL swap.S)
|
||||
SetFallback(CSWAPKERNEL zswap.S)
|
||||
SetFallback(ZSWAPKERNEL zswap.S)
|
||||
SetFallback(QSWAPKERNEL swap.S)
|
||||
SetFallback(XSWAPKERNEL zswap.S)
|
||||
SetFallback(SGEMVNKERNEL gemv_n.S)
|
||||
SetFallback(SGEMVTKERNEL gemv_t.S)
|
||||
SetFallback(DGEMVNKERNEL gemv_n.S)
|
||||
SetFallback(DGEMVTKERNEL gemv_t.S)
|
||||
SetFallback(CGEMVNKERNEL zgemv_n.S)
|
||||
SetFallback(CGEMVTKERNEL zgemv_t.S)
|
||||
SetFallback(ZGEMVNKERNEL zgemv_n.S)
|
||||
SetFallback(ZGEMVTKERNEL zgemv_t.S)
|
||||
SetFallback(QGEMVNKERNEL gemv_n.S)
|
||||
SetFallback(QGEMVTKERNEL gemv_t.S)
|
||||
SetFallback(XGEMVNKERNEL zgemv_n.S)
|
||||
SetFallback(XGEMVTKERNEL zgemv_t.S)
|
||||
SetFallback(SCABS_KERNEL ../generic/cabs.c)
|
||||
SetFallback(DCABS_KERNEL ../generic/cabs.c)
|
||||
SetFallback(QCABS_KERNEL ../generic/cabs.c)
|
||||
SetFallback(LSAME_KERNEL ../generic/lsame.c)
|
||||
SetFallback(SAXPBYKERNEL ../arm/axpby.c)
|
||||
SetFallback(DAXPBYKERNEL ../arm/axpby.c)
|
||||
SetFallback(CAXPBYKERNEL ../arm/zaxpby.c)
|
||||
SetFallback(ZAXPBYKERNEL ../arm/zaxpby.c)
|
||||
SetFallback(SSUMKERNEL sum.S)
|
||||
SetFallback(DSUMKERNEL sum.S)
|
||||
SetFallback(CSUMKERNEL zsum.S)
|
||||
SetFallback(ZSUMKERNEL zsum.S)
|
||||
SetFallback(QSUMKERNEL sum.S)
|
||||
SetFallback(XSUMKERNEL zsum.S)
|
||||
if (BUILD_BFLOAT16)
|
||||
set(SHAMINKERNEL ../arm/amin.c)
|
||||
set(SHAMAXKERNEL ../arm/amax.c)
|
||||
set(SHMAXKERNEL ../arm/max.c)
|
||||
set(SHMINKERNEL ../arm/min.c)
|
||||
set(ISHAMAXKERNEL ../arm/iamax.c)
|
||||
set(ISHAMINKERNEL ../arm/iamin.c)
|
||||
set(ISHMAXKERNEL ../arm/imax.c)
|
||||
set(ISHMINKERNEL ../arm/imin.c)
|
||||
set(SHASUMKERNEL ../arm/asum.c)
|
||||
set(SHAXPYKERNEL ../arm/axpy.c)
|
||||
set(SHAXPBYKERNEL ../arm/axpby.c)
|
||||
set(SHCOPYKERNEL ../arm/copy.c)
|
||||
set(SBDOTKERNEL ../x86_64/sbdot.c)
|
||||
set(SHROTKERNEL ../arm/rot.c)
|
||||
set(SHSCALKERNEL ../arm/scal.c)
|
||||
set(SHNRM2KERNEL ../arm/nrm2.c)
|
||||
set(SHSUMKERNEL ../arm/sum.c)
|
||||
set(SHSWAPKERNEL ../arm/swap.c)
|
||||
set(TOBF16KERNEL ../x86_64/tobf16.c)
|
||||
set(BF16TOKERNEL ../x86_64/bf16to.c)
|
||||
set(SBGEMVNKERNEL ../x86_64/sbgemv_n.c)
|
||||
set(SBGEMVTKERNEL ../x86_64/sbgemv_t.c)
|
||||
SetFallback(SHAMINKERNEL ../arm/amin.c)
|
||||
SetFallback(SHAMAXKERNEL ../arm/amax.c)
|
||||
SetFallback(SHMAXKERNEL ../arm/max.c)
|
||||
SetFallback(SHMINKERNEL ../arm/min.c)
|
||||
SetFallback(ISHAMAXKERNEL ../arm/iamax.c)
|
||||
SetFallback(ISHAMINKERNEL ../arm/iamin.c)
|
||||
SetFallback(ISHMAXKERNEL ../arm/imax.c)
|
||||
SetFallback(ISHMINKERNEL ../arm/imin.c)
|
||||
SetFallback(SHASUMKERNEL ../arm/asum.c)
|
||||
SetFallback(SHAXPYKERNEL ../arm/axpy.c)
|
||||
SetFallback(SHAXPBYKERNEL ../arm/axpby.c)
|
||||
SetFallback(SHCOPYKERNEL ../arm/copy.c)
|
||||
SetFallback(SBDOTKERNEL ../x86_64/sbdot.c)
|
||||
SetFallback(SHROTKERNEL ../arm/rot.c)
|
||||
SetFallback(SHSCALKERNEL ../arm/scal.c)
|
||||
SetFallback(SHNRM2KERNEL ../arm/nrm2.c)
|
||||
SetFallback(SHSUMKERNEL ../arm/sum.c)
|
||||
SetFallback(SHSWAPKERNEL ../arm/swap.c)
|
||||
SetFallback(TOBF16KERNEL ../x86_64/tobf16.c)
|
||||
SetFallback(BF16TOKERNEL ../x86_64/bf16to.c)
|
||||
SetFallback(SBGEMVNKERNEL ../x86_64/sbgemv_n.c)
|
||||
SetFallback(SBGEMVTKERNEL ../x86_64/sbgemv_t.c)
|
||||
endif ()
|
||||
endmacro ()
|
||||
|
||||
macro(SetDefaultL2)
|
||||
set(SGEMVNKERNEL ../arm/gemv_n.c)
|
||||
set(SGEMVTKERNEL ../arm/gemv_t.c)
|
||||
set(DGEMVNKERNEL gemv_n.S)
|
||||
set(DGEMVTKERNEL gemv_t.S)
|
||||
set(CGEMVNKERNEL zgemv_n.S)
|
||||
set(CGEMVTKERNEL zgemv_t.S)
|
||||
set(ZGEMVNKERNEL zgemv_n.S)
|
||||
set(ZGEMVTKERNEL zgemv_t.S)
|
||||
set(QGEMVNKERNEL gemv_n.S)
|
||||
set(QGEMVTKERNEL gemv_t.S)
|
||||
set(XGEMVNKERNEL zgemv_n.S)
|
||||
set(XGEMVTKERNEL zgemv_t.S)
|
||||
set(SGERKERNEL ../generic/ger.c)
|
||||
set(DGERKERNEL ../generic/ger.c)
|
||||
set(QGERKERNEL ../generic/ger.c)
|
||||
set(CGERUKERNEL ../generic/zger.c)
|
||||
set(CGERCKERNEL ../generic/zger.c)
|
||||
set(ZGERUKERNEL ../generic/zger.c)
|
||||
set(ZGERCKERNEL ../generic/zger.c)
|
||||
set(XGERUKERNEL ../generic/zger.c)
|
||||
set(XGERCKERNEL ../generic/zger.c)
|
||||
set(SSYMV_U_KERNEL ../generic/symv_k.c)
|
||||
set(SSYMV_L_KERNEL ../generic/symv_k.c)
|
||||
set(DSYMV_U_KERNEL ../generic/symv_k.c)
|
||||
set(DSYMV_L_KERNEL ../generic/symv_k.c)
|
||||
set(QSYMV_U_KERNEL ../generic/symv_k.c)
|
||||
set(QSYMV_L_KERNEL ../generic/symv_k.c)
|
||||
set(CSYMV_U_KERNEL ../generic/zsymv_k.c)
|
||||
set(CSYMV_L_KERNEL ../generic/zsymv_k.c)
|
||||
set(ZSYMV_U_KERNEL ../generic/zsymv_k.c)
|
||||
set(ZSYMV_L_KERNEL ../generic/zsymv_k.c)
|
||||
set(XSYMV_U_KERNEL ../generic/zsymv_k.c)
|
||||
set(XSYMV_L_KERNEL ../generic/zsymv_k.c)
|
||||
set(CHEMV_U_KERNEL ../generic/zhemv_k.c)
|
||||
set(CHEMV_L_KERNEL ../generic/zhemv_k.c)
|
||||
set(CHEMV_V_KERNEL ../generic/zhemv_k.c)
|
||||
set(CHEMV_M_KERNEL ../generic/zhemv_k.c)
|
||||
set(ZHEMV_U_KERNEL ../generic/zhemv_k.c)
|
||||
set(ZHEMV_L_KERNEL ../generic/zhemv_k.c)
|
||||
set(ZHEMV_V_KERNEL ../generic/zhemv_k.c)
|
||||
set(ZHEMV_M_KERNEL ../generic/zhemv_k.c)
|
||||
set(XHEMV_U_KERNEL ../generic/zhemv_k.c)
|
||||
set(XHEMV_L_KERNEL ../generic/zhemv_k.c)
|
||||
set(XHEMV_V_KERNEL ../generic/zhemv_k.c)
|
||||
set(XHEMV_M_KERNEL ../generic/zhemv_k.c)
|
||||
SetFallback(SGEMVNKERNEL ../arm/gemv_n.c)
|
||||
SetFallback(SGEMVTKERNEL ../arm/gemv_t.c)
|
||||
SetFallback(DGEMVNKERNEL gemv_n.S)
|
||||
SetFallback(DGEMVTKERNEL gemv_t.S)
|
||||
SetFallback(CGEMVNKERNEL zgemv_n.S)
|
||||
SetFallback(CGEMVTKERNEL zgemv_t.S)
|
||||
SetFallback(ZGEMVNKERNEL zgemv_n.S)
|
||||
SetFallback(ZGEMVTKERNEL zgemv_t.S)
|
||||
SetFallback(QGEMVNKERNEL gemv_n.S)
|
||||
SetFallback(QGEMVTKERNEL gemv_t.S)
|
||||
SetFallback(XGEMVNKERNEL zgemv_n.S)
|
||||
SetFallback(XGEMVTKERNEL zgemv_t.S)
|
||||
SetFallback(SGERKERNEL ../generic/ger.c)
|
||||
SetFallback(DGERKERNEL ../generic/ger.c)
|
||||
SetFallback(QGERKERNEL ../generic/ger.c)
|
||||
SetFallback(CGERUKERNEL ../generic/zger.c)
|
||||
SetFallback(CGERCKERNEL ../generic/zger.c)
|
||||
SetFallback(ZGERUKERNEL ../generic/zger.c)
|
||||
SetFallback(ZGERCKERNEL ../generic/zger.c)
|
||||
SetFallback(XGERUKERNEL ../generic/zger.c)
|
||||
SetFallback(XGERCKERNEL ../generic/zger.c)
|
||||
SetFallback(SSYMV_U_KERNEL ../generic/symv_k.c)
|
||||
SetFallback(SSYMV_L_KERNEL ../generic/symv_k.c)
|
||||
SetFallback(DSYMV_U_KERNEL ../generic/symv_k.c)
|
||||
SetFallback(DSYMV_L_KERNEL ../generic/symv_k.c)
|
||||
SetFallback(QSYMV_U_KERNEL ../generic/symv_k.c)
|
||||
SetFallback(QSYMV_L_KERNEL ../generic/symv_k.c)
|
||||
SetFallback(CSYMV_U_KERNEL ../generic/zsymv_k.c)
|
||||
SetFallback(CSYMV_L_KERNEL ../generic/zsymv_k.c)
|
||||
SetFallback(ZSYMV_U_KERNEL ../generic/zsymv_k.c)
|
||||
SetFallback(ZSYMV_L_KERNEL ../generic/zsymv_k.c)
|
||||
SetFallback(XSYMV_U_KERNEL ../generic/zsymv_k.c)
|
||||
SetFallback(XSYMV_L_KERNEL ../generic/zsymv_k.c)
|
||||
SetFallback(CHEMV_U_KERNEL ../generic/zhemv_k.c)
|
||||
SetFallback(CHEMV_L_KERNEL ../generic/zhemv_k.c)
|
||||
SetFallback(CHEMV_V_KERNEL ../generic/zhemv_k.c)
|
||||
SetFallback(CHEMV_M_KERNEL ../generic/zhemv_k.c)
|
||||
SetFallback(ZHEMV_U_KERNEL ../generic/zhemv_k.c)
|
||||
SetFallback(ZHEMV_L_KERNEL ../generic/zhemv_k.c)
|
||||
SetFallback(ZHEMV_V_KERNEL ../generic/zhemv_k.c)
|
||||
SetFallback(ZHEMV_M_KERNEL ../generic/zhemv_k.c)
|
||||
SetFallback(XHEMV_U_KERNEL ../generic/zhemv_k.c)
|
||||
SetFallback(XHEMV_L_KERNEL ../generic/zhemv_k.c)
|
||||
SetFallback(XHEMV_V_KERNEL ../generic/zhemv_k.c)
|
||||
SetFallback(XHEMV_M_KERNEL ../generic/zhemv_k.c)
|
||||
if (BUILD_BFLOAT16)
|
||||
set(SBGEMVNKERNEL ../x86_64/sbgemv_n.c)
|
||||
set(SBGEMVTKERNEL ../x86_64/sbgemv_t.c)
|
||||
set(SHGERKERNEL ../generic/ger.c)
|
||||
SetFallback(SBGEMVNKERNEL ../x86_64/sbgemv_n.c)
|
||||
SetFallback(SBGEMVTKERNEL ../x86_64/sbgemv_t.c)
|
||||
SetFallback(SHGERKERNEL ../generic/ger.c)
|
||||
endif ()
|
||||
endmacro ()
|
||||
|
||||
macro(SetDefaultL3)
|
||||
set(SGEADD_KERNEL ../generic/geadd.c)
|
||||
set(DGEADD_KERNEL ../generic/geadd.c)
|
||||
set(CGEADD_KERNEL ../generic/zgeadd.c)
|
||||
set(ZGEADD_KERNEL ../generic/zgeadd.c)
|
||||
SetFallback(SGEADD_KERNEL ../generic/geadd.c)
|
||||
SetFallback(DGEADD_KERNEL ../generic/geadd.c)
|
||||
SetFallback(CGEADD_KERNEL ../generic/zgeadd.c)
|
||||
SetFallback(ZGEADD_KERNEL ../generic/zgeadd.c)
|
||||
if (BUILD_BFLOAT16)
|
||||
set(SHGEADD_KERNEL ../generic/geadd.c)
|
||||
set(SBGEMMKERNEL ../generic/gemmkernel_2x2.c)
|
||||
set(SBGEMM_BETA ../generic/gemm_beta.c)
|
||||
set(SBGEMMINCOPY ../generic/gemm_ncopy_2.c)
|
||||
set(SBGEMMITCOPY ../generic/gemm_tcopy_2.c)
|
||||
set(SBGEMMONCOPY ../generic/gemm_ncopy_2.c)
|
||||
set(SBGEMMOTCOPY ../generic/gemm_tcopy_2.c)
|
||||
set(SBGEMMINCOPYOBJ sbgemm_incopy.o)
|
||||
set(SBGEMMITCOPYOBJ sbgemm_itcopy.o)
|
||||
set(SBGEMMONCOPYOBJ sbgemm_oncopy.o)
|
||||
set(SBGEMMOTCOPYOBJ sbgemm_otcopy.o)
|
||||
SetFallback(SHGEADD_KERNEL ../generic/geadd.c)
|
||||
SetFallback(SBGEMMKERNEL ../generic/gemmkernel_2x2.c)
|
||||
SetFallback(SBGEMM_BETA ../generic/gemm_beta.c)
|
||||
SetFallback(SBGEMMINCOPY ../generic/gemm_ncopy_2.c)
|
||||
SetFallback(SBGEMMITCOPY ../generic/gemm_tcopy_2.c)
|
||||
SetFallback(SBGEMMONCOPY ../generic/gemm_ncopy_2.c)
|
||||
SetFallback(SBGEMMOTCOPY ../generic/gemm_tcopy_2.c)
|
||||
SetFallback(SBGEMMINCOPYOBJ sbgemm_incopy.o)
|
||||
SetFallback(SBGEMMITCOPYOBJ sbgemm_itcopy.o)
|
||||
SetFallback(SBGEMMONCOPYOBJ sbgemm_oncopy.o)
|
||||
SetFallback(SBGEMMOTCOPYOBJ sbgemm_otcopy.o)
|
||||
endif ()
|
||||
|
||||
endmacro ()
|
||||
|
|
|
@ -15,35 +15,83 @@ endfunction ()
|
|||
# Reads a Makefile into CMake vars.
|
||||
macro(ParseMakefileVars MAKEFILE_IN)
|
||||
message(STATUS "Reading vars from ${MAKEFILE_IN}...")
|
||||
set (IfElse 0)
|
||||
set (ElseSeen 0)
|
||||
set (C_COMPILER ${CMAKE_C_COMPILER_ID})
|
||||
set (IfElse 0)
|
||||
set (ElseSeen 0)
|
||||
set (SkipIfs 0)
|
||||
set (SkipElse 0)
|
||||
file(STRINGS ${MAKEFILE_IN} makefile_contents)
|
||||
foreach (makefile_line ${makefile_contents})
|
||||
#message(STATUS "parsing ${makefile_line}")
|
||||
if (${IfElse} GREATER 0)
|
||||
#message(STATUS "parsing ${makefile_line}")
|
||||
# Skip the entire scope of the else statement given that the if statement that precedes it has the valid condition.
|
||||
# The variable SkipIfs is used to identify which endif statement closes the scope of the else statement.
|
||||
if (${SkipElse} EQUAL 1)
|
||||
#message(STATUS "skipping ${makefile_line}")
|
||||
string(REGEX MATCH "(ifeq|ifneq|ifdef|ifndef) .*$" line_match "${makefile_line}")
|
||||
if (NOT "${line_match}" STREQUAL "")
|
||||
MATH(EXPR SkipIfs "${SkipIfs}+1")
|
||||
endif ()
|
||||
string(REGEX MATCH "endif[ \t]*" line_match "${makefile_line}")
|
||||
if (NOT "${line_match}" STREQUAL "")
|
||||
# message(STATUS "ENDIF ${makefile_line}")
|
||||
set (IfElse 0)
|
||||
set (ElseSeen 0)
|
||||
if (${SkipIfs} EQUAL 0)
|
||||
set (SkipElse 0)
|
||||
else ()
|
||||
MATH(EXPR SkipIfs "${SkipIfs}-1")
|
||||
endif ()
|
||||
endif ()
|
||||
continue ()
|
||||
endif ()
|
||||
# The variable IfElse is greater than 0 if and only if the previously parsed line is an if statement.
|
||||
if (${IfElse} GREATER 0)
|
||||
# If the current scope is the one that has to be skipped, the if/endif/else statements
|
||||
# along with it till the endif that closes the current scope have to be ignored as well.
|
||||
string(REGEX MATCH "(ifeq|ifneq|ifdef|ifndef) .*$" line_match "${makefile_line}")
|
||||
if (NOT "${line_match}" STREQUAL "")
|
||||
if ((${IfElse} EQUAL 2 AND ${ElseSeen} EQUAL 0) OR (${IfElse} EQUAL 1 AND ${ElseSeen} EQUAL 1))
|
||||
#message(STATUS "skipping ${makefile_line}")
|
||||
MATH(EXPR SkipIfs "${SkipIfs}+1")
|
||||
continue ()
|
||||
endif ()
|
||||
endif ()
|
||||
string(REGEX MATCH "endif[ \t]*" line_match "${makefile_line}")
|
||||
if (NOT "${line_match}" STREQUAL "")
|
||||
if (${SkipIfs} EQUAL 0)
|
||||
#message(STATUS "ENDIF ${makefile_line}")
|
||||
set (IfElse 0)
|
||||
set (ElseSeen 0)
|
||||
else ()
|
||||
#message(STATUS "skipping ${makefile_line}")
|
||||
MATH(EXPR SkipIfs "${SkipIfs}-1")
|
||||
endif ()
|
||||
continue ()
|
||||
endif ()
|
||||
string(REGEX MATCH "else[ \t]*" line_match "${makefile_line}")
|
||||
if (NOT "${line_match}" STREQUAL "")
|
||||
# message(STATUS "ELSE ${makefile_line}")
|
||||
set (ElseSeen 1)
|
||||
continue ()
|
||||
endif()
|
||||
if ( (${IfElse} EQUAL 2 AND ${ElseSeen} EQUAL 0) OR ( ${IfElse} EQUAL 1 AND ${ElseSeen} EQUAL 1))
|
||||
# message(STATUS "skipping ${makefile_line}")
|
||||
continue ()
|
||||
if (NOT "${line_match}" STREQUAL "")
|
||||
if (${SkipIfs} EQUAL 0)
|
||||
#message(STATUS "ELSE ${makefile_line}")
|
||||
set (ElseSeen 1)
|
||||
else ()
|
||||
#message(STATUS "skipping ${makefile_line}")
|
||||
endif ()
|
||||
continue ()
|
||||
endif()
|
||||
# Skip the lines that are not part of the path that has to be taken.
|
||||
if ((${IfElse} EQUAL 2 AND ${ElseSeen} EQUAL 0) OR (${IfElse} EQUAL 1 AND ${ElseSeen} EQUAL 1) OR (${SkipIfs} GREATER 0))
|
||||
#message(STATUS "skipping ${makefile_line}")
|
||||
continue ()
|
||||
endif ()
|
||||
endif ()
|
||||
endif ()
|
||||
# Skip commented lines (the ones that start with '#')
|
||||
string(REGEX MATCH "[ \t]*\\#.*$" line_match "${makefile_line}")
|
||||
if (NOT "${line_match}" STREQUAL "")
|
||||
#message(STATUS "skipping ${makefile_line}")
|
||||
continue ()
|
||||
endif ()
|
||||
string(REGEX MATCH "([0-9_a-zA-Z]+)[ \t]*=[ \t]*(.+)$" line_match "${makefile_line}")
|
||||
if (NOT "${line_match}" STREQUAL "")
|
||||
#message(STATUS "match on ${line_match}")
|
||||
#message(STATUS "match on ${line_match}")
|
||||
set(var_name ${CMAKE_MATCH_1})
|
||||
# set(var_value ${CMAKE_MATCH_2})
|
||||
#set(var_value ${CMAKE_MATCH_2})
|
||||
string(STRIP ${CMAKE_MATCH_2} var_value)
|
||||
# check for Makefile variables in the string, e.g. $(TSUFFIX)
|
||||
string(REGEX MATCHALL "\\$\\(([0-9_a-zA-Z]+)\\)" make_var_matches ${var_value})
|
||||
|
@ -54,39 +102,93 @@ macro(ParseMakefileVars MAKEFILE_IN)
|
|||
string(REPLACE "$(${make_var})" "${${make_var}}" var_value ${var_value})
|
||||
endforeach ()
|
||||
set(${var_name} ${var_value})
|
||||
else ()
|
||||
string(REGEX MATCH "include \\$\\(KERNELDIR\\)/(.+)$" line_match "${makefile_line}")
|
||||
if (NOT "${line_match}" STREQUAL "")
|
||||
#message(STATUS "match on include ${line_match}")
|
||||
ParseMakefileVars(${KERNELDIR}/${CMAKE_MATCH_1})
|
||||
else ()
|
||||
# message(STATUS "unmatched line ${line_match}")
|
||||
string(REGEX MATCH "ifeq \\(\\$\\(([_A-Z]+)\\),[ \t]*([0-9_A-Z]+)\\)" line_match "${makefile_line}")
|
||||
if (NOT "${line_match}" STREQUAL "")
|
||||
# message(STATUS "IFEQ: ${line_match} first: ${CMAKE_MATCH_1} second: ${CMAKE_MATCH_2}")
|
||||
if (DEFINED ${${CMAKE_MATCH_1}} AND ${${CMAKE_MATCH_1}} STREQUAL ${CMAKE_MATCH_2})
|
||||
# message (STATUS "condition is true")
|
||||
set (IfElse 1)
|
||||
else ()
|
||||
set (IfElse 2)
|
||||
endif ()
|
||||
continue ()
|
||||
endif ()
|
||||
# Include a new file to be parsed
|
||||
string(REGEX MATCH "include \\$\\(KERNELDIR\\)/(.+)$" line_match "${makefile_line}")
|
||||
if (NOT "${line_match}" STREQUAL "")
|
||||
#message(STATUS "match on include ${line_match}")
|
||||
ParseMakefileVars(${KERNELDIR}/${CMAKE_MATCH_1})
|
||||
continue ()
|
||||
endif ()
|
||||
# The if statement that precedes this else has the path taken
|
||||
# Thus, this else statement has to be skipped.
|
||||
string(REGEX MATCH "else[ \t]*" line_match "${makefile_line}")
|
||||
if (NOT "${line_match}" STREQUAL "")
|
||||
#message(STATUS "skipping ${makefile_line}")
|
||||
set (SkipElse 1)
|
||||
continue()
|
||||
endif()
|
||||
# Example 1: ifdef HAVE_MSA
|
||||
# Example 2: ifndef ZNRM2KERNEL
|
||||
string(REGEX MATCH "(ifdef|ifndef) ([0-9_A-Z]+)" line_match "${makefile_line}")
|
||||
if (NOT "${line_match}" STREQUAL "")
|
||||
#message(STATUS "${CMAKE_MATCH_1} first: ${CMAKE_MATCH_2}")
|
||||
set (ElseSeen 0)
|
||||
if (DEFINED ${CMAKE_MATCH_2})
|
||||
if (${CMAKE_MATCH_1} STREQUAL "ifdef")
|
||||
#message (STATUS "condition is true")
|
||||
set (IfElse 1)
|
||||
else ()
|
||||
string(REGEX MATCH "ifneq \\(\\$\\(([_A-Z]+)\\),[ \t]*([0-9_A-Z]+)\\)" line_match "${makefile_line}")
|
||||
if (NOT "${line_match}" STREQUAL "")
|
||||
# message(STATUS "IFNEQ: ${line_match} first: ${CMAKE_MATCH_1} second: ${CMAKE_MATCH_2}")
|
||||
if ( ${CMAKE_MATCH_1} STREQUAL C_COMPILER)
|
||||
set (CMAKE_MATCH_1 CMAKE_C_COMPILER)
|
||||
endif ()
|
||||
if (NOT ( ${${CMAKE_MATCH_1}} STREQUAL ${CMAKE_MATCH_2}))
|
||||
# message (STATUS "condition is true")
|
||||
set (IfElse 1)
|
||||
else ()
|
||||
set (IfElse 2)
|
||||
endif ()
|
||||
endif ()
|
||||
set (IfElse 2)
|
||||
endif ()
|
||||
else ()
|
||||
if (${CMAKE_MATCH_1} STREQUAL "ifdef")
|
||||
set (IfElse 2)
|
||||
else ()
|
||||
#message (STATUS "condition is true")
|
||||
set (IfElse 1)
|
||||
endif ()
|
||||
endif ()
|
||||
continue ()
|
||||
endif ()
|
||||
# Example 1: ifeq ($(SGEMM_UNROLL_M), 16)
|
||||
# Example 2: ifeq ($(SGEMM_UNROLL_M)x$(SGEMM_UNROLL_N), 8x8)
|
||||
# Example 3: ifeq ($(__BYTE_ORDER__)$(ELF_VERSION),__ORDER_BIG_ENDIAN__2)
|
||||
# Ignore the second group since (?:...) does not work on cmake
|
||||
string(REGEX MATCH "ifeq \\(\\$\\(([0-9_A-Z]+)\\)(([0-9_A-Za-z]*)\\$\\(([0-9_A-Z]+)\\))?,[ \t]*([0-9_A-Za-z]+)\\)" line_match "${makefile_line}")
|
||||
if (NOT "${line_match}" STREQUAL "")
|
||||
#message(STATUS "IFEQ: ${line_match} first: ${CMAKE_MATCH_1} second: ${CMAKE_MATCH_3} third: ${CMAKE_MATCH_4} fourth: ${CMAKE_MATCH_5}")
|
||||
if (DEFINED ${CMAKE_MATCH_1})
|
||||
if (DEFINED ${CMAKE_MATCH_4})
|
||||
set (STR ${${CMAKE_MATCH_1}}${CMAKE_MATCH_3}${${CMAKE_MATCH_4}})
|
||||
else ()
|
||||
set (STR ${${CMAKE_MATCH_1}})
|
||||
endif ()
|
||||
if (${STR} STREQUAL ${CMAKE_MATCH_5})
|
||||
#message (STATUS "condition is true")
|
||||
set (IfElse 1)
|
||||
continue ()
|
||||
endif ()
|
||||
endif ()
|
||||
set (IfElse 2)
|
||||
continue ()
|
||||
endif ()
|
||||
# Example 1 (Group 3): ifneq ($(SGEMM_UNROLL_M), $(SGEMM_UNROLL_N))
|
||||
# Example 2 (Group 4): ifneq ($(C_COMPILER), PGI)
|
||||
string(REGEX MATCH "ifneq \\(\\$\\(([0-9_A-Z]+)\\),[ \t]*(\\$\\(([0-9_A-Z]+)\\)|([0-9_A-Z]+))\\)" line_match "${makefile_line}")
|
||||
if (NOT "${line_match}" STREQUAL "")
|
||||
#message(STATUS "IFNEQ: ${line_match} first: ${CMAKE_MATCH_1} second: ${CMAKE_MATCH_3} third: ${CMAKE_MATCH_4}")
|
||||
set (ElseSeen 0)
|
||||
set (HasValidGroup 0)
|
||||
if (DEFINED ${CMAKE_MATCH_3})
|
||||
set (HasValidGroup 1)
|
||||
set (STR ${${CMAKE_MATCH_3}})
|
||||
elseif (NOT ${CMAKE_MATCH_4} STREQUAL "")
|
||||
set (HasValidGroup 1)
|
||||
set (STR ${CMAKE_MATCH_4})
|
||||
endif ()
|
||||
if (DEFINED ${CMAKE_MATCH_1} AND ${HasValidGroup} EQUAL 1)
|
||||
if (NOT (${${CMAKE_MATCH_1}} STREQUAL ${STR}))
|
||||
#message (STATUS "condition is true")
|
||||
set (IfElse 1)
|
||||
continue ()
|
||||
endif ()
|
||||
endif ()
|
||||
set (IfElse 2)
|
||||
continue ()
|
||||
endif ()
|
||||
#message(STATUS "unmatched line ${line_match}")
|
||||
endforeach ()
|
||||
endmacro ()
|
||||
|
||||
|
|
|
@ -9,11 +9,11 @@ function (build_core TARGET_CORE KDIR TSUFFIX KERNEL_DEFINITIONS)
|
|||
if (${DYNAMIC_ARCH})
|
||||
include("${PROJECT_SOURCE_DIR}/cmake/system.cmake")
|
||||
endif ()
|
||||
ParseMakefileVars("${KERNELDIR}/KERNEL")
|
||||
ParseMakefileVars("${KERNELDIR}/KERNEL.${TARGET_CORE}")
|
||||
SetDefaultL1()
|
||||
SetDefaultL2()
|
||||
SetDefaultL3()
|
||||
ParseMakefileVars("${KERNELDIR}/KERNEL")
|
||||
ParseMakefileVars("${KERNELDIR}/KERNEL.${TARGET_CORE}")
|
||||
|
||||
set(KERNEL_INTERFACE common_level1.h common_level2.h common_level3.h)
|
||||
if(NOT NO_LAPACK)
|
||||
|
|
Loading…
Reference in New Issue