@@ -244,6 +244,7 @@ case "$data" in
244
244
esac
245
245
246
246
no_avx512=0
247
+ no_avx512bf=0
247
248
if [ " $architecture " = " x86" ] || [ " $architecture " = " x86_64" ]; then
248
249
tmpd=$( mktemp -d 2> /dev/null || mktemp -d -t ' OBC' )
249
250
tmpf=" $tmpd /a.c"
@@ -262,6 +263,25 @@ if [ "$architecture" = "x86" ] || [ "$architecture" = "x86_64" ]; then
262
263
}
263
264
264
265
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
265
285
fi
266
286
267
287
no_rv64gv=0
409
429
[ " $makefile " = " -" ] && {
410
430
[ " $no_rv64gv " -eq 1 ] && printf " NO_RV64GV=1\n"
411
431
[ " $no_avx512 " -eq 1 ] && printf " NO_AVX512=1\n"
432
+ [ " $no_avx512bf " -eq 1 ] && printf " NO_AVX512BF16=1\n"
412
433
[ " $no_avx2 " -eq 1 ] && printf " NO_AVX2=1\n"
413
434
[ " $oldgcc " -eq 1 ] && printf " OLDGCC=1\n"
414
435
exit 0
437
458
[ " $no_sve " -eq 1 ] && printf " NO_SVE=1\n"
438
459
[ " $no_rv64gv " -eq 1 ] && printf " NO_RV64GV=1\n"
439
460
[ " $no_avx512 " -eq 1 ] && printf " NO_AVX512=1\n"
461
+ [ " $no_avx512bf " -eq 1 ] && printf " NO_AVX512BF16=1\n"
440
462
[ " $no_avx2 " -eq 1 ] && printf " NO_AVX2=1\n"
441
463
[ " $oldgcc " -eq 1 ] && printf " OLDGCC=1\n"
442
464
[ " $no_lsx " -eq 1 ] && printf " NO_LSX=1\n"
0 commit comments