DPC++ Runtime
Runtime libraries for oneAPI DPC++
syclcompat::atomic< T, DefaultScope, DefaultOrder, Space > Class Template Reference

#include <syclcompat/atomic.hpp>

Collaboration diagram for syclcompat::atomic< T, DefaultScope, DefaultOrder, Space >:

Public Member Functions

constexpr atomic () noexcept=default
 Default constructor. More...
 
constexpr atomic (T d) noexcept
 Constructor with initialize value. More...
 
void store (T operand, sycl::memory_order memoryOrder=default_write_order, sycl::memory_scope memoryScope=default_scope) noexcept
 atomically replaces the value of the referenced object with a non-atomic argument More...
 
load (sycl::memory_order memoryOrder=default_read_order, sycl::memory_scope memoryScope=default_scope) const noexcept
 atomically obtains the value of the referenced object More...
 
exchange (T operand, sycl::memory_order memoryOrder=default_read_modify_write_order, sycl::memory_scope memoryScope=default_scope) noexcept
 atomically replaces the value of the referenced object and obtains the value held previously More...
 
bool compare_exchange_weak (T &expected, T desired, sycl::memory_order success, sycl::memory_order failure, sycl::memory_scope memoryScope=default_scope) noexcept
 atomically compares the value of the referenced object with non-atomic argument and performs atomic exchange if equal or atomic load if not More...
 
bool compare_exchange_weak (T &expected, T desired, sycl::memory_order memoryOrder=default_read_modify_write_order, sycl::memory_scope memoryScope=default_scope) noexcept
 
bool compare_exchange_strong (T &expected, T desired, sycl::memory_order success, sycl::memory_order failure, sycl::memory_scope memoryScope=default_scope) noexcept
 atomically compares the value of the referenced object with non-atomic argument and performs atomic exchange if equal or atomic load if not More...
 
bool compare_exchange_strong (T &expected, T desired, sycl::memory_order memoryOrder=default_read_modify_write_order, sycl::memory_scope memoryScope=default_scope) noexcept
 
fetch_add (arith_t< T > operand, sycl::memory_order memoryOrder=default_read_modify_write_order, sycl::memory_scope memoryScope=default_scope) noexcept
 atomically adds the argument to the value stored in the atomic object and obtains the value held previously More...
 
fetch_sub (arith_t< T > operand, sycl::memory_order memoryOrder=default_read_modify_write_order, sycl::memory_scope memoryScope=default_scope) noexcept
 atomically subtracts the argument from the value stored in the atomic object and obtains the value held previously More...
 

Static Public Attributes

static constexpr sycl::memory_order default_read_order
 default memory synchronization order More...
 
static constexpr sycl::memory_order default_write_order
 
static constexpr sycl::memory_scope default_scope = DefaultScope
 
static constexpr sycl::memory_order default_read_modify_write_order
 

Detailed Description

template<typename T, sycl::memory_scope DefaultScope = sycl::memory_scope::system, sycl::memory_order DefaultOrder = sycl::memory_order::seq_cst, sycl::access::address_space Space = sycl::access::address_space::generic_space>
class syclcompat::atomic< T, DefaultScope, DefaultOrder, Space >

Definition at line 307 of file atomic.hpp.

Constructor & Destructor Documentation

◆ atomic() [1/2]

template<typename T , sycl::memory_scope DefaultScope = sycl::memory_scope::system, sycl::memory_order DefaultOrder = sycl::memory_order::seq_cst, sycl::access::address_space Space = sycl::access::address_space::generic_space>
constexpr syclcompat::atomic< T, DefaultScope, DefaultOrder, Space >::atomic ( )
constexprdefaultnoexcept

Default constructor.

◆ atomic() [2/2]

template<typename T , sycl::memory_scope DefaultScope = sycl::memory_scope::system, sycl::memory_order DefaultOrder = sycl::memory_order::seq_cst, sycl::access::address_space Space = sycl::access::address_space::generic_space>
constexpr syclcompat::atomic< T, DefaultScope, DefaultOrder, Space >::atomic ( d)
inlineconstexprnoexcept

Constructor with initialize value.

Definition at line 330 of file atomic.hpp.

Member Function Documentation

◆ compare_exchange_strong() [1/2]

template<typename T , sycl::memory_scope DefaultScope = sycl::memory_scope::system, sycl::memory_order DefaultOrder = sycl::memory_order::seq_cst, sycl::access::address_space Space = sycl::access::address_space::generic_space>
bool syclcompat::atomic< T, DefaultScope, DefaultOrder, Space >::compare_exchange_strong ( T &  expected,
desired,
sycl::memory_order  memoryOrder = default_read_modify_write_order,
sycl::memory_scope  memoryScope = default_scope 
)
inlinenoexcept
Parameters
expectedThe value expected to be found in the object referenced by the atomic_ref object
desiredThe value to store in the referenced object if it is as expected
memoryOrderThe memory synchronization ordering for operations
memoryScopeThe memory scope used.
Returns
true if the referenced object was successfully changed, false otherwise.

Definition at line 435 of file atomic.hpp.

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

◆ compare_exchange_strong() [2/2]

template<typename T , sycl::memory_scope DefaultScope = sycl::memory_scope::system, sycl::memory_order DefaultOrder = sycl::memory_order::seq_cst, sycl::access::address_space Space = sycl::access::address_space::generic_space>
bool syclcompat::atomic< T, DefaultScope, DefaultOrder, Space >::compare_exchange_strong ( T &  expected,
desired,
sycl::memory_order  success,
sycl::memory_order  failure,
sycl::memory_scope  memoryScope = default_scope 
)
inlinenoexcept

atomically compares the value of the referenced object with non-atomic argument and performs atomic exchange if equal or atomic load if not

Parameters
expectedThe value expected to be found in the object referenced by the atomic_ref object
desiredThe value to store in the referenced object if it is as expected
successThe memory models for the read-modify-write
failureThe memory models for load operations
memoryScopeThe memory scope used.
Returns
true if the referenced object was successfully changed, false otherwise.

Definition at line 417 of file atomic.hpp.

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

◆ compare_exchange_weak() [1/2]

template<typename T , sycl::memory_scope DefaultScope = sycl::memory_scope::system, sycl::memory_order DefaultOrder = sycl::memory_order::seq_cst, sycl::access::address_space Space = sycl::access::address_space::generic_space>
bool syclcompat::atomic< T, DefaultScope, DefaultOrder, Space >::compare_exchange_weak ( T &  expected,
desired,
sycl::memory_order  memoryOrder = default_read_modify_write_order,
sycl::memory_scope  memoryScope = default_scope 
)
inlinenoexcept
Parameters
expectedThe value expected to be found in the object referenced by the atomic_ref object
desiredThe value to store in the referenced object if it is as expected
memoryOrderThe memory synchronization ordering for operations
memoryScopeThe memory scope used.
Returns
true if the referenced object was successfully changed, false otherwise.

Definition at line 396 of file atomic.hpp.

References sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::compare_exchange_weak().

◆ compare_exchange_weak() [2/2]

template<typename T , sycl::memory_scope DefaultScope = sycl::memory_scope::system, sycl::memory_order DefaultOrder = sycl::memory_order::seq_cst, sycl::access::address_space Space = sycl::access::address_space::generic_space>
bool syclcompat::atomic< T, DefaultScope, DefaultOrder, Space >::compare_exchange_weak ( T &  expected,
desired,
sycl::memory_order  success,
sycl::memory_order  failure,
sycl::memory_scope  memoryScope = default_scope 
)
inlinenoexcept

atomically compares the value of the referenced object with non-atomic argument and performs atomic exchange if equal or atomic load if not

Parameters
expectedThe value expected to be found in the object referenced by the atomic_ref object
desiredThe value to store in the referenced object if it is as expected
successThe memory models for the read-modify-write
failureThe memory models for load operations
memoryScopeThe memory scope used.
Returns
true if the referenced object was successfully changed, false otherwise.

Definition at line 379 of file atomic.hpp.

References sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::compare_exchange_weak().

◆ exchange()

template<typename T , sycl::memory_scope DefaultScope = sycl::memory_scope::system, sycl::memory_order DefaultOrder = sycl::memory_order::seq_cst, sycl::access::address_space Space = sycl::access::address_space::generic_space>
T syclcompat::atomic< T, DefaultScope, DefaultOrder, Space >::exchange ( operand,
sycl::memory_order  memoryOrder = default_read_modify_write_order,
sycl::memory_scope  memoryScope = default_scope 
)
inlinenoexcept

atomically replaces the value of the referenced object and obtains the value held previously

Parameters
operandThe value to replace the pointed value.
memoryOrderThe memory ordering used.
memoryScopeThe memory scope used.
Returns
The value of the referenced object before the call.

Definition at line 360 of file atomic.hpp.

References sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::exchange().

◆ fetch_add()

template<typename T , sycl::memory_scope DefaultScope = sycl::memory_scope::system, sycl::memory_order DefaultOrder = sycl::memory_order::seq_cst, sycl::access::address_space Space = sycl::access::address_space::generic_space>
T syclcompat::atomic< T, DefaultScope, DefaultOrder, Space >::fetch_add ( arith_t< T >  operand,
sycl::memory_order  memoryOrder = default_read_modify_write_order,
sycl::memory_scope  memoryScope = default_scope 
)
inlinenoexcept

atomically adds the argument to the value stored in the atomic object and obtains the value held previously

Parameters
operandThe other argument of arithmetic addition
memoryOrderThe memory ordering used.
memoryScopeThe memory scope used.
Returns
The value of the referenced object before the call.

Definition at line 450 of file atomic.hpp.

◆ fetch_sub()

template<typename T , sycl::memory_scope DefaultScope = sycl::memory_scope::system, sycl::memory_order DefaultOrder = sycl::memory_order::seq_cst, sycl::access::address_space Space = sycl::access::address_space::generic_space>
T syclcompat::atomic< T, DefaultScope, DefaultOrder, Space >::fetch_sub ( arith_t< T >  operand,
sycl::memory_order  memoryOrder = default_read_modify_write_order,
sycl::memory_scope  memoryScope = default_scope 
)
inlinenoexcept

atomically subtracts the argument from the value stored in the atomic object and obtains the value held previously

Parameters
operandThe other argument of arithmetic subtraction
memoryOrderThe memory ordering used.
memoryScopeThe memory scope used.
Returns
The value of the referenced object before the call.

Definition at line 464 of file atomic.hpp.

◆ load()

template<typename T , sycl::memory_scope DefaultScope = sycl::memory_scope::system, sycl::memory_order DefaultOrder = sycl::memory_order::seq_cst, sycl::access::address_space Space = sycl::access::address_space::generic_space>
T syclcompat::atomic< T, DefaultScope, DefaultOrder, Space >::load ( sycl::memory_order  memoryOrder = default_read_order,
sycl::memory_scope  memoryScope = default_scope 
) const
inlinenoexcept

atomically obtains the value of the referenced object

Parameters
memoryOrderThe memory ordering used.
memoryScopeThe memory scope used.
Returns
The value of the referenced object

Definition at line 347 of file atomic.hpp.

References sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::load().

◆ store()

template<typename T , sycl::memory_scope DefaultScope = sycl::memory_scope::system, sycl::memory_order DefaultOrder = sycl::memory_order::seq_cst, sycl::access::address_space Space = sycl::access::address_space::generic_space>
void syclcompat::atomic< T, DefaultScope, DefaultOrder, Space >::store ( operand,
sycl::memory_order  memoryOrder = default_write_order,
sycl::memory_scope  memoryScope = default_scope 
)
inlinenoexcept

atomically replaces the value of the referenced object with a non-atomic argument

Parameters
operandThe value to replace the pointed value.
memoryOrderThe memory ordering used.
memoryScopeThe memory scope used.

Definition at line 337 of file atomic.hpp.

References sycl::_V1::detail::atomic_ref_base< T, DefaultOrder, DefaultScope, AddressSpace >::store().

Member Data Documentation

◆ default_read_modify_write_order

template<typename T , sycl::memory_scope DefaultScope = sycl::memory_scope::system, sycl::memory_order DefaultOrder = sycl::memory_order::seq_cst, sycl::access::address_space Space = sycl::access::address_space::generic_space>
constexpr sycl::memory_order syclcompat::atomic< T, DefaultScope, DefaultOrder, Space >::default_read_modify_write_order
staticconstexpr
Initial value:
=
DefaultOrder

Definition at line 324 of file atomic.hpp.

◆ default_read_order

template<typename T , sycl::memory_scope DefaultScope = sycl::memory_scope::system, sycl::memory_order DefaultOrder = sycl::memory_order::seq_cst, sycl::access::address_space Space = sycl::access::address_space::generic_space>
constexpr sycl::memory_order syclcompat::atomic< T, DefaultScope, DefaultOrder, Space >::default_read_order
staticconstexpr
Initial value:
=
sycl::atomic_ref<T, DefaultOrder, DefaultScope,
static constexpr sycl::memory_order default_read_order
default memory synchronization order
Definition: atomic.hpp:317

default memory synchronization order

Definition at line 317 of file atomic.hpp.

◆ default_scope

template<typename T , sycl::memory_scope DefaultScope = sycl::memory_scope::system, sycl::memory_order DefaultOrder = sycl::memory_order::seq_cst, sycl::access::address_space Space = sycl::access::address_space::generic_space>
constexpr sycl::memory_scope syclcompat::atomic< T, DefaultScope, DefaultOrder, Space >::default_scope = DefaultScope
staticconstexpr

Definition at line 323 of file atomic.hpp.

◆ default_write_order

template<typename T , sycl::memory_scope DefaultScope = sycl::memory_scope::system, sycl::memory_order DefaultOrder = sycl::memory_order::seq_cst, sycl::access::address_space Space = sycl::access::address_space::generic_space>
constexpr sycl::memory_order syclcompat::atomic< T, DefaultScope, DefaultOrder, Space >::default_write_order
staticconstexpr
Initial value:
=
sycl::atomic_ref<T, DefaultOrder, DefaultScope,
static constexpr sycl::memory_order default_write_order
Definition: atomic.hpp:320

Definition at line 320 of file atomic.hpp.


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