We should clear m_needsOverflowCheck when hitting an exception in defineProperties...
[WebKit-https.git] / Source / cmake / FindSSE2.cmake
1 #################################
2 # Check for the presence of SSE2.
3 #
4 # Once done, this will define:
5 # - SSE2_SUPPORT_FOUND - the system supports (at least) SSE2.
6 #
7 # Copyright (c) 2014, Pablo Fernandez Alcantarilla, Jesus Nuevo
8 # Copyright (c) 2019, Igalia S.L.
9 #
10 # Redistribution and use in source and binary forms, with or without modification,
11 # are permitted provided that the following conditions are met:
12 #
13 #   * Redistributions of source code must retain the above copyright notice,
14 #     this list of conditions and the following disclaimer.
15 #
16 #   * Redistributions in binary form must reproduce the above copyright notice,
17 #     this list of conditions and the following disclaimer in the documentation
18 #     and/or other materials provided with the distribution.
19 #
20 #   * Neither the name of the copyright holders nor the names of its contributors
21 #     may be used to endorse or promote products derived from this software without
22 #     specific prior written permission.
23 #
24 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
25 # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
26 # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
27 # SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
29 # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
30 # BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
31 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
32 # WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33
34 set(SSE2_SUPPORT_FOUND FALSE)
35
36 macro(CHECK_FOR_SSE2)
37     include(CheckCXXSourceRuns)
38
39     check_cxx_source_runs("
40         #include <emmintrin.h>
41         int main ()
42         {
43             __m128d a, b;
44             double vals[2] = {0};
45             a = _mm_loadu_pd (vals);
46             b = _mm_add_pd (a,a);
47             _mm_storeu_pd (vals,b);
48             return(0);
49         }"
50         HAVE_SSE2_EXTENSIONS)
51
52     if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANG)
53         if (HAVE_SSE2_EXTENSIONS)
54             set(SSE2_SUPPORT_FOUND TRUE)
55         endif ()
56     elseif (MSVC AND NOT CMAKE_CL_64)
57         if (HAVE_SSE2_EXTENSIONS)
58             set(SSE2_SUPPORT_FOUND TRUE)
59             message(STATUS "Found SSE2 extensions.")
60         endif (HAVE_SSE2_EXTENSIONS)
61     endif ()
62
63 endmacro(CHECK_FOR_SSE2)
64
65 CHECK_FOR_SSE2()