Wireshark mailing list archives

Re: SIMD optimizations with CMake


From: Anders Broman <anders.broman () ericsson com>
Date: Thu, 12 Jun 2014 14:29:35 +0000

Hi,
There is a discussion about it in the tread with subject "Re: [Wireshark-dev] How to define HAVE_SSE42 with autotools?"
I'm not sure the current status is entirely correct but it works for me :-) and does not break the build boots.

I.e. it should be refined...

a) Is this correct?
Your interpretation - I think so, the way its implemented as per above probably not.

b) Is there any check whether the compiler actually supports these flags?
Yes it should be in the macros

c) Are there any provisions for cross-compiling?
No - no idea what that entails...

Regards
Anders

-----Original Message-----
From: wireshark-dev-bounces () wireshark org [mailto:wireshark-dev-bounces () wireshark org] On Behalf Of Joerg Mayer
Sent: den 12 juni 2014 16:20
To: wireshark-dev () wireshark org
Subject: [Wireshark-dev] SIMD optimizations with CMake

Hi,

I'm planning to add the SIMD optimization that was recently added to autofoo to cmake as well. The current solution 
looks a bit weird to me, so maybe I have read the existing code incorrectly or misunderstood the ideas behind the 
current solution:

Current situation:
- Runtime: If the code has been compiled with SSE support then there is a
  runtime check whether the current cpu supports the optimizations. If not,
  a non-sse code path is taken.
- Compile time: The C-compiler in wsutil/ is told to use the optimization
  flags discovered at configuration time. HAVE_SSE4_2 is the only flag curently
  used in the following files: ws_mempbrk.h and ./ws_mempbrk_sse42.c whether
  to enable the code or not.
- Configuration time: The aclocal-fallback/ax_XXX.m4 files check whether the
  *current host cpu* supports theses extensions and sets the HAVE_xxx and
  SIMD_FLAGS (which then get added to ws_util/-CLFAGS) variables accodingly.

Questions:
a) Is this correct?
b) Is there any check whether the compiler actually supports these flags?
c) Are there any provisions for cross-compiling?

Cmake only needs to redo the configuration time stuff, so I looked at it and didn't understand the design. What I 
intend to do is to just test whether the current compiler supports the extensions via adding the following flags to
WIRESHARK_C_FLAGS: -faltivec, -mmmx, -msse, -msse2, -msse3, -mssse3, -msse4.1, -msse4.2, -mavx and then creating the 
necessary HAVE_xxx variables.
Is there a good reason not to take this path (note: I have a cpu that only supports sse_4.1 so I can only do limited 
testing).

Thanks
   Jörg
-- 
Joerg Mayer                                           <jmayer () loplof de>
We are stuck with technology when what we really want is just stuff that works. Some say that should read Microsoft 
instead of technology.
___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev () wireshark org>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-request () wireshark org?subject=unsubscribe
___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev () wireshark org>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-request () wireshark org?subject=unsubscribe

Current thread: