@@ -91,6 +91,15 @@ function (build_core TARGET_CORE KDIR TSUFFIX KERNEL_DEFINITIONS)
9191 GenerateNamedObjects ("${KERNELDIR} /${DSDOTKERNEL} " "DSDOT" "d*dot_k" false "" "" false "SINGLE" )
9292 GenerateNamedObjects ("${KERNELDIR} /${DSDOTKERNEL} " "DSDOT" "dsdot_k" false "" "" false "SINGLE" )
9393
94+ # sbdot
95+ if (BUILD_BFLOAT16)
96+ GenerateNamedObjects ("${KERNELDIR} /${SBDOTKERNEL} " "SBDOT" "dot_k" false "" "" false "BFLOAT16" )
97+ GenerateNamedObjects ("${KERNELDIR} /${BF16TOKERNEL} " "SINGLE" "f16tos_k" false "" "" false "BFLOAT16" )
98+ GenerateNamedObjects ("${KERNELDIR} /${BF16TOKERNEL} " "DOUBLE" "bf16tod_k" false "" "" false "DOUBLE" )
99+ GenerateNamedObjects ("${KERNELDIR} /${TOBF16KERNEL} " "SINGLE" "stobf16_k" false "" "" false "BFLOAT16" )
100+ GenerateNamedObjects ("${KERNELDIR} /${TOBF16KERNEL} " "DOUBLE" "dtobf16_k" false "" "" false "BFLOAT16" )
101+ endif ()
102+
94103 if ((BUILD_COMPLEX OR BUILD_DOUBLE) AND NOT BUILD_SINGLE)
95104 GenerateNamedObjects ("${KERNELDIR} /${SAMAXKERNEL} " "USE_ABS" "amax_k" false "" "" false "SINGLE" )
96105 GenerateNamedObjects ("${KERNELDIR} /${SAMINKERNEL} " "USE_ABS;USE_MIN" "amin_k" false "" "" false "SINGLE" )
@@ -149,9 +158,6 @@ function (build_core TARGET_CORE KDIR TSUFFIX KERNEL_DEFINITIONS)
149158 GenerateNamedObjects ("generic/ger.c" "" "ger_k" false "" "" "" 3 )
150159 foreach (float_type ${FLOAT_TYPES} )
151160 string (SUBSTRING ${float_type} 0 1 float_char)
152- if (${float_type} STREQUAL "BFLOAT16" )
153- set (float_char "SB" )
154- endif ()
155161 if (${float_type} STREQUAL "COMPLEX" OR ${float_type} STREQUAL "ZCOMPLEX" )
156162 GenerateNamedObjects ("${KERNELDIR} /${${float_char} GERUKERNEL}" "" "geru_k" false "" "" false ${float_type} )
157163 GenerateNamedObjects ("${KERNELDIR} /${${float_char} GERCKERNEL}" "CONJ" "gerc_k" false "" "" false ${float_type} )
@@ -185,6 +191,10 @@ function (build_core TARGET_CORE KDIR TSUFFIX KERNEL_DEFINITIONS)
185191 GenerateNamedObjects ("${KERNELDIR} /${SGEMVNKERNEL} " "" "gemv_n" false "" "" false "SINGLE" )
186192 GenerateNamedObjects ("${KERNELDIR} /${SGEMVTKERNEL} " "TRANS" "gemv_t" false "" "" false "SINGLE" )
187193 endif ()
194+ if (BUILD_BFLOAT16)
195+ GenerateNamedObjects ("${KERNELDIR} /${SBGEMVNKERNEL} " "" "gemv_n" false "" "" false "BFLOAT16" )
196+ GenerateNamedObjects ("${KERNELDIR} /${SBGEMVTKERNEL} " "" "gemv_t" false "" "" false "BFLOAT16" )
197+ endif ()
188198 # Makefile.L3
189199 set (USE_TRMM false )
190200 string (TOUPPER ${TARGET_CORE} UC_TARGET_CORE)
@@ -209,15 +219,8 @@ function (build_core TARGET_CORE KDIR TSUFFIX KERNEL_DEFINITIONS)
209219 GenerateNamedObjects ("${KERNELDIR} /${SGEMMDIRECTPERFORMANT} " "" "gemm_direct_performant" false "" "" false SINGLE )
210220 endif ()
211221
212- foreach (float_type SINGLE DOUBLE BFLOAT16 )
222+ foreach (float_type SINGLE DOUBLE)
213223 string (SUBSTRING ${float_type} 0 1 float_char)
214- if (${float_type} STREQUAL "BFLOAT16" )
215- if (NOT ${BUILD_BFLOAT16} )
216- continue ()
217- else ()
218- set (float_char "SB" )
219- endif ()
220- endif ()
221224 GenerateNamedObjects ("${KERNELDIR} /${${float_char} GEMMKERNEL}" "" "gemm_kernel" false "" "" false ${float_type} )
222225 endforeach ()
223226 if (BUILD_COMPLEX16 AND NOT BUILD_DOUBLE)
@@ -253,11 +256,24 @@ function (build_core TARGET_CORE KDIR TSUFFIX KERNEL_DEFINITIONS)
253256 GenerateNamedObjects ("${KERNELDIR} /${SGEMM_BETA} " "" "gemm_beta" false "" "" false "SINGLE" )
254257 endif ()
255258
259+ if (BUILD_BFLOAT16)
260+ if (SBGEMMINCOPY)
261+ GenerateNamedObjects ("${KERNELDIR} /${SBGEMMINCOPY} " "" "${SBGEMMINCOPYOBJ} " false "" "" true "BFLOAT16" )
262+ endif ()
263+ if (SBGEMMITCOPY)
264+ GenerateNamedObjects ("${KERNELDIR} /${SBGEMMITCOPY} " "" "${SBGEMMITCOPYOBJ} " false "" "" true "BFLOAT16" )
265+ endif ()
266+ if (SBGEMMONCOPY)
267+ GenerateNamedObjects ("${KERNELDIR} /${SBGEMMONCOPY} " "" "${SBGEMMONCOPYOBJ} " false "" "" true "BFLOAT16" )
268+ endif ()
269+ if (SBGEMMOTCOPY)
270+ GenerateNamedObjects ("${KERNELDIR} /${SBGEMMOTCOPY} " "" "${SBGEMMOTCOPYOBJ} " false "" "" true "BFLOAT16" )
271+ endif ()
272+ GenerateNamedObjects ("${KERNELDIR} /${SBGEMMKERNEL} " "" "gemm_kernel" false "" "" false "BFLOAT16" )
273+ GenerateNamedObjects ("${KERNELDIR} /${SBGEMM_BETA} " "" "gemm_beta" false "" "" false "BFLOAT16" )
274+ endif ()
256275 foreach (float_type ${FLOAT_TYPES} )
257276 string (SUBSTRING ${float_type} 0 1 float_char)
258- if (${float_type} STREQUAL "BFLOAT16" )
259- set (float_char "SB" )
260- endif ()
261277 if (${float_char} GEMMINCOPY)
262278 GenerateNamedObjects ("${KERNELDIR} /${${float_char} GEMMINCOPY}" "${float_type} " "${${float_char} GEMMINCOPYOBJ}" false "" "" true ${float_type} )
263279 endif ()
@@ -568,6 +584,44 @@ function (build_core TARGET_CORE KDIR TSUFFIX KERNEL_DEFINITIONS)
568584 GenerateNamedObjects ("${KERNELDIR} /${${float_char} GEMM_SMALL_K_B0_TN}" "B0" "gemm_small_kernel_b0_tn" false "" "" false ${float_type} )
569585 GenerateNamedObjects ("${KERNELDIR} /${${float_char} GEMM_SMALL_K_B0_NT}" "B0" "gemm_small_kernel_b0_tt" false "" "" false ${float_type} )
570586 endif ()
587+ if (BUILD_BFLOAT16)
588+ if (NOT DEFINED SBGEMM_SMALL_M_PERMIT)
589+ set (SBGEMM_SMALL_M_PERMIT ../generic/gemm_small_matrix_permit.c)
590+ endif ()
591+ if (NOT DEFINED SBGEMM_SMALL_K_NN)
592+ set (SBGEMM_SMALL_K_NN ../generic/gemm_small_matrix_kernel_nn.c)
593+ endif ()
594+ if (NOT DEFINED SBGEMM_SMALL_K_NT)
595+ set (SBGEMM_SMALL_K_NT ../generic/gemm_small_matrix_kernel_nt.c)
596+ endif ()
597+ if (NOT DEFINED SBGEMM_SMALL_K_TN)
598+ set (SBGEMM_SMALL_K_TN ../generic/gemm_small_matrix_kernel_tn.c)
599+ endif ()
600+ if (NOT DEFINED SBGEMM_SMALL_K_TT)
601+ set (SBGEMM_SMALL_K_TT ../generic/gemm_small_matrix_kernel_tt.c)
602+ endif ()
603+ if (NOT DEFINED SBGEMM_SMALL_K_B0_NN)
604+ set (SBGEMM_SMALL_K_B0_NN ../generic/gemm_small_matrix_kernel_nn.c)
605+ endif ()
606+ if (NOT DEFINED SBGEMM_SMALL_K_B0_NT)
607+ set (SBGEMM_SMALL_K_B0_NT ../generic/gemm_small_matrix_kernel_nt.c)
608+ endif ()
609+ if (NOT DEFINED SBGEMM_SMALL_K_B0_TN)
610+ set (SBGEMM_SMALL_K_B0_TN ../generic/gemm_small_matrix_kernel_tn.c)
611+ endif ()
612+ if (NOT DEFINED SBGEMM_SMALL_K_B0_TT)
613+ set ($SBGEMM_SMALL_K_B0_TT ../generic/gemm_small_matrix_kernel_tt.c)
614+ endif ()
615+ GenerateNamedObjects ("${KERNELDIR} /${SBGEMM_SMALL_M_PERMIT} " "" "gemm_small_matrix_permit" false "" "" false "BFLOAT16" )
616+ GenerateNamedObjects ("${KERNELDIR} /${SBGEMM_SMALL_K_NN} " "" "gemm_small_kernel_nn" false "" "" false "BFLOAT16" )
617+ GenerateNamedObjects ("${KERNELDIR} /${SBGEMM_SMALL_K_NT} " "" "gemm_small_kernel_nt" false "" "" false "BFLOAT16" )
618+ GenerateNamedObjects ("${KERNELDIR} /${SBGEMM_SMALL_K_TN} " "" "gemm_small_kernel_tn" false "" "" false "BFLOAT16" )
619+ GenerateNamedObjects ("${KERNELDIR} /${SBGEMM_SMALL_K_NT} " "" "gemm_small_kernel_tt" false "" "" false "BFLOAT16" )
620+ GenerateNamedObjects ("${KERNELDIR} /${SBGEMM_SMALL_K_B0_NN} " "B0" "gemm_small_kernel_b0_nn" false "" "" false "BFLOAT16" )
621+ GenerateNamedObjects ("${KERNELDIR} /${SBGEMM_SMALL_K_B0_NT} " "B0" "gemm_small_kernel_b0_nt" false "" "" false "BFLOAT16" )
622+ GenerateNamedObjects ("${KERNELDIR} /${SBGEMM_SMALL_K_B0_TN} " "B0" "gemm_small_kernel_b0_tn" false "" "" false "BFLOAT16" )
623+ GenerateNamedObjects ("${KERNELDIR} /${SBGEMM_SMALL_K_B0_NT} " "B0" "gemm_small_kernel_b0_tt" false "" "" false "BFLOAT16" )
624+ endif ()
571625 endif ()
572626
573627 if (NOT DEFINED ${float_char} OMATCOPY_CN)
@@ -702,6 +756,7 @@ function (build_core TARGET_CORE KDIR TSUFFIX KERNEL_DEFINITIONS)
702756 #geadd
703757 GenerateNamedObjects ("${KERNELDIR} /${${float_char} GEADD_KERNEL}" "" "geadd_k" false "" "" false ${float_type} )
704758 endforeach ()
759+
705760 if (BUILD_DOUBLE AND NOT BUILD_SINGLE)
706761 GenerateNamedObjects ("${KERNELDIR} /${STRSMKERNEL_LN} " "UPPER;LN;TRSMKERNEL" "trsm_kernel_LN" false "" "" false "SINGLE" )
707762 GenerateNamedObjects ("${KERNELDIR} /${STRSMKERNEL_LT} " "LT;TRSMKERNEL" "trsm_kernel_LT" false "" "" false "SINGLE" )
@@ -840,22 +895,22 @@ function (build_core TARGET_CORE KDIR TSUFFIX KERNEL_DEFINITIONS)
840895 GenerateNamedObjects ("generic/trsm_ltcopy_${SGEMM_UNROLL_N} .c" "OUTER;LOWER" "trsm_oltncopy" false "" ${TSUFFIX} false "SINGLE" )
841896
842897 if (SGEMMINCOPY)
843- GenerateNamedObjects ("${KERNELDIR} /${SGEMMINCOPY} " "SINGLE" "${SGEMMINCOPYOBJ} " false "" "" true "SINGLE" )
898+ GenerateNamedObjects ("${KERNELDIR} /${SGEMMINCOPY} " "SINGLE" "${SGEMMINCOPYOBJ} " false "" "" true "SINGLE" )
844899 endif ()
845- if (SGEMMITCOPY)
846- GenerateNamedObjects ("${KERNELDIR} /${SGEMMITCOPY} " "SINGLE" "${SGEMMITCOPYOBJ} " false "" "" true "SINGLE" )
847- endif ()
848- if (SGEMMONCOPY)
849- GenerateNamedObjects ("${KERNELDIR} /${SGEMMONCOPY} " "SINGLE" "${SGEMMONCOPYOBJ} " false "" "" true "SINGLE" )
850- endif ()
851- if (SGEMMOTCOPY)
852- GenerateNamedObjects ("${KERNELDIR} /${SGEMMOTCOPY} " "SINGLE" "${SGEMMOTCOPYOBJ} " false "" "" true "SINGLE" )
900+ if (SGEMMITCOPY)
901+ GenerateNamedObjects ("${KERNELDIR} /${SGEMMITCOPY} " "SINGLE" "${SGEMMITCOPYOBJ} " false "" "" true "SINGLE" )
902+ endif ()
903+ if (SGEMMONCOPY)
904+ GenerateNamedObjects ("${KERNELDIR} /${SGEMMONCOPY} " "SINGLE" "${SGEMMONCOPYOBJ} " false "" "" true "SINGLE" )
905+ endif ()
906+ if (SGEMMOTCOPY)
907+ GenerateNamedObjects ("${KERNELDIR} /${SGEMMOTCOPY} " "SINGLE" "${SGEMMOTCOPYOBJ} " false "" "" true "SINGLE" )
853908 endif ()
854909 GenerateNamedObjects ("${KERNELDIR} /${SGEMVNKERNEL} " "" "gemv_n" false "" "" false "SINGLE" )
855910 GenerateNamedObjects ("${KERNELDIR} /${SGEMVTKERNEL} " "TRANS" "gemv_t" false "" "" false "SINGLE" )
856911 endif ()
857-
858- if (BUILD_COMPLEX16 AND NOT BUILD_DOUBLE)
912+
913+ if (BUILD_COMPLEX16 AND NOT BUILD_DOUBLE)
859914 GenerateNamedObjects ("generic/neg_tcopy_${DGEMM_UNROLL_M} .c" "" "neg_tcopy" false "" ${TSUFFIX} false "DOUBLE" )
860915 GenerateNamedObjects ("generic/laswp_ncopy_${DGEMM_UNROLL_N} .c" "" "laswp_ncopy" false "" ${TSUFFIX} false "DOUBLE" )
861916 endif ()
0 commit comments