GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
# Local configure fragment for sysdeps/i386.

AC_HEADER_CHECK([cpuid.h], ,
  [AC_MSG_ERROR([gcc must provide the <cpuid.h> header])])

AC_CACHE_CHECK(if -g produces usable source locations for assembler-with-cpp,
	       libc_cv_cpp_asm_debuginfo, [dnl
cat > conftest.S <<EOF
#include "confdefs.h"

/* comment on
   two lines */
	${libc_cv_dot_text}
	${libc_cv_asm_global_directive} foo
foo:
	/* Unfortunately this test only works for a real instruction,
	   not for any of the machine-independent pseudo-ops.
	   So we just have to assume everybody has a "nop".  */
	nop
	/* comment */
	nop
	/* comment */
	nop
EOF
if AC_TRY_COMMAND([${CC-cc} $CPPFLAGS $ASFLAGS -g -c conftest.S 1>&AS_MESSAGE_LOG_FD]) && {
   ac_pattern='conftest\.S'
   AC_TRY_COMMAND([readelf --debug-dump=line conftest.o |
		   grep $ac_pattern 1>&AS_MESSAGE_LOG_FD])
  }; then
  libc_cv_cpp_asm_debuginfo=yes
else
  libc_cv_cpp_asm_debuginfo=no
fi
rm -f conftest*])AC_SUBST(libc_cv_cpp_asm_debuginfo)
if test $libc_cv_cpp_asm_debuginfo = yes; then
  AC_DEFINE(HAVE_CPP_ASM_DEBUGINFO)
fi

dnl Check if -msse4 works.
AC_CACHE_CHECK(for SSE4 support, libc_cv_cc_sse4, [dnl
if AC_TRY_COMMAND([${CC-cc} -msse4 -xc /dev/null -S -o /dev/null]); then
  libc_cv_cc_sse4=yes
else
  libc_cv_cc_sse4=no
fi])
if test $libc_cv_cc_sse4 = yes; then
  AC_DEFINE(HAVE_SSE4_SUPPORT)
fi

dnl Check if -Wa,-mtune=i686 works.
AC_CACHE_CHECK(for assembler -mtune=i686 support, libc_cv_as_i686, [dnl
if AC_TRY_COMMAND([${CC-cc} -Wa,-mtune=i686 -xc /dev/null -S -o /dev/null]); then
  libc_cv_as_i686=yes
else
  libc_cv_as_i686=no
fi])

dnl Check if -mavx works.
AC_CACHE_CHECK(for AVX support, libc_cv_cc_avx, [dnl
if AC_TRY_COMMAND([${CC-cc} -mavx -xc /dev/null -S -o /dev/null]); then
  libc_cv_cc_avx=yes
else
  libc_cv_cc_avx=no
fi])
if test $libc_cv_cc_avx = yes; then
  AC_DEFINE(HAVE_AVX_SUPPORT)
fi
