/* * Distributed under the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or copy at * http://www.boost.org/LICENSE_1_0.txt) * * Copyright (c) 2020 Andrey Semashev */ /*! * \file find_address.hpp * * This file contains declaration of \c find_address algorithm */ #ifndef BOOST_ATOMIC_FIND_ADDRESS_HPP_INCLUDED_ #define BOOST_ATOMIC_FIND_ADDRESS_HPP_INCLUDED_ #include #include #include #include #include namespace boost { namespace atomics { namespace detail { //! \c find_address signature typedef std::size_t (find_address_t)(const volatile void* addr, const volatile void* const* addrs, std::size_t size); extern find_address_t find_address_generic; #if BOOST_ARCH_X86 && defined(BOOST_ATOMIC_DETAIL_SIZEOF_POINTER) && (BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 8 || BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 4) extern find_address_t find_address_sse2; #if BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 8 extern find_address_t find_address_sse41; #endif // BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 8 #endif // BOOST_ARCH_X86 && defined(BOOST_ATOMIC_DETAIL_SIZEOF_POINTER) && (BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 8 || BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 4) } // namespace detail } // namespace atomics } // namespace boost #include #endif // BOOST_ATOMIC_FIND_ADDRESS_HPP_INCLUDED_