@@ -3057,11 +3057,12 @@ __ESIMD_API void media_block_store(AccessorTy acc, unsigned x, unsigned y,
3057
3057
// /
3058
3058
template <typename Tx, int N, typename AccessorTy,
3059
3059
typename Flags = overaligned_tag<detail::OperandSize::OWORD>>
3060
- __ESIMD_API std::enable_if_t <
3061
- sycl::detail::acc_properties::is_local_accessor_v<AccessorTy> &&
3062
- is_simd_flag_type_v<Flags>,
3063
- simd<Tx, N>>
3064
- block_load (AccessorTy acc, uint32_t offset, Flags = {}) {
3060
+ __ESIMD_API
3061
+ std::enable_if_t <detail::is_local_accessor_with_v<
3062
+ AccessorTy, detail::accessor_mode_cap::can_read> &&
3063
+ is_simd_flag_type_v<Flags>,
3064
+ simd<Tx, N>>
3065
+ block_load (AccessorTy acc, uint32_t offset, Flags = {}) {
3065
3066
return slm_block_load<Tx, N, Flags>(offset +
3066
3067
__ESIMD_DNS::localAccessorToOffset (acc));
3067
3068
}
@@ -3085,10 +3086,11 @@ block_load(AccessorTy acc, uint32_t offset, Flags = {}) {
3085
3086
// /
3086
3087
template <typename Tx, int N, typename AccessorTy,
3087
3088
typename Flags = overaligned_tag<detail::OperandSize::OWORD>>
3088
- __ESIMD_API std::enable_if_t <
3089
- sycl::detail::acc_properties::is_local_accessor_v<AccessorTy> &&
3090
- is_simd_flag_type_v<Flags>>
3091
- block_store (AccessorTy acc, uint32_t offset, simd<Tx, N> vals, Flags = {}) {
3089
+ __ESIMD_API
3090
+ std::enable_if_t <detail::is_local_accessor_with_v<
3091
+ AccessorTy, detail::accessor_mode_cap::can_write> &&
3092
+ is_simd_flag_type_v<Flags>>
3093
+ block_store (AccessorTy acc, uint32_t offset, simd<Tx, N> vals, Flags = {}) {
3092
3094
slm_block_store<Tx, N, Flags>(
3093
3095
offset + __ESIMD_DNS::localAccessorToOffset (acc), vals);
3094
3096
}
@@ -3111,10 +3113,12 @@ block_store(AccessorTy acc, uint32_t offset, simd<Tx, N> vals, Flags = {}) {
3111
3113
// / undefined.
3112
3114
// /
3113
3115
template <typename T, int N, typename AccessorTy>
3114
- __ESIMD_API std::enable_if_t <
3115
- sycl::detail::acc_properties::is_local_accessor_v<AccessorTy>, simd<T, N>>
3116
- gather (AccessorTy acc, simd<uint32_t , N> offsets, uint32_t glob_offset = 0 ,
3117
- simd_mask<N> mask = 1 ) {
3116
+ __ESIMD_API
3117
+ std::enable_if_t <detail::is_local_accessor_with_v<
3118
+ AccessorTy, detail::accessor_mode_cap::can_read>,
3119
+ simd<T, N>>
3120
+ gather (AccessorTy acc, simd<uint32_t , N> offsets, uint32_t glob_offset = 0 ,
3121
+ simd_mask<N> mask = 1 ) {
3118
3122
return slm_gather<T, N>(
3119
3123
offsets + glob_offset + __ESIMD_DNS::localAccessorToOffset (acc), mask);
3120
3124
}
@@ -3138,8 +3142,8 @@ gather(AccessorTy acc, simd<uint32_t, N> offsets, uint32_t glob_offset = 0,
3138
3142
// /
3139
3143
// /
3140
3144
template <typename T, int N, typename AccessorTy>
3141
- __ESIMD_API std::enable_if_t <
3142
- sycl:: detail::acc_properties::is_local_accessor_v<AccessorTy >>
3145
+ __ESIMD_API std::enable_if_t <detail::is_local_accessor_with_v<
3146
+ AccessorTy, detail::accessor_mode_cap::can_write >>
3143
3147
scatter (AccessorTy acc, simd<uint32_t , N> offsets, simd<T, N> vals,
3144
3148
uint32_t glob_offset = 0 , simd_mask<N> mask = 1 ) {
3145
3149
slm_scatter<T, N>(offsets + glob_offset +
@@ -3174,11 +3178,12 @@ scatter(AccessorTy acc, simd<uint32_t, N> offsets, simd<T, N> vals,
3174
3178
template <rgba_channel_mask RGBAMask = rgba_channel_mask::ABGR,
3175
3179
typename AccessorT, int N,
3176
3180
typename T = typename AccessorT::value_type>
3177
- __ESIMD_API std::enable_if_t <
3178
- sycl::detail::acc_properties::is_local_accessor_v<AccessorT>,
3179
- simd<T, N * get_num_channels_enabled (RGBAMask)>>
3180
- gather_rgba(AccessorT acc, simd<uint32_t , N> offsets,
3181
- uint32_t global_offset = 0 , simd_mask<N> mask = 1 ) {
3181
+ __ESIMD_API
3182
+ std::enable_if_t <detail::is_local_accessor_with_v<
3183
+ AccessorT, detail::accessor_mode_cap::can_read>,
3184
+ simd<T, N * get_num_channels_enabled (RGBAMask)>>
3185
+ gather_rgba(AccessorT acc, simd<uint32_t , N> offsets,
3186
+ uint32_t global_offset = 0 , simd_mask<N> mask = 1 ) {
3182
3187
return slm_gather_rgba<T, N, RGBAMask>(
3183
3188
offsets + global_offset + __ESIMD_DNS::localAccessorToOffset (acc), mask);
3184
3189
}
@@ -3202,8 +3207,8 @@ gather_rgba(AccessorT acc, simd<uint32_t, N> offsets,
3202
3207
template <rgba_channel_mask RGBAMask = rgba_channel_mask::ABGR,
3203
3208
typename AccessorT, int N,
3204
3209
typename T = typename AccessorT::value_type>
3205
- __ESIMD_API std::enable_if_t <
3206
- sycl:: detail::acc_properties::is_local_accessor_v<AccessorT >>
3210
+ __ESIMD_API std::enable_if_t <detail::is_local_accessor_with_v<
3211
+ AccessorT, detail::accessor_mode_cap::can_write >>
3207
3212
scatter_rgba (AccessorT acc, simd<uint32_t , N> offsets,
3208
3213
simd<T, N * get_num_channels_enabled (RGBAMask)> vals,
3209
3214
uint32_t global_offset = 0, simd_mask<N> mask = 1) {
0 commit comments