+ # Intel IA-64, 64-bit CPU (not x86_64 compatible)
+ ia64)
+ # Check for specific CPU features
+ SILC_CPU_FLAG(mmx, true, AC_DEFINE([SILC_CPU_MMX], [], [SILC_CPU_MMX]), [])
+ SILC_CPU_FLAG(sse2, true, AC_DEFINE([SILC_CPU_SSE2], [], [SILC_CPU_SSE2]), [])
+ SILC_CPU_FLAG(pni, true, AC_DEFINE([SILC_CPU_SSE3], [], [SILC_CPU_SSE3]), [])
+ SILC_CPU_FLAG(ssse3, true, AC_DEFINE([SILC_CPU_SSSE3], [], [SILC_CPU_SSSE3]), [])
+ SILC_CPU_FLAG(sse4, true, AC_DEFINE([SILC_CPU_SSE4], [], [SILC_CPU_SSE4]), [])
+ ;;
+
+ # AMD/Intel x86_64, 64-bit CPU
+ x86_64)
+ # Check for specific CPU features
+ SILC_CPU_FLAG(mmx, true, AC_DEFINE([SILC_CPU_MMX], [], [SILC_CPU_MMX]), [])
+ SILC_CPU_FLAG(sse2, true, AC_DEFINE([SILC_CPU_SSE2], [], [SILC_CPU_SSE2]), [])
+ SILC_CPU_FLAG(pni, true, AC_DEFINE([SILC_CPU_SSE3], [], [SILC_CPU_SSE3]), [])
+ SILC_CPU_FLAG(ssse3, true, AC_DEFINE([SILC_CPU_SSSE3], [], [SILC_CPU_SSSE3]), [])
+ SILC_CPU_FLAG(sse4, true, AC_DEFINE([SILC_CPU_SSE4], [], [SILC_CPU_SSE4]), [])
+ ;;
+
+ # PowerPC, 32-bit and 64-bit CPUs
+ powerpc*)
+ ;;
+esac
+AM_CONDITIONAL(SILC_I386, test x$cpu_i386 = xtrue)
+AM_CONDITIONAL(SILC_I486, test x$cpu_i486 = xtrue)
+AM_CONDITIONAL(SILC_I586, test x$cpu_i586 = xtrue)
+AM_CONDITIONAL(SILC_I686, test x$cpu_i686 = xtrue)
+AM_CONDITIONAL(SILC_7686, test x$cpu_i786 = xtrue)
+AM_CONDITIONAL(SILC_X86_64, test x$cpu_x86_64 = xtrue)
+AM_CONDITIONAL(SILC_POWERPC, test x$cpu_ppc = xtrue)
+AM_CONDITIONAL(SILC_IA64, test x$cpu_ia64 = xtrue)
+
+if test x$want_cpu_optimizations = xtrue; then
+ # Set some compiler options based on CPU
+ if test "x$CC" = "xicc"; then
+ # ICC flags
+ if test x$x_have_cpu_sse2 = xtrue; then
+ SILC_ADD_CFLAGS(-axW)
+ fi
+ if test x$x_have_cpu_sse3 = xtrue; then
+ SILC_ADD_CFLAGS(-axP)
+ fi
+ if test x$x_have_cpu_ssse3 = xtrue; then
+ SILC_ADD_CFLAGS(-axT)
+ fi
+ if test x$x_have_cpu_sse4 = xtrue; then
+ SILC_ADD_CFLAGS(-axS)
+ fi
+ else
+ # Other compilers
+ if test x$x_have_cpu_sse2 = xtrue; then
+ SILC_ADD_CFLAGS(-msse2)
+ fi
+ if test x$x_have_cpu_pni = xtrue; then
+ SILC_ADD_CFLAGS(-msse3)
+ fi
+ if test x$x_have_cpu_ssse3 = xtrue; then
+ SILC_ADD_CFLAGS(-mssse3)
+ fi
+ if test x$x_have_cpu_sse4 = xtrue; then
+ SILC_ADD_CFLAGS(-msse4)
+ fi