2025-07-09 06:47:20 +08:00
###############################################################################
# Copyright (c) 2025, 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 OPENBLAS PROJECT 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.
###############################################################################
2015-02-06 11:05:11 +08:00
2016-05-25 15:13:28 +08:00
include_directories ( ${ PROJECT_SOURCE_DIR } )
2015-02-06 11:05:11 +08:00
2015-02-18 12:09:41 +08:00
# Makefile
2017-08-02 00:01:55 +08:00
function ( build_core TARGET_CORE KDIR TSUFFIX KERNEL_DEFINITIONS )
2017-08-02 18:44:34 +08:00
set ( OPENBLAS_SRC "" )
2017-08-08 01:38:44 +08:00
set ( ARCH_SUFFIX "" )
2017-08-02 00:01:55 +08:00
include ( "${PROJECT_SOURCE_DIR}/cmake/kernel.cmake" )
if ( ${ DYNAMIC_ARCH } )
include ( "${PROJECT_SOURCE_DIR}/cmake/system.cmake" )
2015-02-19 03:01:05 +08:00
endif ( )
2021-11-25 10:07:20 +08:00
ParseMakefileVars ( "${KERNELDIR}/KERNEL" )
ParseMakefileVars ( "${KERNELDIR}/KERNEL.${TARGET_CORE}" )
2017-08-02 00:01:55 +08:00
SetDefaultL1 ( )
SetDefaultL2 ( )
SetDefaultL3 ( )
2017-08-02 01:53:55 +08:00
set ( KERNEL_INTERFACE common_level1.h common_level2.h common_level3.h )
2017-10-10 05:34:18 +08:00
if ( NOT NO_LAPACK )
2017-08-02 01:53:55 +08:00
set ( KERNEL_INTERFACE ${ KERNEL_INTERFACE } common_lapack.h )
endif ( )
2017-08-08 01:38:44 +08:00
if ( ${ ADD_COMMONOBJS } )
2017-08-20 22:37:29 +08:00
if ( X86 )
2017-08-20 20:50:31 +08:00
if ( NOT "${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC" )
2017-08-08 01:38:44 +08:00
GenerateNamedObjects ( "${KERNELDIR}/cpuid.S" "" "" false "" "" true )
else ( )
GenerateNamedObjects ( "${KERNELDIR}/cpuid_win.c" "" "" false "" "" true )
endif ( )
endif ( )
2015-02-10 00:47:35 +08:00
2017-08-08 01:38:44 +08:00
# don't use float type name mangling here
GenerateNamedObjects ( "${KERNELDIR}/${LSAME_KERNEL}" "F_INTERFACE" "lsame" false "" "" true "" )
GenerateNamedObjects ( "${KERNELDIR}/${SCABS_KERNEL}" "COMPLEX;F_INTERFACE" "scabs1" false "" "" true "" )
GenerateNamedObjects ( "${KERNELDIR}/${DCABS_KERNEL}" "DOUBLE;COMPLEX;F_INTERFACE" "dcabs1" false "" "" true "" )
endif ( )
2017-08-02 00:01:55 +08:00
2017-08-08 01:38:44 +08:00
# Run with no ARCH_SUFFIX for above
set ( ARCH_SUFFIX "${TSUFFIX}" )
2017-08-02 00:01:55 +08:00
# Makefile.L1
foreach ( float_type ${ FLOAT_TYPES } )
# a bit of metaprogramming here to pull out the appropriate KERNEL var
string ( SUBSTRING ${ float_type } 0 1 float_char )
2020-10-12 06:00:55 +08:00
if ( ${ float_type } STREQUAL "BFLOAT16" )
set ( float_char "SB" )
2020-04-18 02:35:17 +08:00
endif ( )
2017-08-02 00:01:55 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}AMAXKERNEL}" "USE_ABS" "amax_k" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}AMINKERNEL}" "USE_ABS;USE_MIN" "amin_k" false "" "" false ${ float_type } )
if ( DEFINED ${ float_char } MAXKERNEL )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}MAXKERNEL}" "" "max_k" false "" "" false ${ float_type } )
endif ( )
if ( DEFINED ${ float_char } MINKERNEL )
2020-02-14 17:35:51 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}MINKERNEL}" "USE_MIN" "min_k" false "" "" false ${ float_type } )
2017-08-02 00:01:55 +08:00
endif ( )
GenerateNamedObjects ( "${KERNELDIR}/${I${float_char}AMAXKERNEL}" "USE_ABS" "i*amax_k" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${I${float_char}AMINKERNEL}" "USE_ABS;USE_MIN" "i*amin_k" false "" "" false ${ float_type } )
if ( DEFINED I ${ float_char } MAXKERNEL )
GenerateNamedObjects ( "${KERNELDIR}/${I${float_char}MAXKERNEL}" "" "i*max_k" false "" "" false ${ float_type } )
endif ( )
if ( DEFINED I ${ float_char } MINKERNEL )
2020-02-14 17:35:51 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${I${float_char}MINKERNEL}" "USE_MIN" "i*min_k" false "" "" false ${ float_type } )
2017-08-02 00:01:55 +08:00
endif ( )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}ASUMKERNEL}" "" "asum_k" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}AXPYKERNEL}" "" "axpy_k" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}COPYKERNEL}" "C_INTERFACE" "copy_k" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}NRM2KERNEL}" "" "nrm2_k" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}ROTKERNEL}" "" "rot_k" false "" "" false ${ float_type } )
2025-01-23 07:17:04 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}ROTMKERNEL}" "" "rotm_k" false "" "" false ${ float_type } )
2017-08-02 00:01:55 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}SCALKERNEL}" "" "scal_k" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}SWAPKERNEL}" "" "swap_k" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}AXPBYKERNEL}" "" "axpby_k" false "" "" false ${ float_type } )
2019-03-31 05:01:13 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}SUMKERNEL}" "" "sum_k" false "" "" false ${ float_type } )
2017-08-02 00:01:55 +08:00
if ( ${ float_type } STREQUAL "COMPLEX" OR ${ float_type } STREQUAL "ZCOMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}AXPYKERNEL}" "CONJ" "axpyc_k" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}DOTKERNEL}" "" "dotu_k" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}DOTKERNEL}" "CONJ" "dotc_k" false "" "" false ${ float_type } )
else ( )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}DOTKERNEL}" "" "dot_k" false "" "" false ${ float_type } )
endif ( )
if ( ${ float_type } STREQUAL "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}ROTKERNEL}" "" "srot_k" false "" "" false ${ float_type } )
endif ( )
if ( ${ float_type } STREQUAL "ZCOMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}ROTKERNEL}" "" "drot_k" false "" "" false ${ float_type } )
endif ( )
endforeach ( )
#dsdot,sdsdot
GenerateNamedObjects ( "${KERNELDIR}/${DSDOTKERNEL}" "DSDOT" "d*dot_k" false "" "" false "SINGLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DSDOTKERNEL}" "DSDOT" "dsdot_k" false "" "" false "SINGLE" )
2021-09-14 22:17:18 +08:00
# sbdot
if ( BUILD_BFLOAT16 )
2025-07-15 22:41:19 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${BSCALKERNEL}" "BGEMM" "scal_k" false "" "" false "BFLOAT16" )
2021-09-14 22:17:18 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${SBDOTKERNEL}" "SBDOT" "dot_k" false "" "" false "BFLOAT16" )
GenerateNamedObjects ( "${KERNELDIR}/${BF16TOKERNEL}" "SINGLE" "f16tos_k" false "" "" false "BFLOAT16" )
GenerateNamedObjects ( "${KERNELDIR}/${BF16TOKERNEL}" "DOUBLE" "bf16tod_k" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${TOBF16KERNEL}" "SINGLE" "stobf16_k" false "" "" false "BFLOAT16" )
GenerateNamedObjects ( "${KERNELDIR}/${TOBF16KERNEL}" "DOUBLE" "dtobf16_k" false "" "" false "BFLOAT16" )
endif ( )
2020-10-11 20:52:09 +08:00
if ( ( BUILD_COMPLEX OR BUILD_DOUBLE ) AND NOT BUILD_SINGLE )
2020-09-23 05:25:59 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${SAMAXKERNEL}" "USE_ABS" "amax_k" false "" "" false "SINGLE" )
GenerateNamedObjects ( "${KERNELDIR}/${SAMINKERNEL}" "USE_ABS;USE_MIN" "amin_k" false "" "" false "SINGLE" )
GenerateNamedObjects ( "${KERNELDIR}/${SASUMKERNEL}" "" "asum_k" false "" "" false "SINGLE" )
if ( DEFINED SMAXKERNEL )
GenerateNamedObjects ( "${KERNELDIR}/${SMAXKERNEL}" "" "max_k" false "" "" false "SINGLE" )
endif ( )
if ( DEFINED SMINKERNEL )
GenerateNamedObjects ( "${KERNELDIR}/${SMINKERNEL}" "USE_MIN" "min_k" false "" "" false "SINGLE" )
endif ( )
if ( DEFINED ISMINKERNEL )
GenerateNamedObjects ( "${KERNELDIR}/${ISMINKERNEL}" "USE_MIN" "i*min_k" false "" "" false "SINGLE" )
endif ( )
if ( DEFINED ISMAXKERNEL )
GenerateNamedObjects ( "${KERNELDIR}/${ISMAXKERNEL}" "" "i*max_k" false "" "" false "SINGLE" )
endif ( )
GenerateNamedObjects ( "${KERNELDIR}/${ISAMAXKERNEL}" "USE_ABS" "i*amax_k" false "" "" false "SINGLE" )
GenerateNamedObjects ( "${KERNELDIR}/${ISAMINKERNEL}" "USE_ABS;USE_MIN" "i*amin_k" false "" "" false "SINGLE" )
GenerateNamedObjects ( "${KERNELDIR}/${SSCALKERNEL}" "" "scal_k" false "" "" false "SINGLE" )
2020-10-11 20:52:09 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${SCOPYKERNEL}" "C_INTERFACE" "copy_k" false "" "" false "SINGLE" )
2020-09-23 05:25:59 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${SSWAPKERNEL}" "" "swap_k" false "" "" false "SINGLE" )
GenerateNamedObjects ( "${KERNELDIR}/${SAXPYKERNEL}" "" "axpy_k" false "" "" false "SINGLE" )
GenerateNamedObjects ( "${KERNELDIR}/${SNRM2KERNEL}" "" "nrm2_k" false "" "" false "SINGLE" )
GenerateNamedObjects ( "${KERNELDIR}/${SDOTKERNEL}" "" "dot_k" false "" "" false "SINGLE" )
GenerateNamedObjects ( "${KERNELDIR}/${SROTKERNEL}" "" "rot_k" false "" "" false "SINGLE" )
2025-01-22 11:41:12 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${SROTMKERNEL}" "" "rotm_k" false "" "" false "SINGLE" )
2020-09-23 05:25:59 +08:00
endif ( )
2020-10-11 20:52:09 +08:00
if ( BUILD_COMPLEX16 AND NOT BUILD_DOUBLE )
2020-09-23 05:25:59 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${DAMAXKERNEL}" "USE_ABS" "amax_k" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DAMINKERNEL}" "USE_ABS;USE_MIN" "amin_k" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DASUMKERNEL}" "" "asum_k" false "" "" false "DOUBLE" )
if ( DEFINED DMAXKERNEL )
GenerateNamedObjects ( "${KERNELDIR}/${DMAXKERNEL}" "" "max_k" false "" "" false "DOUBLE" )
endif ( )
if ( DEFINED DMINKERNEL )
GenerateNamedObjects ( "${KERNELDIR}/${DMINKERNEL}" "USE_MIN" "min_k" false "" "" false "DOUBLE" )
endif ( )
if ( DEFINED IDMINKERNEL )
GenerateNamedObjects ( "${KERNELDIR}/${IDMINKERNEL}" "USE_MIN" "i*min_k" false "" "" false "DOUBLE" )
endif ( )
if ( DEFINED IDMAXKERNEL )
GenerateNamedObjects ( "${KERNELDIR}/${IDMAXKERNEL}" "" "i*max_k" false "" "" false "DOUBLE" )
endif ( )
GenerateNamedObjects ( "${KERNELDIR}/${IDAMAXKERNEL}" "USE_ABS" "i*amax_k" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${IDAMINKERNEL}" "USE_ABS;USE_MIN" "i*amin_k" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DSCALKERNEL}" "" "scal_k" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DCOPYKERNEL}" "C_INTERFACE" "copy_k" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DNRM2KERNEL}" "" "nrm2_k" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DROTKERNEL}" "" "rot_k" false "" "" false "DOUBLE" )
2025-01-22 11:41:12 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${DROTMKERNEL}" "" "rotm_k" false "" "" false "DOUBLE" )
2020-09-23 05:25:59 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${DDOTKERNEL}" "" "dot_k" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DSWAPKERNEL}" "" "swap_k" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DAXPYKERNEL}" "" "axpy_k" false "" "" false "DOUBLE" )
endif ( )
2017-08-02 00:01:55 +08:00
# Makefile.L2
GenerateCombinationObjects ( "generic/symv_k.c" "LOWER" "U" "" 1 "" "" 3 )
GenerateNamedObjects ( "generic/ger.c" "" "ger_k" false "" "" "" 3 )
foreach ( float_type ${ FLOAT_TYPES } )
string ( SUBSTRING ${ float_type } 0 1 float_char )
if ( ${ float_type } STREQUAL "COMPLEX" OR ${ float_type } STREQUAL "ZCOMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GERUKERNEL}" "" "geru_k" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GERCKERNEL}" "CONJ" "gerc_k" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GERUKERNEL}" "XCONJ" "gerv_k" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GERCKERNEL}" "CONJ;XCONJ" "gerd_k" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMVNKERNEL}" "" "gemv_n" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMVTKERNEL}" "TRANSA" "gemv_t" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMVNKERNEL}" "CONJ" "gemv_r" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMVTKERNEL}" "CONJ;TRANSA" "gemv_c" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMVNKERNEL}" "XCONJ" "gemv_o" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMVTKERNEL}" "XCONJ;TRANSA" "gemv_u" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMVNKERNEL}" "XCONJ;CONJ" "gemv_s" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMVTKERNEL}" "XCONJ;CONJ;TRANSA" "gemv_d" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}HEMV_U_KERNEL}" "HEMV" "hemv_U" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}HEMV_L_KERNEL}" "HEMV;LOWER" "hemv_L" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}HEMV_V_KERNEL}" "HEMV;HEMVREV" "hemv_V" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}HEMV_M_KERNEL}" "HEMV;HEMVREV;LOWER" "hemv_M" false "" "" false ${ float_type } )
else ( )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMVNKERNEL}" "" "gemv_n" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMVTKERNEL}" "TRANS" "gemv_t" false "" "" false ${ float_type } )
endif ( )
endforeach ( )
2020-10-11 20:52:09 +08:00
if ( BUILD_COMPLEX16 AND NOT BUILD_DOUBLE )
2020-09-23 05:25:59 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${DGEMVNKERNEL}" "" "gemv_n" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMVTKERNEL}" "TRANS" "gemv_t" false "" "" false "DOUBLE" )
endif ( )
2020-10-11 20:52:09 +08:00
if ( BUILD_COMPLEX AND NOT BUILD_SINGLE )
2020-09-23 05:25:59 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${SGEMVNKERNEL}" "" "gemv_n" false "" "" false "SINGLE" )
GenerateNamedObjects ( "${KERNELDIR}/${SGEMVTKERNEL}" "TRANS" "gemv_t" false "" "" false "SINGLE" )
endif ( )
2021-09-14 22:17:18 +08:00
if ( BUILD_BFLOAT16 )
2025-07-15 22:41:19 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${BGEMVNKERNEL}" "BGEMM" "gemv_n" false "" "" false "BFLOAT16" )
GenerateNamedObjects ( "${KERNELDIR}/${BGEMVTKERNEL}" "BGEMM" "gemv_t" false "" "" false "BFLOAT16" )
2021-09-14 22:17:18 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${SBGEMVNKERNEL}" "" "gemv_n" false "" "" false "BFLOAT16" )
GenerateNamedObjects ( "${KERNELDIR}/${SBGEMVTKERNEL}" "" "gemv_t" false "" "" false "BFLOAT16" )
endif ( )
2025-10-07 21:24:36 +08:00
if ( BUILD_HFLOAT16 )
GenerateNamedObjects ( "${KERNELDIR}/${SHGEMVNKERNEL}" "" "gemv_n" false "" "" false "HFLOAT16" )
GenerateNamedObjects ( "${KERNELDIR}/${SHGEMVTKERNEL}" "" "gemv_t" false "" "" false "HFLOAT16" )
endif ( )
2017-08-02 00:01:55 +08:00
# Makefile.L3
set ( USE_TRMM false )
2021-01-14 17:00:49 +08:00
string ( TOUPPER ${ TARGET_CORE } UC_TARGET_CORE )
2025-02-17 06:18:04 +08:00
if ( ARM OR ARM64 OR RISCV64 OR ( UC_TARGET_CORE MATCHES LONGSOON3B ) OR ( UC_TARGET_CORE MATCHES GENERIC ) OR ( UC_TARGET_CORE MATCHES HASWELL ) OR ( UC_TARGET_CORE MATCHES ZEN ) OR ( UC_TARGET_CORE MATCHES SKYLAKEX ) OR ( UC_TARGET_CORE MATCHES COOPERLAKE ) OR ( UC_TARGET_CORE MATCHES SAPPHIRERAPIDS ) )
2020-02-11 04:17:39 +08:00
set ( USE_TRMM true )
endif ( )
2021-01-14 17:00:49 +08:00
if ( ZARCH OR ( UC_TARGET_CORE MATCHES POWER8 ) OR ( UC_TARGET_CORE MATCHES POWER9 ) OR ( UC_TARGET_CORE MATCHES POWER10 ) )
2017-08-02 00:01:55 +08:00
set ( USE_TRMM true )
2015-10-21 03:37:22 +08:00
endif ( )
2025-09-15 14:51:46 +08:00
set ( USE_DIRECT_STRMM false )
if ( ARM64 )
set ( USE_DIRECT_STRMM true )
endif ( )
2020-08-19 20:51:09 +08:00
set ( USE_DIRECT_SGEMM false )
2025-05-11 04:39:32 +08:00
if ( X86_64 OR ARM64 )
2020-08-19 20:51:09 +08:00
set ( USE_DIRECT_SGEMM true )
endif ( )
2025-09-25 17:09:56 +08:00
set ( USE_DIRECT_SSYMM false )
if ( ARM64 )
set ( USE_DIRECT_SSYMM true )
endif ( )
2025-08-19 20:13:28 +08:00
if ( UC_TARGET_CORE MATCHES ARMV9SME OR UC_TARGET_CORE MATCHES VORTEXM4 )
2025-07-09 20:44:25 +08:00
set ( HAVE_SME true )
endif ( )
2020-08-19 20:51:09 +08:00
if ( USE_DIRECT_SGEMM )
# if (NOT DEFINED SGEMMDIRECTKERNEL)
2024-12-05 14:11:05 +08:00
if ( X86_64 )
2020-08-19 20:51:09 +08:00
set ( SGEMMDIRECTKERNEL sgemm_direct_skylakex.c )
set ( SGEMMDIRECTPERFORMANT sgemm_direct_performant.c )
# endif()
GenerateNamedObjects ( "${KERNELDIR}/${SGEMMDIRECTKERNEL}" "" "gemm_direct" false "" "" false SINGLE )
GenerateNamedObjects ( "${KERNELDIR}/${SGEMMDIRECTPERFORMANT}" "" "gemm_direct_performant" false "" "" false SINGLE )
2024-12-05 14:11:05 +08:00
elseif ( ARM64 )
2025-08-19 20:13:28 +08:00
set ( SGEMMDIRECTPERFORMANT sgemm_direct_performant.c )
2024-12-05 14:11:05 +08:00
set ( SGEMMDIRECTKERNEL sgemm_direct_arm64_sme1.c )
2025-07-11 17:21:16 +08:00
set ( SGEMMDIRECTKERNEL_ALPHA_BETA sgemm_direct_alpha_beta_arm64_sme1.c )
2025-08-19 20:13:28 +08:00
set ( SGEMMDIRECTSMEKERNEL sgemm_direct_sme1_2VLx2VL.S )
2024-12-05 14:11:05 +08:00
set ( SGEMMDIRECTPREKERNEL sgemm_direct_sme1_preprocess.S )
2025-08-19 20:13:28 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${SGEMMDIRECTPERFORMANT}" "" "gemm_direct_performant" false "" "" false SINGLE )
2024-12-05 14:11:05 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${SGEMMDIRECTKERNEL}" "" "gemm_direct" false "" "" false SINGLE )
2025-07-11 17:21:16 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${SGEMMDIRECTKERNEL_ALPHA_BETA}" "" "gemm_direct_alpha_beta" false "" "" false SINGLE )
2025-05-11 04:39:32 +08:00
if ( HAVE_SME )
2025-08-19 20:13:28 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${SGEMMDIRECTSMEKERNEL}" "" "gemm_direct_sme1_2VLx2VL" false "" "" false SINGLE )
2024-12-05 14:11:05 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${SGEMMDIRECTPREKERNEL}" "" "gemm_direct_sme1_preprocess" false "" "" false SINGLE )
endif ( )
2025-05-11 04:39:32 +08:00
endif ( )
2020-08-19 20:51:09 +08:00
endif ( )
2025-09-25 17:09:56 +08:00
if ( USE_DIRECT_SSYMM )
if ( ARM64 )
set ( SSYMMDIRECTKERNEL_ALPHA_BETA ssymm_direct_alpha_beta_arm64_sme1.c )
GenerateNamedObjects ( "${KERNELDIR}/${SSYMMDIRECTKERNEL_ALPHA_BETA}" "" "symm_direct_alpha_betaLU" false "" "" false SINGLE )
GenerateNamedObjects ( "${KERNELDIR}/${SSYMMDIRECTKERNEL_ALPHA_BETA}" "" "symm_direct_alpha_betaLL" false "" "" false SINGLE )
endif ( )
endif ( )
2025-09-15 14:51:46 +08:00
if ( USE_DIRECT_STRMM )
if ( ARM64 )
set ( STRMMDIRECTKERNEL strmm_direct_arm64_sme1.c )
GenerateNamedObjects ( "${KERNELDIR}/${STRMMDIRECTKERNEL}" "" "trmm_direct_LNUN" false "" "" false SINGLE )
GenerateNamedObjects ( "${KERNELDIR}/${STRMMDIRECTKERNEL}" "" "trmm_direct_LNLN" false "" "" false SINGLE )
GenerateNamedObjects ( "${KERNELDIR}/${STRMMDIRECTKERNEL}" "" "trmm_direct_LTUN" false "" "" false SINGLE )
GenerateNamedObjects ( "${KERNELDIR}/${STRMMDIRECTKERNEL}" "" "trmm_direct_LTLN" false "" "" false SINGLE )
endif ( )
endif ( )
2021-09-14 22:17:18 +08:00
foreach ( float_type SINGLE DOUBLE )
2017-08-02 00:01:55 +08:00
string ( SUBSTRING ${ float_type } 0 1 float_char )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMMKERNEL}" "" "gemm_kernel" false "" "" false ${ float_type } )
2018-12-06 20:56:06 +08:00
endforeach ( )
2020-10-11 20:52:09 +08:00
if ( BUILD_COMPLEX16 AND NOT BUILD_DOUBLE )
2020-09-23 05:25:59 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${DGEMMKERNEL}" "" "gemm_kernel" false "" "" false "DOUBLE" )
if ( DGEMMINCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMMINCOPY}" "DOUBLE" "${DGEMMINCOPYOBJ}" false "" "" true "DOUBLE" )
endif ( )
if ( DGEMMITCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMMITCOPY}" "DOUBLE" "${DGEMMITCOPYOBJ}" false "" "" true "DOUBLE" )
endif ( )
if ( DGEMMONCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMMONCOPY}" "DOUBLE" "${DGEMMONCOPYOBJ}" false "" "" true "DOUBLE" )
endif ( )
if ( DGEMMOTCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMMOTCOPY}" "DOUBLE" "${DGEMMOTCOPYOBJ}" false "" "" true "DOUBLE" )
endif ( )
2023-02-24 06:12:06 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_BETA}" "" "gemm_beta" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "generic/neg_tcopy_${DGEMM_UNROLL_M}.c" "" "neg_tcopy" false "" ${ TSUFFIX } false "DOUBLE" )
GenerateNamedObjects ( "generic/laswp_ncopy_${DGEMM_UNROLL_N}.c" "" "laswp_ncopy" false "" ${ TSUFFIX } false "DOUBLE" )
if ( SMALL_MATRIX_OPT )
if ( NOT DEFINED DGEMM_SMALL_M_PERMIT )
set ( DGEMM_SMALL_M_PERMIT ../generic/gemm_small_matrix_permit.c )
endif ( )
if ( NOT DEFINED DGEMM_SMALL_K_NN )
set ( DGEMM_SMALL_K_NN ../generic/gemm_small_matrix_kernel_nn.c )
endif ( )
if ( NOT DEFINED DGEMM_SMALL_K_NT )
set ( DGEMM_SMALL_K_NT ../generic/gemm_small_matrix_kernel_nt.c )
endif ( )
if ( NOT DEFINED DGEMM_SMALL_K_TN )
set ( DGEMM_SMALL_K_TN ../generic/gemm_small_matrix_kernel_tn.c )
endif ( )
if ( NOT DEFINED DGEMM_SMALL_K_TT )
set ( DGEMM_SMALL_K_TT ../generic/gemm_small_matrix_kernel_tt.c )
endif ( )
if ( NOT DEFINED DGEMM_SMALL_K_B0_NN )
set ( DGEMM_SMALL_K_B0_NN ../generic/gemm_small_matrix_kernel_nn.c )
endif ( )
if ( NOT DEFINED DGEMM_SMALL_K_B0_NT )
set ( DGEMM_SMALL_K_B0_NT ../generic/gemm_small_matrix_kernel_nt.c )
endif ( )
if ( NOT DEFINED DGEMM_SMALL_K_B0_TN )
set ( DGEMM_SMALL_K_B0_TN ../generic/gemm_small_matrix_kernel_tn.c )
endif ( )
if ( NOT DEFINED DGEMM_SMALL_K_B0_TT )
set ( DGEMM_SMALL_K_B0_TT ../generic/gemm_small_matrix_kernel_tt.c )
endif ( )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_M_PERMIT}" "" "gemm_small_matrix_permit" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_NN}" "NN" "gemm_small_kernel_nn" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_NN}" "NR" "gemm_small_kernel_nr" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_NN}" "RN" "gemm_small_kernel_rn" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_NN}" "RR" "gemm_small_kernel_rr" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_NT}" "NT" "gemm_small_kernel_nt" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_NT}" "NC" "gemm_small_kernel_nc" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_NT}" "RT" "gemm_small_kernel_rt" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_NT}" "RC" "gemm_small_kernel_rc" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_TN}" "TN" "gemm_small_kernel_tn" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_TN}" "TR" "gemm_small_kernel_tr" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_TN}" "CN" "gemm_small_kernel_cn" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_TN}" "CR" "gemm_small_kernel_cr" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_TT}" "TT" "gemm_small_kernel_tt" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_TT}" "TC" "gemm_small_kernel_tc" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_TT}" "CT" "gemm_small_kernel_ct" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_TT}" "CC" "gemm_small_kernel_cc" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_NN}" "NN;B0" "gemm_small_kernel_b0_nn" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_NN}" "NR;B0" "gemm_small_kernel_b0_nr" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_NN}" "RN;B0" "gemm_small_kernel_b0_rn" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_NN}" "RR;B0" "gemm_small_kernel_b0_rr" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_NT}" "NT;B0" "gemm_small_kernel_b0_nt" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_NT}" "NC;B0" "gemm_small_kernel_b0_nc" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_NT}" "RT;B0" "gemm_small_kernel_b0_rt" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_NT}" "RC;B0" "gemm_small_kernel_b0_rc" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_TN}" "TN;B0" "gemm_small_kernel_b0_tn" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_TN}" "TR;B0" "gemm_small_kernel_b0_tr" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_TN}" "CN;B0" "gemm_small_kernel_b0_cn" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_TN}" "CR;B0" "gemm_small_kernel_b0_cr" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_TT}" "TT;B0" "gemm_small_kernel_b0_tt" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_TT}" "TC;B0" "gemm_small_kernel_b0_tc" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_TT}" "CT;B0" "gemm_small_kernel_b0_ct" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_TT}" "CC;B0" "gemm_small_kernel_b0_cc" false "" "" false "DOUBLE" )
endif ( )
endif ( )
2020-10-11 20:52:09 +08:00
if ( ( BUILD_DOUBLE OR BUILD_COMPLEX ) AND NOT BUILD_SINGLE )
GenerateNamedObjects ( "${KERNELDIR}/${SGEMMKERNEL}" "" "gemm_kernel" false "" "" false "SINGLE" )
2020-09-23 05:25:59 +08:00
if ( SGEMMINCOPY )
2020-10-11 20:52:09 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${SGEMMINCOPY}" "SINGLE" "${SGEMMINCOPYOBJ}" false "" "" true "SINGLE" )
2020-09-23 05:25:59 +08:00
endif ( )
if ( SGEMMITCOPY )
2020-10-11 20:52:09 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${SGEMMITCOPY}" "SINGLE" "${SGEMMITCOPYOBJ}" false "" "" true "SINGLE" )
2020-09-23 05:25:59 +08:00
endif ( )
if ( SGEMMONCOPY )
2020-10-11 20:52:09 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${SGEMMONCOPY}" "SINGLE" "${SGEMMONCOPYOBJ}" false "" "" true "SINGLE" )
2020-09-23 05:25:59 +08:00
endif ( )
if ( SGEMMOTCOPY )
2020-10-11 20:52:09 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${SGEMMOTCOPY}" "SINGLE" "${SGEMMOTCOPYOBJ}" false "" "" true "SINGLE" )
2020-09-23 05:25:59 +08:00
endif ( )
GenerateNamedObjects ( "${KERNELDIR}/${SGEMM_BETA}" "" "gemm_beta" false "" "" false "SINGLE" )
endif ( )
2017-08-02 00:01:55 +08:00
2021-09-14 22:17:18 +08:00
if ( BUILD_BFLOAT16 )
2025-07-09 06:47:20 +08:00
if ( BGEMMINCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${BGEMMINCOPY}" "BGEMM" "${BGEMMINCOPYOBJ}" false "" "" true "BFLOAT16" )
endif ( )
if ( BGEMMITCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${BGEMMITCOPY}" "BGEMM" "${BGEMMITCOPYOBJ}" false "" "" true "BFLOAT16" )
endif ( )
if ( BGEMMONCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${BGEMMONCOPY}" "BGEMM" "${BGEMMONCOPYOBJ}" false "" "" true "BFLOAT16" )
endif ( )
if ( BGEMMOTCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${BGEMMOTCOPY}" "BGEMM" "${BGEMMOTCOPYOBJ}" false "" "" true "BFLOAT16" )
endif ( )
GenerateNamedObjects ( "${KERNELDIR}/${BGEMMKERNEL}" "BGEMM" "gemm_kernel" false "" "" false "BFLOAT16" )
GenerateNamedObjects ( "${KERNELDIR}/${BGEMM_BETA}" "BGEMM" "gemm_beta" false "" "" false "BFLOAT16" )
2021-09-14 22:17:18 +08:00
if ( SBGEMMINCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${SBGEMMINCOPY}" "" "${SBGEMMINCOPYOBJ}" false "" "" true "BFLOAT16" )
endif ( )
if ( SBGEMMITCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${SBGEMMITCOPY}" "" "${SBGEMMITCOPYOBJ}" false "" "" true "BFLOAT16" )
endif ( )
if ( SBGEMMONCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${SBGEMMONCOPY}" "" "${SBGEMMONCOPYOBJ}" false "" "" true "BFLOAT16" )
endif ( )
if ( SBGEMMOTCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${SBGEMMOTCOPY}" "" "${SBGEMMOTCOPYOBJ}" false "" "" true "BFLOAT16" )
endif ( )
GenerateNamedObjects ( "${KERNELDIR}/${SBGEMMKERNEL}" "" "gemm_kernel" false "" "" false "BFLOAT16" )
GenerateNamedObjects ( "${KERNELDIR}/${SBGEMM_BETA}" "" "gemm_beta" false "" "" false "BFLOAT16" )
endif ( )
2025-06-03 20:14:30 +08:00
if ( BUILD_HFLOAT16 )
if ( SHGEMMINCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${SHGEMMINCOPY}" "" "${SHGEMMINCOPYOBJ}" false "" "" true "HFLOAT16" )
endif ( )
if ( SHGEMMITCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${SHGEMMITCOPY}" "" "${SHGEMMITCOPYOBJ}" false "" "" true "HFLOAT16" )
endif ( )
if ( SHGEMMONCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${SHGEMMONCOPY}" "" "${SHGEMMONCOPYOBJ}" false "" "" true "HFLOAT16" )
endif ( )
if ( SHGEMMOTCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${SHGEMMOTCOPY}" "" "${SHGEMMOTCOPYOBJ}" false "" "" true "HFLOAT16" )
endif ( )
GenerateNamedObjects ( "${KERNELDIR}/${SHGEMMKERNEL}" "" "gemm_kernel" false "" "" false "HFLOAT16" )
GenerateNamedObjects ( "${KERNELDIR}/${SHGEMM_BETA}" "" "gemm_beta" false "" "" false "HFLOAT16" )
endif ( )
2018-12-06 20:56:06 +08:00
foreach ( float_type ${ FLOAT_TYPES } )
string ( SUBSTRING ${ float_type } 0 1 float_char )
2017-08-02 00:01:55 +08:00
if ( ${ float_char } GEMMINCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMMINCOPY}" "${float_type}" "${${float_char}GEMMINCOPYOBJ}" false "" "" true ${ float_type } )
endif ( )
if ( ${ float_char } GEMMITCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMMITCOPY}" "${float_type}" "${${float_char}GEMMITCOPYOBJ}" false "" "" true ${ float_type } )
endif ( )
if ( ${ float_char } GEMMONCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMMONCOPY}" "${float_type}" "${${float_char}GEMMONCOPYOBJ}" false "" "" true ${ float_type } )
endif ( )
if ( ${ float_char } GEMMOTCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMMOTCOPY}" "${float_type}" "${${float_char}GEMMOTCOPYOBJ}" false "" "" true ${ float_type } )
endif ( )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_BETA}" "" "gemm_beta" false "" "" false ${ float_type } )
if ( USE_TRMM )
set ( TRMM_KERNEL "${${float_char}TRMMKERNEL}" )
else ( )
set ( TRMM_KERNEL "${${float_char}GEMMKERNEL}" )
endif ( )
2025-09-15 14:51:46 +08:00
2017-08-02 00:01:55 +08:00
if ( ${ float_type } STREQUAL "COMPLEX" OR ${ float_type } STREQUAL "ZCOMPLEX" )
2015-10-21 03:37:22 +08:00
2017-08-02 00:01:55 +08:00
# just enumerate all these. there is an extra define for these indicating which side is a conjugate (e.g. CN NC NN) that I don't really want to work into GenerateCombinationObjects
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMMKERNEL}" "NN" "gemm_kernel_n" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMMKERNEL}" "CN" "gemm_kernel_l" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMMKERNEL}" "NC" "gemm_kernel_r" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMMKERNEL}" "CC" "gemm_kernel_b" false "" "" false ${ float_type } )
2015-10-21 03:37:22 +08:00
2017-08-02 00:01:55 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;LEFT;NN" "trmm_kernel_LN" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;LEFT;TRANSA;NN" "trmm_kernel_LT" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;LEFT;CONJ;CN" "trmm_kernel_LR" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;LEFT;TRANSA;CONJ;CN" "trmm_kernel_LC" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;NN" "trmm_kernel_RN" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;TRANSA;NN" "trmm_kernel_RT" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;CONJ;NC" "trmm_kernel_RR" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;TRANSA;CONJ;NC" "trmm_kernel_RC" false "" "" false ${ float_type } )
2015-10-21 03:37:22 +08:00
2017-08-02 00:01:55 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}TRSMKERNEL_LN}" "UPPER;LN;TRSMKERNEL;CONJ" "trsm_kernel_LR" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}TRSMKERNEL_LT}" "LT;TRSMKERNEL;CONJ" "trsm_kernel_LC" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}TRSMKERNEL_RN}" "UPPER;RN;TRSMKERNEL;CONJ" "trsm_kernel_RR" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}TRSMKERNEL_RT}" "RT;TRSMKERNEL;CONJ" "trsm_kernel_RC" false "" "" false ${ float_type } )
#hemm
2022-01-05 21:36:39 +08:00
if ( NOT DEFINED ${ float_char } HEMMUTCOPY_M )
set ( HEMMUTCOPY_M "generic/zhemm_utcopy_${${float_char}GEMM_UNROLL_M}.c" )
set ( HEMMLTCOPY_M "generic/zhemm_ltcopy_${${float_char}GEMM_UNROLL_M}.c" )
else ( )
set ( HEMMUTCOPY_M "${KERNELDIR}/${${float_char}HEMMUTCOPY_M}" )
set ( HEMMLTCOPY_M "${KERNELDIR}/${${float_char}HEMMLTCOPY_M}" )
endif ( )
GenerateNamedObjects ( ${ HEMMUTCOPY_M } "" "hemm_iutcopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( ${ HEMMLTCOPY_M } "LOWER" "hemm_iltcopy" false "" "" false ${ float_type } )
2017-08-02 00:01:55 +08:00
GenerateNamedObjects ( "generic/zhemm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "hemm_outcopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/zhemm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "hemm_oltcopy" false "" "" false ${ float_type } )
# symm for c and z
2022-01-05 21:36:39 +08:00
if ( NOT DEFINED ${ float_char } SYMMUCOPY_M )
set ( SYMMUCOPY_M "generic/zsymm_ucopy_${${float_char}GEMM_UNROLL_M}.c" )
set ( SYMMLCOPY_M "generic/zsymm_lcopy_${${float_char}GEMM_UNROLL_M}.c" )
else ( )
set ( SYMMUCOPY_M "${KERNELDIR}/${${float_char}SYMMUCOPY_M}" )
set ( SYMMLCOPY_M "${KERNELDIR}/${${float_char}SYMMLCOPY_M}" )
endif ( )
2017-08-02 00:01:55 +08:00
GenerateNamedObjects ( "generic/zsymm_ucopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "symm_outcopy" false "" "" false ${ float_type } )
2022-01-05 21:36:39 +08:00
GenerateNamedObjects ( ${ SYMMUCOPY_M } "" "symm_iutcopy" false "" "" false ${ float_type } )
2017-08-02 00:01:55 +08:00
GenerateNamedObjects ( "generic/zsymm_lcopy_${${float_char}GEMM_UNROLL_N}.c" "LOWER;OUTER" "symm_oltcopy" false "" "" false ${ float_type } )
2022-01-05 21:36:39 +08:00
GenerateNamedObjects ( ${ SYMMLCOPY_M } "LOWER" "symm_iltcopy" false "" "" false ${ float_type } )
if ( NOT DEFINED ${ float_char } TRMMUNCOPY_M )
set ( TRMMUNCOPY_M "generic/ztrmm_uncopy_${${float_char}GEMM_UNROLL_M}.c" )
set ( TRMMLNCOPY_M "generic/ztrmm_lncopy_${${float_char}GEMM_UNROLL_M}.c" )
set ( TRMMUTCOPY_M "generic/ztrmm_utcopy_${${float_char}GEMM_UNROLL_M}.c" )
set ( TRMMLTCOPY_M "generic/ztrmm_ltcopy_${${float_char}GEMM_UNROLL_M}.c" )
else ( )
set ( TRMMUNCOPY_M "${KERNELDIR}/${${float_char}TRMMUNCOPY_M}" )
set ( TRMMLNCOPY_M "${KERNELDIR}/${${float_char}TRMMLNCOPY_M}" )
set ( TRMMUTCOPY_M "${KERNELDIR}/${${float_char}TRMMUTCOPY_M}" )
set ( TRMMLTCOPY_M "${KERNELDIR}/${${float_char}TRMMLTCOPY_M}" )
endif ( )
GenerateNamedObjects ( ${ TRMMUNCOPY_M } "UNIT" "trmm_iunucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( ${ TRMMUNCOPY_M } "" "trmm_iunncopy" false "" "" false ${ float_type } )
2017-08-02 00:01:55 +08:00
GenerateNamedObjects ( "generic/ztrmm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trmm_ounucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/ztrmm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trmm_ounncopy" false "" "" false ${ float_type } )
2022-01-05 21:36:39 +08:00
GenerateNamedObjects ( ${ TRMMLNCOPY_M } "LOWER;UNIT" "trmm_ilnucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( ${ TRMMLNCOPY_M } "LOWER" "trmm_ilnncopy" false "" "" false ${ float_type } )
2017-08-02 00:01:55 +08:00
GenerateNamedObjects ( "generic/ztrmm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trmm_olnucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/ztrmm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trmm_olnncopy" false "" "" false ${ float_type } )
2022-01-05 21:36:39 +08:00
GenerateNamedObjects ( ${ TRMMUTCOPY_M } "UNIT" "trmm_iutucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( ${ TRMMUTCOPY_M } "" "trmm_iutncopy" false "" "" false ${ float_type } )
2017-08-02 00:01:55 +08:00
GenerateNamedObjects ( "generic/ztrmm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trmm_outucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/ztrmm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trmm_outncopy" false "" "" false ${ float_type } )
2022-01-05 21:36:39 +08:00
GenerateNamedObjects ( ${ TRMMLTCOPY_M } "LOWER;UNIT" "trmm_iltucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( ${ TRMMLTCOPY_M } "LOWER" "trmm_iltncopy" false "" "" false ${ float_type } )
2017-08-02 00:01:55 +08:00
GenerateNamedObjects ( "generic/ztrmm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trmm_oltucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/ztrmm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trmm_oltncopy" false "" "" false ${ float_type } )
2022-01-18 05:36:48 +08:00
if ( NOT DEFINED ZTRSMCOPYLN_M )
set ( ZTRSMUNCOPY_M "generic/ztrsm_uncopy_${${float_char}GEMM_UNROLL_M}.c" )
set ( ZTRSMLNCOPY_M "generic/ztrsm_lncopy_${${float_char}GEMM_UNROLL_M}.c" )
set ( ZTRSMUTCOPY_M "generic/ztrsm_utcopy_${${float_char}GEMM_UNROLL_M}.c" )
set ( ZTRSMLTCOPY_M "generic/ztrsm_ltcopy_${${float_char}GEMM_UNROLL_M}.c" )
else ( )
set ( ZTRSMUNCOPY_M "${KERNELDIR}/${ZTRSMCOPYUN_M}" )
set ( ZTRSMLNCOPY_M "${KERNELDIR}/${ZTRSMCOPYLN_M}" )
set ( ZTRSMUTCOPY_M "${KERNELDIR}/${ZTRSMCOPYUT_M}" )
set ( ZTRSMLTCOPY_M "${KERNELDIR}/${ZTRSMCOPYLT_M}" )
endif ( )
GenerateNamedObjects ( ${ ZTRSMUNCOPY_M } "UNIT" "trsm_iunucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( ${ ZTRSMUNCOPY_M } "" "trsm_iunncopy" false "" "" false ${ float_type } )
2017-08-02 00:01:55 +08:00
GenerateNamedObjects ( "generic/ztrsm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_ounucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/ztrsm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trsm_ounncopy" false "" "" false ${ float_type } )
2015-10-21 03:37:22 +08:00
2022-01-18 05:36:48 +08:00
GenerateNamedObjects ( ${ ZTRSMLNCOPY_M } "LOWER;UNIT" "trsm_ilnucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( ${ ZTRSMLNCOPY_M } "LOWER" "trsm_ilnncopy" false "" "" false ${ float_type } )
2017-08-02 00:01:55 +08:00
GenerateNamedObjects ( "generic/ztrsm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_olnucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/ztrsm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_olnncopy" false "" "" false ${ float_type } )
2022-01-18 05:36:48 +08:00
GenerateNamedObjects ( ${ ZTRSMUTCOPY_M } "UNIT" "trsm_iutucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( ${ ZTRSMUTCOPY_M } "" "trsm_iutncopy" false "" "" false ${ float_type } )
2017-08-02 00:01:55 +08:00
GenerateNamedObjects ( "generic/ztrsm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_outucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/ztrsm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trsm_outncopy" false "" "" false ${ float_type } )
2022-01-18 05:36:48 +08:00
GenerateNamedObjects ( ${ ZTRSMLTCOPY_M } "LOWER;UNIT" "trsm_iltucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( ${ ZTRSMLTCOPY_M } "LOWER" "trsm_iltncopy" false "" "" false ${ float_type } )
2017-08-02 00:01:55 +08:00
GenerateNamedObjects ( "generic/ztrsm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_oltucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/ztrsm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_oltncopy" false "" "" false ${ float_type } )
#gemm3m
if ( USE_GEMM3M )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM3MKERNEL}" "NN" "gemm3m_kernel" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA" "gemm3m_oncopyb" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA;REAL_ONLY" "gemm3m_oncopyr" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA;IMAGE_ONLY" "gemm3m_oncopyi" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA" "gemm3m_otcopyb" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA;REAL_ONLY" "gemm3m_otcopyr" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA;IMAGE_ONLY" "gemm3m_otcopyi" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY" "gemm3m_incopyb" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY;REAL_ONLY" "gemm3m_incopyr" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY;IMAGE_ONLY" "gemm3m_incopyi" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY" "gemm3m_itcopyb" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY;REAL_ONLY" "gemm3m_itcopyr" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY;IMAGE_ONLY" "gemm3m_itcopyi" false "" "" false ${ float_type } )
2017-08-02 20:54:54 +08:00
#hemm3m and symm3m
foreach ( name symm3m hemm3m )
GenerateNamedObjects ( "generic/z${name}_ucopy_${${float_char}GEMM3M_UNROLL_M}.c" "USE_ALPHA" "${name}_oucopyb.c" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/z${name}_ucopy_${${float_char}GEMM3M_UNROLL_M}.c" "USE_ALPHA;REAL_ONLY" "${name}_oucopyr.c" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/z${name}_ucopy_${${float_char}GEMM3M_UNROLL_M}.c" "USE_ALPHA;IMAGE_ONLY" "${name}_oucopyi.c" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/z${name}_lcopy_${${float_char}GEMM3M_UNROLL_M}.c" "USE_ALPHA" "${name}_olcopyb.c" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/z${name}_lcopy_${${float_char}GEMM3M_UNROLL_M}.c" "USE_ALPHA;REAL_ONLY" "${name}_olcopyr.c" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/z${name}_lcopy_${${float_char}GEMM3M_UNROLL_M}.c" "USE_ALPHA;IMAGE_ONLY" "${name}_olcopyi.c" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/z${name}_ucopy_${${float_char}GEMM3M_UNROLL_M}.c" "" "${name}_iucopyb.c" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/z${name}_ucopy_${${float_char}GEMM3M_UNROLL_M}.c" "REAL_ONLY" "${name}_iucopyr.c" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/z${name}_ucopy_${${float_char}GEMM3M_UNROLL_M}.c" "IMAGE_ONLY" "${name}_iucopyi.c" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/z${name}_lcopy_${${float_char}GEMM3M_UNROLL_M}.c" "" "${name}_ilcopyb.c" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/z${name}_lcopy_${${float_char}GEMM3M_UNROLL_M}.c" "REAL_ONLY" "${name}_ilcopyr.c" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/z${name}_lcopy_${${float_char}GEMM3M_UNROLL_M}.c" "IMAGE_ONLY" "${name}_ilcopyi.c" false "" "" false ${ float_type } )
endforeach ( )
2017-08-02 00:01:55 +08:00
endif ( )
else ( ) #For real
GenerateCombinationObjects ( "${KERNELDIR}/${TRMM_KERNEL}" "LEFT;TRANSA" "R;N" "TRMMKERNEL" 2 "trmm_kernel" false ${ float_type } )
# symm for s and d
2021-11-26 17:35:01 +08:00
if ( NOT DEFINED ${ float_char } SYMMUCOPY_M )
set ( SYMMUCOPY_M "generic/symm_ucopy_${${float_char}GEMM_UNROLL_M}.c" )
set ( SYMMLCOPY_M "generic/symm_lcopy_${${float_char}GEMM_UNROLL_M}.c" )
else ( )
set ( SYMMUCOPY_M "${KERNELDIR}/${${float_char}SYMMUCOPY_M}" )
set ( SYMMLCOPY_M "${KERNELDIR}/${${float_char}SYMMLCOPY_M}" )
endif ( )
2017-08-02 00:01:55 +08:00
GenerateNamedObjects ( "generic/symm_ucopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "symm_outcopy" false "" "" false ${ float_type } )
2021-11-26 17:35:01 +08:00
GenerateNamedObjects ( ${ SYMMUCOPY_M } "" "symm_iutcopy" false "" "" false ${ float_type } )
2017-08-02 00:01:55 +08:00
GenerateNamedObjects ( "generic/symm_lcopy_${${float_char}GEMM_UNROLL_N}.c" "LOWER;OUTER" "symm_oltcopy" false "" "" false ${ float_type } )
2021-11-26 17:35:01 +08:00
GenerateNamedObjects ( ${ SYMMLCOPY_M } "LOWER" "symm_iltcopy" false "" "" false ${ float_type } )
2017-08-02 00:01:55 +08:00
# These don't use a scheme that is easy to iterate over - the filenames have part of the DEFINE codes in them, for UPPER/TRANS but not for UNIT/OUTER. Also TRANS is not passed in as a define.
# Could simplify it a bit by pairing up by -UUNIT/-DUNIT.
2021-11-26 17:35:01 +08:00
if ( NOT DEFINED ${ float_char } TRMMUNCOPY_M )
set ( TRMMUNCOPY_M "generic/trmm_uncopy_${${float_char}GEMM_UNROLL_M}.c" )
set ( TRMMLNCOPY_M "generic/trmm_lncopy_${${float_char}GEMM_UNROLL_M}.c" )
set ( TRMMUTCOPY_M "generic/trmm_utcopy_${${float_char}GEMM_UNROLL_M}.c" )
set ( TRMMLTCOPY_M "generic/trmm_ltcopy_${${float_char}GEMM_UNROLL_M}.c" )
else ( )
set ( TRMMUNCOPY_M "${KERNELDIR}/${${float_char}TRMMUNCOPY_M}" )
set ( TRMMLNCOPY_M "${KERNELDIR}/${${float_char}TRMMLNCOPY_M}" )
set ( TRMMUTCOPY_M "${KERNELDIR}/${${float_char}TRMMUTCOPY_M}" )
set ( TRMMLTCOPY_M "${KERNELDIR}/${${float_char}TRMMLTCOPY_M}" )
endif ( )
GenerateNamedObjects ( ${ TRMMUNCOPY_M } "UNIT" "trmm_iunucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( ${ TRMMUNCOPY_M } "" "trmm_iunncopy" false "" "" false ${ float_type } )
2017-08-02 00:01:55 +08:00
GenerateNamedObjects ( "generic/trmm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trmm_ounucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/trmm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trmm_ounncopy" false "" "" false ${ float_type } )
2021-11-26 17:35:01 +08:00
GenerateNamedObjects ( ${ TRMMLNCOPY_M } "LOWER;UNIT" "trmm_ilnucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( ${ TRMMLNCOPY_M } "LOWER" "trmm_ilnncopy" false "" "" false ${ float_type } )
2017-08-02 00:01:55 +08:00
GenerateNamedObjects ( "generic/trmm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trmm_olnucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/trmm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trmm_olnncopy" false "" "" false ${ float_type } )
2021-11-26 17:35:01 +08:00
GenerateNamedObjects ( ${ TRMMUTCOPY_M } "UNIT" "trmm_iutucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( ${ TRMMUTCOPY_M } "" "trmm_iutncopy" false "" "" false ${ float_type } )
2017-08-02 00:01:55 +08:00
GenerateNamedObjects ( "generic/trmm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trmm_outucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/trmm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trmm_outncopy" false "" "" false ${ float_type } )
2021-11-26 17:35:01 +08:00
GenerateNamedObjects ( ${ TRMMLTCOPY_M } "LOWER;UNIT" "trmm_iltucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( ${ TRMMLTCOPY_M } "LOWER" "trmm_iltncopy" false "" "" false ${ float_type } )
2017-08-02 00:01:55 +08:00
GenerateNamedObjects ( "generic/trmm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trmm_oltucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/trmm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trmm_oltncopy" false "" "" false ${ float_type } )
2022-01-18 05:36:48 +08:00
if ( NOT DEFINED TRSMCOPYLN_M )
set ( TRSMUNCOPY_M "generic/trsm_uncopy_${${float_char}GEMM_UNROLL_M}.c" )
set ( TRSMLNCOPY_M "generic/trsm_lncopy_${${float_char}GEMM_UNROLL_M}.c" )
set ( TRSMUTCOPY_M "generic/trsm_utcopy_${${float_char}GEMM_UNROLL_M}.c" )
set ( TRSMLTCOPY_M "generic/trsm_ltcopy_${${float_char}GEMM_UNROLL_M}.c" )
else ( )
set ( TRSMUNCOPY_M "${KERNELDIR}/${TRSMCOPYUN_M}" )
set ( TRSMLNCOPY_M "${KERNELDIR}/${TRSMCOPYLN_M}" )
set ( TRSMUTCOPY_M "${KERNELDIR}/${TRSMCOPYUT_M}" )
set ( TRSMLTCOPY_M "${KERNELDIR}/${TRSMCOPYLT_M}" )
endif ( )
GenerateNamedObjects ( ${ TRSMUNCOPY_M } "UNIT" "trsm_iunucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( ${ TRSMUNCOPY_M } "" "trsm_iunncopy" false "" "" false ${ float_type } )
2017-08-02 00:01:55 +08:00
GenerateNamedObjects ( "generic/trsm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_ounucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/trsm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trsm_ounncopy" false "" "" false ${ float_type } )
2022-01-18 05:36:48 +08:00
GenerateNamedObjects ( ${ TRSMLNCOPY_M } "LOWER;UNIT" "trsm_ilnucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( ${ TRSMLNCOPY_M } "LOWER" "trsm_ilnncopy" false "" "" false ${ float_type } )
2017-08-02 00:01:55 +08:00
GenerateNamedObjects ( "generic/trsm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_olnucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/trsm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_olnncopy" false "" "" false ${ float_type } )
2022-01-18 05:36:48 +08:00
GenerateNamedObjects ( ${ TRSMUTCOPY_M } "UNIT" "trsm_iutucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( ${ TRSMUTCOPY_M } "" "trsm_iutncopy" false "" "" false ${ float_type } )
2017-08-02 00:01:55 +08:00
GenerateNamedObjects ( "generic/trsm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_outucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/trsm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trsm_outncopy" false "" "" false ${ float_type } )
2022-01-18 05:36:48 +08:00
GenerateNamedObjects ( ${ TRSMLTCOPY_M } "LOWER;UNIT" "trsm_iltucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( ${ TRSMLTCOPY_M } "LOWER" "trsm_iltncopy" false "" "" false ${ float_type } )
2017-08-02 00:01:55 +08:00
GenerateNamedObjects ( "generic/trsm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_oltucopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( "generic/trsm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_oltncopy" false "" "" false ${ float_type } )
endif ( )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}TRSMKERNEL_LN}" "UPPER;LN;TRSMKERNEL" "trsm_kernel_LN" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}TRSMKERNEL_LT}" "LT;TRSMKERNEL" "trsm_kernel_LT" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}TRSMKERNEL_RN}" "UPPER;RN;TRSMKERNEL" "trsm_kernel_RN" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}TRSMKERNEL_RT}" "RT;TRSMKERNEL" "trsm_kernel_RT" false "" "" false ${ float_type } )
2021-08-04 16:50:15 +08:00
if ( NOT DEFINED ${ float_char } GEMM_SMALL_M_PERMIT )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" )
set ( ${ float_char } GEMM_SMALL_M_PERMIT ../generic/zgemm_small_matrix_permit.c )
else ( )
set ( ${ float_char } GEMM_SMALL_M_PERMIT ../generic/gemm_small_matrix_permit.c )
endif ( )
endif ( )
if ( NOT DEFINED ${ float_char } GEMM_SMALL_K_NN )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" )
set ( ${ float_char } GEMM_SMALL_K_NN ../generic/zgemm_small_matrix_kernel_nn.c )
else ( )
set ( ${ float_char } GEMM_SMALL_K_NN ../generic/gemm_small_matrix_kernel_nn.c )
endif ( )
endif ( )
if ( NOT DEFINED ${ float_char } GEMM_SMALL_K_NT )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" )
set ( ${ float_char } GEMM_SMALL_K_NT ../generic/zgemm_small_matrix_kernel_nt.c )
else ( )
set ( ${ float_char } GEMM_SMALL_K_NT ../generic/gemm_small_matrix_kernel_nt.c )
endif ( )
endif ( )
if ( NOT DEFINED ${ float_char } GEMM_SMALL_K_TN )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" )
set ( ${ float_char } GEMM_SMALL_K_TN ../generic/zgemm_small_matrix_kernel_tn.c )
else ( )
set ( ${ float_char } GEMM_SMALL_K_TN ../generic/gemm_small_matrix_kernel_tn.c )
endif ( )
endif ( )
if ( NOT DEFINED ${ float_char } GEMM_SMALL_K_TT )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" )
set ( ${ float_char } GEMM_SMALL_K_TT ../generic/zgemm_small_matrix_kernel_tt.c )
else ( )
set ( ${ float_char } GEMM_SMALL_K_TT ../generic/gemm_small_matrix_kernel_tt.c )
endif ( )
endif ( )
if ( NOT DEFINED ${ float_char } GEMM_SMALL_K_B0_NN )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" )
2021-08-13 11:17:38 +08:00
set ( ${ float_char } GEMM_SMALL_K_B0_NN ../generic/zgemm_small_matrix_kernel_nn.c )
2021-08-04 16:50:15 +08:00
else ( )
2021-08-13 11:17:38 +08:00
set ( ${ float_char } GEMM_SMALL_K_B0_NN ../generic/gemm_small_matrix_kernel_nn.c )
2021-08-04 16:50:15 +08:00
endif ( )
endif ( )
if ( NOT DEFINED ${ float_char } GEMM_SMALL_K_B0_NT )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" )
2021-08-13 11:17:38 +08:00
set ( ${ float_char } GEMM_SMALL_K_B0_NT ../generic/zgemm_small_matrix_kernel_nt.c )
2021-08-04 16:50:15 +08:00
else ( )
2021-08-13 11:17:38 +08:00
set ( ${ float_char } GEMM_SMALL_K_B0_NT ../generic/gemm_small_matrix_kernel_nt.c )
2021-08-04 16:50:15 +08:00
endif ( )
endif ( )
if ( NOT DEFINED ${ float_char } GEMM_SMALL_K_B0_TN )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" )
2021-08-13 11:17:38 +08:00
set ( ${ float_char } GEMM_SMALL_K_B0_TN ../generic/zgemm_small_matrix_kernel_tn.c )
2021-08-04 16:50:15 +08:00
else ( )
2021-08-13 11:17:38 +08:00
set ( ${ float_char } GEMM_SMALL_K_B0_TN ../generic/gemm_small_matrix_kernel_tn.c )
2021-08-04 16:50:15 +08:00
endif ( )
endif ( )
if ( NOT DEFINED ${ float_char } GEMM_SMALL_K_B0_TT )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" )
2021-08-13 11:17:38 +08:00
set ( ${ float_char } GEMM_SMALL_K_B0_TT ../generic/zgemm_small_matrix_kernel_tt.c )
2021-08-04 16:50:15 +08:00
else ( )
2021-08-13 11:17:38 +08:00
set ( ${ float_char } GEMM_SMALL_K_B0_TT ../generic/gemm_small_matrix_kernel_tt.c )
2021-08-04 16:50:15 +08:00
endif ( )
endif ( )
2017-08-02 00:01:55 +08:00
2021-08-04 16:50:15 +08:00
if ( SMALL_MATRIX_OPT )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_M_PERMIT}" "" "gemm_small_matrix_permit" false "" "" false ${ float_type } )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_NN}" "NN" "gemm_small_kernel_nn" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_NN}" "NR" "gemm_small_kernel_nr" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_NN}" "RN" "gemm_small_kernel_rn" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_NN}" "RR" "gemm_small_kernel_rr" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_NT}" "NT" "gemm_small_kernel_nt" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_NT}" "NC" "gemm_small_kernel_nc" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_NT}" "RT" "gemm_small_kernel_rt" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_NT}" "RC" "gemm_small_kernel_rc" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_TN}" "TN" "gemm_small_kernel_tn" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_TN}" "TR" "gemm_small_kernel_tr" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_TN}" "CN" "gemm_small_kernel_cn" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_TN}" "CR" "gemm_small_kernel_cr" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_TT}" "TT" "gemm_small_kernel_tt" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_TT}" "TC" "gemm_small_kernel_tc" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_TT}" "CT" "gemm_small_kernel_ct" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_TT}" "CC" "gemm_small_kernel_cc" false "" "" false ${ float_type } )
2021-08-13 11:17:38 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NN}" "NN;B0" "gemm_small_kernel_b0_nn" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NN}" "NR;B0" "gemm_small_kernel_b0_nr" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NN}" "RN;B0" "gemm_small_kernel_b0_rn" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NN}" "RR;B0" "gemm_small_kernel_b0_rr" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NT}" "NT;B0" "gemm_small_kernel_b0_nt" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NT}" "NC;B0" "gemm_small_kernel_b0_nc" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NT}" "RT;B0" "gemm_small_kernel_b0_rt" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NT}" "RC;B0" "gemm_small_kernel_b0_rc" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TN}" "TN;B0" "gemm_small_kernel_b0_tn" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TN}" "TR;B0" "gemm_small_kernel_b0_tr" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TN}" "CN;B0" "gemm_small_kernel_b0_cn" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TN}" "CR;B0" "gemm_small_kernel_b0_cr" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TT}" "TT;B0" "gemm_small_kernel_b0_tt" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TT}" "TC;B0" "gemm_small_kernel_b0_tc" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TT}" "CT;B0" "gemm_small_kernel_b0_ct" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TT}" "CC;B0" "gemm_small_kernel_b0_cc" false "" "" false ${ float_type } )
2021-08-04 16:50:15 +08:00
else ( )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_NN}" "" "gemm_small_kernel_nn" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_NT}" "" "gemm_small_kernel_nt" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_TN}" "" "gemm_small_kernel_tn" false "" "" false ${ float_type } )
2021-12-09 23:57:39 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_TT}" "" "gemm_small_kernel_tt" false "" "" false ${ float_type } )
2021-08-13 11:17:38 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NN}" "B0" "gemm_small_kernel_b0_nn" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NT}" "B0" "gemm_small_kernel_b0_nt" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TN}" "B0" "gemm_small_kernel_b0_tn" false "" "" false ${ float_type } )
2021-12-09 23:57:39 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TT}" "B0" "gemm_small_kernel_b0_tt" false "" "" false ${ float_type } )
2021-08-04 16:50:15 +08:00
endif ( )
2021-09-14 22:17:18 +08:00
if ( BUILD_BFLOAT16 )
if ( NOT DEFINED SBGEMM_SMALL_M_PERMIT )
set ( SBGEMM_SMALL_M_PERMIT ../generic/gemm_small_matrix_permit.c )
endif ( )
if ( NOT DEFINED SBGEMM_SMALL_K_NN )
set ( SBGEMM_SMALL_K_NN ../generic/gemm_small_matrix_kernel_nn.c )
endif ( )
if ( NOT DEFINED SBGEMM_SMALL_K_NT )
set ( SBGEMM_SMALL_K_NT ../generic/gemm_small_matrix_kernel_nt.c )
endif ( )
if ( NOT DEFINED SBGEMM_SMALL_K_TN )
set ( SBGEMM_SMALL_K_TN ../generic/gemm_small_matrix_kernel_tn.c )
endif ( )
if ( NOT DEFINED SBGEMM_SMALL_K_TT )
set ( SBGEMM_SMALL_K_TT ../generic/gemm_small_matrix_kernel_tt.c )
endif ( )
if ( NOT DEFINED SBGEMM_SMALL_K_B0_NN )
set ( SBGEMM_SMALL_K_B0_NN ../generic/gemm_small_matrix_kernel_nn.c )
endif ( )
if ( NOT DEFINED SBGEMM_SMALL_K_B0_NT )
set ( SBGEMM_SMALL_K_B0_NT ../generic/gemm_small_matrix_kernel_nt.c )
endif ( )
if ( NOT DEFINED SBGEMM_SMALL_K_B0_TN )
set ( SBGEMM_SMALL_K_B0_TN ../generic/gemm_small_matrix_kernel_tn.c )
endif ( )
if ( NOT DEFINED SBGEMM_SMALL_K_B0_TT )
2022-02-25 22:33:02 +08:00
set ( SBGEMM_SMALL_K_B0_TT ../generic/gemm_small_matrix_kernel_tt.c )
2021-09-14 22:17:18 +08:00
endif ( )
GenerateNamedObjects ( "${KERNELDIR}/${SBGEMM_SMALL_M_PERMIT}" "" "gemm_small_matrix_permit" false "" "" false "BFLOAT16" )
GenerateNamedObjects ( "${KERNELDIR}/${SBGEMM_SMALL_K_NN}" "" "gemm_small_kernel_nn" false "" "" false "BFLOAT16" )
GenerateNamedObjects ( "${KERNELDIR}/${SBGEMM_SMALL_K_NT}" "" "gemm_small_kernel_nt" false "" "" false "BFLOAT16" )
GenerateNamedObjects ( "${KERNELDIR}/${SBGEMM_SMALL_K_TN}" "" "gemm_small_kernel_tn" false "" "" false "BFLOAT16" )
2021-12-09 23:57:39 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${SBGEMM_SMALL_K_TT}" "" "gemm_small_kernel_tt" false "" "" false "BFLOAT16" )
2021-09-14 22:17:18 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${SBGEMM_SMALL_K_B0_NN}" "B0" "gemm_small_kernel_b0_nn" false "" "" false "BFLOAT16" )
GenerateNamedObjects ( "${KERNELDIR}/${SBGEMM_SMALL_K_B0_NT}" "B0" "gemm_small_kernel_b0_nt" false "" "" false "BFLOAT16" )
GenerateNamedObjects ( "${KERNELDIR}/${SBGEMM_SMALL_K_B0_TN}" "B0" "gemm_small_kernel_b0_tn" false "" "" false "BFLOAT16" )
2021-12-09 23:57:39 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${SBGEMM_SMALL_K_B0_TT}" "B0" "gemm_small_kernel_b0_tt" false "" "" false "BFLOAT16" )
2021-09-14 22:17:18 +08:00
endif ( )
2025-06-03 20:14:30 +08:00
if ( BUILD_HFLOAT16 )
if ( NOT DEFINED SHGEMM_SMALL_M_PERMIT )
set ( SHGEMM_SMALL_M_PERMIT ../generic/gemm_small_matrix_permit.c )
endif ( )
if ( NOT DEFINED SHGEMM_SMALL_K_NN )
set ( SHGEMM_SMALL_K_NN ../generic/gemm_small_matrix_kernel_nn.c )
endif ( )
if ( NOT DEFINED SHGEMM_SMALL_K_NT )
set ( SHGEMM_SMALL_K_NT ../generic/gemm_small_matrix_kernel_nt.c )
endif ( )
if ( NOT DEFINED SHGEMM_SMALL_K_TN )
set ( SHGEMM_SMALL_K_TN ../generic/gemm_small_matrix_kernel_tn.c )
endif ( )
if ( NOT DEFINED SHGEMM_SMALL_K_TT )
set ( SHGEMM_SMALL_K_TT ../generic/gemm_small_matrix_kernel_tt.c )
endif ( )
if ( NOT DEFINED SHGEMM_SMALL_K_B0_NN )
set ( SHGEMM_SMALL_K_B0_NN ../generic/gemm_small_matrix_kernel_nn.c )
endif ( )
if ( NOT DEFINED SHGEMM_SMALL_K_B0_NT )
set ( SHGEMM_SMALL_K_B0_NT ../generic/gemm_small_matrix_kernel_nt.c )
endif ( )
if ( NOT DEFINED SHGEMM_SMALL_K_B0_TN )
set ( SHGEMM_SMALL_K_B0_TN ../generic/gemm_small_matrix_kernel_tn.c )
endif ( )
if ( NOT DEFINED SHGEMM_SMALL_K_B0_TT )
set ( SHGEMM_SMALL_K_B0_TT ../generic/gemm_small_matrix_kernel_tt.c )
endif ( )
GenerateNamedObjects ( "${KERNELDIR}/${SHGEMM_SMALL_M_PERMIT}" "" "gemm_small_matrix_permit" false "" "" false "HFLOAT16" )
GenerateNamedObjects ( "${KERNELDIR}/${SHGEMM_SMALL_K_NN}" "" "gemm_small_kernel_nn" false "" "" false "HFLOAT16" )
GenerateNamedObjects ( "${KERNELDIR}/${SHGEMM_SMALL_K_NT}" "" "gemm_small_kernel_nt" false "" "" false "HFLOAT16" )
GenerateNamedObjects ( "${KERNELDIR}/${SHGEMM_SMALL_K_TN}" "" "gemm_small_kernel_tn" false "" "" false "HFLOAT16" )
GenerateNamedObjects ( "${KERNELDIR}/${SHGEMM_SMALL_K_TT}" "" "gemm_small_kernel_tt" false "" "" false "HFLOAT16" )
GenerateNamedObjects ( "${KERNELDIR}/${SHGEMM_SMALL_K_B0_NN}" "B0" "gemm_small_kernel_b0_nn" false "" "" false "HFLOAT16" )
GenerateNamedObjects ( "${KERNELDIR}/${SHGEMM_SMALL_K_B0_NT}" "B0" "gemm_small_kernel_b0_nt" false "" "" false "HFLOAT16" )
GenerateNamedObjects ( "${KERNELDIR}/${SHGEMM_SMALL_K_B0_TN}" "B0" "gemm_small_kernel_b0_tn" false "" "" false "HFLOAT16" )
GenerateNamedObjects ( "${KERNELDIR}/${SHGEMM_SMALL_K_B0_TT}" "B0" "gemm_small_kernel_b0_tt" false "" "" false "HFLOAT16" )
endif ( )
2021-08-04 16:50:15 +08:00
endif ( )
2017-08-02 00:01:55 +08:00
if ( NOT DEFINED ${ float_char } OMATCOPY_CN )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" )
set ( ${ float_char } OMATCOPY_CN ../arm/zomatcopy_cn.c )
else ( )
set ( ${ float_char } OMATCOPY_CN ../arm/omatcopy_cn.c )
endif ( )
endif ( )
if ( NOT DEFINED ${ float_char } OMATCOPY_RN )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" )
set ( ${ float_char } OMATCOPY_RN ../arm/zomatcopy_rn.c )
else ( )
set ( ${ float_char } OMATCOPY_RN ../arm/omatcopy_rn.c )
endif ( )
endif ( )
if ( NOT DEFINED ${ float_char } OMATCOPY_CT )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" )
set ( ${ float_char } OMATCOPY_CT ../arm/zomatcopy_ct.c )
else ( )
set ( ${ float_char } OMATCOPY_CT ../arm/omatcopy_ct.c )
endif ( )
endif ( )
if ( NOT DEFINED ${ float_char } OMATCOPY_RT )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" )
set ( ${ float_char } OMATCOPY_RT ../arm/zomatcopy_rt.c )
else ( )
set ( ${ float_char } OMATCOPY_RT ../arm/omatcopy_rt.c )
endif ( )
endif ( )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}OMATCOPY_CN}" "" "omatcopy_k_cn" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}OMATCOPY_RN}" "ROWM" "omatcopy_k_rn" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}OMATCOPY_CT}" "" "omatcopy_k_ct" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}OMATCOPY_RT}" "ROWM" "omatcopy_k_rt" false "" "" false ${ float_type } )
if ( NOT DEFINED ${ float_char } OMATCOPY_CNC )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" )
set ( ${ float_char } OMATCOPY_CNC ../arm/zomatcopy_cnc.c )
endif ( )
endif ( )
if ( NOT DEFINED ${ float_char } OMATCOPY_RNC )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" )
set ( ${ float_char } OMATCOPY_RNC ../arm/zomatcopy_rnc.c )
endif ( )
endif ( )
if ( NOT DEFINED ${ float_char } OMATCOPY_CTC )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" )
set ( ${ float_char } OMATCOPY_CTC ../arm/zomatcopy_ctc.c )
endif ( )
endif ( )
if ( NOT DEFINED ${ float_char } OMATCOPY_RTC )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" )
set ( ${ float_char } OMATCOPY_RTC ../arm/zomatcopy_rtc.c )
endif ( )
endif ( )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}OMATCOPY_CNC}" "CONJ" "omatcopy_k_cnc" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}OMATCOPY_RNC}" "CONJ;ROWM" "omatcopy_k_rnc" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}OMATCOPY_CTC}" "CONJ" "omatcopy_k_ctc" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}OMATCOPY_RTC}" "CONJ;ROWM" "omatcopy_k_rtc" false "" "" false ${ float_type } )
endif ( )
#imatcopy
if ( NOT DEFINED ${ float_char } IMATCOPY_CN )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" )
set ( ${ float_char } IMATCOPY_CN ../generic/zimatcopy_cn.c )
else ( )
set ( ${ float_char } IMATCOPY_CN ../generic/imatcopy_cn.c )
endif ( )
endif ( )
if ( NOT DEFINED ${ float_char } IMATCOPY_RN )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" )
set ( ${ float_char } IMATCOPY_RN ../generic/zimatcopy_rn.c )
else ( )
set ( ${ float_char } IMATCOPY_RN ../generic/imatcopy_rn.c )
endif ( )
endif ( )
if ( NOT DEFINED ${ float_char } IMATCOPY_CT )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" )
set ( ${ float_char } IMATCOPY_CT ../generic/zimatcopy_ct.c )
else ( )
set ( ${ float_char } IMATCOPY_CT ../generic/imatcopy_ct.c )
endif ( )
endif ( )
if ( NOT DEFINED ${ float_char } IMATCOPY_RT )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" )
set ( ${ float_char } IMATCOPY_RT ../generic/zimatcopy_rt.c )
else ( )
set ( ${ float_char } IMATCOPY_RT ../generic/imatcopy_rt.c )
endif ( )
endif ( )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}IMATCOPY_CN}" "" "imatcopy_k_cn" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}IMATCOPY_RN}" "ROWM" "imatcopy_k_rn" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}IMATCOPY_CT}" "" "imatcopy_k_ct" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}IMATCOPY_RT}" "ROWM" "imatcopy_k_rt" false "" "" false ${ float_type } )
if ( NOT DEFINED ${ float_char } IMATCOPY_CNC )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" )
set ( ${ float_char } IMATCOPY_CNC ../generic/zimatcopy_cnc.c )
endif ( )
endif ( )
if ( NOT DEFINED ${ float_char } IMATCOPY_RNC )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" )
set ( ${ float_char } IMATCOPY_RNC ../generic/zimatcopy_rnc.c )
endif ( )
endif ( )
if ( NOT DEFINED ${ float_char } IMATCOPY_CTC )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" )
set ( ${ float_char } IMATCOPY_CTC ../generic/zimatcopy_ctc.c )
endif ( )
endif ( )
if ( NOT DEFINED ${ float_char } IMATCOPY_RTC )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" )
set ( ${ float_char } IMATCOPY_RTC ../generic/zimatcopy_rtc.c )
endif ( )
endif ( )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}IMATCOPY_CNC}" "CONJ" "imatcopy_k_cnc" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}IMATCOPY_RNC}" "CONJ;ROWM" "imatcopy_k_rnc" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}IMATCOPY_CTC}" "CONJ" "imatcopy_k_ctc" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}IMATCOPY_RTC}" "CONJ;ROWM" "imatcopy_k_rtc" false "" "" false ${ float_type } )
endif ( )
#geadd
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}GEADD_KERNEL}" "" "geadd_k" false "" "" false ${ float_type } )
endforeach ( )
2021-09-14 22:17:18 +08:00
2023-02-22 07:37:14 +08:00
if ( ( BUILD_DOUBLE OR BUILD_COMPLEX ) AND NOT BUILD_SINGLE )
2020-10-11 20:52:09 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${STRSMKERNEL_LN}" "UPPER;LN;TRSMKERNEL" "trsm_kernel_LN" false "" "" false "SINGLE" )
GenerateNamedObjects ( "${KERNELDIR}/${STRSMKERNEL_LT}" "LT;TRSMKERNEL" "trsm_kernel_LT" false "" "" false "SINGLE" )
GenerateNamedObjects ( "${KERNELDIR}/${STRSMKERNEL_RN}" "UPPER;RN;TRSMKERNEL" "trsm_kernel_RN" false "" "" false "SINGLE" )
GenerateNamedObjects ( "${KERNELDIR}/${STRSMKERNEL_RT}" "RT;TRSMKERNEL" "trsm_kernel_RT" false "" "" false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_uncopy_${SGEMM_UNROLL_M}.c" "UNIT" "trsm_iunucopy" false "" "" false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_uncopy_${SGEMM_UNROLL_M}.c" "" "trsm_iunncopy" false "" "" false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_uncopy_${SGEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_ounucopy" false "" "" false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_uncopy_${SGEMM_UNROLL_N}.c" "OUTER" "trsm_ounncopy" false "" "" false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_lncopy_${SGEMM_UNROLL_M}.c" "LOWER;UNIT" "trsm_ilnucopy" false "" "" false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_lncopy_${SGEMM_UNROLL_M}.c" "LOWER" "trsm_ilnncopy" false "" "" false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_lncopy_${SGEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_olnucopy" false "" "" false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_lncopy_${SGEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_olnncopy" false "" "" false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_utcopy_${SGEMM_UNROLL_M}.c" "UNIT" "trsm_iutucopy" false "" "" false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_utcopy_${SGEMM_UNROLL_M}.c" "" "trsm_iutncopy" false "" "" false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_utcopy_${SGEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_outucopy" false "" "" false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_utcopy_${SGEMM_UNROLL_N}.c" "OUTER" "trsm_outncopy" false "" "" false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_ltcopy_${SGEMM_UNROLL_M}.c" "LOWER;UNIT" "trsm_iltucopy" false "" "" false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_ltcopy_${SGEMM_UNROLL_M}.c" "LOWER" "trsm_iltncopy" false "" "" false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_ltcopy_${SGEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_oltucopy" false "" "" false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_ltcopy_${SGEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_oltncopy" false "" "" false "SINGLE" )
2023-02-22 07:37:14 +08:00
if ( SMALL_MATRIX_OPT )
if ( NOT DEFINED SGEMM_SMALL_M_PERMIT )
set ( SGEMM_SMALL_M_PERMIT ../generic/gemm_small_matrix_permit.c )
endif ( )
if ( NOT DEFINED SGEMM_SMALL_K_NN )
set ( SGEMM_SMALL_K_NN ../generic/gemm_small_matrix_kernel_nn.c )
endif ( )
if ( NOT DEFINED SGEMM_SMALL_K_NT )
set ( SGEMM_SMALL_K_NT ../generic/gemm_small_matrix_kernel_nt.c )
endif ( )
if ( NOT DEFINED SGEMM_SMALL_K_TN )
set ( SGEMM_SMALL_K_TN ../generic/gemm_small_matrix_kernel_tn.c )
endif ( )
if ( NOT DEFINED SGEMM_SMALL_K_TT )
set ( SGEMM_SMALL_K_TT ../generic/gemm_small_matrix_kernel_tt.c )
endif ( )
if ( NOT DEFINED SGEMM_SMALL_K_B0_NN )
set ( SGEMM_SMALL_K_B0_NN ../generic/gemm_small_matrix_kernel_nn.c )
endif ( )
if ( NOT DEFINED SGEMM_SMALL_K_B0_NT )
set ( SGEMM_SMALL_K_B0_NT ../generic/gemm_small_matrix_kernel_nt.c )
endif ( )
if ( NOT DEFINED SGEMM_SMALL_K_B0_TN )
set ( SGEMM_SMALL_K_B0_TN ../generic/gemm_small_matrix_kernel_tn.c )
endif ( )
if ( NOT DEFINED SGEMM_SMALL_K_B0_TT )
set ( SGEMM_SMALL_K_B0_TT ../generic/gemm_small_matrix_kernel_tt.c )
endif ( )
GenerateNamedObjects ( "${KERNELDIR}/${SGEMM_SMALL_M_PERMIT}" "" "gemm_small_matrix_permit" false "" "" false "SINGLE" )
GenerateNamedObjects ( "${KERNELDIR}/${SGEMM_SMALL_K_NN}" "" "gemm_small_kernel_nn" false "" "" false "SINGLE" )
GenerateNamedObjects ( "${KERNELDIR}/${SGEMM_SMALL_K_NT}" "" "gemm_small_kernel_nt" false "" "" false "SINGLE" )
GenerateNamedObjects ( "${KERNELDIR}/${SGEMM_SMALL_K_TN}" "" "gemm_small_kernel_tn" false "" "" false "SINGLE" )
GenerateNamedObjects ( "${KERNELDIR}/${SGEMM_SMALL_K_TT}" "" "gemm_small_kernel_tt" false "" "" false "SINGLE" )
GenerateNamedObjects ( "${KERNELDIR}/${SGEMM_SMALL_K_B0_NN}" "B0" "gemm_small_kernel_b0_nn" false "" "" false "SINGLE" )
GenerateNamedObjects ( "${KERNELDIR}/${SGEMM_SMALL_K_B0_NT}" "B0" "gemm_small_kernel_b0_nt" false "" "" false "SINGLE" )
GenerateNamedObjects ( "${KERNELDIR}/${SGEMM_SMALL_K_B0_TN}" "B0" "gemm_small_kernel_b0_tn" false "" "" false "SINGLE" )
GenerateNamedObjects ( "${KERNELDIR}/${SGEMM_SMALL_K_B0_TT}" "B0" "gemm_small_kernel_b0_tt" false "" "" false "SINGLE" )
endif ( )
2020-10-11 20:52:09 +08:00
endif ( )
2020-04-18 02:35:17 +08:00
2017-08-19 22:59:14 +08:00
# Makefile.LA
if ( NOT NO_LAPACK )
foreach ( float_type ${ FLOAT_TYPES } )
2022-04-30 21:28:38 +08:00
string ( SUBSTRING ${ float_type } 0 1 float_char )
2020-10-12 06:00:55 +08:00
if ( ${ float_type } STREQUAL "BFLOAT16" )
set ( float_char "SB" )
2020-04-18 02:35:17 +08:00
endif ( )
2017-08-19 22:59:14 +08:00
if ( NOT DEFINED ${ float_char } NEG_TCOPY )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" OR ${ float_char } STREQUAL "X" )
2022-04-30 21:28:38 +08:00
set ( ${ float_char } NEG_TCOPY ../generic/zneg_tcopy_ ${ ${float_char } GEMM_UNROLL_M}.c )
2017-08-19 22:59:14 +08:00
else ( )
2022-04-30 21:28:38 +08:00
set ( ${ float_char } NEG_TCOPY ../generic/neg_tcopy_ ${ ${float_char } GEMM_UNROLL_M}.c )
2017-08-19 22:59:14 +08:00
endif ( )
endif ( )
if ( NOT DEFINED ${ float_char } LASWP_NCOPY )
if ( ${ float_char } STREQUAL "Z" OR ${ float_char } STREQUAL "C" OR ${ float_char } STREQUAL "X" )
2022-04-30 21:28:38 +08:00
set ( ${ float_char } LASWP_NCOPY ../generic/zlaswp_ncopy_ ${ ${float_char } GEMM_UNROLL_N}.c )
2017-08-19 22:59:14 +08:00
else ( )
2022-04-30 21:28:38 +08:00
set ( ${ float_char } LASWP_NCOPY ../generic/laswp_ncopy_ ${ ${float_char } GEMM_UNROLL_N}.c )
2017-08-19 22:59:14 +08:00
endif ( )
endif ( )
2022-04-30 21:28:38 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}NEG_TCOPY}" "" "neg_tcopy" false "" "" false ${ float_type } )
GenerateNamedObjects ( "${KERNELDIR}/${${float_char}LASWP_NCOPY}" "" "laswp_ncopy" false "" "" false ${ float_type } )
2017-08-19 22:59:14 +08:00
endforeach ( )
2020-10-11 20:52:09 +08:00
if ( BUILD_COMPLEX AND NOT BUILD_SINGLE )
if ( NOT DEFINED SNEG_TCOPY )
2023-02-22 07:37:14 +08:00
set ( SNEG_TCOPY ../generic/neg_tcopy_ ${ SGEMM_UNROLL_M } .c )
2020-10-11 20:52:09 +08:00
endif ( )
if ( NOT DEFINED SLASWP_NCOPY )
2023-02-22 07:37:14 +08:00
set ( SLASWP_NCOPY ../generic/laswp_ncopy_ ${ SGEMM_UNROLL_N } .c )
2020-10-11 20:52:09 +08:00
endif ( )
2022-04-30 21:28:38 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${SNEG_TCOPY}" "" "neg_tcopy" false "" "" false "SINGLE" )
GenerateNamedObjects ( "${KERNELDIR}/${SLASWP_NCOPY}" "" "laswp_ncopy" false "" "" false "SINGLE" )
2020-10-11 20:52:09 +08:00
endif ( )
if ( BUILD_COMPLEX16 AND NOT BUILD_DOUBLE )
if ( NOT DEFINED DNEG_TCOPY )
2023-02-22 07:37:14 +08:00
set ( DNEG_TCOPY ../generic/neg_tcopy_ ${ DGEMM_UNROLL_M } .c )
2020-10-11 20:52:09 +08:00
endif ( )
if ( NOT DEFINED DLASWP_NCOPY )
2023-02-22 07:37:14 +08:00
set ( DLASWP_NCOPY ../generic/laswp_ncopy_ ${ DGEMM_UNROLL_N } .c )
2020-10-11 20:52:09 +08:00
endif ( )
2023-02-22 07:37:14 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${DNEG_TCOPY}" "" "neg_tcopy" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DLASWP_NCOPY}" "" "laswp_ncopy" false "" "" false "DOUBLE" )
2020-10-11 20:52:09 +08:00
endif ( )
2017-08-19 22:59:14 +08:00
endif ( )
2017-08-02 01:02:47 +08:00
if ( ${ DYNAMIC_ARCH } )
set ( SETPARAM_TARGET_DIR ${ CMAKE_CURRENT_BINARY_DIR } ${ CMAKE_FILES_DIRECTORY } )
2017-08-02 01:53:55 +08:00
file ( READ ${ CMAKE_CURRENT_SOURCE_DIR } /setparam-ref.c SETPARAM_REF_CONTENTS )
string ( REPLACE "TS" "${TSUFFIX}" SETPARAM_REF_CONTENTS_NEW "${SETPARAM_REF_CONTENTS}" )
file ( WRITE ${ SETPARAM_TARGET_DIR } /setparam ${ TSUFFIX } .tmp "${SETPARAM_REF_CONTENTS_NEW}" )
2017-08-02 01:02:47 +08:00
configure_file ( ${ SETPARAM_TARGET_DIR } /setparam ${ TSUFFIX } .tmp ${ SETPARAM_TARGET_DIR } /setparam ${ TSUFFIX } .c COPYONLY )
set ( OPENBLAS_SRC ${ OPENBLAS_SRC } ${ SETPARAM_TARGET_DIR } /setparam ${ TSUFFIX } .c )
2017-08-02 01:53:55 +08:00
file ( REMOVE ${ SETPARAM_TARGET_DIR } /setparam ${ TSUFFIX } .tmp )
set ( KERNEL_TSUFFIX_CONTENTS "" )
foreach ( KERNEL_INTERFACE_H ${ KERNEL_INTERFACE } )
file ( READ ${ PROJECT_SOURCE_DIR } / ${ KERNEL_INTERFACE_H } KERNEL_INTERFACE_H_CONTENTS )
2017-10-10 05:34:18 +08:00
string ( REGEX REPLACE " *\\(" "${TSUFFIX}(" KERNEL_INTERFACE_H_CONTENTS_NEW "${KERNEL_INTERFACE_H_CONTENTS}" )
2017-08-02 01:53:55 +08:00
set ( KERNEL_TSUFFIX_CONTENTS "${KERNEL_TSUFFIX_CONTENTS}\n${KERNEL_INTERFACE_H_CONTENTS_NEW}" )
endforeach ( )
file ( WRITE ${ SETPARAM_TARGET_DIR } /kernel ${ TSUFFIX } .tmp "${KERNEL_TSUFFIX_CONTENTS}" )
configure_file ( ${ SETPARAM_TARGET_DIR } /kernel ${ TSUFFIX } .tmp ${ SETPARAM_TARGET_DIR } /kernel ${ TSUFFIX } .h COPYONLY )
file ( REMOVE ${ SETPARAM_TARGET_DIR } /kernel ${ TSUFFIX } .tmp )
2017-10-10 05:34:18 +08:00
foreach ( float_type ${ FLOAT_TYPES } )
# a bit of metaprogramming here to pull out the appropriate KERNEL var
string ( SUBSTRING ${ float_type } 0 1 float_char )
2020-10-12 06:00:55 +08:00
if ( ${ float_type } STREQUAL "BFLOAT16" )
set ( float_char "SB" )
2020-04-18 02:35:17 +08:00
endif ( )
2017-10-10 05:34:18 +08:00
GenerateNamedObjects ( "generic/neg_tcopy_${${float_char}GEMM_UNROLL_M}.c" "" "neg_tcopy" false "" ${ TSUFFIX } false ${ float_type } )
GenerateNamedObjects ( "generic/laswp_ncopy_${${float_char}GEMM_UNROLL_N}.c" "" "laswp_ncopy" false "" ${ TSUFFIX } false ${ float_type } )
endforeach ( )
2020-10-11 20:52:09 +08:00
if ( BUILD_COMPLEX AND NOT BUILD_SINGLE )
GenerateNamedObjects ( "${KERNELDIR}/${SGEMVNKERNEL}" "" "gemv_n" false "" "" false "SINGLE" )
GenerateNamedObjects ( "${KERNELDIR}/${SGEMVTKERNEL}" "TRANS" "gemv_t" false "" "" false "SINGLE" )
GenerateNamedObjects ( "generic/neg_tcopy_${SGEMM_UNROLL_M}.c" "" "neg_tcopy" false "" ${ TSUFFIX } false "SINGLE" )
GenerateNamedObjects ( "generic/laswp_ncopy_${SGEMM_UNROLL_N}.c" "" "laswp_ncopy" false "" ${ TSUFFIX } false "SINGLE" )
endif ( )
if ( BUILD_DOUBLE AND NOT BUILD_SINGLE )
GenerateNamedObjects ( "generic/neg_tcopy_${SGEMM_UNROLL_M}.c" "" "neg_tcopy" false "" ${ TSUFFIX } false "SINGLE" )
GenerateNamedObjects ( "generic/laswp_ncopy_${SGEMM_UNROLL_N}.c" "" "laswp_ncopy" false "" ${ TSUFFIX } false "SINGLE" )
GenerateNamedObjects ( "${KERNELDIR}/${STRSMKERNEL_LN}" "UPPER;LN;TRSMKERNEL" "trsm_kernel_LN" false "" ${ TSUFFIX } false "SINGLE" )
GenerateNamedObjects ( "${KERNELDIR}/${STRSMKERNEL_LT}" "LT;TRSMKERNEL" "trsm_kernel_LT" false "" ${ TSUFFIX } false "SINGLE" )
GenerateNamedObjects ( "${KERNELDIR}/${STRSMKERNEL_RN}" "UPPER;RN;TRSMKERNEL" "trsm_kernel_RN" false "" ${ TSUFFIX } false "SINGLE" )
GenerateNamedObjects ( "${KERNELDIR}/${STRSMKERNEL_RT}" "RT;TRSMKERNEL" "trsm_kernel_RT" false "" ${ TSUFFIX } false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_uncopy_${SGEMM_UNROLL_M}.c" "UNIT" "trsm_iunucopy" false "" ${ TSUFFIX } false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_uncopy_${SGEMM_UNROLL_M}.c" "" "trsm_iunncopy" false "" ${ TSUFFIX } false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_uncopy_${SGEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_ounucopy" false "" ${ TSUFFIX } false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_uncopy_${SGEMM_UNROLL_N}.c" "OUTER" "trsm_ounncopy" false "" ${ TSUFFIX } false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_lncopy_${SGEMM_UNROLL_M}.c" "LOWER;UNIT" "trsm_ilnucopy" false "" ${ TSUFFIX } false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_lncopy_${SGEMM_UNROLL_M}.c" "LOWER" "trsm_ilnncopy" false "" ${ TSUFFIX } false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_lncopy_${SGEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_olnucopy" false "" ${ TSUFFIX } false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_lncopy_${SGEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_olnncopy" false "" ${ TSUFFIX } false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_utcopy_${SGEMM_UNROLL_M}.c" "UNIT" "trsm_iutucopy" false "" ${ TSUFFIX } false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_utcopy_${SGEMM_UNROLL_M}.c" "" "trsm_iutncopy" false "" ${ TSUFFIX } false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_utcopy_${SGEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_outucopy" false "" ${ TSUFFIX } false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_utcopy_${SGEMM_UNROLL_N}.c" "OUTER" "trsm_outncopy" false "" ${ TSUFFIX } false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_ltcopy_${SGEMM_UNROLL_M}.c" "LOWER;UNIT" "trsm_iltucopy" false "" ${ TSUFFIX } false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_ltcopy_${SGEMM_UNROLL_M}.c" "LOWER" "trsm_iltncopy" false "" ${ TSUFFIX } false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_ltcopy_${SGEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_oltucopy" false "" ${ TSUFFIX } false "SINGLE" )
GenerateNamedObjects ( "generic/trsm_ltcopy_${SGEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_oltncopy" false "" ${ TSUFFIX } false "SINGLE" )
if ( SGEMMINCOPY )
2021-09-14 22:17:18 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${SGEMMINCOPY}" "SINGLE" "${SGEMMINCOPYOBJ}" false "" "" true "SINGLE" )
2020-10-11 20:52:09 +08:00
endif ( )
2021-09-14 22:17:18 +08:00
if ( SGEMMITCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${SGEMMITCOPY}" "SINGLE" "${SGEMMITCOPYOBJ}" false "" "" true "SINGLE" )
endif ( )
if ( SGEMMONCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${SGEMMONCOPY}" "SINGLE" "${SGEMMONCOPYOBJ}" false "" "" true "SINGLE" )
endif ( )
if ( SGEMMOTCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${SGEMMOTCOPY}" "SINGLE" "${SGEMMOTCOPYOBJ}" false "" "" true "SINGLE" )
2020-10-11 20:52:09 +08:00
endif ( )
GenerateNamedObjects ( "${KERNELDIR}/${SGEMVNKERNEL}" "" "gemv_n" false "" "" false "SINGLE" )
GenerateNamedObjects ( "${KERNELDIR}/${SGEMVTKERNEL}" "TRANS" "gemv_t" false "" "" false "SINGLE" )
endif ( )
2021-09-14 22:17:18 +08:00
if ( BUILD_COMPLEX16 AND NOT BUILD_DOUBLE )
2023-02-24 06:12:06 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${DAMAXKERNEL}" "USE_ABS" "amax_k" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DAMINKERNEL}" "USE_ABS;USE_MIN" "amin_k" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DASUMKERNEL}" "" "asum_k" false "" "" false "DOUBLE" )
if ( DEFINED DMAXKERNEL )
GenerateNamedObjects ( "${KERNELDIR}/${DMAXKERNEL}" "" "max_k" false "" "" false "DOUBLE" )
endif ( )
if ( DEFINED DMINKERNEL )
GenerateNamedObjects ( "${KERNELDIR}/${DMINKERNEL}" "USE_MIN" "min_k" false "" "" false "DOUBLE" )
endif ( )
if ( DEFINED IDMINKERNEL )
GenerateNamedObjects ( "${KERNELDIR}/${IDMINKERNEL}" "USE_MIN" "i*min_k" false "" "" false "DOUBLE" )
endif ( )
if ( DEFINED IDMAXKERNEL )
GenerateNamedObjects ( "${KERNELDIR}/${IDMAXKERNEL}" "" "i*max_k" false "" "" false "DOUBLE" )
endif ( )
GenerateNamedObjects ( "${KERNELDIR}/${IDAMAXKERNEL}" "USE_ABS" "i*amax_k" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${IDAMINKERNEL}" "USE_ABS;USE_MIN" "i*amin_k" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DSCALKERNEL}" "" "scal_k" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DCOPYKERNEL}" "C_INTERFACE" "copy_k" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DNRM2KERNEL}" "" "nrm2_k" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DROTKERNEL}" "" "rot_k" false "" "" false "DOUBLE" )
2025-01-22 11:41:12 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${DROTMKERNEL}" "" "rotm_k" false "" "" false "DOUBLE" )
2023-02-24 06:12:06 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${DDOTKERNEL}" "" "dot_k" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DSWAPKERNEL}" "" "swap_k" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DAXPYKERNEL}" "" "axpy_k" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMVNKERNEL}" "" "gemv_n" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMVTKERNEL}" "TRANS" "gemv_t" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMMKERNEL}" "" "gemm_kernel" false "" "" false "DOUBLE" )
if ( DGEMMINCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMMINCOPY}" "DOUBLE" "${DGEMMINCOPYOBJ}" false "" "" true "DOUBLE" )
endif ( )
if ( DGEMMITCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMMITCOPY}" "DOUBLE" "${DGEMMITCOPYOBJ}" false "" "" true "DOUBLE" )
endif ( )
if ( DGEMMONCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMMONCOPY}" "DOUBLE" "${DGEMMONCOPYOBJ}" false "" "" true "DOUBLE" )
endif ( )
if ( DGEMMOTCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMMOTCOPY}" "DOUBLE" "${DGEMMOTCOPYOBJ}" false "" "" true "DOUBLE" )
endif ( )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_BETA}" "" "gemm_beta" false "" "" false "DOUBLE" )
2020-10-11 20:52:09 +08:00
GenerateNamedObjects ( "generic/neg_tcopy_${DGEMM_UNROLL_M}.c" "" "neg_tcopy" false "" ${ TSUFFIX } false "DOUBLE" )
GenerateNamedObjects ( "generic/laswp_ncopy_${DGEMM_UNROLL_N}.c" "" "laswp_ncopy" false "" ${ TSUFFIX } false "DOUBLE" )
2023-02-24 06:12:06 +08:00
if ( SMALL_MATRIX_OPT )
2023-02-22 07:37:14 +08:00
if ( NOT DEFINED DGEMM_SMALL_M_PERMIT )
set ( DGEMM_SMALL_M_PERMIT ../generic/gemm_small_matrix_permit.c )
endif ( )
if ( NOT DEFINED DGEMM_SMALL_K_NN )
2023-02-24 06:12:06 +08:00
set ( DGEMM_SMALL_K_NN ../generic/gemm_small_matrix_kernel_nn.c )
2023-02-22 07:37:14 +08:00
endif ( )
if ( NOT DEFINED DGEMM_SMALL_K_NT )
2023-02-24 06:12:06 +08:00
set ( DGEMM_SMALL_K_NT ../generic/gemm_small_matrix_kernel_nt.c )
2023-02-22 07:37:14 +08:00
endif ( )
if ( NOT DEFINED DGEMM_SMALL_K_TN )
2023-02-24 06:12:06 +08:00
set ( DGEMM_SMALL_K_TN ../generic/gemm_small_matrix_kernel_tn.c )
2023-02-22 07:37:14 +08:00
endif ( )
if ( NOT DEFINED DGEMM_SMALL_K_TT )
2023-02-24 06:12:06 +08:00
set ( DGEMM_SMALL_K_TT ../generic/gemm_small_matrix_kernel_tt.c )
2023-02-22 07:37:14 +08:00
endif ( )
if ( NOT DEFINED DGEMM_SMALL_K_B0_NN )
2023-02-24 06:12:06 +08:00
set ( DGEMM_SMALL_K_B0_NN ../generic/gemm_small_matrix_kernel_nn.c )
2023-02-22 07:37:14 +08:00
endif ( )
if ( NOT DEFINED DGEMM_SMALL_K_B0_NT )
2023-02-24 06:12:06 +08:00
set ( DGEMM_SMALL_K_B0_NT ../generic/gemm_small_matrix_kernel_nt.c )
2023-02-22 07:37:14 +08:00
endif ( )
if ( NOT DEFINED DGEMM_SMALL_K_B0_TN )
2023-02-24 06:12:06 +08:00
set ( DGEMM_SMALL_K_B0_TN ../generic/gemm_small_matrix_kernel_tn.c )
2023-02-22 07:37:14 +08:00
endif ( )
if ( NOT DEFINED DGEMM_SMALL_K_B0_TT )
2023-02-24 06:12:06 +08:00
set ( DGEMM_SMALL_K_B0_TT ../generic/gemm_small_matrix_kernel_tt.c )
2023-02-22 07:37:14 +08:00
endif ( )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_M_PERMIT}" "" "gemm_small_matrix_permit" false "" "" false "DOUBLE" )
2023-02-24 06:12:06 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_NN}" "NN" "gemm_small_kernel_nn" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_NN}" "NR" "gemm_small_kernel_nr" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_NN}" "RN" "gemm_small_kernel_rn" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_NN}" "RR" "gemm_small_kernel_rr" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_NT}" "NT" "gemm_small_kernel_nt" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_NT}" "NC" "gemm_small_kernel_nc" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_NT}" "RT" "gemm_small_kernel_rt" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_NT}" "RC" "gemm_small_kernel_rc" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_TN}" "TN" "gemm_small_kernel_tn" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_TN}" "TR" "gemm_small_kernel_tr" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_TN}" "CN" "gemm_small_kernel_cn" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_TN}" "CR" "gemm_small_kernel_cr" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_TT}" "TT" "gemm_small_kernel_tt" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_TT}" "TC" "gemm_small_kernel_tc" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_TT}" "CT" "gemm_small_kernel_ct" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_TT}" "CC" "gemm_small_kernel_cc" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_NN}" "NN;B0" "gemm_small_kernel_b0_nn" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_NN}" "NR;B0" "gemm_small_kernel_b0_nr" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_NN}" "RN;B0" "gemm_small_kernel_b0_rn" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_NN}" "RR;B0" "gemm_small_kernel_b0_rr" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_NT}" "NT;B0" "gemm_small_kernel_b0_nt" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_NT}" "NC;B0" "gemm_small_kernel_b0_nc" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_NT}" "RT;B0" "gemm_small_kernel_b0_rt" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_NT}" "RC;B0" "gemm_small_kernel_b0_rc" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_TN}" "TN;B0" "gemm_small_kernel_b0_tn" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_TN}" "TR;B0" "gemm_small_kernel_b0_tr" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_TN}" "CN;B0" "gemm_small_kernel_b0_cn" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_TN}" "CR;B0" "gemm_small_kernel_b0_cr" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_TT}" "TT;B0" "gemm_small_kernel_b0_tt" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_TT}" "TC;B0" "gemm_small_kernel_b0_tc" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_TT}" "CT;B0" "gemm_small_kernel_b0_ct" false "" "" false "DOUBLE" )
GenerateNamedObjects ( "${KERNELDIR}/${DGEMM_SMALL_K_B0_TT}" "CC;B0" "gemm_small_kernel_b0_cc" false "" "" false "DOUBLE" )
2023-02-22 07:37:14 +08:00
endif ( )
2020-10-11 20:52:09 +08:00
endif ( )
2023-02-24 06:12:06 +08:00
if ( BUILD_COMPLEX16 AND NOT BUILD_SINGLE )
GenerateNamedObjects ( "${KERNELDIR}/${SSCALKERNEL}" "" "scal_k" false "" "" false "SINGLE" )
endif ( )
if ( BUILD_COMPLEX160 AND NOT BUILD_COMPLEX )
2020-10-11 20:52:09 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${CAMAXKERNEL}" "USE_ABS" "amax_k" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CAMINKERNEL}" "USE_ABS;USE_MIN" "amin_k" false "" "" false "COMPLEX" )
if ( DEFINED CMAXKERNEL )
GenerateNamedObjects ( "${KERNELDIR}/${CMAXKERNEL}" "" "max_k" false "" "" false "COMPLEX" )
endif ( )
if ( DEFINED CMINKERNEL )
GenerateNamedObjects ( "${KERNELDIR}/${CMINKERNEL}" "USE_MIN" "min_k" false "" "" false "COMPLEX" )
endif ( )
GenerateNamedObjects ( "${KERNELDIR}/${ICAMAXKERNEL}" "USE_ABS" "i*amax_k" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${ICAMINKERNEL}" "USE_ABS;USE_MIN" "i*amin_k" false "" "" false "COMPLEX" )
if ( DEFINED ICMAXKERNEL )
GenerateNamedObjects ( "${KERNELDIR}/${ICMAXKERNEL}" "" "i*max_k" false "" "" false "COMPLEX" )
endif ( )
if ( DEFINED ICMINKERNEL )
GenerateNamedObjects ( "${KERNELDIR}/${ICMINKERNEL}" "USE_MIN" "i*min_k" false "" "" false "COMPLEX" )
endif ( )
GenerateNamedObjects ( "${KERNELDIR}/${CASUMKERNEL}" "" "asum_k" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CAXPYKERNEL}" "" "axpy_k" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CCOPYKERNEL}" "C_INTERFACE" "copy_k" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CNRM2KERNEL}" "" "nrm2_k" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CROTKERNEL}" "" "rot_k" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CSCALKERNEL}" "" "scal_k" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CSWAPKERNEL}" "" "swap_k" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CAXPBYKERNEL}" "" "axpby_k" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CSUMKERNEL}" "" "sum_k" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CAXPYKERNEL}" "CONJ" "axpyc_k" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CDOTKERNEL}" "" "dotu_k" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CDOTKERNEL}" "CONJ" "dotc_k" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMVNKERNEL}" "" "gemv_n" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMVTKERNEL}" "TRANSA" "gemv_t" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMVNKERNEL}" "CONJ" "gemv_r" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMVTKERNEL}" "CONJ;TRANSA" "gemv_c" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMVNKERNEL}" "XCONJ" "gemv_o" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMVTKERNEL}" "XCONJ;TRANSA" "gemv_u" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMVNKERNEL}" "XCONJ;CONJ" "gemv_s" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMVTKERNEL}" "XCONJ;CONJ;TRANSA" "gemv_d" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CTRSMKERNEL_LN}" "UPPER;LN;TRSMKERNEL;CONJ" "trsm_kernel_LR" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CTRSMKERNEL_LT}" "LT;TRSMKERNEL;CONJ" "trsm_kernel_LC" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CTRSMKERNEL_RN}" "UPPER;RN;TRSMKERNEL;CONJ" "trsm_kernel_RR" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CTRSMKERNEL_RT}" "RT;TRSMKERNEL;CONJ" "trsm_kernel_RC" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CTRSMKERNEL_LN}" "UPPER;LN;TRSMKERNEL" "trsm_kernel_LN" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CTRSMKERNEL_LT}" "LT;TRSMKERNEL" "trsm_kernel_LT" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CTRSMKERNEL_RN}" "UPPER;RN;TRSMKERNEL" "trsm_kernel_RN" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CTRSMKERNEL_RT}" "RT;TRSMKERNEL" "trsm_kernel_RT" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMMKERNEL}" "NN" "gemm_kernel_n" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMMKERNEL}" "CN" "gemm_kernel_l" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMMKERNEL}" "NC" "gemm_kernel_r" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMMKERNEL}" "CC" "gemm_kernel_b" false "" "" false "COMPLEX" )
if ( CGEMMINCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMMINCOPY}" "COMPLEX" "${CGEMMINCOPYOBJ}" false "" "" true "COMPLEX" )
endif ( )
if ( CGEMMITCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMMITCOPY}" "COMPLEX" "${CGEMMITCOPYOBJ}" false "" "" true "COMPLEX" )
endif ( )
if ( CGEMMONCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMMONCOPY}" "COMPLEX" "${CGEMMONCOPYOBJ}" false "" "" true "COMPLEX" )
endif ( )
if ( CGEMMOTCOPY )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMMOTCOPY}" "COMPLEX" "${CGEMMOTCOPYOBJ}" false "" "" true "COMPLEX" )
endif ( )
2023-02-22 07:37:14 +08:00
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_BETA}" "" "gemm_beta" false "" "" false "COMPLEX" )
if ( SMALL_MATRIX_OPT )
if ( NOT DEFINED CGEMM_SMALL_M_PERMIT )
set ( CGEMM_SMALL_M_PERMIT ../generic/zgemm_small_matrix_permit )
endif ( )
if ( NOT DEFINED CGEMM_SMALL_K_NN )
set ( CGEMM_SMALL_K_NN ../generic/zgemm_small_matrix_kernel_nn )
endif ( )
if ( NOT DEFINED CGEMM_SMALL_K_NT )
set ( CGEMM_SMALL_K_NT ../generic/zgemm_small_matrix_kernel_nt )
endif ( )
if ( NOT DEFINED CGEMM_SMALL_K_TN )
set ( CGEMM_SMALL_K_TN ../generic/zgemm_small_matrix_kernel_tn )
endif ( )
if ( NOT DEFINED CGEMM_SMALL_K_TT )
set ( CGEMM_SMALL_K_TT ../generic/zgemm_small_matrix_kernel_tt )
endif ( )
if ( NOT DEFINED CGEMM_SMALL_K_B0_NN )
set ( CGEMM_SMALL_K_B0_NN ../generic/zgemm_small_matrix_kernel_nn )
endif ( )
if ( NOT DEFINED CGEMM_SMALL_K_B0_NT )
set ( CGEMM_SMALL_K_B0_NT ../generic/zgemm_small_matrix_kernel_nt )
endif ( )
if ( NOT DEFINED CGEMM_SMALL_K_B0_TN )
set ( CGEMM_SMALL_K_B0_TN ../generic/zgemm_small_matrix_kernel_tn )
endif ( )
if ( NOT DEFINED CGEMM_SMALL_K_B0_TT )
set ( CGEMM_SMALL_K_B0_TT ../generic/zgemm_small_matrix_kernel_tt )
endif ( )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_M_PERMIT}.c" "" "gemm_small_matrix_permit" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_NN}.c" "NN" "gemm_small_kernel_nn" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_NN}.c" "NR" "gemm_small_kernel_nr" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_NN}.c" "RN" "gemm_small_kernel_rn" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_NN}.c" "RR" "gemm_small_kernel_rr" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_NT}.c" "NT" "gemm_small_kernel_nt" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_NT}.c" "NC" "gemm_small_kernel_nc" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_NT}.c" "RT" "gemm_small_kernel_rt" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_NT}.c" "RC" "gemm_small_kernel_rc" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_TN}.c" "TN" "gemm_small_kernel_tn" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_TN}.c" "TR" "gemm_small_kernel_tr" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_TN}.c" "CN" "gemm_small_kernel_cn" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_TN}.c" "CR" "gemm_small_kernel_cr" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_TT}.c" "TT" "gemm_small_kernel_tt" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_TT}.c" "TC" "gemm_small_kernel_tc" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_TT}.c" "CT" "gemm_small_kernel_ct" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_TT}.c" "CC" "gemm_small_kernel_cc" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_B0_NN}.c" "NN;B0" "gemm_small_kernel_b0_nn" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_B0_NN}.c" "NR;B0" "gemm_small_kernel_b0_nr" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_B0_NN}.c" "RN;B0" "gemm_small_kernel_b0_rn" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_B0_NN}.c" "RR;B0" "gemm_small_kernel_b0_rr" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_B0_NT}.c" "NT;B0" "gemm_small_kernel_b0_nt" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_B0_NT}.c" "NC;B0" "gemm_small_kernel_b0_nc" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_B0_NT}.c" "RT;B0" "gemm_small_kernel_b0_rt" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_B0_NT}.c" "RC;B0" "gemm_small_kernel_b0_rc" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_B0_TN}.c" "TN;B0" "gemm_small_kernel_b0_tn" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_B0_TN}.c" "TR;B0" "gemm_small_kernel_b0_tr" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_B0_TN}.c" "CN;B0" "gemm_small_kernel_b0_cn" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_B0_TN}.c" "CR;B0" "gemm_small_kernel_b0_cr" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_B0_TT}.c" "TT;B0" "gemm_small_kernel_b0_tt" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_B0_TT}.c" "TC;B0" "gemm_small_kernel_b0_tc" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_B0_TT}.c" "CT;B0" "gemm_small_kernel_b0_ct" false "" "" false "COMPLEX" )
GenerateNamedObjects ( "${KERNELDIR}/${CGEMM_SMALL_K_B0_TT}.c" "CC;B0" "gemm_small_kernel_b0_cc" false "" "" false "COMPLEX" )
endif ( )
2020-10-11 20:52:09 +08:00
GenerateNamedObjects ( "generic/ztrsm_uncopy_${CGEMM_UNROLL_M}.c" "UNIT" "trsm_iunucopy" false "" ${ TSUFFIX } false "COMPLEX" )
GenerateNamedObjects ( "generic/ztrsm_uncopy_${CGEMM_UNROLL_M}.c" "" "trsm_iunncopy" false "" ${ TSUFFIX } false "COMPLEX" )
GenerateNamedObjects ( "generic/ztrsm_uncopy_${CGEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_ounucopy" false "" ${ TSUFFIX } false "COMPLEX" )
GenerateNamedObjects ( "generic/ztrsm_uncopy_${CGEMM_UNROLL_N}.c" "OUTER" "trsm_ounncopy" false "" ${ TSUFFIX } false "COMPLEX" )
GenerateNamedObjects ( "generic/ztrsm_lncopy_${CGEMM_UNROLL_M}.c" "LOWER;UNIT" "trsm_ilnucopy" false "" ${ TSUFFIX } false "COMPLEX" )
GenerateNamedObjects ( "generic/ztrsm_lncopy_${CGEMM_UNROLL_M}.c" "LOWER" "trsm_ilnncopy" false "" ${ TSUFFIX } false "COMPLEX" )
GenerateNamedObjects ( "generic/ztrsm_lncopy_${CGEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_olnucopy" false "" ${ TSUFFIX } false "COMPLEX" )
GenerateNamedObjects ( "generic/ztrsm_lncopy_${CGEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_olnncopy" false "" ${ TSUFFIX } false "COMPLEX" )
GenerateNamedObjects ( "generic/ztrsm_utcopy_${CGEMM_UNROLL_M}.c" "UNIT" "trsm_iutucopy" false "" ${ TSUFFIX } false "COMPLEX" )
GenerateNamedObjects ( "generic/ztrsm_utcopy_${CGEMM_UNROLL_M}.c" "" "trsm_iutncopy" false "" ${ TSUFFIX } false "COMPLEX" )
GenerateNamedObjects ( "generic/ztrsm_utcopy_${CGEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_outucopy" false "" ${ TSUFFIX } false "COMPLEX" )
GenerateNamedObjects ( "generic/ztrsm_utcopy_${CGEMM_UNROLL_N}.c" "OUTER" "trsm_outncopy" false "" ${ TSUFFIX } false "COMPLEX" )
GenerateNamedObjects ( "generic/ztrsm_ltcopy_${CGEMM_UNROLL_M}.c" "LOWER;UNIT" "trsm_iltucopy" false "" ${ TSUFFIX } false "COMPLEX" )
GenerateNamedObjects ( "generic/ztrsm_ltcopy_${CGEMM_UNROLL_M}.c" "LOWER" "trsm_iltncopy" false "" ${ TSUFFIX } false "COMPLEX" )
GenerateNamedObjects ( "generic/ztrsm_ltcopy_${CGEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_oltucopy" false "" ${ TSUFFIX } false "COMPLEX" )
GenerateNamedObjects ( "generic/ztrsm_ltcopy_${CGEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_oltncopy" false "" ${ TSUFFIX } false "COMPLEX" )
GenerateNamedObjects ( "generic/neg_tcopy_${DGEMM_UNROLL_M}.c" "" "neg_tcopy" false "" ${ TSUFFIX } false "COMPLEX" )
GenerateNamedObjects ( "generic/laswp_ncopy_${DGEMM_UNROLL_N}.c" "" "laswp_ncopy" false "" ${ TSUFFIX } false "COMPLEX" )
2017-08-02 01:02:47 +08:00
endif ( )
2020-10-11 20:52:09 +08:00
endif ( )
2017-08-02 01:02:47 +08:00
2017-08-02 00:01:55 +08:00
add_library ( kernel ${ TSUFFIX } OBJECT ${ OPENBLAS_SRC } )
set_target_properties ( kernel ${ TSUFFIX } PROPERTIES COMPILE_FLAGS "${KERNEL_DEFINITIONS}" )
2017-08-02 01:53:55 +08:00
get_target_property ( KERNEL_INCLUDE_DIRECTORIES kernel ${ TSUFFIX } INCLUDE_DIRECTORIES )
2017-08-02 00:01:55 +08:00
set_target_properties ( kernel ${ TSUFFIX } PROPERTIES INCLUDE_DIRECTORIES "${KERNEL_INCLUDE_DIRECTORIES};${TARGET_CONF_DIR}" )
2024-02-12 09:18:03 +08:00
if ( USE_GEMM3M )
target_compile_definitions ( kernel ${ TSUFFIX } PRIVATE USE_GEMM3M )
endif ( )
2025-03-13 08:41:55 +08:00
if ( USE_OPENMP )
target_link_libraries ( kernel ${ TSUFFIX } OpenMP::OpenMP_C )
endif ( )
2017-08-02 00:01:55 +08:00
endfunction ( )
2017-08-08 01:38:44 +08:00
set ( ADD_COMMONOBJS 1 )
2017-08-02 00:01:55 +08:00
if ( ${ DYNAMIC_ARCH } )
foreach ( TARGET_CORE ${ DYNAMIC_CORE } )
set ( BUILD_KERNEL 1 )
set ( KDIR "" )
set ( TSUFFIX "_${TARGET_CORE}" )
2020-10-11 20:52:09 +08:00
set ( KERNEL_DEFINITIONS "-DBUILD_KERNEL -DTABLE_NAME=gotoblas_${TARGET_CORE} -DTS=${TSUFFIX}" )
2017-08-02 00:01:55 +08:00
build_core ( "${TARGET_CORE}" "${KDIR}" "${TSUFFIX}" "${KERNEL_DEFINITIONS}" )
2017-08-08 01:38:44 +08:00
set ( ADD_COMMONOBJS 0 )
2017-08-02 00:01:55 +08:00
endforeach ( )
else ( )
set ( TARGET_CONF_DIR ${ PROJECT_BINARY_DIR } )
set ( TARGET_CORE ${ CORE } )
set ( KDIR "" )
set ( TSUFFIX "" )
2017-08-02 18:44:34 +08:00
set ( KERNEL_DEFINITIONS "" )
2017-08-02 00:01:55 +08:00
build_core ( "${TARGET_CORE}" "${KDIR}" "${TSUFFIX}" "${KERNEL_DEFINITIONS}" )
endif ( )
2015-02-06 11:05:11 +08:00