Commit 0a0090b8 authored by Vladimir Bashkirtsev's avatar Vladimir Bashkirtsev

We should use GCC's configuration to configure which CPU instructions to use

parent 038691c9
...@@ -31,6 +31,7 @@ all: ceph-config ...@@ -31,6 +31,7 @@ all: ceph-config
ln -s /lib /lib64 ln -s /lib /lib64
tar xf ceph-14.2.4.tar.gz tar xf ceph-14.2.4.tar.gz
patch -Np1 -d ceph-14.2.4 < ceph-14.2.4-fix_cpu_detection.patch
patch -Np1 -d ceph-14.2.4 < ceph-14.2.4-fix_tests.patch patch -Np1 -d ceph-14.2.4 < ceph-14.2.4-fix_tests.patch
cd ceph-14.2.4 && ./do_cmake.sh -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_SYSCONFDIR=/etc -DCMAKE_INSTALL_LIBEXECDIR=/lib -DWITH_SPDK=OFF -DWITH_RDMA=OFF -DWITH_RADOSGW_AMQP_ENDPOINT=OFF cd ceph-14.2.4 && ./do_cmake.sh -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_SYSCONFDIR=/etc -DCMAKE_INSTALL_LIBEXECDIR=/lib -DWITH_SPDK=OFF -DWITH_RDMA=OFF -DWITH_RADOSGW_AMQP_ENDPOINT=OFF
$(MAKE) -C ceph-14.2.4/build npm_config_cache=/build/.npm $(MAKE) -C ceph-14.2.4/build npm_config_cache=/build/.npm
......
diff -uNr ceph-14.2.4/cmake/modules/SIMDExt.cmake ceph-14.2.4-fix_cpu_detection/cmake/modules/SIMDExt.cmake
--- ceph-14.2.4/cmake/modules/SIMDExt.cmake 2019-09-14 03:37:41.000000000 +0930
+++ ceph-14.2.4-fix_cpu_detection/cmake/modules/SIMDExt.cmake 2019-10-22 20:54:05.941235917 +1030
@@ -48,32 +48,53 @@
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i386|i686|amd64|x86_64|AMD64")
set(HAVE_INTEL 1)
if(CMAKE_SYSTEM_PROCESSOR MATCHES "i686|amd64|x86_64|AMD64")
- CHECK_C_COMPILER_FLAG(-msse HAVE_INTEL_SSE)
+ execute_process(COMMAND bash -c "gcc -Q --help=target | grep '\\-msse\\s' | grep -c enabled" OUTPUT_VARIABLE RUN_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE)
+ if (${RUN_RESULT})
+ set(HAVE_INTEL_SSE 1)
+ endif()
if(HAVE_INTEL_SSE)
set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse")
endif()
if(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64|x86_64|AMD64")
- CHECK_C_COMPILER_FLAG(-msse2 HAVE_INTEL_SSE2)
+ execute_process(COMMAND bash -c "gcc -Q --help=target | grep '\\-msse2\\s' | grep -c enabled" OUTPUT_VARIABLE RUN_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE)
+ if (${RUN_RESULT})
+ set(HAVE_INTEL_SSE2 1)
+ endif()
if(HAVE_INTEL_SSE2)
set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse2")
endif()
- CHECK_C_COMPILER_FLAG(-msse3 HAVE_INTEL_SSE3)
+ execute_process(COMMAND bash -c "gcc -Q --help=target | grep '\\-msse3\\s' | grep -c enabled" OUTPUT_VARIABLE RUN_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE)
+ if (${RUN_RESULT})
+ set(HAVE_INTEL_SSE3 1)
+ endif()
if(HAVE_INTEL_SSE3)
set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse3")
endif()
- CHECK_C_COMPILER_FLAG(-mssse3 HAVE_INTEL_SSSE3)
+ execute_process(COMMAND bash -c "gcc -Q --help=target | grep '\\-mssse3\\s' | grep -c enabled" OUTPUT_VARIABLE RUN_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE)
+ if (${RUN_RESULT})
+ set(HAVE_INTEL_SSSE3 1)
+ endif()
if(HAVE_INTEL_SSSE3)
set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -mssse3")
endif()
- CHECK_C_COMPILER_FLAG(-mpclmul HAVE_INTEL_PCLMUL)
+ execute_process(COMMAND bash -c "gcc -Q --help=target | grep '\\-mpclmul\\s' | grep -c enabled" OUTPUT_VARIABLE RUN_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE)
+ if (${RUN_RESULT})
+ set(HAVE_INTEL_PCLMUL 1)
+ endif()
if(HAVE_INTEL_PCLMUL)
set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -mpclmul")
endif()
- CHECK_C_COMPILER_FLAG(-msse4.1 HAVE_INTEL_SSE4_1)
+ execute_process(COMMAND bash -c "gcc -Q --help=target | grep '\\-msse4\\.1\\s' | grep -c enabled" OUTPUT_VARIABLE RUN_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE)
+ if (${RUN_RESULT})
+ set(HAVE_INTEL_SSE4_1 1)
+ endif()
if(HAVE_INTEL_SSE4_1)
set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse4.1")
endif()
- CHECK_C_COMPILER_FLAG(-msse4.2 HAVE_INTEL_SSE4_2)
+ execute_process(COMMAND bash -c "gcc -Q --help=target | grep '\\-msse4\\.2\\s' | grep -c enabled" OUTPUT_VARIABLE RUN_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE)
+ if (${RUN_RESULT})
+ set(HAVE_INTEL_SSE4_2 1)
+ endif()
if(HAVE_INTEL_SSE4_2)
set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse4.2")
endif()
diff -uNr ceph-14.2.4/src/test/test_arch.cc ceph-14.2.4-fix_cpu_detection/src/test/test_arch.cc
--- ceph-14.2.4/src/test/test_arch.cc 2019-09-14 03:37:41.000000000 +0930
+++ ceph-14.2.4-fix_cpu_detection/src/test/test_arch.cc 2019-10-22 21:31:22.290390502 +1030
@@ -69,7 +69,7 @@
expected = strstr(flags, " sse4_1 ") ? 1 : 0;
EXPECT_EQ(expected, ceph_arch_intel_sse41);
- expected = (strstr(flags, " sse3 ") || strstr(flags, " ssse3 ")) ? 1 : 0;
+ expected = (strstr(flags, " sse3 ") || strstr(flags, " ssse3 ")) || strstr(flags, " pni ")) ? 1 : 0;
EXPECT_EQ(expected, ceph_arch_intel_sse3);
expected = strstr(flags, " ssse3 ") ? 1 : 0;
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment