DPC++ Runtime
Runtime libraries for oneAPI DPC++
sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > > Class Template Reference

#include <sycl/atomic_ref.hpp>

Inheritance diagram for sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >:
Collaboration diagram for sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >:

Public Types

using value_type = T
 
using difference_type = value_type
 
- Public Types inherited from sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >
using value_type = T
 

Public Member Functions

fetch_add (T operand, memory_order order=default_read_modify_write_order, memory_scope scope=default_scope) const noexcept
 
operator+= (T operand) const noexcept
 
operator++ (int) const noexcept
 
operator++ () const noexcept
 
fetch_sub (T operand, memory_order order=default_read_modify_write_order, memory_scope scope=default_scope) const noexcept
 
operator-= (T operand) const noexcept
 
operator-- (int) const noexcept
 
operator-- () const noexcept
 
fetch_and (T operand, memory_order order=default_read_modify_write_order, memory_scope scope=default_scope) const noexcept
 
operator&= (T operand) const noexcept
 
fetch_or (T operand, memory_order order=default_read_modify_write_order, memory_scope scope=default_scope) const noexcept
 
operator|= (T operand) const noexcept
 
fetch_xor (T operand, memory_order order=default_read_modify_write_order, memory_scope scope=default_scope) const noexcept
 
operator^= (T operand) const noexcept
 
fetch_min (T operand, memory_order order=default_read_modify_write_order, memory_scope scope=default_scope) const noexcept
 
fetch_max (T operand, memory_order order=default_read_modify_write_order, memory_scope scope=default_scope) const noexcept
 
- Public Member Functions inherited from sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >
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
 
- Static Public Attributes inherited from sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >
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
 

Additional Inherited Members

- Protected Attributes inherited from sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >
std::atomic< T > * ptr
 

Detailed Description

template<typename T, bool IsAspectAtomic64AttrUsed, memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
class sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >

Definition at line 275 of file atomic_ref.hpp.

Member Typedef Documentation

◆ difference_type

template<typename T , bool IsAspectAtomic64AttrUsed, memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
using sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::difference_type = value_type

Definition at line 282 of file atomic_ref.hpp.

◆ value_type

template<typename T , bool IsAspectAtomic64AttrUsed, memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
using sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::value_type = T

Definition at line 281 of file atomic_ref.hpp.

Member Function Documentation

◆ fetch_add()

template<typename T , bool IsAspectAtomic64AttrUsed, memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
T sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::fetch_add ( operand,
memory_order  order = default_read_modify_write_order,
memory_scope  scope = default_scope 
) const
inlinenoexcept

◆ fetch_and()

template<typename T , bool IsAspectAtomic64AttrUsed, memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
T sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::fetch_and ( operand,
memory_order  order = default_read_modify_write_order,
memory_scope  scope = default_scope 
) const
inlinenoexcept

◆ fetch_max()

template<typename T , bool IsAspectAtomic64AttrUsed, memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
T sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::fetch_max ( operand,
memory_order  order = default_read_modify_write_order,
memory_scope  scope = default_scope 
) const
inlinenoexcept

◆ fetch_min()

template<typename T , bool IsAspectAtomic64AttrUsed, memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
T sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::fetch_min ( operand,
memory_order  order = default_read_modify_write_order,
memory_scope  scope = default_scope 
) const
inlinenoexcept

◆ fetch_or()

template<typename T , bool IsAspectAtomic64AttrUsed, memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
T sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::fetch_or ( operand,
memory_order  order = default_read_modify_write_order,
memory_scope  scope = default_scope 
) const
inlinenoexcept

◆ fetch_sub()

template<typename T , bool IsAspectAtomic64AttrUsed, memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
T sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::fetch_sub ( operand,
memory_order  order = default_read_modify_write_order,
memory_scope  scope = default_scope 
) const
inlinenoexcept

◆ fetch_xor()

template<typename T , bool IsAspectAtomic64AttrUsed, memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
T sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::fetch_xor ( operand,
memory_order  order = default_read_modify_write_order,
memory_scope  scope = default_scope 
) const
inlinenoexcept

◆ operator&=()

template<typename T , bool IsAspectAtomic64AttrUsed, memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
T sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::operator&= ( operand) const
inlinenoexcept

Definition at line 358 of file atomic_ref.hpp.

◆ operator++() [1/2]

template<typename T , bool IsAspectAtomic64AttrUsed, memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
T sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::operator++ ( ) const
inlinenoexcept

Definition at line 319 of file atomic_ref.hpp.

◆ operator++() [2/2]

template<typename T , bool IsAspectAtomic64AttrUsed, memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
T sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::operator++ ( int  ) const
inlinenoexcept

Definition at line 314 of file atomic_ref.hpp.

◆ operator+=()

template<typename T , bool IsAspectAtomic64AttrUsed, memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
T sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::operator+= ( operand) const
inlinenoexcept

Definition at line 310 of file atomic_ref.hpp.

◆ operator--() [1/2]

template<typename T , bool IsAspectAtomic64AttrUsed, memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
T sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::operator-- ( ) const
inlinenoexcept

Definition at line 343 of file atomic_ref.hpp.

◆ operator--() [2/2]

template<typename T , bool IsAspectAtomic64AttrUsed, memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
T sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::operator-- ( int  ) const
inlinenoexcept

Definition at line 338 of file atomic_ref.hpp.

◆ operator-=()

template<typename T , bool IsAspectAtomic64AttrUsed, memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
T sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::operator-= ( operand) const
inlinenoexcept

Definition at line 334 of file atomic_ref.hpp.

◆ operator^=()

template<typename T , bool IsAspectAtomic64AttrUsed, memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
T sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::operator^= ( operand) const
inlinenoexcept

Definition at line 384 of file atomic_ref.hpp.

◆ operator|=()

template<typename T , bool IsAspectAtomic64AttrUsed, memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
T sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::operator|= ( operand) const
inlinenoexcept

Definition at line 372 of file atomic_ref.hpp.

Member Data Documentation

◆ default_read_modify_write_order

template<typename T , bool IsAspectAtomic64AttrUsed, memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
constexpr memory_order sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::default_read_modify_write_order = DefaultOrder
staticconstexpr

Definition at line 290 of file atomic_ref.hpp.

◆ default_read_order

template<typename T , bool IsAspectAtomic64AttrUsed, memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
constexpr memory_order sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::default_read_order
staticconstexpr
Initial value:
=
detail::memory_order_traits<DefaultOrder>::read_order

Definition at line 286 of file atomic_ref.hpp.

◆ default_scope

template<typename T , bool IsAspectAtomic64AttrUsed, memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
constexpr memory_scope sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::default_scope = DefaultScope
staticconstexpr

Definition at line 291 of file atomic_ref.hpp.

◆ default_write_order

template<typename T , bool IsAspectAtomic64AttrUsed, memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
constexpr memory_order sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::default_write_order
staticconstexpr
Initial value:
=
detail::memory_order_traits<DefaultOrder>::write_order

Definition at line 288 of file atomic_ref.hpp.

◆ is_always_lock_free

template<typename T , bool IsAspectAtomic64AttrUsed, memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
constexpr bool sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::is_always_lock_free
staticconstexpr
Initial value:

Definition at line 284 of file atomic_ref.hpp.

◆ required_alignment

template<typename T , bool IsAspectAtomic64AttrUsed, memory_order DefaultOrder, memory_scope DefaultScope, access::address_space AddressSpace>
constexpr size_t sycl::_V1::detail::atomic_ref_impl< T, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace, typename std::enable_if_t< std::is_integral_v< T > > >::required_alignment = sizeof(T)
staticconstexpr

Definition at line 283 of file atomic_ref.hpp.


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