-# Check for nasm and nasm features
-AC_CHECK_PROG(HAVE_NASM, nasm, yes, no)
-if test "$HAVE_NASM" = "no"; then
- AC_MSG_RESULT([no nasm])
-else
- AC_MSG_CHECKING([for modern nasm])
- AC_LANG_CONFTEST([AC_LANG_SOURCE([[pblendvb xmm2, xmm1;]])])
- sed -i -e '/pblendvb/!d' conftest.c
- if nasm -f elf64 conftest.c 2> /dev/null; then
- with_modern_nasm=yes
- AC_MSG_RESULT([yes])
- AC_MSG_CHECKING([for optional nasm AVX512 support])
- AC_LANG_CONFTEST([AC_LANG_SOURCE([[vpshufb zmm0, zmm1, zmm2;]])])
- sed -i -e '/vpshufb/!d' conftest.c
- if nasm -f elf64 conftest.c 2> /dev/null; then
- nasm_knows_avx512=yes
- AC_MSG_RESULT([yes])
+ # Check for nasm and nasm features
+ nasm_feature_level=0
+ AC_CHECK_PROG(HAVE_NASM, nasm, yes, no)
+ if test "$HAVE_NASM" = "yes"; then
+ nasm_feature_level=1
+ else
+ AC_MSG_RESULT([no nasm])
+ fi
+
+ if test x"$nasm_feature_level" = x"1"; then
+ AC_MSG_CHECKING([for modern nasm])
+ AC_LANG_CONFTEST([AC_LANG_SOURCE([[pblendvb xmm2, xmm1;]])])
+ sed -i -e '/pblendvb/!d' conftest.c
+ if nasm -f elf64 conftest.c 2> /dev/null; then
+ AC_MSG_RESULT([yes])
+ nasm_feature_level=4
+ else
+ AC_MSG_RESULT([no])
+ fi
+ fi
+ if test x"$nasm_feature_level" = x"4"; then
+ AC_MSG_CHECKING([for optional nasm AVX512 support])
+ AC_LANG_CONFTEST([AC_LANG_SOURCE([[vinserti32x8 zmm0, ymm1, 1;]])])
+ sed -i -e '/vinsert/!d' conftest.c
+ if nasm -f elf64 conftest.c 2> /dev/null; then
+ AC_MSG_RESULT([yes])
+ nasm_feature_level=6
+ else
+ AC_MSG_RESULT([no])
+ fi
+ fi
+ if test x"$nasm_feature_level" = x"6"; then
+ AC_MSG_CHECKING([for additional nasm AVX512 support])
+ AC_LANG_CONFTEST([AC_LANG_SOURCE([[vpcompressb zmm0 {k1}, zmm1;]])])
+ sed -i -e '/vpcompressb/!d' conftest.c
+ if nasm -f elf64 conftest.c 2> /dev/null; then
+ AC_MSG_RESULT([yes])
+ nasm_feature_level=10
+ else
+ AC_MSG_RESULT([no])
+ fi
+ fi
+
+ if test $nasm_feature_level -ge $yasm_feature_level ; then
+ AS=nasm
+ as_feature_level=$nasm_feature_level