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

#include <sycl/atomic_ref.hpp>

Inheritance diagram for sycl::_V1::detail::atomic_ref_impl< T *, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace >:
Collaboration diagram for sycl::_V1::detail::atomic_ref_impl< T *, IsAspectAtomic64AttrUsed, DefaultOrder, DefaultScope, AddressSpace >:

Public Types

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

Public Member Functions

 atomic_ref_impl (T *&ref)
 
void store (T *operand, memory_order order=default_write_order, memory_scope scope=default_scope) const noexcept
 
T * operator= (T *desired) const noexcept
 
T * load (memory_order order=default_read_order, memory_scope scope=default_scope) const noexcept
 
 operator T* () const noexcept
 
T * exchange (T *operand, memory_order order=default_read_modify_write_order, memory_scope scope=default_scope) const noexcept
 
T * fetch_add (difference_type operand, memory_order order=default_read_modify_write_order, memory_scope scope=default_scope) const noexcept
 
T * operator+= (difference_type operand) const noexcept
 
T * operator++ (int) const noexcept
 
T * operator++ () const noexcept
 
T * fetch_sub (difference_type operand, memory_order order=default_read_modify_write_order, memory_scope scope=default_scope) const noexcept
 
T * operator-= (difference_type operand) const noexcept
 
T * operator-- (int) const noexcept
 
T * operator-- () 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
 
- Public Member Functions inherited from sycl::_V1::detail::atomic_ref_base< uintptr_t, DefaultOrder, DefaultScope, AddressSpace >
bool is_lock_free () const noexcept
 
 atomic_ref_base (uintptr_t &ref)
 
 atomic_ref_base (const atomic_ref_base &ref) noexcept
 
atomic_ref_baseoperator= (const atomic_ref_base &)=delete
 
uintptr_t operator= (uintptr_t desired) const noexcept
 
void store (uintptr_t operand, memory_order order=default_write_order, memory_scope scope=default_scope) const noexcept
 
uintptr_t load (memory_order order=default_read_order, memory_scope scope=default_scope) const noexcept
 
 operator uintptr_t () const noexcept
 
uintptr_t exchange (uintptr_t operand, memory_order order=default_read_modify_write_order, memory_scope scope=default_scope) const noexcept
 
bool compare_exchange_strong (uintptr_t &expected, uintptr_t desired, memory_order success, memory_order failure, memory_scope scope=default_scope) const noexcept
 
bool compare_exchange_strong (uintptr_t &expected, uintptr_t desired, memory_order order=default_read_modify_write_order, memory_scope scope=default_scope) const noexcept
 
bool compare_exchange_weak (uintptr_t &expected, uintptr_t desired, memory_order success, memory_order failure, memory_scope scope=default_scope) const noexcept
 
bool compare_exchange_weak (uintptr_t &expected, uintptr_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< uintptr_t, DefaultOrder, DefaultScope, AddressSpace >
static constexpr size_t required_alignment
 
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
 
static constexpr memory_scope default_scope
 

Additional Inherited Members

- Protected Attributes inherited from sycl::_V1::detail::atomic_ref_base< uintptr_t, DefaultOrder, DefaultScope, AddressSpace >
std::atomic< uintptr_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 >

Definition at line 574 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 >::difference_type = ptrdiff_t

Definition at line 588 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 >::value_type = T *

Definition at line 587 of file atomic_ref.hpp.

Constructor & Destructor Documentation

◆ atomic_ref_impl()

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

Definition at line 601 of file atomic_ref.hpp.

Member Function Documentation

◆ compare_exchange_strong() [1/2]

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

◆ compare_exchange_strong() [2/2]

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

Definition at line 675 of file atomic_ref.hpp.

References sycl::_V1::success.

◆ compare_exchange_weak() [1/2]

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

◆ compare_exchange_weak() [2/2]

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

Definition at line 691 of file atomic_ref.hpp.

References sycl::_V1::success.

◆ exchange()

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 >::exchange ( T *  operand,
memory_order  order = default_read_modify_write_order,
memory_scope  scope = default_scope 
) const
inlinenoexcept

Definition at line 621 of file atomic_ref.hpp.

◆ 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 >::fetch_add ( difference_type  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 >::fetch_sub ( difference_type  operand,
memory_order  order = default_read_modify_write_order,
memory_scope  scope = default_scope 
) const
inlinenoexcept

◆ load()

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 >::load ( memory_order  order = default_read_order,
memory_scope  scope = default_scope 
) const
inlinenoexcept

Definition at line 614 of file atomic_ref.hpp.

◆ operator T*()

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

◆ 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 >::operator++ ( ) const
inlinenoexcept

Definition at line 647 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 >::operator++ ( int  ) const
inlinenoexcept

Definition at line 645 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 >::operator+= ( difference_type  operand) const
inlinenoexcept

Definition at line 641 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 >::operator-- ( ) const
inlinenoexcept

Definition at line 670 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 >::operator-- ( int  ) const
inlinenoexcept

Definition at line 668 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 >::operator-= ( difference_type  operand) const
inlinenoexcept

Definition at line 664 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 >::operator= ( T *  desired) const
inlinenoexcept

◆ store()

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

Definition at line 604 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 >::default_read_modify_write_order = DefaultOrder
staticconstexpr

Definition at line 596 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 >::default_read_order
staticconstexpr
Initial value:
=
detail::memory_order_traits<DefaultOrder>::read_order

Definition at line 592 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 >::default_scope = DefaultScope
staticconstexpr

Definition at line 597 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 >::default_write_order
staticconstexpr
Initial value:
=
detail::memory_order_traits<DefaultOrder>::write_order

Definition at line 594 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 >::is_always_lock_free
staticconstexpr
Initial value:

Definition at line 590 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 >::required_alignment = sizeof(T *)
staticconstexpr

Definition at line 589 of file atomic_ref.hpp.


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