1 | /* |
2 | * Copyright Andrey Semashev 2013. |
3 | * Distributed under the Boost Software License, Version 1.0. |
4 | * (See accompanying file LICENSE_1_0.txt or copy at |
5 | * http://www.boost.org/LICENSE_1_0.txt) |
6 | */ |
7 | /*! |
8 | * \file uuid/detail/config.hpp |
9 | * |
10 | * \brief This header defines configuration macros for Boost.UUID. |
11 | */ |
12 | |
13 | #ifndef BOOST_UUID_DETAIL_CONFIG_HPP_INCLUDED_ |
14 | #define BOOST_UUID_DETAIL_CONFIG_HPP_INCLUDED_ |
15 | |
16 | #include <boost/config.hpp> |
17 | |
18 | #ifdef BOOST_HAS_PRAGMA_ONCE |
19 | #pragma once |
20 | #endif |
21 | |
22 | #if !defined(BOOST_UUID_NO_SIMD) |
23 | |
24 | #if defined(__GNUC__) && defined(__SSE2__) |
25 | |
26 | // GCC and its pretenders go here |
27 | #ifndef BOOST_UUID_USE_SSE2 |
28 | #define BOOST_UUID_USE_SSE2 |
29 | #endif |
30 | |
31 | #if defined(__SSE3__) && !defined(BOOST_UUID_USE_SSE3) |
32 | #define BOOST_UUID_USE_SSE3 |
33 | #endif |
34 | |
35 | #if defined(__SSE4_1__) && !defined(BOOST_UUID_USE_SSE41) |
36 | #define BOOST_UUID_USE_SSE41 |
37 | #endif |
38 | |
39 | #elif defined(_MSC_VER) |
40 | |
41 | #if (defined(_M_X64) || (defined(_M_IX86) && defined(_M_IX86_FP) && _M_IX86_FP >= 2)) && !defined(BOOST_UUID_USE_SSE2) |
42 | #define BOOST_UUID_USE_SSE2 |
43 | #endif |
44 | |
45 | #if defined(__AVX__) |
46 | #if !defined(BOOST_UUID_USE_SSE41) |
47 | #define BOOST_UUID_USE_SSE41 |
48 | #endif |
49 | #if !defined(BOOST_UUID_USE_SSE3) |
50 | #define BOOST_UUID_USE_SSE3 |
51 | #endif |
52 | #if !defined(BOOST_UUID_USE_SSE2) |
53 | #define BOOST_UUID_USE_SSE2 |
54 | #endif |
55 | #endif |
56 | |
57 | #endif |
58 | |
59 | // More advanced ISA extensions imply less advanced are also available |
60 | #if !defined(BOOST_UUID_USE_SSE3) && defined(BOOST_UUID_USE_SSE41) |
61 | #define BOOST_UUID_USE_SSE3 |
62 | #endif |
63 | |
64 | #if !defined(BOOST_UUID_USE_SSE2) && defined(BOOST_UUID_USE_SSE3) |
65 | #define BOOST_UUID_USE_SSE2 |
66 | #endif |
67 | |
68 | #if !defined(BOOST_UUID_NO_SIMD) && !defined(BOOST_UUID_USE_SSE41) && !defined(BOOST_UUID_USE_SSE3) && !defined(BOOST_UUID_USE_SSE2) |
69 | #define BOOST_UUID_NO_SIMD |
70 | #endif |
71 | |
72 | #endif // !defined(BOOST_UUID_NO_SIMD) |
73 | |
74 | #endif // BOOST_UUID_DETAIL_CONFIG_HPP_INCLUDED_ |
75 | |