Memory access functions which perform per-lane atomic update using given operation. "Per-lane" means that the atomicity guarantees of a vector atomic operation are the same as of N independent scalar atomic operations per lane (N is number of lanes). More...
Functions | |
template<atomic_op Op, typename Tx , int N, typename Toffset > | |
__ESIMD_API simd< Tx, N > | sycl::_V1::ext::intel::esimd::atomic_update (Tx *p, simd< Toffset, N > offset, simd< Tx, N > src0, simd_mask< N > mask) |
Single-argument variant of the atomic update operation. More... | |
template<atomic_op Op, typename Tx , int N, typename Toffset , typename RegionTy = region1d_t<Toffset, N, 1>> | |
__ESIMD_API simd< Tx, N > | sycl::_V1::ext::intel::esimd::atomic_update (Tx *p, simd_view< Toffset, RegionTy > offsets, simd< Tx, N > src0, simd_mask< N > mask) |
A variation of atomic_update API with offsets represented as simd_view object. More... | |
template<atomic_op Op, typename Tx , int N, typename Toffset > | |
__ESIMD_API std::enable_if_t< std::is_integral_v< Toffset > &&((Op !=atomic_op::store &&Op !=atomic_op::xchg)||N==1), simd< Tx, N > > | sycl::_V1::ext::intel::esimd::atomic_update (Tx *p, Toffset offset, simd< Tx, N > src0, simd_mask< N > mask) |
A variation of atomic_update API with offset represented as scalar object. More... | |
template<atomic_op Op, typename Tx , int N, typename Toffset > | |
__ESIMD_API simd< Tx, N > | sycl::_V1::ext::intel::esimd::atomic_update (Tx *p, simd< Toffset, N > offset, simd_mask< N > mask) |
No-argument variant of the atomic update operation. More... | |
template<atomic_op Op, typename Tx , int N, typename Toffset , typename RegionTy = region1d_t<Toffset, N, 1>> | |
__ESIMD_API simd< Tx, N > | sycl::_V1::ext::intel::esimd::atomic_update (Tx *p, simd_view< Toffset, RegionTy > offsets, simd_mask< N > mask=1) |
A variation of atomic_update API with offsets represented as simd_view object. More... | |
template<atomic_op Op, typename Tx , int N, typename Toffset > | |
__ESIMD_API std::enable_if_t< std::is_integral_v< Toffset >, simd< Tx, N > > | sycl::_V1::ext::intel::esimd::atomic_update (Tx *p, Toffset offset, simd_mask< N > mask=1) |
A variation of atomic_update API with offset represented as scalar. More... | |
template<atomic_op Op, typename Tx , int N, typename Toffset > | |
__ESIMD_API simd< Tx, N > | sycl::_V1::ext::intel::esimd::atomic_update (Tx *p, simd< Toffset, N > offset, simd< Tx, N > src0, simd< Tx, N > src1, simd_mask< N > mask) |
template<atomic_op Op, typename Tx , int N, typename Toffset , typename RegionTy = region1d_t<Toffset, N, 1>> | |
__ESIMD_API simd< Tx, N > | sycl::_V1::ext::intel::esimd::atomic_update (Tx *p, simd_view< Toffset, RegionTy > offsets, simd< Tx, N > src0, simd< Tx, N > src1, simd_mask< N > mask) |
A variation of atomic_update API with offsets represented as simd_view object. More... | |
template<atomic_op Op, typename Tx , int N, typename Toffset > | |
__ESIMD_API std::enable_if_t< std::is_integral_v< Toffset >, simd< Tx, N > > | sycl::_V1::ext::intel::esimd::atomic_update (Tx *p, Toffset offset, simd< Tx, N > src0, simd< Tx, N > src1, simd_mask< N > mask) |
A variation of atomic_update API with offsets represented as scalar. More... | |
template<atomic_op Op, typename Tx , int N, typename Toffset , typename AccessorTy > | |
__ESIMD_API std::enable_if_t< std::is_integral_v< Toffset > &&!std::is_pointer< AccessorTy >::value, simd< Tx, N > > | sycl::_V1::ext::intel::esimd::atomic_update (AccessorTy acc, simd< Toffset, N > offset, simd< Tx, N > src0, simd_mask< N > mask) |
Single-argument variant of the atomic update operation. More... | |
template<atomic_op Op, typename Tx , int N, typename Toffset , typename AccessorTy , typename RegionTy = region1d_t<Toffset, N, 1>> | |
__ESIMD_API std::enable_if_t< std::is_integral_v< Toffset > &&!std::is_pointer< AccessorTy >::value, simd< Tx, N > > | sycl::_V1::ext::intel::esimd::atomic_update (AccessorTy acc, simd_view< Toffset, RegionTy > offsets, simd< Tx, N > src0, simd_mask< N > mask) |
A variation of atomic_update API with offsets represented as simd_view object. More... | |
template<atomic_op Op, typename Tx , int N, typename Toffset , typename AccessorTy > | |
__ESIMD_API std::enable_if_t< std::is_integral_v< Toffset > &&!std::is_pointer< AccessorTy >::value &&((Op !=atomic_op::store &&Op !=atomic_op::xchg)||N==1), simd< Tx, N > > | sycl::_V1::ext::intel::esimd::atomic_update (AccessorTy acc, Toffset offset, simd< Tx, N > src0, simd_mask< N > mask) |
A variation of atomic_update API with offset represented as scalar object. More... | |
template<atomic_op Op, typename Tx , int N, typename Toffset , typename AccessorTy > | |
__ESIMD_API __ESIMD_API std::enable_if_t< std::is_integral_v< Toffset > &&!std::is_pointer< AccessorTy >::value, simd< Tx, N > > | sycl::_V1::ext::intel::esimd::atomic_update (AccessorTy acc, simd< Toffset, N > offset, simd_mask< N > mask) |
No-argument variant of the atomic update operation. More... | |
template<atomic_op Op, typename Tx , int N, typename Toffset , typename AccessorTy , typename RegionTy = region1d_t<Toffset, N, 1>> | |
__ESIMD_API std::enable_if_t< std::is_integral_v< Toffset > &&!std::is_pointer< AccessorTy >::value, simd< Tx, N > > | sycl::_V1::ext::intel::esimd::atomic_update (AccessorTy acc, simd_view< Toffset, RegionTy > offsets, simd_mask< N > mask) |
A variation of atomic_update API with offsets represented as simd_view object. More... | |
template<atomic_op Op, typename Tx , int N, typename Toffset , typename AccessorTy > | |
__ESIMD_API std::enable_if_t< std::is_integral_v< Toffset > &&!std::is_pointer< AccessorTy >::value, simd< Tx, N > > | sycl::_V1::ext::intel::esimd::atomic_update (AccessorTy acc, Toffset offset, simd_mask< N > mask) |
A variation of atomic_update API with offset represented as scalar. More... | |
template<atomic_op Op, typename Tx , int N, typename Toffset , typename AccessorTy > | |
__ESIMD_API std::enable_if_t< std::is_integral_v< Toffset > &&!std::is_pointer< AccessorTy >::value, simd< Tx, N > > | sycl::_V1::ext::intel::esimd::atomic_update (AccessorTy acc, simd< Toffset, N > offset, simd< Tx, N > src0, simd< Tx, N > src1, simd_mask< N > mask) |
template<atomic_op Op, typename Tx , int N, typename Toffset , typename AccessorTy , typename RegionTy = region1d_t<Toffset, N, 1>> | |
__ESIMD_API std::enable_if_t< std::is_integral_v< Toffset > &&!std::is_pointer< AccessorTy >::value, simd< Tx, N > > | sycl::_V1::ext::intel::esimd::atomic_update (AccessorTy acc, simd_view< Toffset, RegionTy > offsets, simd< Tx, N > src0, simd< Tx, N > src1, simd_mask< N > mask) |
A variation of atomic_update API with offsets represented as simd_view object. More... | |
template<atomic_op Op, typename Tx , int N, typename Toffset , typename AccessorTy > | |
__ESIMD_API std::enable_if_t< std::is_integral_v< Toffset > &&!std::is_pointer< AccessorTy >::value, simd< Tx, N > > | sycl::_V1::ext::intel::esimd::atomic_update (AccessorTy acc, Toffset offset, simd< Tx, N > src0, simd< Tx, N > src1, simd_mask< N > mask) |
A variation of atomic_update API with offsets represented as scalar. More... | |
Memory access functions which perform per-lane atomic update using given operation. "Per-lane" means that the atomicity guarantees of a vector atomic operation are the same as of N independent scalar atomic operations per lane (N is number of lanes).
__ESIMD_API std::enable_if_t<std::is_integral_v<Toffset> && !std::is_pointer<AccessorTy>::value, simd<Tx, N> > sycl::_V1::ext::intel::esimd::atomic_update | ( | AccessorTy | acc, |
simd< Toffset, N > | offset, | ||
simd< Tx, N > | src0, | ||
simd< Tx, N > | src1, | ||
simd_mask< N > | mask | ||
) |
Atomically updates N
memory locations represented by an accessor and a vector of offsets and returns a vector of old values found at the memory locations before update. The update operation has 2 additional arguments.
Op | The atomic operation - can be one of the following: atomic_op::cmpxchg , atomic_op::fcmpwr . |
Tx | The vector element type. |
N | The number of memory locations to update. |
AccessorTy | type of the SYCL accessor. |
acc | The SYCL accessor. |
offset | The vector of 32-bit or 64-bit offsets in bytes. 64-bit offsets are supported only when stateless memory accesses are enforced, i.e. accessor based accesses are automatically converted to stateless accesses. |
src0 | The first additional argument (new value). |
src1 | The second additional argument (expected value). |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
Definition at line 1590 of file memory.hpp.
References sycl::_V1::ext::intel::esimd::get_surface_index().
__ESIMD_API std::enable_if_t<std::is_integral_v<Toffset> && !std::is_pointer<AccessorTy>::value, simd<Tx, N> > sycl::_V1::ext::intel::esimd::atomic_update | ( | AccessorTy | acc, |
simd< Toffset, N > | offset, | ||
simd< Tx, N > | src0, | ||
simd_mask< N > | mask | ||
) |
Single-argument variant of the atomic update operation.
Atomically updates N
memory locations represented by an accessor and a vector of offsets, and returns a vector of old values found at the memory locations before update. The update operation has 1 additional argument.
Op | The atomic operation - can be one of the following: atomic_op::add , atomic_op::sub , atomic_op::min , atomic_op::max , atomic_op::xchg , atomic_op::bit_and , atomic_op::bit_or , atomic_op::bit_xor , atomic_op::minsint , atomic_op::maxsint , atomic_op::fmax , atomic_op::fmin , atomic_op::store . |
Tx | The vector element type. |
N | The number of memory locations to update. |
AccessorTy | type of the SYCL accessor. |
acc | The SYCL accessor. |
offset | The vector of 32-bit or 64-bit offsets in bytes. 64-bit offsets are supported only when stateless memory accesses are enforced, i.e. accessor based accesses are automatically converted to stateless accesses. |
src0 | The additional argument. |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
Definition at line 1357 of file memory.hpp.
References sycl::_V1::ext::oneapi::fmax(), sycl::_V1::ext::oneapi::fmin(), and sycl::_V1::ext::intel::esimd::get_surface_index().
__ESIMD_API __ESIMD_API std::enable_if_t<std::is_integral_v<Toffset> && !std::is_pointer<AccessorTy>::value, simd<Tx, N> > sycl::_V1::ext::intel::esimd::atomic_update | ( | AccessorTy | acc, |
simd< Toffset, N > | offset, | ||
simd_mask< N > | mask | ||
) |
No-argument variant of the atomic update operation.
Atomically updates N
memory locations represented by an accessor and a vector of offsets, and returns a vector of old values found at the memory locations before update. The update operation has no arguments in addition to the value at the memory location.
Op | The atomic operation - can be atomic_op::inc or atomic_op::dec , atomic_op::load . |
Tx | The vector element type. |
N | The number of memory locations to update. |
AccessorTy | type of the SYCL accessor. |
acc | The SYCL accessor. |
offset | The vector of 32-bit or 64-bit offsets in bytes. 64-bit offsets are supported only when stateless memory accesses are enforced, i.e. accessor based accesses are automatically converted to stateless accesses. |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
Definition at line 1482 of file memory.hpp.
References sycl::_V1::ext::intel::esimd::get_surface_index().
__ESIMD_API std::enable_if_t<std::is_integral_v<Toffset> && !std::is_pointer<AccessorTy>::value, simd<Tx, N> > sycl::_V1::ext::intel::esimd::atomic_update | ( | AccessorTy | acc, |
simd_view< Toffset, RegionTy > | offsets, | ||
simd< Tx, N > | src0, | ||
simd< Tx, N > | src1, | ||
simd_mask< N > | mask | ||
) |
A variation of atomic_update
API with offsets
represented as simd_view
object.
Op | The atomic operation - can be one of the following: atomic_op::cmpxchg , atomic_op::fcmpwr . |
Tx | The vector element type. |
N | The number of memory locations to update. |
AccessorTy | type of the SYCL accessor. |
acc | The SYCL accessor. |
offset | The simd_view of 32-bit or 64-bit offsets in bytes. 64-bit offsets are supported only when stateless memory accesses are enforced, i.e. accessor based accesses are automatically converted to stateless accesses. |
src0 | The first additional argument (new value). |
src1 | The second additional argument (expected value). |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
Definition at line 1637 of file memory.hpp.
__ESIMD_API std::enable_if_t<std::is_integral_v<Toffset> && !std::is_pointer<AccessorTy>::value, simd<Tx, N> > sycl::_V1::ext::intel::esimd::atomic_update | ( | AccessorTy | acc, |
simd_view< Toffset, RegionTy > | offsets, | ||
simd< Tx, N > | src0, | ||
simd_mask< N > | mask | ||
) |
A variation of atomic_update
API with offsets
represented as simd_view
object.
Op | The atomic operation - can be one of the following: atomic_op::add , atomic_op::sub , atomic_op::min , atomic_op::max , atomic_op::xchg , atomic_op::bit_and , atomic_op::bit_or , atomic_op::bit_xor , atomic_op::minsint , atomic_op::maxsint , atomic_op::fmax , atomic_op::fmin , atomic_op::store . |
Tx | The vector element type. |
N | The number of memory locations to update. |
AccessorTy | type of the SYCL accessor. |
acc | The SYCL accessor. |
offsets | The simd_view of 32-bit or 64-bit offsets in bytes. 64-bit offsets are supported only when stateless memory accesses are enforced, i.e. accessor based accesses are automatically converted to stateless accesses. |
src0 | The additional argument. |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
Definition at line 1417 of file memory.hpp.
__ESIMD_API std::enable_if_t<std::is_integral_v<Toffset> && !std::is_pointer<AccessorTy>::value, simd<Tx, N> > sycl::_V1::ext::intel::esimd::atomic_update | ( | AccessorTy | acc, |
simd_view< Toffset, RegionTy > | offsets, | ||
simd_mask< N > | mask | ||
) |
A variation of atomic_update
API with offsets
represented as simd_view
object.
Op | The atomic operation - can be atomic_op::inc or atomic_op::dec , atomic_op::load . |
Tx | The vector element type. |
N | The number of memory locations to update. |
AccessorTy | type of the SYCL accessor. |
acc | The SYCL accessor. |
offset | The simd_view of 32-bit or 64-bit offsets in bytes. 64-bit offsets are supported only when stateless memory accesses are enforced, i.e. accessor based accesses are automatically converted to stateless accesses. |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
Definition at line 1532 of file memory.hpp.
__ESIMD_API std::enable_if_t<std::is_integral_v<Toffset> && !std::is_pointer<AccessorTy>::value, simd<Tx, N> > sycl::_V1::ext::intel::esimd::atomic_update | ( | AccessorTy | acc, |
Toffset | offset, | ||
simd< Tx, N > | src0, | ||
simd< Tx, N > | src1, | ||
simd_mask< N > | mask | ||
) |
A variation of atomic_update
API with offsets
represented as scalar.
Op | The atomic operation - can be one of the following: atomic_op::cmpxchg , atomic_op::fcmpwr . |
Tx | The vector element type. |
N | The number of memory locations to update. |
AccessorTy | type of the SYCL accessor. |
acc | The SYCL accessor. |
offset | The scalar 32-bit or 64-bit offset in bytes. 64-bit offset are supported only when stateless memory accesses are enforced, i.e. accessor based accesses are automatically converted to stateless accesses. |
src0 | The first additional argument (new value). |
src1 | The second additional argument (expected value). |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
Definition at line 1666 of file memory.hpp.
__ESIMD_API std::enable_if_t< std::is_integral_v<Toffset> && !std::is_pointer<AccessorTy>::value && ((Op != atomic_op::store && Op != atomic_op::xchg) || N == 1), simd<Tx, N> > sycl::_V1::ext::intel::esimd::atomic_update | ( | AccessorTy | acc, |
Toffset | offset, | ||
simd< Tx, N > | src0, | ||
simd_mask< N > | mask | ||
) |
A variation of atomic_update
API with offset
represented as scalar object.
Op | The atomic operation - can be one of the following: atomic_op::add , atomic_op::sub , atomic_op::min , atomic_op::max , atomic_op::xchg , atomic_op::bit_and , atomic_op::bit_or , atomic_op::bit_xor , atomic_op::minsint , atomic_op::maxsint , atomic_op::fmax , atomic_op::fmin atomic_op::store . |
Tx | The vector element type. |
N | The number of memory locations to update. |
AccessorTy | type of the SYCL accessor. |
acc | The SYCL accessor. |
offset | The scalar 32-bit or 64-bit offset in bytes. 64-bit offset are supported only when stateless memory accesses are enforced, i.e. accessor based accesses are automatically converted to stateless accesses. |
src0 | The additional argument. |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
Definition at line 1449 of file memory.hpp.
__ESIMD_API std::enable_if_t<std::is_integral_v<Toffset> && !std::is_pointer<AccessorTy>::value, simd<Tx, N> > sycl::_V1::ext::intel::esimd::atomic_update | ( | AccessorTy | acc, |
Toffset | offset, | ||
simd_mask< N > | mask | ||
) |
A variation of atomic_update
API with offset
represented as scalar.
Op | The atomic operation - can be atomic_op::inc or atomic_op::dec , atomic_op::load . |
Tx | The vector element type. |
N | The number of memory locations to update. |
AccessorTy | type of the SYCL accessor. |
acc | The SYCL accessor. |
offset | The scalar 32-bit or 64-bit offset in bytes. 64-bit offset are supported only when stateless memory accesses are enforced, i.e. accessor based accesses are automatically converted to stateless accesses. |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
Definition at line 1559 of file memory.hpp.
__ESIMD_API simd<Tx, N> sycl::_V1::ext::intel::esimd::atomic_update | ( | Tx * | p, |
simd< Toffset, N > | offset, | ||
simd< Tx, N > | src0, | ||
simd< Tx, N > | src1, | ||
simd_mask< N > | mask | ||
) |
Atomically updates N
memory locations represented by a USM pointer and a vector of offsets relative to the pointer, and returns a vector of old values found at the memory locations before update. The update operation has 2 additional arguments.
Op | The atomic operation - can be one of the following: atomic_op::cmpxchg , atomic_op::fcmpwr . |
Tx | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
offset | The vector of 32-bit or 64-bit offsets in bytes. |
src0 | The first additional argument (new value). |
src1 | The second additional argument (expected value). |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
Definition at line 1259 of file memory.hpp.
__ESIMD_API simd<Tx, N> sycl::_V1::ext::intel::esimd::atomic_update | ( | Tx * | p, |
simd< Toffset, N > | offset, | ||
simd< Tx, N > | src0, | ||
simd_mask< N > | mask | ||
) |
Single-argument variant of the atomic update operation.
Atomically updates N
memory locations represented by a USM pointer and a vector of offsets relative to the pointer, and returns a vector of old values found at the memory locations before update. The update operation has 1 additional argument.
Op | The atomic operation - can be one of the following: atomic_op::add , atomic_op::sub , atomic_op::min , atomic_op::max , atomic_op::xchg , atomic_op::bit_and , atomic_op::bit_or , atomic_op::bit_xor , atomic_op::minsint , atomic_op::maxsint , atomic_op::fmax , atomic_op::fmin , atomic_op::store . |
Tx | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
offset | The vector of 32-bit or 64-bit offsets in bytes. |
src0 | The additional argument. |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
Definition at line 1069 of file memory.hpp.
References sycl::_V1::ext::oneapi::fmax(), and sycl::_V1::ext::oneapi::fmin().
__ESIMD_API simd<Tx, N> sycl::_V1::ext::intel::esimd::atomic_update | ( | Tx * | p, |
simd< Toffset, N > | offset, | ||
simd_mask< N > | mask | ||
) |
No-argument variant of the atomic update operation.
Atomically updates N
memory locations represented by a USM pointer and a vector of offsets relative to the pointer, and returns a vector of old values found at the memory locations before update. The update operation has no arguments in addition to the value at the memory location.
Op | The atomic operation - can be atomic_op::inc or atomic_op::dec , atomic_op::load . |
Tx | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
offset | The vector of 32-bit or 64-bit offsets in bytes. |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
Definition at line 1173 of file memory.hpp.
__ESIMD_API simd<Tx, N> sycl::_V1::ext::intel::esimd::atomic_update | ( | Tx * | p, |
simd_view< Toffset, RegionTy > | offsets, | ||
simd< Tx, N > | src0, | ||
simd< Tx, N > | src1, | ||
simd_mask< N > | mask | ||
) |
A variation of atomic_update
API with offsets
represented as simd_view
object.
Op | The atomic operation - can be one of the following: atomic_op::cmpxchg , atomic_op::fcmpwr . |
Tx | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
offset | The simd_view of 32-bit or 64-bit offsets in bytes. |
src0 | The first additional argument (new value). |
src1 | The second additional argument (expected value). |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
Definition at line 1297 of file memory.hpp.
__ESIMD_API simd<Tx, N> sycl::_V1::ext::intel::esimd::atomic_update | ( | Tx * | p, |
simd_view< Toffset, RegionTy > | offsets, | ||
simd< Tx, N > | src0, | ||
simd_mask< N > | mask | ||
) |
A variation of atomic_update
API with offsets
represented as simd_view
object.
Op | The atomic operation - can be one of the following: atomic_op::add , atomic_op::sub , atomic_op::min , atomic_op::max , atomic_op::xchg , atomic_op::bit_and , atomic_op::bit_or , atomic_op::bit_xor , atomic_op::minsint , atomic_op::maxsint , atomic_op::fmax , atomic_op::fmin , atomic_op::store . |
Tx | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
offset | The simd_view of 32-bit or 64-bit offsets in bytes. |
src0 | The additional argument. |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
Definition at line 1120 of file memory.hpp.
__ESIMD_API simd<Tx, N> sycl::_V1::ext::intel::esimd::atomic_update | ( | Tx * | p, |
simd_view< Toffset, RegionTy > | offsets, | ||
simd_mask< N > | mask = 1 |
||
) |
A variation of atomic_update
API with offsets
represented as simd_view
object.
Op | The atomic operation - can be atomic_op::inc or atomic_op::dec , atomic_op::load . |
Tx | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
offset | The simd_view of 32-bit or 64-bit offsets in bytes. |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
Definition at line 1213 of file memory.hpp.
__ESIMD_API std::enable_if_t<std::is_integral_v<Toffset>, simd<Tx, N> > sycl::_V1::ext::intel::esimd::atomic_update | ( | Tx * | p, |
Toffset | offset, | ||
simd< Tx, N > | src0, | ||
simd< Tx, N > | src1, | ||
simd_mask< N > | mask | ||
) |
A variation of atomic_update
API with offsets
represented as scalar.
Op | The atomic operation - can be one of the following: atomic_op::cmpxchg , atomic_op::fcmpwr . |
Tx | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
offset | The scalar 32-bit or 64-bit offset in bytes. |
src0 | The first additional argument (new value). |
src1 | The second additional argument (expected value). |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
Definition at line 1320 of file memory.hpp.
__ESIMD_API std::enable_if_t< std::is_integral_v<Toffset> && ((Op != atomic_op::store && Op != atomic_op::xchg) || N == 1), simd<Tx, N> > sycl::_V1::ext::intel::esimd::atomic_update | ( | Tx * | p, |
Toffset | offset, | ||
simd< Tx, N > | src0, | ||
simd_mask< N > | mask | ||
) |
A variation of atomic_update
API with offset
represented as scalar object.
Op | The atomic operation - can be one of the following: atomic_op::add , atomic_op::sub , atomic_op::min , atomic_op::max , atomic_op::xchg , atomic_op::bit_and , atomic_op::bit_or , atomic_op::bit_xor , atomic_op::minsint , atomic_op::maxsint , atomic_op::fmax , atomic_op::fmin atomic_op::store . |
Tx | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
offset | The scalar 32-bit or 64-bit offsets in bytes. |
src0 | The additional argument. |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
Definition at line 1149 of file memory.hpp.
__ESIMD_API std::enable_if_t<std::is_integral_v<Toffset>, simd<Tx, N> > sycl::_V1::ext::intel::esimd::atomic_update | ( | Tx * | p, |
Toffset | offset, | ||
simd_mask< N > | mask = 1 |
||
) |
A variation of atomic_update
API with offset
represented as scalar.
Op | The atomic operation - can be atomic_op::inc or atomic_op::dec , atomic_op::load . |
Tx | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
offset | The scalar 32-bit or 64-bit offset in bytes. |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
Definition at line 1235 of file memory.hpp.