DPC++ Runtime
Runtime libraries for oneAPI DPC++
sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace > Class Template Reference

#include <sycl/atomic_ref.hpp>

Inheritance diagram for sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >:
Collaboration diagram for sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >:

Public Types

using value_type = T
 

Public Member Functions

bool is_lock_free () const noexcept
 
 atomic_ref_base (T &ref)
 
 atomic_ref_base (const atomic_ref_base &ref) noexcept
 
atomic_ref_baseoperator= (const atomic_ref_base &)=delete
 
void store (T operand, memory_order order=default_write_order, memory_scope scope=default_scope) const noexcept
 
operator= (T desired) const noexcept
 
load (memory_order order=default_read_order, memory_scope scope=default_scope) const noexcept
 
 operator T () const noexcept
 
exchange (T operand, memory_order order=default_read_modify_write_order, memory_scope scope=default_scope) const noexcept
 
bool compare_exchange_strong (T &expected, T desired, memory_order success, memory_order failure, memory_scope scope=default_scope) const noexcept
 
bool compare_exchange_strong (T &expected, T desired, memory_order order=default_read_modify_write_order, memory_scope scope=default_scope) const noexcept
 
bool compare_exchange_weak (T &expected, T desired, memory_order success, memory_order failure, memory_scope scope=default_scope) const noexcept
 
bool compare_exchange_weak (T &expected, T desired, memory_order order=default_read_modify_write_order, memory_scope scope=default_scope) const noexcept
 

Static Public Attributes

static constexpr size_t required_alignment = sizeof(T)
 
static constexpr bool is_always_lock_free
 
static constexpr memory_order default_read_order
 
static constexpr memory_order default_write_order
 
static constexpr memory_order default_read_modify_write_order = DefaultOrder
 
static constexpr memory_scope default_scope = DefaultScope
 

Protected Attributes

std::atomic< T > * ptr
 

Detailed Description

template<typename T, memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
class sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >

Definition at line 115 of file atomic_ref.hpp.

Member Typedef Documentation

◆ value_type

template<typename T , memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
using sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::value_type = T

Definition at line 137 of file atomic_ref.hpp.

Constructor & Destructor Documentation

◆ atomic_ref_base() [1/2]

template<typename T , memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::atomic_ref_base ( T &  ref)
inlineexplicit

Definition at line 157 of file atomic_ref.hpp.

◆ atomic_ref_base() [2/2]

template<typename T , memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::atomic_ref_base ( const atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace > &  ref)
inlinenoexcept

Member Function Documentation

◆ compare_exchange_strong() [1/2]

template<typename T , memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
bool sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::compare_exchange_strong ( T &  expected,
desired,
memory_order  order = default_read_modify_write_order,
memory_scope  scope = default_scope 
) const
inlinenoexcept

◆ compare_exchange_strong() [2/2]

◆ compare_exchange_weak() [1/2]

template<typename T , memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
bool sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::compare_exchange_weak ( T &  expected,
desired,
memory_order  order = default_read_modify_write_order,
memory_scope  scope = default_scope 
) const
inlinenoexcept

◆ compare_exchange_weak() [2/2]

template<typename T , memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
bool sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::compare_exchange_weak ( T &  expected,
desired,
memory_order  success,
memory_order  failure,
memory_scope  scope = default_scope 
) const
inlinenoexcept

Definition at line 230 of file atomic_ref.hpp.

References sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::compare_exchange_strong(), sycl::_V1::detail::getStdMemoryOrder(), sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::ptr, and sycl::_V1::success.

Referenced by sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::compare_exchange_weak(), syclcompat::atomic< T, DefaultScope, DefaultOrder, Space >::compare_exchange_weak(), sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_floating_point_v< T > > >::fetch_add(), sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::fetch_max(), sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_floating_point_v< T > > >::fetch_max(), sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::fetch_min(), sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_floating_point_v< T > > >::fetch_min(), and sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_floating_point_v< T > > >::fetch_sub().

◆ exchange()

template<typename T , memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
T sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::exchange ( operand,
memory_order  order = default_read_modify_write_order,
memory_scope  scope = default_scope 
) const
inlinenoexcept

◆ is_lock_free()

template<typename T , memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
bool sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::is_lock_free ( ) const
inlinenoexcept

Definition at line 148 of file atomic_ref.hpp.

◆ load()

template<typename T , memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
T sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::load ( memory_order  order = default_read_order,
memory_scope  scope = default_scope 
) const
inlinenoexcept

◆ operator T()

template<typename T , memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::operator T ( ) const
inlinenoexcept

◆ operator=() [1/2]

template<typename T , memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
atomic_ref_base& sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::operator= ( const atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace > &  )
delete

◆ operator=() [2/2]

template<typename T , memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
T sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::operator= ( desired) const
inlinenoexcept

◆ store()

template<typename T , memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
void sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::store ( operand,
memory_order  order = default_write_order,
memory_scope  scope = default_scope 
) const
inlinenoexcept

Member Data Documentation

◆ default_read_modify_write_order

template<typename T , memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
constexpr memory_order sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::default_read_modify_write_order = DefaultOrder
staticconstexpr

Definition at line 145 of file atomic_ref.hpp.

◆ default_read_order

template<typename T , memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
constexpr memory_order sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::default_read_order
staticconstexpr
Initial value:
=
detail::memory_order_traits<DefaultOrder>::read_order

Definition at line 141 of file atomic_ref.hpp.

◆ default_scope

template<typename T , memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
constexpr memory_scope sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::default_scope = DefaultScope
staticconstexpr

Definition at line 146 of file atomic_ref.hpp.

◆ default_write_order

template<typename T , memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
constexpr memory_order sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::default_write_order
staticconstexpr
Initial value:
=
detail::memory_order_traits<DefaultOrder>::write_order

Definition at line 143 of file atomic_ref.hpp.

◆ is_always_lock_free

template<typename T , memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
constexpr bool sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::is_always_lock_free
staticconstexpr
Initial value:

Definition at line 139 of file atomic_ref.hpp.

◆ ptr

template<typename T , memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
std::atomic<T>* sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::ptr
protected

Definition at line 257 of file atomic_ref.hpp.

Referenced by sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::atomic_ref_base(), sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::compare_exchange_strong(), sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::compare_exchange_weak(), sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::exchange(), sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::fetch_add(), sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_floating_point_v< T > > >::fetch_add(), sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::fetch_and(), sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::fetch_max(), sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_floating_point_v< T > > >::fetch_max(), sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::fetch_min(), sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_floating_point_v< T > > >::fetch_min(), sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::fetch_or(), sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::fetch_sub(), sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_floating_point_v< T > > >::fetch_sub(), sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::fetch_xor(), sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::load(), and sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::store().

◆ required_alignment

template<typename T , memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
constexpr size_t sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::required_alignment = sizeof(T)
staticconstexpr

Definition at line 138 of file atomic_ref.hpp.


The documentation for this class was generated from the following file: