From: Loic Dachary Date: Sat, 29 Mar 2014 09:34:29 +0000 (+0100) Subject: erasure-code: do not attempt to compile SSE4 on i386 X-Git-Tag: v0.79~53^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=399de24e29d7a083b388e7c05d8b4cffe5733dc3;p=ceph.git erasure-code: do not attempt to compile SSE4 on i386 SSE4 are only not availabe on older CPUs. Although the compiler could probably generate the code, there is no point in doing so. The SSE4.1, SSE4.2 and PCLMUL cpu features are only tested if the target CPU is AMD64 or x86_64. Signed-off-by: Loic Dachary --- diff --git a/m4/ax_intel.m4 b/m4/ax_intel.m4 index 3bcde6b0cace8..831e438890267 100644 --- a/m4/ax_intel.m4 +++ b/m4/ax_intel.m4 @@ -2,61 +2,69 @@ AC_DEFUN([AX_INTEL_FEATURES], [ AC_REQUIRE([AC_CANONICAL_HOST]) - AX_CHECK_COMPILE_FLAG(-msse, ax_cv_support_sse_ext=yes, []) - if test x"$ax_cv_support_sse_ext" = x"yes"; then - INTEL_SSE_FLAGS="-msse -DINTEL_SSE" - AC_SUBST(INTEL_SSE_FLAGS) - INTEL_FLAGS="$INTEL_FLAGS $INTEL_SSE_FLAGS" - AC_DEFINE(HAVE_SSE,,[Support SSE (Streaming SIMD Extensions) instructions]) - fi + case $target_cpu in + i[[3456]]86*|x86_64*|amd64*) + AX_CHECK_COMPILE_FLAG(-msse, ax_cv_support_sse_ext=yes, []) + if test x"$ax_cv_support_sse_ext" = x"yes"; then + INTEL_SSE_FLAGS="-msse -DINTEL_SSE" + AC_SUBST(INTEL_SSE_FLAGS) + INTEL_FLAGS="$INTEL_FLAGS $INTEL_SSE_FLAGS" + AC_DEFINE(HAVE_SSE,,[Support SSE (Streaming SIMD Extensions) instructions]) + fi + + AX_CHECK_COMPILE_FLAG(-msse2, ax_cv_support_sse2_ext=yes, []) + if test x"$ax_cv_support_sse2_ext" = x"yes"; then + INTEL_SSE2_FLAGS="-msse2 -DINTEL_SSE2" + AC_SUBST(INTEL_SSE2_FLAGS) + INTEL_FLAGS="$INTEL_FLAGS $INTEL_SSE2_FLAGS" + AC_DEFINE(HAVE_SSE2,,[Support SSE2 (Streaming SIMD Extensions 2) instructions]) + fi + + AX_CHECK_COMPILE_FLAG(-msse3, ax_cv_support_sse3_ext=yes, []) + if test x"$ax_cv_support_sse3_ext" = x"yes"; then + INTEL_SSE3_FLAGS="-mssse3 -DINTEL_SSE3" + AC_SUBST(INTEL_SSE3_FLAGS) + INTEL_FLAGS="$INTEL_FLAGS $INTEL_SSE3_FLAGS" + AC_DEFINE(HAVE_SSE3,,[Support SSE3 (Streaming SIMD Extensions 3) instructions]) + fi + + AX_CHECK_COMPILE_FLAG(-mssse3, ax_cv_support_ssse3_ext=yes, []) + if test x"$ax_cv_support_ssse3_ext" = x"yes"; then + INTEL_SSSE3_FLAGS="-mssse3 -DINTEL_SSSE3" + AC_SUBST(INTEL_SSSE3_FLAGS) + INTEL_FLAGS="$INTEL_FLAGS $INTEL_SSSE3_FLAGS" + AC_DEFINE(HAVE_SSSE3,,[Support SSSE3 (Supplemental Streaming SIMD Extensions 3) instructions]) + fi + ;; + esac - AX_CHECK_COMPILE_FLAG(-msse2, ax_cv_support_sse2_ext=yes, []) - if test x"$ax_cv_support_sse2_ext" = x"yes"; then - INTEL_SSE2_FLAGS="-msse2 -DINTEL_SSE2" - AC_SUBST(INTEL_SSE2_FLAGS) - INTEL_FLAGS="$INTEL_FLAGS $INTEL_SSE2_FLAGS" - AC_DEFINE(HAVE_SSE2,,[Support SSE2 (Streaming SIMD Extensions 2) instructions]) - fi - - AX_CHECK_COMPILE_FLAG(-msse3, ax_cv_support_sse3_ext=yes, []) - if test x"$ax_cv_support_sse3_ext" = x"yes"; then - INTEL_SSE3_FLAGS="-mssse3 -DINTEL_SSE3" - AC_SUBST(INTEL_SSE3_FLAGS) - INTEL_FLAGS="$INTEL_FLAGS $INTEL_SSE3_FLAGS" - AC_DEFINE(HAVE_SSE3,,[Support SSE3 (Streaming SIMD Extensions 3) instructions]) - fi - - AX_CHECK_COMPILE_FLAG(-mpclmul, ax_cv_support_pclmuldq_ext=yes, []) - if test x"$ax_cv_support_pclmuldq_ext" = x"yes"; then - INTEL_PCLMUL_FLAGS="-mpclmul -DINTEL_SSE4_PCLMUL" - AC_SUBST(INTEL_PCLMUL_FLAGS) - INTEL_FLAGS="$INTEL_FLAGS $INTEL_PCLMUL_FLAGS" - AC_DEFINE(HAVE_PCLMUL,,[Support (PCLMUL) Carry-Free Muliplication]) - fi - - AX_CHECK_COMPILE_FLAG(-mssse3, ax_cv_support_ssse3_ext=yes, []) - if test x"$ax_cv_support_ssse3_ext" = x"yes"; then - INTEL_SSSE3_FLAGS="-mssse3 -DINTEL_SSSE3" - AC_SUBST(INTEL_SSSE3_FLAGS) - INTEL_FLAGS="$INTEL_FLAGS $INTEL_SSSE3_FLAGS" - AC_DEFINE(HAVE_SSSE3,,[Support SSSE3 (Supplemental Streaming SIMD Extensions 3) instructions]) - fi - - AX_CHECK_COMPILE_FLAG(-msse4.1, ax_cv_support_sse41_ext=yes, []) - if test x"$ax_cv_support_sse41_ext" = x"yes"; then - INTEL_SSE4_1_FLAGS="-msse4.1 -DINTEL_SSE4" - AC_SUBST(INTEL_SSE4_1_FLAGS) - INTEL_FLAGS="$INTEL_FLAGS $INTEL_SSE4_1_FLAGS" - AC_DEFINE(HAVE_SSE4_1,,[Support SSE4.1 (Streaming SIMD Extensions 4.1) instructions]) - fi - - AX_CHECK_COMPILE_FLAG(-msse4.2, ax_cv_support_sse42_ext=yes, []) - if test x"$ax_cv_support_sse42_ext" = x"yes"; then - INTEL_SSE4_2_FLAGS="-msse4.2 -DINTEL_SSE4" - AC_SUBST(INTEL_SSE4_2_FLAGS) - INTEL_FLAGS="$INTEL_FLAGS $INTEL_SSE4_2_FLAGS" - AC_DEFINE(HAVE_SSE4_2,,[Support SSE4.2 (Streaming SIMD Extensions 4.2) instructions]) - fi + case $target_cpu in + x86_64*|amd64*) + AX_CHECK_COMPILE_FLAG(-mpclmul, ax_cv_support_pclmuldq_ext=yes, []) + if test x"$ax_cv_support_pclmuldq_ext" = x"yes"; then + INTEL_PCLMUL_FLAGS="-mpclmul -DINTEL_SSE4_PCLMUL" + AC_SUBST(INTEL_PCLMUL_FLAGS) + INTEL_FLAGS="$INTEL_FLAGS $INTEL_PCLMUL_FLAGS" + AC_DEFINE(HAVE_PCLMUL,,[Support (PCLMUL) Carry-Free Muliplication]) + fi + + AX_CHECK_COMPILE_FLAG(-msse4.1, ax_cv_support_sse41_ext=yes, []) + if test x"$ax_cv_support_sse41_ext" = x"yes"; then + INTEL_SSE4_1_FLAGS="-msse4.1 -DINTEL_SSE4" + AC_SUBST(INTEL_SSE4_1_FLAGS) + INTEL_FLAGS="$INTEL_FLAGS $INTEL_SSE4_1_FLAGS" + AC_DEFINE(HAVE_SSE4_1,,[Support SSE4.1 (Streaming SIMD Extensions 4.1) instructions]) + fi + + AX_CHECK_COMPILE_FLAG(-msse4.2, ax_cv_support_sse42_ext=yes, []) + if test x"$ax_cv_support_sse42_ext" = x"yes"; then + INTEL_SSE4_2_FLAGS="-msse4.2 -DINTEL_SSE4" + AC_SUBST(INTEL_SSE4_2_FLAGS) + INTEL_FLAGS="$INTEL_FLAGS $INTEL_SSE4_2_FLAGS" + AC_DEFINE(HAVE_SSE4_2,,[Support SSE4.2 (Streaming SIMD Extensions 4.2) instructions]) + fi + ;; + esac AC_SUBST(INTEL_FLAGS) ])