Memory access functions which perform per-lane atomic update using given operation. "Per-lane" means that the atomicity guarantees of a vector atomic operation are the same as of N independent scalar atomic operations per lane (N is number of lanes). More...
Functions | |
template<atomic_op Op, typename 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... | |
Memory access functions which perform per-lane atomic update using given operation. "Per-lane" means that the atomicity guarantees of a vector atomic operation are the same as of N independent scalar atomic operations per lane (N is number of lanes).
__ESIMD_API __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
Op | The atomic operation - can be atomic_op::inc , atomic_op::dec , or atomic_op::load . |
T | The vector element type. |
N | The number of memory locations to update. |
AccessorTy | type of the SYCL accessor. |
acc | The SYCL accessor. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. 64-bit offsets are supported only when stateless memory accesses are enforced, i.e. accessor based accesses are automatically converted to stateless accesses. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. |
Definition at line 5803 of file memory.hpp.
__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.
Op | The atomic operation - can be one of the following: atomic_op::add , atomic_op::sub , atomic_op::min , atomic_op::max , atomic_op::xchg , atomic_op::bit_and , atomic_op::bit_or , atomic_op::bit_xor , atomic_op::minsint , atomic_op::maxsint , atomic_op::fmax , atomic_op::fmin , atomic_op::fadd , atomic_op::fsub , atomic_op::store . |
T | The vector element type. |
N | The number of memory locations to update. |
AccessorTy | type of the SYCL accessor. |
acc | The SYCL accessor. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. 64-bit offsets are supported only when stateless memory accesses are enforced, i.e. accessor based accesses are automatically converted to stateless accesses. |
src0 | The additional argument. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored. |
Definition at line 6077 of file memory.hpp.
__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.
Op | The atomic operation - can be one of the following: atomic_op::cmpxchg , atomic_op::fcmpxchg . |
T | The vector element type. |
N | The number of memory locations to update. |
acc | The SYCL accessor. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. |
src0 | The first additional argument (new value). |
src1 | The second additional argument (expected value). |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. |
Definition at line 6531 of file memory.hpp.
__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.
Op | The atomic operation - can be one of the following: atomic_op::cmpxchg , atomic_op::fcmpxchg . |
T | The vector element type. |
N | The number of memory locations to update. |
AccessorTy | type of the SYCL accessor. |
acc | The SYCL accessor. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. 64-bit offsets are supported only when stateless memory accesses are enforced, i.e. accessor based accesses are automatically converted to stateless accesses. |
src0 | The first additional argument (new value). |
src1 | The second additional argument (expected value). |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. |
Definition at line 6459 of file memory.hpp.
__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.
Op | The atomic operation - can be one of the following: atomic_op::add , atomic_op::sub , atomic_op::min , atomic_op::max , atomic_op::xchg , atomic_op::bit_and , atomic_op::bit_or , atomic_op::bit_xor , atomic_op::minsint , atomic_op::maxsint , atomic_op::fmax , atomic_op::fmin , atomic_op::fadd , atomic_op::fsub , atomic_op::store . |
T | The vector element type. |
N | The number of memory locations to update. |
AccessorTy | type of the SYCL accessor. |
acc | The SYCL accessor. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. 64-bit offsets are supported only when stateless memory accesses are enforced, i.e. accessor based accesses are automatically converted to stateless accesses. |
src0 | The additional argument. |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored. |
Definition at line 5987 of file memory.hpp.
__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.
Op | The atomic operation - can be atomic_op::inc , atomic_op::dec , or atomic_op::load . |
T | The vector element type. |
N | The number of memory locations to update. |
AccessorTy | type of the SYCL accessor. |
acc | The SYCL accessor. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. 64-bit offsets are supported only when stateless memory accesses are enforced, i.e. accessor based accesses are automatically converted to stateless accesses. |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. |
Definition at line 5725 of file memory.hpp.
__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.
Op | The atomic operation - can be one of the following: atomic_op::add , atomic_op::sub , atomic_op::min , atomic_op::max , atomic_op::xchg , atomic_op::bit_and , atomic_op::bit_or , atomic_op::bit_xor , atomic_op::minsint , atomic_op::maxsint , atomic_op::fmax , atomic_op::fmin , atomic_op::fadd , atomic_op::fsub , atomic_op::store . |
T | The vector element type. |
N | The number of memory locations to update. |
AccessorTy | type of the SYCL accessor. |
acc | The SYCL accessor. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. 64-bit offsets are supported only when stateless memory accesses are enforced, i.e. accessor based accesses are automatically converted to stateless accesses. |
src0 | The additional argument. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored. |
Definition at line 6177 of file memory.hpp.
__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.
Op | The atomic operation - can be one of the following: atomic_op::add , atomic_op::sub , atomic_op::min , atomic_op::max , atomic_op::xchg , atomic_op::bit_and , atomic_op::bit_or , atomic_op::bit_xor , atomic_op::minsint , atomic_op::maxsint , atomic_op::fmax , atomic_op::fmin , atomic_op::fadd , atomic_op::fsub , atomic_op::store . |
T | The vector element type. |
N | The number of memory locations to update. |
AccessorTy | type of the SYCL accessor. |
acc | The SYCL accessor. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. 64-bit offsets are supported only when stateless memory accesses are enforced, i.e. accessor based accesses are automatically converted to stateless accesses. |
src0 | The additional argument. |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored. |
Definition at line 6128 of file memory.hpp.
__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.
Op | The atomic operation - can be one of the following: atomic_op::cmpxchg , atomic_op::fcmpxchg . |
T | The vector element type. |
N | The number of memory locations to update. |
acc | The SYCL accessor. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. |
src0 | The first additional argument (new value). |
src1 | The second additional argument (expected value). |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. |
Definition at line 6606 of file memory.hpp.
__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.
Op | The atomic operation - can be one of the following: atomic_op::cmpxchg , atomic_op::fcmpxchg . |
T | The vector element type. |
N | The number of memory locations to update. |
acc | The SYCL accessor. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. |
src0 | The first additional argument (new value). |
src1 | The second additional argument (expected value). |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. |
Definition at line 6569 of file memory.hpp.
__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.
Op | The atomic operation - can be one of the following: atomic_op::add , atomic_op::sub , atomic_op::min , atomic_op::max , atomic_op::xchg , atomic_op::bit_and , atomic_op::bit_or , atomic_op::bit_xor , atomic_op::minsint , atomic_op::maxsint , atomic_op::fmax , atomic_op::fmin , atomic_op::fadd , atomic_op::fsub , atomic_op::store . |
T | The vector element type. |
N | The number of memory locations to update. |
AccessorTy | type of the SYCL accessor. |
acc | The SYCL accessor. |
byte_offset | The simd_view of 32-bit or 64-bit offsets in bytes. 64-bit offsets are supported only when stateless memory accesses are enforced, i.e. accessor based accesses are automatically converted to stateless accesses. |
src0 | The additional argument. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored. |
Definition at line 6359 of file memory.hpp.
__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.
Op | The atomic operation - can be one of the following: atomic_op::add , atomic_op::sub , atomic_op::min , atomic_op::max , atomic_op::xchg , atomic_op::bit_and , atomic_op::bit_or , atomic_op::bit_xor , atomic_op::minsint , atomic_op::maxsint , atomic_op::fmax , atomic_op::fmin , atomic_op::fadd , atomic_op::fsub , atomic_op::store . |
T | The vector element type. |
N | The number of memory locations to update. |
AccessorTy | type of the SYCL accessor. |
acc | The SYCL accessor. |
byte_offset | The simd_view of 32-bit or 64-bit offsets in bytes. 64-bit offsets are supported only when stateless memory accesses are enforced, i.e. accessor based accesses are automatically converted to stateless accesses. |
src0 | The additional argument. |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored. |
Definition at line 6313 of file memory.hpp.
__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.
Op | The atomic operation - can be atomic_op::inc , atomic_op::dec , or atomic_op::load . |
T | The vector element type. |
N | The number of memory locations to update. |
AccessorTy | type of the SYCL accessor. |
acc | The SYCL accessor. |
byte_offset | The simd_view of 32-bit or 64-bit offsets in bytes. 64-bit offsets are supported only when stateless memory accesses are enforced, i.e. accessor based accesses are automatically converted to stateless accesses. |
Definition at line 5875 of file memory.hpp.
__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.
Op | The atomic operation - can be one of the following: atomic_op::add , atomic_op::sub , atomic_op::min , atomic_op::max , atomic_op::xchg , atomic_op::bit_and , atomic_op::bit_or , atomic_op::bit_xor , atomic_op::minsint , atomic_op::maxsint , atomic_op::fmax , atomic_op::fmin , atomic_op::fadd , atomic_op::fsub , atomic_op::store . |
T | The vector element type. |
N | The number of memory locations to update. |
AccessorTy | type of the SYCL accessor. |
acc | The SYCL accessor. |
byte_offset | The simd_view of 32-bit or 64-bit offsets in bytes. 64-bit offsets are supported only when stateless memory accesses are enforced, i.e. accessor based accesses are automatically converted to stateless accesses. |
src0 | The additional argument. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored. |
Definition at line 6266 of file memory.hpp.
__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.
Op | The atomic operation - can be one of the following: atomic_op::add , atomic_op::sub , atomic_op::min , atomic_op::max , atomic_op::xchg , atomic_op::bit_and , atomic_op::bit_or , atomic_op::bit_xor , atomic_op::minsint , atomic_op::maxsint , atomic_op::fmax , atomic_op::fmin , atomic_op::fadd , atomic_op::fsub , atomic_op::store . |
T | The vector element type. |
N | The number of memory locations to update. |
AccessorTy | type of the SYCL accessor. |
acc | The SYCL accessor. |
byte_offset | The simd_view of 32-bit or 64-bit offsets in bytes. 64-bit offsets are supported only when stateless memory accesses are enforced, i.e. accessor based accesses are automatically converted to stateless accesses. |
src0 | The additional argument. |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored. |
Definition at line 6223 of file memory.hpp.
__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.
Op | The atomic operation - can be atomic_op::inc , atomic_op::dec , or atomic_op::load . |
T | The vector element type. |
N | The number of memory locations to update. |
AccessorTy | type of the SYCL accessor. |
acc | The SYCL accessor. |
byte_offset | The simd_view of 32-bit or 64-bit offsets in bytes. 64-bit offsets are supported only when stateless memory accesses are enforced, i.e. accessor based accesses are automatically converted to stateless accesses. |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. |
Definition at line 5842 of file memory.hpp.
__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.
Op | The atomic operation - can be atomic_op::inc , atomic_op::dec , or atomic_op::load . |
T | The vector element type. |
N | The number of memory locations to update. |
AccessorTy | type of the SYCL accessor. |
acc | The SYCL accessor. |
byte_offset | The scalar 32-bit or 64-bit offset in bytes. 64-bit offset are supported only when stateless memory accesses are enforced, i.e. accessor based accesses are automatically converted to stateless accesses. |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
Definition at line 5905 of file memory.hpp.
__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.
Op | The atomic operation - can be one of the following: atomic_op::cmpxchg , atomic_op::fcmpxchg . |
Tx | The vector element type. |
N | The number of memory locations to update. |
AccessorTy | type of the SYCL accessor. |
acc | The SYCL accessor. |
offset | The scalar 32-bit or 64-bit offset in bytes. 64-bit offset are supported only when stateless memory accesses are enforced, i.e. accessor based accesses are automatically converted to stateless accesses. |
src0 | The first additional argument (new value). |
src1 | The second additional argument (expected value). |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
Definition at line 6637 of file memory.hpp.
References sycl::_V1::ext::intel::esimd::src0, and sycl::_V1::ext::intel::esimd::src1.
__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.
Op | The atomic operation - can be one of the following: atomic_op::add , atomic_op::sub , atomic_op::min , atomic_op::max , atomic_op::xchg , atomic_op::bit_and , atomic_op::bit_or , atomic_op::bit_xor , atomic_op::minsint , atomic_op::maxsint , atomic_op::fmax , atomic_op::fmin atomic_op::store . |
Tx | The vector element type. |
N | The number of memory locations to update. |
AccessorTy | type of the SYCL accessor. |
acc | The SYCL accessor. |
offset | The scalar 32-bit or 64-bit offset in bytes. 64-bit offset are supported only when stateless memory accesses are enforced, i.e. accessor based accesses are automatically converted to stateless accesses. |
src0 | The additional argument. |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
Definition at line 6393 of file memory.hpp.
References sycl::_V1::ext::intel::esimd::src0.
__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.
Op | The atomic operation - can be atomic_op::inc , atomic_op::dec , or atomic_op::load . |
T | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes (zero-based). |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored. |
Definition at line 4472 of file memory.hpp.
__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.
Op | The atomic operation - can be one of the following: atomic_op::add , atomic_op::sub , atomic_op::min , atomic_op::max , atomic_op::xchg , atomic_op::bit_and , atomic_op::bit_or , atomic_op::bit_xor , atomic_op::minsint , atomic_op::maxsint , atomic_op::fmax , atomic_op::fmin , atomic_op::fadd , atomic_op::fsub , atomic_op::store . |
T | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. |
src0 | The additional argument. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored. |
Definition at line 4714 of file memory.hpp.
__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)
Op | The atomic operation - can be one of the following: atomic_op::cmpxchg , atomic_op::fcmpxchg . |
T | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. |
src0 | The first additional argument (new value). |
src1 | The second additional argument (expected value). |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. |
Definition at line 5157 of file memory.hpp.
__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)
Op | The atomic operation - can be one of the following: atomic_op::cmpxchg , atomic_op::fcmpxchg . |
T | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. |
src0 | The first additional argument (new value). |
src1 | The second additional argument (expected value). |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. |
Definition at line 5094 of file memory.hpp.
__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.
Op | The atomic operation - can be one of the following: atomic_op::add , atomic_op::sub , atomic_op::min , atomic_op::max , atomic_op::xchg , atomic_op::bit_and , atomic_op::bit_or , atomic_op::bit_xor , atomic_op::minsint , atomic_op::maxsint , atomic_op::fmax , atomic_op::fmin , atomic_op::fadd , atomic_op::fsub , atomic_op::store . |
T | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. |
src0 | The additional argument. |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored. |
Definition at line 4635 of file memory.hpp.
__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)
Op | The atomic operation - can be one of the following: atomic_op::cmpxchg , atomic_op::fcmpxchg . |
T | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. |
src0 | The first additional argument (new value). |
src1 | The second additional argument (expected value). |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. |
Definition at line 5224 of file memory.hpp.
__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)
Op | The atomic operation - can be one of the following: atomic_op::cmpxchg , atomic_op::fcmpxchg . |
T | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. |
src0 | The first additional argument (new value). |
src1 | The second additional argument (expected value). |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. |
Definition at line 5191 of file memory.hpp.
__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.
Op | The atomic operation - can be atomic_op::inc , atomic_op::dec , or atomic_op::load . |
T | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes (zero-based). |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. |
Definition at line 4402 of file memory.hpp.
__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.
Op | The atomic operation - can be one of the following: atomic_op::add , atomic_op::sub , atomic_op::min , atomic_op::max , atomic_op::xchg , atomic_op::bit_and , atomic_op::bit_or , atomic_op::bit_xor , atomic_op::minsint , atomic_op::maxsint , atomic_op::fmax , atomic_op::fmin , atomic_op::fadd , atomic_op::fsub , atomic_op::store . |
T | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. |
src0 | The additional argument. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored. |
Definition at line 4793 of file memory.hpp.
__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)
Op | The atomic operation - can be one of the following: atomic_op::cmpxchg , atomic_op::fcmpxchg . |
T | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. |
src0 | The first additional argument (new value). |
src1 | The second additional argument (expected value). |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. |
Definition at line 5292 of file memory.hpp.
__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)
Op | The atomic operation - can be one of the following: atomic_op::cmpxchg , atomic_op::fcmpxchg . |
T | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. |
src0 | The first additional argument (new value). |
src1 | The second additional argument (expected value). |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. |
Definition at line 5260 of file memory.hpp.
__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.
Op | The atomic operation - can be one of the following: atomic_op::add , atomic_op::sub , atomic_op::min , atomic_op::max , atomic_op::xchg , atomic_op::bit_and , atomic_op::bit_or , atomic_op::bit_xor , atomic_op::minsint , atomic_op::maxsint , atomic_op::fmax , atomic_op::fmin , atomic_op::fadd , atomic_op::fsub , atomic_op::store . |
T | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. |
src0 | The additional argument. |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored. |
Definition at line 4755 of file memory.hpp.
__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)
Op | The atomic operation - can be one of the following: atomic_op::cmpxchg , atomic_op::fcmpxchg . |
T | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. |
src0 | The first additional argument (new value). |
src1 | The second additional argument (expected value). |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. |
Definition at line 5360 of file memory.hpp.
__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)
Op | The atomic operation - can be one of the following: atomic_op::cmpxchg , atomic_op::fcmpxchg . |
T | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. |
src0 | The first additional argument (new value). |
src1 | The second additional argument (expected value). |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. |
Definition at line 5327 of file memory.hpp.
__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)
Op | The atomic operation - can be one of the following: atomic_op::cmpxchg , atomic_op::fcmpxchg . |
T | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. |
src0 | The first additional argument (new value). |
src1 | The second additional argument (expected value). |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. |
Definition at line 5428 of file memory.hpp.
__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)
Op | The atomic operation - can be one of the following: atomic_op::cmpxchg , atomic_op::fcmpxchg . |
T | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. |
src0 | The first additional argument (new value). |
src1 | The second additional argument (expected value). |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. |
Definition at line 5395 of file memory.hpp.
__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)
Op | The atomic operation - can be one of the following: atomic_op::cmpxchg , atomic_op::fcmpxchg . |
T | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. |
src0 | The first additional argument (new value). |
src1 | The second additional argument (expected value). |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. |
Definition at line 5497 of file memory.hpp.
__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)
Op | The atomic operation - can be one of the following: atomic_op::cmpxchg , atomic_op::fcmpxchg . |
T | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. |
src0 | The first additional argument (new value). |
src1 | The second additional argument (expected value). |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. |
Definition at line 5464 of file memory.hpp.
__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)
Op | The atomic operation - can be one of the following: atomic_op::cmpxchg , atomic_op::fcmpxchg . |
T | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. |
src0 | The first additional argument (new value). |
src1 | The second additional argument (expected value). |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. |
Definition at line 5568 of file memory.hpp.
__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)
Op | The atomic operation - can be one of the following: atomic_op::cmpxchg , atomic_op::fcmpxchg . |
T | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. |
src0 | The first additional argument (new value). |
src1 | The second additional argument (expected value). |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. |
Definition at line 5534 of file memory.hpp.
__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)
Op | The atomic operation - can be one of the following: atomic_op::cmpxchg , atomic_op::fcmpxchg . |
T | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. |
src0 | The first additional argument (new value). |
src1 | The second additional argument (expected value). |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. |
Definition at line 5639 of file memory.hpp.
__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)
Op | The atomic operation - can be one of the following: atomic_op::cmpxchg , atomic_op::fcmpxchg . |
T | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The vector of 32-bit or 64-bit offsets in bytes. |
src0 | The first additional argument (new value). |
src1 | The second additional argument (expected value). |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. |
Definition at line 5605 of file memory.hpp.
__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.
Op | The atomic operation - can be one of the following: atomic_op::add , atomic_op::sub , atomic_op::min , atomic_op::max , atomic_op::xchg , atomic_op::bit_and , atomic_op::bit_or , atomic_op::bit_xor , atomic_op::minsint , atomic_op::maxsint , atomic_op::fmax , atomic_op::fmin , atomic_op::fadd , atomic_op::fsub , atomic_op::store . |
T | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The simd_view of 32-bit or 64-bit offsets in bytes. |
src0 | The additional argument. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored. |
Definition at line 4954 of file memory.hpp.
__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.
Op | The atomic operation - can be one of the following: atomic_op::add , atomic_op::sub , atomic_op::min , atomic_op::max , atomic_op::xchg , atomic_op::bit_and , atomic_op::bit_or , atomic_op::bit_xor , atomic_op::minsint , atomic_op::maxsint , atomic_op::fmax , atomic_op::fmin , atomic_op::fadd , atomic_op::fsub , atomic_op::store . |
T | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The simd_view of 32-bit or 64-bit offsets in bytes. |
src0 | The additional argument. |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored. |
Definition at line 4914 of file memory.hpp.
__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.
Op | The atomic operation - can be atomic_op::inc , atomic_op::dec , or atomic_op::load . |
T | The vector element type. |
N | The number of memory locations to update |
p | The USM pointer. |
byte_offset | The simd_view of 32-bit or 64-bit offsets in bytes. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored. |
Definition at line 4536 of file memory.hpp.
__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.
Op | The atomic operation - can be one of the following: atomic_op::add , atomic_op::sub , atomic_op::min , atomic_op::max , atomic_op::xchg , atomic_op::bit_and , atomic_op::bit_or , atomic_op::bit_xor , atomic_op::minsint , atomic_op::maxsint , atomic_op::fmax , atomic_op::fmin , atomic_op::fadd , atomic_op::fsub , atomic_op::store . |
T | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The simd_view of 32-bit or 64-bit offsets in bytes. |
src0 | The additional argument. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored. |
Definition at line 4872 of file memory.hpp.
__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.
Op | The atomic operation - can be one of the following: atomic_op::add , atomic_op::sub , atomic_op::min , atomic_op::max , atomic_op::xchg , atomic_op::bit_and , atomic_op::bit_or , atomic_op::bit_xor , atomic_op::minsint , atomic_op::maxsint , atomic_op::fmax , atomic_op::fmin , atomic_op::fadd , atomic_op::fsub , atomic_op::store . |
T | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The simd_view of 32-bit or 64-bit offsets in bytes. |
src0 | The additional argument. |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored. |
Definition at line 4834 of file memory.hpp.
__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.
Op | The atomic operation - can be atomic_op::inc , atomic_op::dec , or atomic_op::load . |
T | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The simd_view of 32-bit or 64-bit offsets in bytes. |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
props | The parameter 'props' specifies the optional compile-time properties list. Only L1/L2 properties are used. Other properties are ignored. |
Definition at line 4505 of file memory.hpp.
__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.
Op | The atomic operation - can be atomic_op::inc , atomic_op::dec , or atomic_op::load . |
T | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The scalar 32-bit or 64-bit offset in bytes. |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
Definition at line 4558 of file memory.hpp.
__ESIMD_API std::enable_if_t<std::is_integral_v<Toffset>, simd<Tx, N> > sycl::_V1::ext::intel::esimd::atomic_update | ( | Tx * | p, |
Toffset | 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.
Op | The atomic operation - can be one of the following: atomic_op::cmpxchg , atomic_op::fcmpxchg . |
Tx | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The scalar 32-bit or 64-bit offset in bytes. |
src0 | The first additional argument (new value). |
src1 | The second additional argument (expected value). |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
Definition at line 5665 of file memory.hpp.
References sycl::_V1::ext::intel::esimd::src0, and sycl::_V1::ext::intel::esimd::src1.
__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.
Op | The atomic operation - can be one of the following: atomic_op::add , atomic_op::sub , atomic_op::min , atomic_op::max , atomic_op::xchg , atomic_op::bit_and , atomic_op::bit_or , atomic_op::bit_xor , atomic_op::minsint , atomic_op::maxsint , atomic_op::fmax , atomic_op::fmin atomic_op::store . |
Tx | The vector element type. |
N | The number of memory locations to update. |
p | The USM pointer. |
byte_offset | The scalar 32-bit or 64-bit offsets in bytes. |
src0 | The additional argument. |
mask | Operation mask, only locations with non-zero in the corresponding mask element are updated. |
Definition at line 4983 of file memory.hpp.
References sycl::_V1::ext::intel::esimd::src0.