summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2015-01-20 23:27:08 -0800
committerGuy Harris <guy@alum.mit.edu>2015-01-21 07:27:40 +0000
commitbc862577509b5b14e5fc2413425b7b0b09f17828 (patch)
treeff6af9ee47b19a99fb389b8c5014dd244780f51d
parentdb6f7339f712ba3ac4662a7e554b851afc7df6aa (diff)
downloadwireshark-bc862577509b5b14e5fc2413425b7b0b09f17828.tar.gz
Also support -xarch=sse_42 in the Sun C compiler for x86(-64).
Change-Id: Ib6d0ae9c237b96568e2522d2077b311b3ac5af2e Reviewed-on: https://code.wireshark.org/review/6706 Reviewed-by: Guy Harris <guy@alum.mit.edu>
-rw-r--r--configure.ac27
-rw-r--r--wsutil/CMakeLists.txt19
2 files changed, 37 insertions, 9 deletions
diff --git a/configure.ac b/configure.ac
index 3b36e0cf5a..424a73c8c6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1081,13 +1081,36 @@ AC_WIRESHARK_COMPILER_FLAGS_CHECK(-msse4.2, C)
if test "x$CFLAGS" != "x$CFLAGS_before_simd"
then
#
+ # The compiler supports -msse4.2; use that to enable SSE 4.2.
+ #
# Restore CFLAGS. We only want to apply -msse4.2 to
# wsutil/ws_mempbrk_sse42.c, as the SSE4.2 code there
# is run only if the hardware supports it, but other
# code would do no such checks.
#
CFLAGS="$CFLAGS_before_simd"
+ ac_sse4_2_flag=-msse4.2
+else
+ #
+ # Try -xarch=sse4_2; that's the flag for Sun's compiler.
+ #
+ AC_WIRESHARK_COMPILER_FLAGS_CHECK(-xarch=sse4_2, C)
+ if test "x$CFLAGS" != "x$CFLAGS_before_simd"
+ then
+ #
+ # The compiler supports -xarch=sse4_2; use that to
+ # enable SSE 4.2.
+ #
+ # Restore CFLAGS; see above.
+ #
+ CFLAGS="$CFLAGS_before_simd"
+ ac_sse4_2_flag=-xarch=sse4_2
+ fi
+fi
+if test "x$ac_sse4_2_flag" != x; then
+ #
+ # OK, we have a compiler flag to enable SSE 4.2.
#
# Make sure we have the necessary header for the SSE4.2 intrinsics
# and that we can use it.
@@ -1103,14 +1126,14 @@ then
# in the environment will come later and override it.
#
saved_CFLAGS="$CFLAGS"
- CFLAGS="-msse4.2 $CFLAGS"
+ CFLAGS="$ac_sse4_2_flag $CFLAGS"
AC_TRY_COMPILE(
[#include <nmmintrin.h>],
[return 0;],
[
have_sse42=yes
AC_DEFINE(HAVE_SSE4_2, 1, [Support SSSE4.2 (Streaming SIMD Extensions 4.2) instructions])
- CFLAGS_SSE42="-msse4.2"
+ CFLAGS_SSE42="$ac_sse4_2_flag"
AC_MSG_RESULT([yes])
],
[
diff --git a/wsutil/CMakeLists.txt b/wsutil/CMakeLists.txt
index 0a8ed63acc..9a559e094f 100644
--- a/wsutil/CMakeLists.txt
+++ b/wsutil/CMakeLists.txt
@@ -77,14 +77,13 @@ set(WSUTIL_FILES
)
#
-# XXX - we're assuming MSVC supports the SSE 4.2 intrinsics and
-# that other C compilers support them iff they support the
-# -msse4.2 flag.
+# XXX - we're assuming MSVC doesn't require a flag to enable SSE 4.2
+# support, and that, if the compiler supports a flag for SSE 4.2
+# support, the intrinsics are supported iff we can include the
+# <nmmintrin.h> flag.
#
-# Perhaps we should check whether we can compile something
-# that uses them, instead, and do something else to figure
-# out what compiler flag, if any, we need to pass to the
-# compiler to compile code that uses them.
+# We only check for the GCC-style -msse4.2 flag and the Sun C
+# -xarch=sse4_2 flag.
#
if(CMAKE_C_COMPILER_ID MATCHES "MSVC")
set(HAVE_SSE4_2 TRUE)
@@ -94,6 +93,12 @@ else()
check_c_compiler_flag(-msse4.2 HAVE_SSE4_2)
if(HAVE_SSE4_2)
set(SSE4_2_FLAG "-msse4.2")
+ else()
+ message(STATUS "Checking for c-compiler flag: -xarch=sse4_2")
+ check_c_compiler_flag(-xarch=sse4_2 HAVE_SSE4_2)
+ if(HAVE_SSE4_2)
+ set(SSE4_2_FLAG "-xarch=sse4_2")
+ endif()
endif()
endif()
if(HAVE_SSE4_2)