DPC++ Runtime
Runtime libraries for oneAPI DPC++
multi_ptr.hpp File Reference
#include <CL/__spirv/spirv_ops.hpp>
#include <sycl/access/access.hpp>
#include <sycl/aliases.hpp>
#include <sycl/detail/defines_elementary.hpp>
#include <sycl/detail/type_traits.hpp>
#include <sycl/half_type.hpp>
#include <cstddef>
#include <iterator>
#include <type_traits>
Include dependency graph for multi_ptr.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  sycl::_V1::detail::LegacyPointerTypes< ElementType, Space >
 
struct  sycl::_V1::detail::LegacyPointerTypes< ElementType, access::address_space::constant_space >
 
struct  sycl::_V1::detail::LegacyReferenceTypes< ElementType, Space >
 
struct  sycl::_V1::detail::LegacyReferenceTypes< ElementType, access::address_space::constant_space >
 
class  sycl::_V1::multi_ptr< ElementType, Space, DecorateAddress >
 Provides constructors for address space qualified and non address space qualified pointers to allow interoperability between plain C++ and OpenCL C. More...
 
class  sycl::_V1::multi_ptr< const void, Space, DecorateAddress >
 Specialization of multi_ptr for const void. More...
 
class  sycl::_V1::multi_ptr< void, Space, DecorateAddress >
 

Namespaces

 sycl
 
 sycl::_V1
 
 sycl::_V1::detail
 

Typedefs

using sycl::_V1::element_type = std::conditional_t< std::is_same_v< ElementType, half >, sycl::detail::half_impl::BIsRepresentationT, ElementType >
 
using sycl::_V1::difference_type = std::ptrdiff_t
 
using sycl::_V1::pointer_t = typename detail::LegacyPointerTypes< ElementType, Space >::pointer_t
 
using sycl::_V1::const_pointer_t = typename detail::LegacyPointerTypes< ElementType, Space >::const_pointer_t
 
using sycl::_V1::reference_t = typename detail::LegacyReferenceTypes< ElementType, Space >::reference_t
 
using sycl::_V1::const_reference_t = typename detail::LegacyReferenceTypes< ElementType, Space >::const_reference_t
 
using sycl::_V1::ReturnPtr = detail::const_if_const_AS< Space, ElementType > *
 
using sycl::_V1::ReturnRef = detail::const_if_const_AS< Space, ElementType > &
 
using sycl::_V1::ReturnConstRef = const ElementType &
 

Functions

template<typename ElementType , access::address_space Space>
class sycl::_V1::__SYCL2020_DEPRECATED ("decorated::legacy multi_ptr specialization is deprecated since SYCL 2020.") multi_ptr< ElementType
 
 sycl::_V1::multi_ptr ()
 
 sycl::_V1::multi_ptr (const multi_ptr &rhs)=default
 
 sycl::_V1::multi_ptr (multi_ptr &&)=default
 
 sycl::_V1::multi_ptr (ElementType *pointer)
 
 sycl::_V1::multi_ptr (std::nullptr_t)
 
 sycl::_V1::~multi_ptr ()=default
 
multi_ptr & sycl::_V1::operator= (const multi_ptr &)=default
 
multi_ptr & sycl::_V1::operator= (multi_ptr &&)=default
 
multi_ptr & sycl::_V1::operator= (ElementType *pointer)
 
multi_ptr & sycl::_V1::operator= (std::nullptr_t)
 
ReturnRef sycl::_V1::operator* () const
 
ReturnPtr sycl::_V1::operator-> () const
 
ReturnRef sycl::_V1::operator[] (difference_type index)
 
template<int dimensions, access::mode Mode, access::placeholder isPlaceholder, typename PropertyListT , access::address_space _Space = Space, typename = typename std::enable_if_t< _Space == Space && (Space == access::address_space::generic_space || Space == access::address_space::global_space || Space == access::address_space::ext_intel_global_device_space)>>
 sycl::_V1::multi_ptr (accessor< ElementType, dimensions, Mode, target::device, isPlaceholder, PropertyListT > Accessor)
 
template<int dimensions, access::mode Mode, access::placeholder isPlaceholder, typename PropertyListT , access::address_space _Space = Space, typename = typename std::enable_if_t< _Space == Space && (Space == access::address_space::generic_space || Space == access::address_space::local_space)>>
 sycl::_V1::multi_ptr (accessor< ElementType, dimensions, Mode, target::local, isPlaceholder, PropertyListT > Accessor)
 
template<int dimensions>
 sycl::_V1::multi_ptr (local_accessor< ElementType, dimensions > Accessor)
 
template<int dimensions, access::mode Mode, access::placeholder isPlaceholder, typename PropertyListT , access::address_space _Space = Space, typename = typename std::enable_if_t< _Space == Space && Space == access::address_space::constant_space>>
 sycl::_V1::multi_ptr (accessor< ElementType, dimensions, Mode, target::constant_buffer, isPlaceholder, PropertyListT > Accessor)
 
template<int dimensions, access::mode Mode, access::placeholder isPlaceholder, typename PropertyListT , access::address_space _Space = Space, typename ET = ElementType, typename = typename std::enable_if_t< _Space == Space && (Space == access::address_space::generic_space || Space == access::address_space::global_space || Space == access::address_space::ext_intel_global_device_space) && std::is_const_v<ET> && std::is_same_v<ET, ElementType>>>
 sycl::_V1::multi_ptr (accessor< typename std::remove_const_t< ET >, dimensions, Mode, target::device, isPlaceholder, PropertyListT > Accessor)
 
template<int dimensions, access::mode Mode, access::placeholder isPlaceholder, typename PropertyListT , access::address_space _Space = Space, typename ET = ElementType, typename = typename std::enable_if_t< _Space == Space && (Space == access::address_space::generic_space || Space == access::address_space::local_space) && std::is_const_v<ET> && std::is_same_v<ET, ElementType>>>
 sycl::_V1::multi_ptr (accessor< typename std::remove_const_t< ET >, dimensions, Mode, target::local, isPlaceholder, PropertyListT > Accessor)
 
template<int dimensions, access::address_space _Space = Space, typename ET = ElementType, typename = typename std::enable_if_t< _Space == Space && (Space == access::address_space::generic_space || Space == access::address_space::local_space) && std::is_const_v<ET> && std::is_same_v<ET, ElementType>>>
 sycl::_V1::multi_ptr (local_accessor< typename std::remove_const_t< ET >, dimensions > Accessor)
 
template<int dimensions, access::mode Mode, access::placeholder isPlaceholder, typename PropertyListT , access::address_space _Space = Space, typename ET = ElementType, typename = typename std::enable_if_t< _Space == Space && Space == access::address_space::constant_space && std::is_const_v<ET> && std::is_same_v<ET, ElementType>>>
 sycl::_V1::multi_ptr (accessor< typename std::remove_const_t< ET >, dimensions, Mode, target::constant_buffer, isPlaceholder, PropertyListT > Accessor)
 
template<typename ET = ElementType>
 sycl::_V1::multi_ptr (typename std::enable_if_t< std::is_const_v< ET > &&std::is_same_v< ET, ElementType >, const multi_ptr< typename std::remove_const_t< ET >, Space, access::decorated::legacy >> &ETP)
 
pointer_t sycl::_V1::get () const
 
pointer_t sycl::_V1::get_decorated () const
 
std::add_pointer_t< element_type > sycl::_V1::get_raw () const
 
 sycl::_V1::operator ReturnPtr () const
 
 sycl::_V1::operator multi_ptr< const ElementType, Space, access::decorated::legacy > () const
 
multi_ptr & sycl::_V1::operator++ ()
 
multi_ptr sycl::_V1::operator++ (int)
 
multi_ptr & sycl::_V1::operator-- ()
 
multi_ptr sycl::_V1::operator-- (int)
 
multi_ptr & sycl::_V1::operator+= (difference_type r)
 
multi_ptr & sycl::_V1::operator-= (difference_type r)
 
multi_ptr sycl::_V1::operator+ (difference_type r) const
 
multi_ptr sycl::_V1::operator- (difference_type r) const
 
template<access::address_space _Space = Space, typename = typename std::enable_if_t< _Space == Space && Space == access::address_space::global_space>>
void sycl::_V1::prefetch (size_t NumElements) const
 

Variables

static constexpr access::address_space sycl::_V1::address_space = Space