@@ -2012,6 +2012,22 @@ class __SYCL_EBO __SYCL_SPECIAL_CLASS __SYCL_TYPE(accessor) accessor :
2012
2012
return *(getQualifiedPtr () + LinearIndex);
2013
2013
}
2014
2014
2015
+ template <int Dims = Dimensions,
2016
+ typename = detail::enable_if_t <AccessMode != access_mode::atomic &&
2017
+ !IsAccessReadOnly && Dims == 0 >>
2018
+ const accessor &operator =(const value_type &Other) const {
2019
+ *getQualifiedPtr () = Other;
2020
+ return *this ;
2021
+ }
2022
+
2023
+ template <int Dims = Dimensions,
2024
+ typename = detail::enable_if_t <AccessMode != access_mode::atomic &&
2025
+ !IsAccessReadOnly && Dims == 0 >>
2026
+ const accessor &operator =(value_type &&Other) const {
2027
+ *getQualifiedPtr () = std::move (Other);
2028
+ return *this ;
2029
+ }
2030
+
2015
2031
template <int Dims = Dimensions,
2016
2032
typename = detail::enable_if_t <(Dims > 0 ) && (IsAccessAnyWrite ||
2017
2033
IsAccessReadOnly)>>
@@ -2780,6 +2796,20 @@ class __SYCL_EBO __SYCL_SPECIAL_CLASS __SYCL_TYPE(local_accessor) local_accessor
2780
2796
return Property ();
2781
2797
#endif
2782
2798
}
2799
+
2800
+ template <int Dims = Dimensions, typename = detail::enable_if_t <
2801
+ !std::is_const_v<DataT> && Dims == 0 >>
2802
+ const local_accessor &operator =(const value_type &Other) const {
2803
+ *local_acc::getQualifiedPtr () = Other;
2804
+ return *this ;
2805
+ }
2806
+
2807
+ template <int Dims = Dimensions, typename = detail::enable_if_t <
2808
+ !std::is_const_v<DataT> && Dims == 0 >>
2809
+ const local_accessor &operator =(value_type &&Other) const {
2810
+ *local_acc::getQualifiedPtr () = std::move (Other);
2811
+ return *this ;
2812
+ }
2783
2813
};
2784
2814
2785
2815
// / Image accessors.
@@ -2957,6 +2987,7 @@ class __SYCL_EBO host_accessor
2957
2987
access::placeholder::false_t >;
2958
2988
2959
2989
constexpr static int AdjustedDim = Dimensions == 0 ? 1 : Dimensions;
2990
+ constexpr static bool IsAccessReadOnly = AccessMode == access::mode::read;
2960
2991
2961
2992
template <typename T, int Dims>
2962
2993
struct IsSameAsBuffer
@@ -3111,6 +3142,23 @@ class __SYCL_EBO host_accessor
3111
3142
const detail::code_location CodeLoc = detail::code_location::current())
3112
3143
: host_accessor(BufferRef, CommandGroupHandler, AccessRange, AccessOffset,
3113
3144
PropertyList, CodeLoc) {}
3145
+
3146
+ template <int Dims = Dimensions,
3147
+ typename = detail::enable_if_t <AccessMode != access_mode::atomic &&
3148
+ !IsAccessReadOnly && Dims == 0 >>
3149
+ const host_accessor &
3150
+ operator =(const typename AccessorT::value_type &Other) const {
3151
+ *AccessorT::getQualifiedPtr () = Other;
3152
+ return *this ;
3153
+ }
3154
+
3155
+ template <int Dims = Dimensions,
3156
+ typename = detail::enable_if_t <AccessMode != access_mode::atomic &&
3157
+ !IsAccessReadOnly && Dims == 0 >>
3158
+ const host_accessor &operator =(typename AccessorT::value_type &&Other) const {
3159
+ *AccessorT::getQualifiedPtr () = std::move (Other);
3160
+ return *this ;
3161
+ }
3114
3162
};
3115
3163
3116
3164
template <typename DataT, int Dimensions, typename AllocatorT>
0 commit comments