DPC++ Runtime
Runtime libraries for oneAPI DPC++

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...

Collaboration diagram for Atomic memory access.:

Functions

template<atomic_op Op, typename T , int N, typename Toffset , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==0 &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, simd< Toffset, N > byte_offset, simd_mask< N > mask, PropertyListT props={})
 No-argument variant of the atomic update operation. More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==0 &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, simd< Toffset, N > byte_offset, PropertyListT props={})
 simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, props = {}); /// (usm-au0-2) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename RegionTy = region1d_t<Toffset, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==0 &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, simd_view< Toffset, RegionTy > offsets, simd_mask< N > mask, PropertyListT props={})
 simd<T, N> atomic_update(T *p, simd_view<Toffset, RegionTy> byte_offset, simd_mask<N> mask, props = {}); /// (usm-au0-3) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename RegionTy = region1d_t<Toffset, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==0 &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, simd_view< Toffset, RegionTy > byte_offset, PropertyListT props={})
 simd<T, N> atomic_update(T *p, simd_view<Toffset, RegionTy> byte_offset, props = {}); /// (usm-au0-4) More...
 
template<atomic_op Op, typename T , int N, typename Toffset >
__ESIMD_API std::enable_if_t< std::is_integral_v< Toffset >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, Toffset byte_offset, simd_mask< N > mask=1)
 A variation of atomic_update API with offset represented as scalar. More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==1 &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, simd< Toffset, N > byte_offset, simd< T, N > src0, simd_mask< N > mask, PropertyListT props={})
 Single-argument variant of the atomic update operation. More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==1 &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, simd< Toffset, N > byte_offset, simd< T, N > src0, PropertyListT props={})
 simd<T, N> atomic_update(T *ptr, simd<Toffset, N> byte_offset, simd<T, N> src0, props = {}); // (usm-au1-2) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==1 &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, simd< Toffset, N > byte_offset, simd_view< T, RegionTy > src0, simd_mask< N > mask, PropertyListT props={})
 simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd_view<T, RegionTy> src0, simd_mask<N> mask, props = {}); // (usm-au1-3) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==1 &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, simd< Toffset, N > byte_offset, simd_view< T, RegionTy > src0, PropertyListT props={})
 simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd_view<T, RegionTy> src0, props = {}); // (usm-au1-4) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename RegionTy = region1d_t<Toffset, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==1 &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, simd_view< Toffset, RegionTy > offsets, simd< T, N > src0, simd_mask< N > mask, PropertyListT props={})
 simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd<T, N> src0, simd_mask<N> mask, props = {}); // (usm-au1-5) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename RegionTy = region1d_t<Toffset, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==1 &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, simd_view< Toffset, RegionTy > offsets, simd< T, N > src0, PropertyListT props={})
 simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd<T, N> src0, props = {}); // (usm-au1-6) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename OffsetRegionTy = region1d_t<Toffset, N, 1>, typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==1 &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, simd_view< Toffset, OffsetRegionTy > offsets, simd_view< T, RegionTy > src0, simd_mask< N > mask, PropertyListT props={})
 simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd_view<T, RegionTy> src0, simd_mask<N> mask, props = {}); // (usm-au1-7) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename OffsetRegionTy = region1d_t<Toffset, N, 1>, typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==1 &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, simd_view< Toffset, OffsetRegionTy > offsets, simd_view< T, RegionTy > src0, PropertyListT props={})
 simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd_view<T, RegionTy> src0, props = {}); // (usm-au1-8) 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 byte_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 T , int N, typename Toffset , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==2 &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, simd< Toffset, N > byte_offset, simd< T, N > src0, simd< T, N > src1, simd_mask< N > mask, PropertyListT props={})
 simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd<T, N> src0, simd<T, N> src1, simd_mask<N> mask, props = {}); // (usm-au2-1) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==2 &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, simd< Toffset, N > byte_offset, simd< T, N > src0, simd< T, N > src1, PropertyListT props={})
 simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd<T, N> src0, simd<T, N> src1, props = {}); // (usm-au2-2) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==2 &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, simd< Toffset, N > byte_offset, simd< T, N > src0, simd_view< T, RegionTy > src1, simd_mask< N > mask, PropertyListT props={})
 simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd<T, N> src0, simd_view<T, RegionTy> src1, simd_mask<N> mask, props = {}) // (usm-au2-3) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==2 &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, simd< Toffset, N > byte_offset, simd< T, N > src0, simd_view< T, RegionTy > src1, PropertyListT props={})
 simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd<T, N> src0, simd_view<T, RegionTy> src1, props = {}) // (usm-au2-4) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==2 &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, simd< Toffset, N > byte_offset, simd_view< T, RegionTy > src0, simd< T, N > src1, simd_mask< N > mask, PropertyListT props={})
 simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd_view<T, RegionTy> src0, simd<T, N> src1, simd_mask<N> mask, props = {}) // (usm-au2-5) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==2 &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, simd< Toffset, N > byte_offset, simd_view< T, RegionTy > src0, simd< T, N > src1, PropertyListT props={})
 simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd_view<T, RegionTy> src0, simd<T, N> src1, props = {}) // (usm-au2-6) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==2 &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, simd< Toffset, N > byte_offset, simd_view< T, RegionTy > src0, simd_view< T, RegionTy > src1, simd_mask< N > mask, PropertyListT props={})
 simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd_view<T, RegionTy> src0, simd_view<T, RegionTy> src1, simd_mask<N> mask, props = {}) // (usm-au2-7) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==2 &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, simd< Toffset, N > byte_offset, simd_view< T, RegionTy > src0, simd_view< T, RegionTy > src1, PropertyListT props={})
 simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd_view<T, RegionTy> src0, simd_view<T, RegionTy> src1, props = {}) // (usm-au2-8) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename OffsetRegionTy = region1d_t<Toffset, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==2 &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, simd_view< Toffset, OffsetRegionTy > byte_offset, simd< T, N > src0, simd< T, N > src1, simd_mask< N > mask, PropertyListT props={})
 simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd<T, N> src0, simd<T, N> src1, simd_mask<N> mask, props = {}) // (usm-au2-9) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename OffsetRegionTy = region1d_t<Toffset, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==2 &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, simd_view< Toffset, OffsetRegionTy > byte_offset, simd< T, N > src0, simd< T, N > src1, PropertyListT props={})
 simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd<T, N> src0, simd<T, N> src1, props = {}) // (usm-au2-10) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename OffsetRegionTy = region1d_t<Toffset, N, 1>, typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==2 &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, simd_view< Toffset, OffsetRegionTy > byte_offset, simd< T, N > src0, simd_view< T, RegionTy > src1, simd_mask< N > mask, PropertyListT props={})
 simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd<T, N> src0, simd_view<T, RegionTy> src1, simd_mask<N> mask, props = {}) // (usm-au2-11) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename OffsetRegionTy = region1d_t<Toffset, N, 1>, typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==2 &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, simd_view< Toffset, OffsetRegionTy > byte_offset, simd< T, N > src0, simd_view< T, RegionTy > src1, PropertyListT props={})
 simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd<T, N> src0, simd_view<T, RegionTy> src1, props = {}) // (usm-au2-12) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename OffsetRegionTy = region1d_t<Toffset, N, 1>, typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==2 &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, simd_view< Toffset, OffsetRegionTy > byte_offset, simd_view< T, RegionTy > src0, simd< T, N > src1, simd_mask< N > mask, PropertyListT props={})
 simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd_view<T, RegionTy> src0, simd<T, N> src1, simd_mask<N> mask, props = {}) // (usm-au2-13) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename OffsetRegionTy = region1d_t<Toffset, N, 1>, typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==2 &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, simd_view< Toffset, OffsetRegionTy > byte_offset, simd_view< T, RegionTy > src0, simd< T, N > src1, PropertyListT props={})
 simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd_view<T, RegionTy> src0, simd<T, N> src1, props = {}) // (usm-au2-14) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename OffsetRegionTy = region1d_t<Toffset, N, 1>, typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==2 &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, simd_view< Toffset, OffsetRegionTy > byte_offset, simd_view< T, RegionTy > src0, simd_view< T, RegionTy > src1, simd_mask< N > mask, PropertyListT props={})
 simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd_view<T, RegionTy> src0, simd_view<T, RegionTy> src1, simd_mask<N> mask, props = {}) // (usm-au2-15) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename OffsetRegionTy = region1d_t<Toffset, N, 1>, typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==2 &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (T *p, simd_view< Toffset, OffsetRegionTy > byte_offset, simd_view< T, RegionTy > src0, simd_view< T, RegionTy > src1, PropertyListT props={})
 simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd_view<T, RegionTy> src0, simd_view<T, RegionTy> src1, props = {}) // (usm-au2-16) 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 byte_offset, simd< Tx, N > src0, simd< Tx, N > src1, simd_mask< N > mask)
 A variation of atomic_update API with byte_offset represented as scalar. More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename AccessorTy , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API __ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==0 &&std::is_integral_v< Toffset > &&sycl::detail::acc_properties::is_accessor_v< AccessorTy > &&!sycl::detail::acc_properties::is_local_accessor_v< AccessorTy > &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (AccessorTy acc, simd< Toffset, N > byte_offset, simd_mask< N > mask, PropertyListT props={})
 No-argument variant of the atomic update operation. More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename AccessorTy , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API __ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==0 &&std::is_integral_v< Toffset > &&sycl::detail::acc_properties::is_accessor_v< AccessorTy > &&!sycl::detail::acc_properties::is_local_accessor_v< AccessorTy > &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (AccessorTy acc, simd< Toffset, N > byte_offset, PropertyListT props={})
 simd<T, N> atomic_update(AccessorT acc, simd<Toffset, N> byte_offset, props = {}); /// (acc-au0-2) A variation of atomic_update API without mask operand More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename AccessorTy , typename RegionTy = region1d_t<Toffset, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==0 &&!std::is_pointer_v< AccessorTy > &&!sycl::detail::acc_properties::is_local_accessor_v< AccessorTy > &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (AccessorTy acc, simd_view< Toffset, RegionTy > byte_offset, simd_mask< N > mask, PropertyListT props={})
 simd<T, N> atomic_update(AccessorT acc, simd_view<Toffset, RegionTy> byte_offset, simd_mask<N> mask, props = {}); /// (acc-au0-3) A variation of atomic_update API with offsets represented as simd_view object. More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename AccessorTy , typename RegionTy = region1d_t<Toffset, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==0 &&!std::is_pointer_v< AccessorTy > &&!sycl::detail::acc_properties::is_local_accessor_v< AccessorTy > &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (AccessorTy acc, simd_view< Toffset, RegionTy > byte_offset, PropertyListT props={})
 simd<T, N> atomic_update(AccessorT acc, simd_view<Toffset, RegionTy> byte_offset, props = {}); /// (acc-au0-4) A variation of atomic_update API with offsets represented as simd_view object and no mask operand. More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename AccessorTy >
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==0 &&std::is_integral_v< Toffset > &&!std::is_pointer_v< AccessorTy >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (AccessorTy acc, Toffset byte_offset, simd_mask< N > mask)
 A variation of atomic_update API with offset represented as scalar. More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename AccessorTy , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==1 &&std::is_integral_v< Toffset > &&sycl::detail::acc_properties::is_accessor_v< AccessorTy > &&!sycl::detail::acc_properties::is_local_accessor_v< AccessorTy > &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (AccessorTy acc, simd< Toffset, N > byte_offset, simd< T, N > src0, simd_mask< N > mask, PropertyListT props={})
 Single-argument variant of the atomic update operation. More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename AccessorTy , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==1 &&std::is_integral_v< Toffset > &&sycl::detail::acc_properties::is_accessor_v< AccessorTy > &&!sycl::detail::acc_properties::is_local_accessor_v< AccessorTy > &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (AccessorTy acc, simd< Toffset, N > byte_offset, simd< T, N > src0, PropertyListT props={})
 simd<T, N> atomic_update(AccessorT acc, simd<Toffset, N> byte_offset, simd<T, N> src0, props = {}); // (acc-au1-2) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename RegionTy = region1d_t<Toffset, N, 1>, typename AccessorTy , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==1 &&std::is_integral_v< Toffset > &&sycl::detail::acc_properties::is_accessor_v< AccessorTy > &&!sycl::detail::acc_properties::is_local_accessor_v< AccessorTy > &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (AccessorTy acc, simd< Toffset, N > byte_offset, simd_view< T, RegionTy > src0, simd_mask< N > mask, PropertyListT props={})
 simd<T, N> atomic_update(AccessorT acc, simd<Toffset, N> byte_offset, simd_view<T, RegionTy> src0, simd_mask<N> mask, props = {}); // (acc-au1-3) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename RegionTy = region1d_t<Toffset, N, 1>, typename AccessorTy , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==1 &&std::is_integral_v< Toffset > &&sycl::detail::acc_properties::is_accessor_v< AccessorTy > &&!sycl::detail::acc_properties::is_local_accessor_v< AccessorTy > &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (AccessorTy acc, simd< Toffset, N > byte_offset, simd_view< T, RegionTy > src0, PropertyListT props={})
 simd<T, N> atomic_update(AccessorT acc, simd<Toffset, N> byte_offset, simd_view<T, RegionTy> src0, props = {}); // (acc-au1-4) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename AccessorTy , typename RegionTy = region1d_t<Toffset, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==1 &&!std::is_pointer_v< AccessorTy > &&!sycl::detail::acc_properties::is_local_accessor_v< AccessorTy > &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (AccessorTy acc, simd_view< Toffset, RegionTy > byte_offset, simd< T, N > src0, simd_mask< N > mask, PropertyListT props={})
 simd<T, N> atomic_update(AccessorT acc, simd_view<Toffset, OffsetRegionTy> byte_offset, simd<T, N> src0, simd_mask<N> mask, props = {}); // (acc-au1-5) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename AccessorTy , typename RegionTy = region1d_t<Toffset, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==1 &&!std::is_pointer_v< AccessorTy > &&!sycl::detail::acc_properties::is_local_accessor_v< AccessorTy > &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (AccessorTy acc, simd_view< Toffset, RegionTy > byte_offset, simd< T, N > src0, PropertyListT props={})
 simd<T, N> atomic_update(AccessorT acc, simd_view<Toffset, OffsetRegionTy> byte_offset, simd<T, N> src0, props = {}); // (acc-au1-6) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename AccessorTy , typename OffsetRegionTy = region1d_t<Toffset, N, 1>, typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==1 &&!std::is_pointer_v< AccessorTy > &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (AccessorTy acc, simd_view< Toffset, OffsetRegionTy > byte_offset, simd_view< T, RegionTy > src0, simd_mask< N > mask, PropertyListT props={})
 simd<T, N> atomic_update(AccessorT acc, simd_view<Toffset, OffsetRegionTy> byte_offset, simd_view<T, RegionTy> src0, simd_mask<N> mask, props = {}); // (acc-au1-7) More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename AccessorTy , typename OffsetRegionTy = region1d_t<Toffset, N, 1>, typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==1 &&!std::is_pointer_v< AccessorTy > &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (AccessorTy acc, simd_view< Toffset, OffsetRegionTy > byte_offset, simd_view< T, RegionTy > src0, PropertyListT props={})
 simd<T, N> atomic_update(AccessorT acc, simd_view<Toffset, OffsetRegionTy> byte_offset, simd_view<T, RegionTy> src0, props = {}); // (acc-au1-8) 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_v< AccessorTy > &&((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 T , int N, typename Toffset , typename AccessorTy , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==2 &&std::is_integral_v< Toffset > &&__ESIMD_DNS::is_rw_device_accessor_v< AccessorTy > &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (AccessorTy acc, simd< Toffset, N > byte_offset, simd< T, N > src0, simd< T, N > src1, simd_mask< N > mask, PropertyListT props={})
 Two-argument variant of the atomic update operation. More...
 
template<atomic_op Op, typename T , int N, typename Toffset , typename AccessorTy , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==2 &&__ESIMD_DNS::is_rw_device_accessor_v< AccessorTy > &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (AccessorTy acc, simd< Toffset, N > byte_offset, simd< T, N > src0, simd< T, N > src1, PropertyListT props={})
 simd<T, N> atomic_update(AccessorTy acc, simd<Toffset, N> byte_offset, simd<T, N> src0, simd<T, N> src1, props = {}); // (acc-au2-2) More...
 
template<atomic_op Op, typename T , int N, typename OffsetObjT , typename AccessorTy , typename OffsetRegionTy , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==2 &&__ESIMD_DNS::is_rw_device_accessor_v< AccessorTy > &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (AccessorTy acc, simd_view< OffsetObjT, OffsetRegionTy > byte_offset, simd< T, N > src0, simd< T, N > src1, simd_mask< N > mask, PropertyListT props={})
 simd<T, N> atomic_update(AccessorTy acc, simd_view<OffsetObjT, OffsetRegionTy> byte_offset, simd<T, N> src0, simd<T, N> src1, simd_mask<N> mask, props = {}); // (acc-au2-3) More...
 
template<atomic_op Op, typename T , int N, typename OffsetObjT , typename AccessorTy , typename OffsetRegionTy , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args< Op >)==2 &&__ESIMD_DNS::is_rw_device_accessor_v< AccessorTy > &&ext::oneapi::experimental::is_property_list_v< PropertyListT >, simd< T, N > > sycl::_V1::ext::intel::esimd::atomic_update (AccessorTy acc, simd_view< OffsetObjT, OffsetRegionTy > byte_offset, simd< T, N > src0, simd< T, N > src1, PropertyListT props={})
 simd<T, N> atomic_update(AccessorTy acc, simd_view<OffsetObjT, OffsetRegionTy>, byte_offset, simd<T, N> src0, simd<T, N> src1, props = {}); // (acc-au2-4) 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_v< AccessorTy >, 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...
 

Detailed Description

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).

Function Documentation

◆ atomic_update() [1/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename AccessorTy , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API __ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 0 && std::is_integral_v<Toffset> && sycl::detail::acc_properties::is_accessor_v<AccessorTy> && !sycl::detail::acc_properties::is_local_accessor_v<AccessorTy> && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( AccessorTy  acc,
simd< Toffset, N >  byte_offset,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(AccessorT acc, simd<Toffset, N> byte_offset, props = {}); /// (acc-au0-2) A variation of atomic_update API without mask operand

Template Parameters
OpThe atomic operation - can be atomic_op::inc, atomic_op::dec, or atomic_op::load.
TThe vector element type.
NThe number of memory locations to update.
AccessorTytype of the SYCL accessor.
Parameters
accThe SYCL accessor.
byte_offsetThe 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.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 5803 of file memory.hpp.

◆ atomic_update() [2/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename AccessorTy , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 1 && std::is_integral_v<Toffset> && sycl::detail::acc_properties::is_accessor_v<AccessorTy> && !sycl::detail::acc_properties::is_local_accessor_v<AccessorTy> && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( AccessorTy  acc,
simd< Toffset, N >  byte_offset,
simd< T, N >  src0,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(AccessorT acc, simd<Toffset, N> byte_offset, simd<T, N> src0, props = {}); // (acc-au1-2)

A variation of atomic_update API with no mask operand.

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.

Template Parameters
OpThe 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::fadd, atomic_op::fsub, atomic_op::store.
TThe vector element type.
NThe number of memory locations to update.
AccessorTytype of the SYCL accessor.
Parameters
accThe SYCL accessor.
byte_offsetThe 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.
src0The additional argument.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 6077 of file memory.hpp.

◆ atomic_update() [3/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename AccessorTy , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 2 && __ESIMD_DNS::is_rw_device_accessor_v<AccessorTy> && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( AccessorTy  acc,
simd< Toffset, N >  byte_offset,
simd< T, N >  src0,
simd< T, N >  src1,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(AccessorTy acc, simd<Toffset, N> byte_offset, simd<T, N> src0, simd<T, N> src1, props = {}); // (acc-au2-2)

A variation of atomic_update API with no mask operand.

Template Parameters
OpThe atomic operation - can be one of the following: atomic_op::cmpxchg, atomic_op::fcmpxchg.
TThe vector element type.
NThe number of memory locations to update.
Parameters
accThe SYCL accessor.
byte_offsetThe vector of 32-bit or 64-bit offsets in bytes.
src0The first additional argument (new value).
src1The second additional argument (expected value).
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 6531 of file memory.hpp.

◆ atomic_update() [4/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename AccessorTy , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 2 && std::is_integral_v<Toffset> && __ESIMD_DNS::is_rw_device_accessor_v<AccessorTy> && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( AccessorTy  acc,
simd< Toffset, N >  byte_offset,
simd< T, N >  src0,
simd< T, N >  src1,
simd_mask< N >  mask,
PropertyListT  props = {} 
)

Two-argument variant of the atomic update operation.

simd<T, N> atomic_update(AccessorTy acc, simd<Toffset, N> byte_offset, simd<T, N> src0, simd<T, N> src1, simd<T, N> atomic_update(AccessorTy acc, simd<Toffset, N> byte_offset, simd<T, N> src0, simd<T, N> src1, props = {}); // (acc-au2-2) simd<T, N> atomic_update(AccessorTy acc, simd_view<OffsetObjT, OffsetRegionTy> byte_offset, simd<T, N> src0, simd<T, N> src1, simd_mask<N> mask, props = {}); // (acc-au2-3)

simd<T, N> atomic_update(AccessorTy acc, simd_view<OffsetObjT, OffsetRegionTy>, byte_offset, simd<T, N> src0, simd<T, N> src1, props = {}); // (acc-au2-4)

simd<T, N> atomic_update(AccessorTy acc, simd<Toffset, N> byte_offset, simd<T, N> src0, simd<T, N> src1, 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.

Template Parameters
OpThe atomic operation - can be one of the following: atomic_op::cmpxchg, atomic_op::fcmpxchg.
TThe vector element type.
NThe number of memory locations to update.
AccessorTytype of the SYCL accessor.
Parameters
accThe SYCL accessor.
byte_offsetThe 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.
src0The first additional argument (new value).
src1The second additional argument (expected value).
maskOperation mask, only locations with non-zero in the corresponding mask element are updated.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 6459 of file memory.hpp.

◆ atomic_update() [5/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename AccessorTy , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 1 && std::is_integral_v<Toffset> && sycl::detail::acc_properties::is_accessor_v<AccessorTy> && !sycl::detail::acc_properties::is_local_accessor_v<AccessorTy> && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( AccessorTy  acc,
simd< Toffset, N >  byte_offset,
simd< T, N >  src0,
simd_mask< N >  mask,
PropertyListT  props = {} 
)

Single-argument variant of the atomic update operation.

simd<T, N> atomic_update(AccessorT acc, simd<Toffset, N> byte_offset, simd<T, N> src0, simd_mask<N> mask, props = {});//(acc-au1-1) simd<T, N> atomic_update(AccessorT acc, simd<Toffset, N> byte_offset, simd<T, N> src0, props = {}); // (acc-au1-2)

simd<T, N> atomic_update(AccessorT acc, simd<Toffset, N> byte_offset, simd_view<T, RegionTy> src0, simd_mask<N> mask, props = {}); // (acc-au1-3) simd<T, N> atomic_update(AccessorT acc, simd<Toffset, N> byte_offset, simd_view<T, RegionTy> src0, props = {}); // (acc-au1-4)

simd<T, N> atomic_update(AccessorT acc, simd_view<Toffset, OffsetRegionTy> byte_offset, simd<T, N> src0, simd_mask<N> mask, props = {}); // (acc-au1-5) simd<T, N> atomic_update(AccessorT acc, simd_view<Toffset, OffsetRegionTy> byte_offset, simd<T, N> src0, props = {}); // (acc-au1-6)

simd<T, N> atomic_update(AccessorT acc, simd_view<Toffset, OffsetRegionTy> byte_offset, simd_view<T, RegionTy> src0, simd_mask<N> mask, props = {}); // (acc-au1-7) simd<T, N> atomic_update(AccessorT acc, simd_view<Toffset, OffsetRegionTy> byte_offset, simd_view<T, RegionTy> src0, props = {}); // (acc-au1-8)

simd<T, N> atomic_update(AccessorT acc, simd<Toffset, N> byte_offset, simd<T, N> src0, simd_mask<N> mask, props = {});//(acc-au1-1)

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.

Template Parameters
OpThe 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::fadd, atomic_op::fsub, atomic_op::store.
TThe vector element type.
NThe number of memory locations to update.
AccessorTytype of the SYCL accessor.
Parameters
accThe SYCL accessor.
byte_offsetThe 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.
src0The additional argument.
maskOperation mask, only locations with non-zero in the corresponding mask element are updated.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 5987 of file memory.hpp.

◆ atomic_update() [6/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename AccessorTy , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API __ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 0 && std::is_integral_v<Toffset> && sycl::detail::acc_properties::is_accessor_v<AccessorTy> && !sycl::detail::acc_properties::is_local_accessor_v<AccessorTy> && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( AccessorTy  acc,
simd< Toffset, N >  byte_offset,
simd_mask< N >  mask,
PropertyListT  props = {} 
)

No-argument variant of the atomic update operation.

simd<T, N> atomic_update(AccessorT acc, simd<Toffset, N> byte_offset, simd_mask<N> mask, props = {}); /// (acc-au0-1) simd<T, N> atomic_update(AccessorT acc, simd<Toffset, N> byte_offset, props = {}); /// (acc-au0-2) simd<T, N> atomic_update(AccessorT acc, simd_view<Toffset, RegionTy> byte_offset, simd_mask<N> mask, props = {}); /// (acc-au0-3) simd<T, N> atomic_update(AccessorT acc, simd_view<Toffset, RegionTy> byte_offset, props = {}); /// (acc-au0-4)

Usage of cache hints or non-standard operation width N requires DG2 or PVC.

simd<T, N> atomic_update(AccessorT acc, simd<Toffset, N> byte_offset, simd_mask<N> mask, props = {}); /// (acc-au0-1)

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.

Template Parameters
OpThe atomic operation - can be atomic_op::inc, atomic_op::dec, or atomic_op::load.
TThe vector element type.
NThe number of memory locations to update.
AccessorTytype of the SYCL accessor.
Parameters
accThe SYCL accessor.
byte_offsetThe 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.
maskOperation mask, only locations with non-zero in the corresponding mask element are updated.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 5725 of file memory.hpp.

◆ atomic_update() [7/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename RegionTy = region1d_t<Toffset, N, 1>, typename AccessorTy , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 1 && std::is_integral_v<Toffset> && sycl::detail::acc_properties::is_accessor_v<AccessorTy> && !sycl::detail::acc_properties::is_local_accessor_v<AccessorTy> && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( AccessorTy  acc,
simd< Toffset, N >  byte_offset,
simd_view< T, RegionTy >  src0,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(AccessorT acc, simd<Toffset, N> byte_offset, simd_view<T, RegionTy> src0, props = {}); // (acc-au1-4)

A variation of atomic_update API with src0 represented as simd_view object and no mask operand.

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.

Template Parameters
OpThe 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::fadd, atomic_op::fsub, atomic_op::store.
TThe vector element type.
NThe number of memory locations to update.
AccessorTytype of the SYCL accessor.
Parameters
accThe SYCL accessor.
byte_offsetThe 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.
src0The additional argument.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 6177 of file memory.hpp.

◆ atomic_update() [8/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename RegionTy = region1d_t<Toffset, N, 1>, typename AccessorTy , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 1 && std::is_integral_v<Toffset> && sycl::detail::acc_properties::is_accessor_v<AccessorTy> && !sycl::detail::acc_properties::is_local_accessor_v<AccessorTy> && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( AccessorTy  acc,
simd< Toffset, N >  byte_offset,
simd_view< T, RegionTy >  src0,
simd_mask< N >  mask,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(AccessorT acc, simd<Toffset, N> byte_offset, simd_view<T, RegionTy> src0, simd_mask<N> mask, props = {}); // (acc-au1-3)

A variation of atomic_update API with src0 represented as simd_view object.

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.

Template Parameters
OpThe 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::fadd, atomic_op::fsub, atomic_op::store.
TThe vector element type.
NThe number of memory locations to update.
AccessorTytype of the SYCL accessor.
Parameters
accThe SYCL accessor.
byte_offsetThe 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.
src0The additional argument.
maskOperation mask, only locations with non-zero in the corresponding mask element are updated.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 6128 of file memory.hpp.

◆ atomic_update() [9/50]

template<atomic_op Op, typename T , int N, typename OffsetObjT , typename AccessorTy , typename OffsetRegionTy , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 2 && __ESIMD_DNS::is_rw_device_accessor_v<AccessorTy> && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( AccessorTy  acc,
simd_view< OffsetObjT, OffsetRegionTy >  byte_offset,
simd< T, N >  src0,
simd< T, N >  src1,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(AccessorTy acc, simd_view<OffsetObjT, OffsetRegionTy>, byte_offset, simd<T, N> src0, simd<T, N> src1, props = {}); // (acc-au2-4)

A variation of atomic_update API with byte_offset represented as a simd_view object and no mask operand.

Template Parameters
OpThe atomic operation - can be one of the following: atomic_op::cmpxchg, atomic_op::fcmpxchg.
TThe vector element type.
NThe number of memory locations to update.
Parameters
accThe SYCL accessor.
byte_offsetThe vector of 32-bit or 64-bit offsets in bytes.
src0The first additional argument (new value).
src1The second additional argument (expected value).
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 6606 of file memory.hpp.

◆ atomic_update() [10/50]

template<atomic_op Op, typename T , int N, typename OffsetObjT , typename AccessorTy , typename OffsetRegionTy , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 2 && __ESIMD_DNS::is_rw_device_accessor_v<AccessorTy> && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( AccessorTy  acc,
simd_view< OffsetObjT, OffsetRegionTy >  byte_offset,
simd< T, N >  src0,
simd< T, N >  src1,
simd_mask< N >  mask,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(AccessorTy acc, simd_view<OffsetObjT, OffsetRegionTy> byte_offset, simd<T, N> src0, simd<T, N> src1, simd_mask<N> mask, props = {}); // (acc-au2-3)

A variation of atomic_update API with byte_offset represented as a simd_view object.

Template Parameters
OpThe atomic operation - can be one of the following: atomic_op::cmpxchg, atomic_op::fcmpxchg.
TThe vector element type.
NThe number of memory locations to update.
Parameters
accThe SYCL accessor.
byte_offsetThe vector of 32-bit or 64-bit offsets in bytes.
src0The first additional argument (new value).
src1The second additional argument (expected value).
maskOperation mask, only locations with non-zero in the corresponding mask element are updated.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 6569 of file memory.hpp.

◆ atomic_update() [11/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename AccessorTy , typename OffsetRegionTy = region1d_t<Toffset, N, 1>, typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 1 && !std::is_pointer_v<AccessorTy> && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( AccessorTy  acc,
simd_view< Toffset, OffsetRegionTy >  byte_offset,
simd_view< T, RegionTy >  src0,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(AccessorT acc, simd_view<Toffset, OffsetRegionTy> byte_offset, simd_view<T, RegionTy> src0, props = {}); // (acc-au1-8)

A variation of atomic_update API with byte_offset and src0 represented as simd_view objects and no mask operand.

Template Parameters
OpThe 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::fadd, atomic_op::fsub, atomic_op::store.
TThe vector element type.
NThe number of memory locations to update.
AccessorTytype of the SYCL accessor.
Parameters
accThe SYCL accessor.
byte_offsetThe 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.
src0The additional argument.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 6359 of file memory.hpp.

◆ atomic_update() [12/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename AccessorTy , typename OffsetRegionTy = region1d_t<Toffset, N, 1>, typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 1 && !std::is_pointer_v<AccessorTy> && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( AccessorTy  acc,
simd_view< Toffset, OffsetRegionTy >  byte_offset,
simd_view< T, RegionTy >  src0,
simd_mask< N >  mask,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(AccessorT acc, simd_view<Toffset, OffsetRegionTy> byte_offset, simd_view<T, RegionTy> src0, simd_mask<N> mask, props = {}); // (acc-au1-7)

A variation of atomic_update API with byte_offset and src0 represented as simd_view objects.

Template Parameters
OpThe 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::fadd, atomic_op::fsub, atomic_op::store.
TThe vector element type.
NThe number of memory locations to update.
AccessorTytype of the SYCL accessor.
Parameters
accThe SYCL accessor.
byte_offsetThe 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.
src0The additional argument.
maskOperation mask, only locations with non-zero in the corresponding mask element are updated.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 6313 of file memory.hpp.

◆ atomic_update() [13/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename AccessorTy , typename RegionTy = region1d_t<Toffset, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 0 && !std::is_pointer_v<AccessorTy> && !sycl::detail::acc_properties::is_local_accessor_v<AccessorTy> && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( AccessorTy  acc,
simd_view< Toffset, RegionTy >  byte_offset,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(AccessorT acc, simd_view<Toffset, RegionTy> byte_offset, props = {}); /// (acc-au0-4) A variation of atomic_update API with offsets represented as simd_view object and no mask operand.

Template Parameters
OpThe atomic operation - can be atomic_op::inc, atomic_op::dec, or atomic_op::load.
TThe vector element type.
NThe number of memory locations to update.
AccessorTytype of the SYCL accessor.
Parameters
accThe SYCL accessor.
byte_offsetThe 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.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 5875 of file memory.hpp.

◆ atomic_update() [14/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename AccessorTy , typename RegionTy = region1d_t<Toffset, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 1 && !std::is_pointer_v<AccessorTy> && !sycl::detail::acc_properties::is_local_accessor_v<AccessorTy> && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( AccessorTy  acc,
simd_view< Toffset, RegionTy >  byte_offset,
simd< T, N >  src0,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(AccessorT acc, simd_view<Toffset, OffsetRegionTy> byte_offset, simd<T, N> src0, props = {}); // (acc-au1-6)

A variation of atomic_update API with byte_offset represented as simd_view object and no mask operand.

Template Parameters
OpThe 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::fadd, atomic_op::fsub, atomic_op::store.
TThe vector element type.
NThe number of memory locations to update.
AccessorTytype of the SYCL accessor.
Parameters
accThe SYCL accessor.
byte_offsetThe 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.
src0The additional argument.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 6266 of file memory.hpp.

◆ atomic_update() [15/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename AccessorTy , typename RegionTy = region1d_t<Toffset, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 1 && !std::is_pointer_v<AccessorTy> && !sycl::detail::acc_properties::is_local_accessor_v<AccessorTy> && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( AccessorTy  acc,
simd_view< Toffset, RegionTy >  byte_offset,
simd< T, N >  src0,
simd_mask< N >  mask,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(AccessorT acc, simd_view<Toffset, OffsetRegionTy> byte_offset, simd<T, N> src0, simd_mask<N> mask, props = {}); // (acc-au1-5)

A variation of atomic_update API with byte_offset represented as simd_view object.

Template Parameters
OpThe 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::fadd, atomic_op::fsub, atomic_op::store.
TThe vector element type.
NThe number of memory locations to update.
AccessorTytype of the SYCL accessor.
Parameters
accThe SYCL accessor.
byte_offsetThe 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.
src0The additional argument.
maskOperation mask, only locations with non-zero in the corresponding mask element are updated.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 6223 of file memory.hpp.

◆ atomic_update() [16/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename AccessorTy , typename RegionTy = region1d_t<Toffset, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 0 && !std::is_pointer_v<AccessorTy> && !sycl::detail::acc_properties::is_local_accessor_v<AccessorTy> && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( AccessorTy  acc,
simd_view< Toffset, RegionTy >  byte_offset,
simd_mask< N >  mask,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(AccessorT acc, simd_view<Toffset, RegionTy> byte_offset, simd_mask<N> mask, props = {}); /// (acc-au0-3) A variation of atomic_update API with offsets represented as simd_view object.

Template Parameters
OpThe atomic operation - can be atomic_op::inc, atomic_op::dec, or atomic_op::load.
TThe vector element type.
NThe number of memory locations to update.
AccessorTytype of the SYCL accessor.
Parameters
accThe SYCL accessor.
byte_offsetThe 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.
maskOperation mask, only locations with non-zero in the corresponding mask element are updated.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 5842 of file memory.hpp.

◆ atomic_update() [17/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename AccessorTy >
__ESIMD_API std::enable_if_t<__ESIMD_DNS::get_num_args<Op>) == 0 && std::is_integral_v<Toffset> && !std::is_pointer_v<AccessorTy>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( AccessorTy  acc,
Toffset  byte_offset,
simd_mask< N >  mask 
)

A variation of atomic_update API with offset represented as scalar.

Template Parameters
OpThe atomic operation - can be atomic_op::inc, atomic_op::dec, or atomic_op::load.
TThe vector element type.
NThe number of memory locations to update.
AccessorTytype of the SYCL accessor.
Parameters
accThe SYCL accessor.
byte_offsetThe 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.
maskOperation mask, only locations with non-zero in the corresponding mask element are updated.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 5905 of file memory.hpp.

◆ atomic_update() [18/50]

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_v<AccessorTy>, 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.

Template Parameters
OpThe atomic operation - can be one of the following: atomic_op::cmpxchg, atomic_op::fcmpxchg.
TxThe vector element type.
NThe number of memory locations to update.
AccessorTytype of the SYCL accessor.
Parameters
accThe SYCL accessor.
offsetThe 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.
src0The first additional argument (new value).
src1The second additional argument (expected value).
maskOperation mask, only locations with non-zero in the corresponding mask element are updated.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 6637 of file memory.hpp.

References sycl::_V1::ext::intel::esimd::src0, and sycl::_V1::ext::intel::esimd::src1.

◆ atomic_update() [19/50]

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_v<AccessorTy> && ((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.

Template Parameters
OpThe 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.
TxThe vector element type.
NThe number of memory locations to update.
AccessorTytype of the SYCL accessor.
Parameters
accThe SYCL accessor.
offsetThe 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.
src0The additional argument.
maskOperation mask, only locations with non-zero in the corresponding mask element are updated.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 6393 of file memory.hpp.

References sycl::_V1::ext::intel::esimd::src0.

◆ atomic_update() [20/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 0 && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
simd< Toffset, N >  byte_offset,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, props = {}); /// (usm-au0-2)

A variation of atomic_update API without mask operand.

Template Parameters
OpThe atomic operation - can be atomic_op::inc, atomic_op::dec, or atomic_op::load.
TThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe vector of 32-bit or 64-bit offsets in bytes (zero-based).
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 4472 of file memory.hpp.

◆ atomic_update() [21/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 1 && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
simd< Toffset, N >  byte_offset,
simd< T, N >  src0,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(T *ptr, simd<Toffset, N> byte_offset, simd<T, N> src0, props = {}); // (usm-au1-2)

A variation of atomic_update API without mask operand.

Template Parameters
OpThe 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::fadd, atomic_op::fsub, atomic_op::store.
TThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe vector of 32-bit or 64-bit offsets in bytes.
src0The additional argument.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 4714 of file memory.hpp.

◆ atomic_update() [22/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 2 && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
simd< Toffset, N >  byte_offset,
simd< T, N >  src0,
simd< T, N >  src1,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd<T, N> src0, simd<T, N> src1, props = {}); // (usm-au2-2)

Template Parameters
OpThe atomic operation - can be one of the following: atomic_op::cmpxchg, atomic_op::fcmpxchg.
TThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe vector of 32-bit or 64-bit offsets in bytes.
src0The first additional argument (new value).
src1The second additional argument (expected value).
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 5157 of file memory.hpp.

◆ atomic_update() [23/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 2 && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
simd< Toffset, N >  byte_offset,
simd< T, N >  src0,
simd< T, N >  src1,
simd_mask< N >  mask,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd<T, N> src0, simd<T, N> src1, simd_mask<N> mask, props = {}); // (usm-au2-1)

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.

simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd<T, N> src0, simd<T, N> src1, simd_mask<N> mask, props = {}); // (usm-au2-1) simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd<T, N> src0, simd<T, N> src1, props = {}); // (usm-au2-2)

simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd<T, N> src0, simd_view<T, RegionTy> src1, simd_mask<N> mask, props = {}) // (usm-au2-3) simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd<T, N> src0, simd_view<T, RegionTy> src1, props = {}) // (usm-au2-4)

simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd_view<T, RegionTy> src0, simd<T, N> src1, simd_mask<N> mask, props = {}) // (usm-au2-5) simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd_view<T, RegionTy> src0, simd<T, N> src1, props = {}) // (usm-au2-6)

simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd_view<T, RegionTy> src0, simd_view<T, RegionTy> src1, simd_mask<N> mask, props = {}) // (usm-au2-7) simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd_view<T, RegionTy> src0, simd_view<T, RegionTy> src1, props = {}) // (usm-au2-8)

simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd<T, N> src0, simd<T, N> src1, simd_mask<N> mask, props = {}) // (usm-au2-9) simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd<T, N> src0, simd<T, N> src1, props = {}) // (usm-au2-10)

simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd<T, N> src0, simd_view<T, RegionTy> src1, simd_mask<N> mask, props = {}) // (usm-au2-11) simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd<T, N> src0, simd_view<T, RegionTy> src1, props = {}) // (usm-au2-12)

simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd_view<T, RegionTy> src0, simd<T, N> src1, simd_mask<N> mask, props = {}) // (usm-au2-13) simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd_view<T, RegionTy> src0, simd<T, N> src1, props = {}) // (usm-au2-14)

simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd_view<T, RegionTy> src0, simd_view<T, RegionTy> src1, simd_mask<N> mask, props = {}) // (usm-au2-15) simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd_view<T, RegionTy> src0, simd_view<T, RegionTy> src1, props = {}) // (usm-au2-16)

Template Parameters
OpThe atomic operation - can be one of the following: atomic_op::cmpxchg, atomic_op::fcmpxchg.
TThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe vector of 32-bit or 64-bit offsets in bytes.
src0The first additional argument (new value).
src1The second additional argument (expected value).
maskOperation mask, only locations with non-zero in the corresponding mask element are updated.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 5094 of file memory.hpp.

◆ atomic_update() [24/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 1 && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
simd< Toffset, N >  byte_offset,
simd< T, N >  src0,
simd_mask< N >  mask,
PropertyListT  props = {} 
)

Single-argument variant of the atomic update operation.

simd<T, N> atomic_update(T *ptr, simd<Toffset, N> byte_offset, simd<T, N> src0, simd_mask<N> mask, props = {});//(usm-au1-1) simd<T, N> atomic_update(T *ptr, simd<Toffset, N> byte_offset, simd<T, N> src0, props = {}); // (usm-au1-2)

simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd_view<T, RegionTy> src0, simd_mask<N> mask, props = {}); // (usm-au1-3) simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd_view<T, RegionTy> src0, props = {}); // (usm-au1-4)

simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd<T, N> src0, simd_mask<N> mask, props = {}); // (usm-au1-5) simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd<T, N> src0, props = {}); // (usm-au1-6)

simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd_view<T, RegionTy> src0, simd_mask<N> mask, props = {}); // (usm-au1-7) simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd_view<T, RegionTy> src0, props = {}); // (usm-au1-8) simd<T, N> atomic_update(T *ptr, simd<Toffset, N> byte_offset, simd<T, N> src0, simd_mask<N> mask, props = {});//(usm-au1-1)

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.

Template Parameters
OpThe 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::fadd, atomic_op::fsub, atomic_op::store.
TThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe vector of 32-bit or 64-bit offsets in bytes.
src0The additional argument.
maskOperation mask, only locations with non-zero in the corresponding mask element are updated.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 4635 of file memory.hpp.

◆ atomic_update() [25/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 2 && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
simd< Toffset, N >  byte_offset,
simd< T, N >  src0,
simd_view< T, RegionTy >  src1,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd<T, N> src0, simd_view<T, RegionTy> src1, props = {}) // (usm-au2-4)

Template Parameters
OpThe atomic operation - can be one of the following: atomic_op::cmpxchg, atomic_op::fcmpxchg.
TThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe vector of 32-bit or 64-bit offsets in bytes.
src0The first additional argument (new value).
src1The second additional argument (expected value).
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 5224 of file memory.hpp.

◆ atomic_update() [26/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 2 && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
simd< Toffset, N >  byte_offset,
simd< T, N >  src0,
simd_view< T, RegionTy >  src1,
simd_mask< N >  mask,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd<T, N> src0, simd_view<T, RegionTy> src1, simd_mask<N> mask, props = {}) // (usm-au2-3)

Template Parameters
OpThe atomic operation - can be one of the following: atomic_op::cmpxchg, atomic_op::fcmpxchg.
TThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe vector of 32-bit or 64-bit offsets in bytes.
src0The first additional argument (new value).
src1The second additional argument (expected value).
maskOperation mask, only locations with non-zero in the corresponding mask element are updated.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 5191 of file memory.hpp.

◆ atomic_update() [27/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 0 && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
simd< Toffset, N >  byte_offset,
simd_mask< N >  mask,
PropertyListT  props = {} 
)

No-argument variant of the atomic update operation.

simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd_mask<N> mask, props = {}); /// (usm-au0-1) simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, props = {}); /// (usm-au0-2) simd<T, N>

atomic_update(T *p, simd_view<Toffset, RegionTy> byte_offset, simd_mask<N> mask, props = {}); /// (usm-au0-3) simd<T, N> atomic_update(T *p, simd_view<Toffset, RegionTy> byte_offset, props = {}); /// (usm-au0-4)

Usage of cache hints or non-standard operation width N requires DG2 or PVC.

simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd_mask<N> mask, props = {}); /// (usm-au0-1) 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.

Template Parameters
OpThe atomic operation - can be atomic_op::inc, atomic_op::dec, or atomic_op::load.
TThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe vector of 32-bit or 64-bit offsets in bytes (zero-based).
maskOperation mask, only locations with non-zero in the corresponding mask element are updated.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 4402 of file memory.hpp.

◆ atomic_update() [28/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 1 && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
simd< Toffset, N >  byte_offset,
simd_view< T, RegionTy >  src0,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd_view<T, RegionTy> src0, props = {}); // (usm-au1-4)

A variation of atomic_update API with src0 represented as simd_view object and no mask operand.

Template Parameters
OpThe 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::fadd, atomic_op::fsub, atomic_op::store.
TThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe vector of 32-bit or 64-bit offsets in bytes.
src0The additional argument.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 4793 of file memory.hpp.

◆ atomic_update() [29/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 2 && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
simd< Toffset, N >  byte_offset,
simd_view< T, RegionTy >  src0,
simd< T, N >  src1,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd_view<T, RegionTy> src0, simd<T, N> src1, props = {}) // (usm-au2-6)

Template Parameters
OpThe atomic operation - can be one of the following: atomic_op::cmpxchg, atomic_op::fcmpxchg.
TThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe vector of 32-bit or 64-bit offsets in bytes.
src0The first additional argument (new value).
src1The second additional argument (expected value).
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 5292 of file memory.hpp.

◆ atomic_update() [30/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 2 && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
simd< Toffset, N >  byte_offset,
simd_view< T, RegionTy >  src0,
simd< T, N >  src1,
simd_mask< N >  mask,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd_view<T, RegionTy> src0, simd<T, N> src1, simd_mask<N> mask, props = {}) // (usm-au2-5)

Template Parameters
OpThe atomic operation - can be one of the following: atomic_op::cmpxchg, atomic_op::fcmpxchg.
TThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe vector of 32-bit or 64-bit offsets in bytes.
src0The first additional argument (new value).
src1The second additional argument (expected value).
maskOperation mask, only locations with non-zero in the corresponding mask element are updated.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 5260 of file memory.hpp.

◆ atomic_update() [31/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 1 && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
simd< Toffset, N >  byte_offset,
simd_view< T, RegionTy >  src0,
simd_mask< N >  mask,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd_view<T, RegionTy> src0, simd_mask<N> mask, props = {}); // (usm-au1-3)

A variation of atomic_update API with src0 represented as simd_view object.

Template Parameters
OpThe 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::fadd, atomic_op::fsub, atomic_op::store.
TThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe vector of 32-bit or 64-bit offsets in bytes.
src0The additional argument.
maskOperation mask, only locations with non-zero in the corresponding mask element are updated.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 4755 of file memory.hpp.

◆ atomic_update() [32/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 2 && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
simd< Toffset, N >  byte_offset,
simd_view< T, RegionTy >  src0,
simd_view< T, RegionTy >  src1,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd_view<T, RegionTy> src0, simd_view<T, RegionTy> src1, props = {}) // (usm-au2-8)

Template Parameters
OpThe atomic operation - can be one of the following: atomic_op::cmpxchg, atomic_op::fcmpxchg.
TThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe vector of 32-bit or 64-bit offsets in bytes.
src0The first additional argument (new value).
src1The second additional argument (expected value).
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 5360 of file memory.hpp.

◆ atomic_update() [33/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 2 && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
simd< Toffset, N >  byte_offset,
simd_view< T, RegionTy >  src0,
simd_view< T, RegionTy >  src1,
simd_mask< N >  mask,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset, simd_view<T, RegionTy> src0, simd_view<T, RegionTy> src1, simd_mask<N> mask, props = {}) // (usm-au2-7)

Template Parameters
OpThe atomic operation - can be one of the following: atomic_op::cmpxchg, atomic_op::fcmpxchg.
TThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe vector of 32-bit or 64-bit offsets in bytes.
src0The first additional argument (new value).
src1The second additional argument (expected value).
maskOperation mask, only locations with non-zero in the corresponding mask element are updated.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 5327 of file memory.hpp.

◆ atomic_update() [34/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename OffsetRegionTy = region1d_t<Toffset, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 2 && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
simd_view< Toffset, OffsetRegionTy >  byte_offset,
simd< T, N >  src0,
simd< T, N >  src1,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd<T, N> src0, simd<T, N> src1, props = {}) // (usm-au2-10)

Template Parameters
OpThe atomic operation - can be one of the following: atomic_op::cmpxchg, atomic_op::fcmpxchg.
TThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe vector of 32-bit or 64-bit offsets in bytes.
src0The first additional argument (new value).
src1The second additional argument (expected value).
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 5428 of file memory.hpp.

◆ atomic_update() [35/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename OffsetRegionTy = region1d_t<Toffset, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 2 && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
simd_view< Toffset, OffsetRegionTy >  byte_offset,
simd< T, N >  src0,
simd< T, N >  src1,
simd_mask< N >  mask,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd<T, N> src0, simd<T, N> src1, simd_mask<N> mask, props = {}) // (usm-au2-9)

Template Parameters
OpThe atomic operation - can be one of the following: atomic_op::cmpxchg, atomic_op::fcmpxchg.
TThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe vector of 32-bit or 64-bit offsets in bytes.
src0The first additional argument (new value).
src1The second additional argument (expected value).
maskOperation mask, only locations with non-zero in the corresponding mask element are updated.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 5395 of file memory.hpp.

◆ atomic_update() [36/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename OffsetRegionTy = region1d_t<Toffset, N, 1>, typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 2 && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
simd_view< Toffset, OffsetRegionTy >  byte_offset,
simd< T, N >  src0,
simd_view< T, RegionTy >  src1,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd<T, N> src0, simd_view<T, RegionTy> src1, props = {}) // (usm-au2-12)

Template Parameters
OpThe atomic operation - can be one of the following: atomic_op::cmpxchg, atomic_op::fcmpxchg.
TThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe vector of 32-bit or 64-bit offsets in bytes.
src0The first additional argument (new value).
src1The second additional argument (expected value).
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 5497 of file memory.hpp.

◆ atomic_update() [37/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename OffsetRegionTy = region1d_t<Toffset, N, 1>, typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 2 && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
simd_view< Toffset, OffsetRegionTy >  byte_offset,
simd< T, N >  src0,
simd_view< T, RegionTy >  src1,
simd_mask< N >  mask,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd<T, N> src0, simd_view<T, RegionTy> src1, simd_mask<N> mask, props = {}) // (usm-au2-11)

Template Parameters
OpThe atomic operation - can be one of the following: atomic_op::cmpxchg, atomic_op::fcmpxchg.
TThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe vector of 32-bit or 64-bit offsets in bytes.
src0The first additional argument (new value).
src1The second additional argument (expected value).
maskOperation mask, only locations with non-zero in the corresponding mask element are updated.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 5464 of file memory.hpp.

◆ atomic_update() [38/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename OffsetRegionTy = region1d_t<Toffset, N, 1>, typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 2 && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
simd_view< Toffset, OffsetRegionTy >  byte_offset,
simd_view< T, RegionTy >  src0,
simd< T, N >  src1,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd_view<T, RegionTy> src0, simd<T, N> src1, props = {}) // (usm-au2-14)

Template Parameters
OpThe atomic operation - can be one of the following: atomic_op::cmpxchg, atomic_op::fcmpxchg.
TThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe vector of 32-bit or 64-bit offsets in bytes.
src0The first additional argument (new value).
src1The second additional argument (expected value).
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 5568 of file memory.hpp.

◆ atomic_update() [39/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename OffsetRegionTy = region1d_t<Toffset, N, 1>, typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 2 && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
simd_view< Toffset, OffsetRegionTy >  byte_offset,
simd_view< T, RegionTy >  src0,
simd< T, N >  src1,
simd_mask< N >  mask,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd_view<T, RegionTy> src0, simd<T, N> src1, simd_mask<N> mask, props = {}) // (usm-au2-13)

Template Parameters
OpThe atomic operation - can be one of the following: atomic_op::cmpxchg, atomic_op::fcmpxchg.
TThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe vector of 32-bit or 64-bit offsets in bytes.
src0The first additional argument (new value).
src1The second additional argument (expected value).
maskOperation mask, only locations with non-zero in the corresponding mask element are updated.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 5534 of file memory.hpp.

◆ atomic_update() [40/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename OffsetRegionTy = region1d_t<Toffset, N, 1>, typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 2 && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
simd_view< Toffset, OffsetRegionTy >  byte_offset,
simd_view< T, RegionTy >  src0,
simd_view< T, RegionTy >  src1,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd_view<T, RegionTy> src0, simd_view<T, RegionTy> src1, props = {}) // (usm-au2-16)

Template Parameters
OpThe atomic operation - can be one of the following: atomic_op::cmpxchg, atomic_op::fcmpxchg.
TThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe vector of 32-bit or 64-bit offsets in bytes.
src0The first additional argument (new value).
src1The second additional argument (expected value).
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 5639 of file memory.hpp.

◆ atomic_update() [41/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename OffsetRegionTy = region1d_t<Toffset, N, 1>, typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 2 && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
simd_view< Toffset, OffsetRegionTy >  byte_offset,
simd_view< T, RegionTy >  src0,
simd_view< T, RegionTy >  src1,
simd_mask< N >  mask,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd_view<T, RegionTy> src0, simd_view<T, RegionTy> src1, simd_mask<N> mask, props = {}) // (usm-au2-15)

Template Parameters
OpThe atomic operation - can be one of the following: atomic_op::cmpxchg, atomic_op::fcmpxchg.
TThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe vector of 32-bit or 64-bit offsets in bytes.
src0The first additional argument (new value).
src1The second additional argument (expected value).
maskOperation mask, only locations with non-zero in the corresponding mask element are updated.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 5605 of file memory.hpp.

◆ atomic_update() [42/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename OffsetRegionTy = region1d_t<Toffset, N, 1>, typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 1 && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
simd_view< Toffset, OffsetRegionTy >  offsets,
simd_view< T, RegionTy >  src0,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd_view<T, RegionTy> src0, props = {}); // (usm-au1-8)

A variation of atomic_update API with byte_offset and src0 represented as simd_view objects and no mask operand.

Template Parameters
OpThe 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::fadd, atomic_op::fsub, atomic_op::store.
TThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe simd_view of 32-bit or 64-bit offsets in bytes.
src0The additional argument.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 4954 of file memory.hpp.

◆ atomic_update() [43/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename OffsetRegionTy = region1d_t<Toffset, N, 1>, typename RegionTy = region1d_t<T, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 1 && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
simd_view< Toffset, OffsetRegionTy >  offsets,
simd_view< T, RegionTy >  src0,
simd_mask< N >  mask,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd_view<T, RegionTy> src0, simd_mask<N> mask, props = {}); // (usm-au1-7)

A variation of atomic_update API with byte_offset and src0 represented as simd_view objects.

Template Parameters
OpThe 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::fadd, atomic_op::fsub, atomic_op::store.
TThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe simd_view of 32-bit or 64-bit offsets in bytes.
src0The additional argument.
maskOperation mask, only locations with non-zero in the corresponding mask element are updated.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 4914 of file memory.hpp.

◆ atomic_update() [44/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename RegionTy = region1d_t<Toffset, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 0 && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
simd_view< Toffset, RegionTy >  byte_offset,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(T *p, simd_view<Toffset, RegionTy> byte_offset, props = {}); /// (usm-au0-4)

A variation of atomic_update API with offsets represented as simd_view object without mask operand.

Template Parameters
OpThe atomic operation - can be atomic_op::inc, atomic_op::dec, or atomic_op::load.
TThe vector element type.
NThe number of memory locations to update
Parameters
pThe USM pointer.
byte_offsetThe simd_view of 32-bit or 64-bit offsets in bytes.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 4536 of file memory.hpp.

◆ atomic_update() [45/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename RegionTy = region1d_t<Toffset, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 1 && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
simd_view< Toffset, RegionTy >  offsets,
simd< T, N >  src0,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd<T, N> src0, props = {}); // (usm-au1-6)

A variation of atomic_update API with byte_offset represented as simd_view object and no mask operand.

Template Parameters
OpThe 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::fadd, atomic_op::fsub, atomic_op::store.
TThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe simd_view of 32-bit or 64-bit offsets in bytes.
src0The additional argument.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 4872 of file memory.hpp.

◆ atomic_update() [46/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename RegionTy = region1d_t<Toffset, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 1 && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
simd_view< Toffset, RegionTy >  offsets,
simd< T, N >  src0,
simd_mask< N >  mask,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(T *p, simd_view<Toffset, OffsetRegionTy> byte_offset, simd<T, N> src0, simd_mask<N> mask, props = {}); // (usm-au1-5)

A variation of atomic_update API with byte_offset represented as simd_view object.

Template Parameters
OpThe 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::fadd, atomic_op::fsub, atomic_op::store.
TThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe simd_view of 32-bit or 64-bit offsets in bytes.
src0The additional argument.
maskOperation mask, only locations with non-zero in the corresponding mask element are updated.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 4834 of file memory.hpp.

◆ atomic_update() [47/50]

template<atomic_op Op, typename T , int N, typename Toffset , typename RegionTy = region1d_t<Toffset, N, 1>, typename PropertyListT = ext::oneapi::experimental::detail::empty_properties_t>
__ESIMD_API std::enable_if_t< __ESIMD_DNS::get_num_args<Op>) == 0 && ext::oneapi::experimental::is_property_list_v<PropertyListT>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
simd_view< Toffset, RegionTy >  offsets,
simd_mask< N >  mask,
PropertyListT  props = {} 
)

simd<T, N> atomic_update(T *p, simd_view<Toffset, RegionTy> byte_offset, simd_mask<N> mask, props = {}); /// (usm-au0-3)

A variation of atomic_update API with offsets represented as simd_view object.

Template Parameters
OpThe atomic operation - can be atomic_op::inc, atomic_op::dec, or atomic_op::load.
TThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe simd_view of 32-bit or 64-bit offsets in bytes.
maskOperation mask, only locations with non-zero in the corresponding mask element are updated.
propsThe parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 4505 of file memory.hpp.

◆ atomic_update() [48/50]

template<atomic_op Op, typename T , int N, typename Toffset >
__ESIMD_API std::enable_if_t<std::is_integral_v<Toffset>, simd<T, N> > sycl::_V1::ext::intel::esimd::atomic_update ( T *  p,
Toffset  byte_offset,
simd_mask< N >  mask = 1 
)

A variation of atomic_update API with offset represented as scalar.

Template Parameters
OpThe atomic operation - can be atomic_op::inc, atomic_op::dec, or atomic_op::load.
TThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe scalar 32-bit or 64-bit offset in bytes.
maskOperation mask, only locations with non-zero in the corresponding mask element are updated.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 4558 of file memory.hpp.

◆ atomic_update() [49/50]

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  byte_offset,
simd< Tx, N >  src0,
simd< Tx, N >  src1,
simd_mask< N >  mask 
)

A variation of atomic_update API with byte_offset represented as scalar.

Template Parameters
OpThe atomic operation - can be one of the following: atomic_op::cmpxchg, atomic_op::fcmpxchg.
TxThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe scalar 32-bit or 64-bit offset in bytes.
src0The first additional argument (new value).
src1The second additional argument (expected value).
maskOperation mask, only locations with non-zero in the corresponding mask element are updated.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 5665 of file memory.hpp.

References sycl::_V1::ext::intel::esimd::src0, and sycl::_V1::ext::intel::esimd::src1.

◆ atomic_update() [50/50]

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  byte_offset,
simd< Tx, N >  src0,
simd_mask< N >  mask 
)

A variation of atomic_update API with offset represented as scalar object.

Template Parameters
OpThe 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.
TxThe vector element type.
NThe number of memory locations to update.
Parameters
pThe USM pointer.
byte_offsetThe scalar 32-bit or 64-bit offsets in bytes.
src0The additional argument.
maskOperation mask, only locations with non-zero in the corresponding mask element are updated.
Returns
A vector of the old values at the memory locations before the update.

Definition at line 4983 of file memory.hpp.

References sycl::_V1::ext::intel::esimd::src0.