//---------------------------------------------------------------------------// // Copyright (c) 2013 Kyle Lutz // // 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 // // See http://boostorg.github.com/compute for more information. //---------------------------------------------------------------------------// #ifndef BOOST_COMPUTE_FUNCTIONAL_ATOMIC_HPP #define BOOST_COMPUTE_FUNCTIONAL_ATOMIC_HPP #include #include #ifndef BOOST_COMPUTE_DOXYGEN_INVOKED #ifdef CL_VERSION_1_1 #define BOOST_COMPUTE_DETAIL_ATOMIC_PREFIX "atomic_" #else #define BOOST_COMPUTE_DETAIL_ATOMIC_PREFIX "atom_" #endif #endif // BOOST_COMPUTE_DOXYGEN_INVOKED namespace boost { namespace compute { template class atomic_add : public function { public: atomic_add() : function(BOOST_COMPUTE_DETAIL_ATOMIC_PREFIX "add") { } }; template class atomic_sub : public function { public: atomic_sub() : function(BOOST_COMPUTE_DETAIL_ATOMIC_PREFIX "sub") { } }; template class atomic_xchg : public function { public: atomic_xchg() : function(BOOST_COMPUTE_DETAIL_ATOMIC_PREFIX "xchg") { } }; template class atomic_inc : public function { public: atomic_inc() : function(BOOST_COMPUTE_DETAIL_ATOMIC_PREFIX "inc") { } }; template class atomic_dec : public function { public: atomic_dec() : function(BOOST_COMPUTE_DETAIL_ATOMIC_PREFIX "dec") { } }; template class atomic_cmpxchg : public function { public: atomic_cmpxchg() : function(BOOST_COMPUTE_DETAIL_ATOMIC_PREFIX "cmpxchg") { } }; template class atomic_max : public function { public: atomic_max() : function(BOOST_COMPUTE_DETAIL_ATOMIC_PREFIX "max") { } }; template class atomic_min : public function { public: atomic_min() : function(BOOST_COMPUTE_DETAIL_ATOMIC_PREFIX "min") { } }; template class atomic_and : public function { public: atomic_and() : function(BOOST_COMPUTE_DETAIL_ATOMIC_PREFIX "and") { } }; template class atomic_or : public function { public: atomic_or() : function(BOOST_COMPUTE_DETAIL_ATOMIC_PREFIX "or") { } }; template class atomic_xor : public function { public: atomic_xor() : function(BOOST_COMPUTE_DETAIL_ATOMIC_PREFIX "xor") { } }; } // end compute namespace } // end boost namespace #endif // BOOST_COMPUTE_FUNCTIONAL_ATOMIC_HPP