1 // Copyright 2018 The Abseil Authors. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // https://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 // 15 // Shared config probing for SSE instructions used in Swiss tables. 16 #ifndef ABSL_CONTAINER_INTERNAL_HAVE_SSE_H_ 17 #define ABSL_CONTAINER_INTERNAL_HAVE_SSE_H_ 18 19 #ifndef ABSL_INTERNAL_RAW_HASH_SET_HAVE_SSE2 20 #if defined(__SSE2__) || \ 21 (defined(_MSC_VER) && \ 22 (defined(_M_X64) || (defined(_M_IX86) && _M_IX86_FP >= 2))) 23 #define ABSL_INTERNAL_RAW_HASH_SET_HAVE_SSE2 1 24 #else 25 #define ABSL_INTERNAL_RAW_HASH_SET_HAVE_SSE2 0 26 #endif 27 #endif 28 29 #ifndef ABSL_INTERNAL_RAW_HASH_SET_HAVE_SSSE3 30 #ifdef __SSSE3__ 31 #define ABSL_INTERNAL_RAW_HASH_SET_HAVE_SSSE3 1 32 #else 33 #define ABSL_INTERNAL_RAW_HASH_SET_HAVE_SSSE3 0 34 #endif 35 #endif 36 37 #if ABSL_INTERNAL_RAW_HASH_SET_HAVE_SSSE3 && \ 38 !ABSL_INTERNAL_RAW_HASH_SET_HAVE_SSE2 39 #error "Bad configuration!" 40 #endif 41 42 #if ABSL_INTERNAL_RAW_HASH_SET_HAVE_SSE2 43 #include <emmintrin.h> 44 #endif 45 46 #if ABSL_INTERNAL_RAW_HASH_SET_HAVE_SSSE3 47 #include <tmmintrin.h> 48 #endif 49 50 #endif // ABSL_CONTAINER_INTERNAL_HAVE_SSE_H_ 51