@@ -244,6 +244,7 @@ case "$data" in
244244esac
245245
246246no_avx512=0
247+ no_avx512bf=0
247248if [ " $architecture " = " x86" ] || [ " $architecture " = " x86_64" ]; then
248249 tmpd=$( mktemp -d 2> /dev/null || mktemp -d -t ' OBC' )
249250 tmpf=" $tmpd /a.c"
@@ -262,6 +263,25 @@ if [ "$architecture" = "x86" ] || [ "$architecture" = "x86_64" ]; then
262263 }
263264
264265 rm -rf " $tmpd "
266+ if [ " $no_avx512 " -eq 0 ]; then
267+ tmpd=$( mktemp -d 2> /dev/null || mktemp -d -t ' OBC' )
268+ tmpf=" $tmpd /a.c"
269+ code=' "__m512 a= _mm512_dpbf16_ps(a, (__m512bh) _mm512_loadu_si512(%1]), (__m512bh) _mm512_loadu_si512(%2]));"'
270+ printf " #include <immintrin.h>\n\nint main(void){ %s; }\n" " $code " >> " $tmpf "
271+ if [ " $compiler " = " PGI" ]; then
272+ args=" -tp cooperlake -c -o $tmpf .o $tmpf "
273+ else
274+ args=" -march=cooperlake -c -o $tmpf .o $tmpf "
275+ fi
276+ no_avx512bf=0
277+ {
278+ $compiler_name $flags $args > /dev/null 2>&1
279+ } || {
280+ no_avx512bf=1
281+ }
282+
283+ rm -rf " $tmpd "
284+ fi
265285fi
266286
267287no_rv64gv=0
409429 [ " $makefile " = " -" ] && {
410430 [ " $no_rv64gv " -eq 1 ] && printf " NO_RV64GV=1\n"
411431 [ " $no_avx512 " -eq 1 ] && printf " NO_AVX512=1\n"
432+ [ " $no_avx512bf " -eq 1 ] && printf " NO_AVX512BF16=1\n"
412433 [ " $no_avx2 " -eq 1 ] && printf " NO_AVX2=1\n"
413434 [ " $oldgcc " -eq 1 ] && printf " OLDGCC=1\n"
414435 exit 0
437458 [ " $no_sve " -eq 1 ] && printf " NO_SVE=1\n"
438459 [ " $no_rv64gv " -eq 1 ] && printf " NO_RV64GV=1\n"
439460 [ " $no_avx512 " -eq 1 ] && printf " NO_AVX512=1\n"
461+ [ " $no_avx512bf " -eq 1 ] && printf " NO_AVX512BF16=1\n"
440462 [ " $no_avx2 " -eq 1 ] && printf " NO_AVX2=1\n"
441463 [ " $oldgcc " -eq 1 ] && printf " OLDGCC=1\n"
442464 [ " $no_lsx " -eq 1 ] && printf " NO_LSX=1\n"
0 commit comments