From 78ff082f0c806cbeeb0ee1d96deaed428dada19e Mon Sep 17 00:00:00 2001 From: Christopher Kohlhoff Date: Sat, 28 Jun 2014 22:08:03 +1000 Subject: [PATCH] Use SSE2 intrinsics to allow the Cray compiler to work. --- include/boost/asio/detail/gcc_x86_fenced_block.hpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/boost/asio/detail/gcc_x86_fenced_block.hpp b/include/boost/asio/detail/gcc_x86_fenced_block.hpp index aa6d5e1f..f0589abb 100644 --- a/include/boost/asio/detail/gcc_x86_fenced_block.hpp +++ b/include/boost/asio/detail/gcc_x86_fenced_block.hpp @@ -64,7 +64,11 @@ private: static void lbarrier() { #if defined(__SSE2__) +# if (__GNUC__ >= 4) + __builtin_ia32_lfence(); +# else // (__GNUC__ >= 4) __asm__ __volatile__ ("lfence" ::: "memory"); +# endif // (__GNUC__ >= 4) #else // defined(__SSE2__) barrier(); #endif // defined(__SSE2__) @@ -73,7 +77,11 @@ private: static void sbarrier() { #if defined(__SSE2__) +# if (__GNUC__ >= 4) + __builtin_ia32_sfence(); +# else // (__GNUC__ >= 4) __asm__ __volatile__ ("sfence" ::: "memory"); +# endif // (__GNUC__ >= 4) #else // defined(__SSE2__) barrier(); #endif // defined(__SSE2__)