Check for immintrin.h before using it in SDL_cpuinfo.h

Sam Lantinga 2017-12-11 12:00:12 -08:00
parent 1b16618b13
commit f1ec8a5f4c
6 changed files with 46 additions and 5 deletions

View File

@ -580,6 +580,8 @@ if(ASSEMBLY)
endif() endif()
endif() endif()
check_include_file("immintrin.h" HAVE_IMMINTRIN_H)
if(ALTIVEC) if(ALTIVEC)
set(CMAKE_REQUIRED_FLAGS "-maltivec") set(CMAKE_REQUIRED_FLAGS "-maltivec")
check_c_source_compiles(" check_c_source_compiles("

14
configure vendored
View File

@ -17396,6 +17396,20 @@ $as_echo "$have_gcc_sse3" >&6; }
fi fi
fi fi
ac_fn_c_check_header_mongrel "$LINENO" "immintrin.h" "ac_cv_header_immintrin_h" "$ac_includes_default"
if test "x$ac_cv_header_immintrin_h" = xyes; then :
have_immintrin_h_hdr=yes
else
have_immintrin_h_hdr=no
fi
if test x$have_immintrin_h_hdr = xyes; then
$as_echo "#define HAVE_IMMINTRIN_H 1" >>confdefs.h
fi
# Check whether --enable-altivec was given. # Check whether --enable-altivec was given.
if test "${enable_altivec+set}" = set; then : if test "${enable_altivec+set}" = set; then :
enableval=$enable_altivec; enableval=$enable_altivec;

View File

@ -670,6 +670,13 @@ AC_HELP_STRING([--enable-sse3], [use SSE3 assembly routines [[default=maybe]]]),
fi fi
fi fi
AC_CHECK_HEADER(immintrin.h,
have_immintrin_h_hdr=yes,
have_immintrin_h_hdr=no)
if test x$have_immintrin_h_hdr = xyes; then
AC_DEFINE(HAVE_IMMINTRIN_H, 1, [ ])
fi
AC_ARG_ENABLE(altivec, AC_ARG_ENABLE(altivec,
AC_HELP_STRING([--enable-altivec], [use Altivec assembly routines [[default=yes]]]), AC_HELP_STRING([--enable-altivec], [use Altivec assembly routines [[default=yes]]]),
, enable_altivec=yes) , enable_altivec=yes)

View File

@ -191,11 +191,12 @@
#endif /* HAVE_LIBC */ #endif /* HAVE_LIBC */
#cmakedefine HAVE_ALTIVEC_H 1 #cmakedefine HAVE_ALTIVEC_H 1
#cmakedefine HAVE_LIBUDEV_H 1
#cmakedefine HAVE_DBUS_DBUS_H 1 #cmakedefine HAVE_DBUS_DBUS_H 1
#cmakedefine HAVE_IBUS_IBUS_H 1
#cmakedefine HAVE_FCITX_FRONTEND_H 1 #cmakedefine HAVE_FCITX_FRONTEND_H 1
#cmakedefine HAVE_IBUS_IBUS_H 1
#cmakedefine HAVE_IMMINTRIN_H 1
#cmakedefine HAVE_LIBSAMPLERATE_H 1 #cmakedefine HAVE_LIBSAMPLERATE_H 1
#cmakedefine HAVE_LIBUDEV_H 1
#cmakedefine HAVE_D3D_H @HAVE_D3D_H@ #cmakedefine HAVE_D3D_H @HAVE_D3D_H@
#cmakedefine HAVE_D3D11_H @HAVE_D3D11_H@ #cmakedefine HAVE_D3D11_H @HAVE_D3D11_H@

View File

@ -193,11 +193,12 @@
#endif /* HAVE_LIBC */ #endif /* HAVE_LIBC */
#undef HAVE_ALTIVEC_H #undef HAVE_ALTIVEC_H
#undef HAVE_LIBUDEV_H
#undef HAVE_DBUS_DBUS_H #undef HAVE_DBUS_DBUS_H
#undef HAVE_IBUS_IBUS_H
#undef HAVE_FCITX_FRONTEND_H #undef HAVE_FCITX_FRONTEND_H
#undef HAVE_IBUS_IBUS_H
#undef HAVE_IMMINTRIN_H
#undef HAVE_LIBSAMPLERATE_H #undef HAVE_LIBSAMPLERATE_H
#undef HAVE_LIBUDEV_H
#undef HAVE_DDRAW_H #undef HAVE_DDRAW_H
#undef HAVE_DINPUT_H #undef HAVE_DINPUT_H

View File

@ -59,10 +59,26 @@
#ifdef __3dNOW__ #ifdef __3dNOW__
#include <mm3dnow.h> #include <mm3dnow.h>
#endif #endif
#if defined(__i386__) || defined(__x86_64__) #if HAVE_IMMINTRIN_H
#include <immintrin.h> #include <immintrin.h>
#else
#ifdef __MMX__
#include <mmintrin.h>
#endif #endif
#ifdef __3dNOW__
#include <mm3dnow.h>
#endif #endif
#ifdef __SSE__
#include <xmmintrin.h>
#endif
#ifdef __SSE2__
#include <emmintrin.h>
#endif
#ifdef __SSE3__
#include <pmmintrin.h>
#endif
#endif /* HAVE_IMMINTRIN_H */
#endif /* compiler version */
#include "begin_code.h" #include "begin_code.h"
/* Set up for C function definitions, even when using C++ */ /* Set up for C function definitions, even when using C++ */