Skip to content

Commit 8c73685

Browse files
committed
Address PR comments
1 parent 0ed058e commit 8c73685

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

sycl/include/sycl/ext/intel/esimd/memory.hpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ __ESIMD_API void scatter(Tx *p, simd_view<Toffset, RegionTy> offsets,
266266
/// @param mask The access mask, defaults to all 1s.
267267
///
268268
template <typename Tx, int N, typename Toffset>
269-
__ESIMD_API std::enable_if_t<std::is_integral_v<Toffset>>
269+
__ESIMD_API std::enable_if_t<std::is_integral_v<Toffset> && N == 1>
270270
scatter(Tx *p, Toffset offset, simd<Tx, N> vals, simd_mask<N> mask = 1) {
271271
scatter<Tx, N>(p, simd<Toffset, N>(offset), vals, mask);
272272
}
@@ -794,7 +794,7 @@ scatter_rgba(T *p, simd_view<Toffset, RegionTy> offsets,
794794
///
795795
template <rgba_channel_mask RGBAMask = rgba_channel_mask::ABGR, typename T,
796796
int N, typename Toffset>
797-
__ESIMD_API std::enable_if_t<std::is_integral_v<Toffset>>
797+
__ESIMD_API std::enable_if_t<std::is_integral_v<Toffset> && N == 1>
798798
scatter_rgba(T *p, Toffset offset,
799799
simd<T, N * get_num_channels_enabled(RGBAMask)> vals,
800800
simd_mask<N> mask = 1) {
@@ -1040,7 +1040,10 @@ __ESIMD_API simd<Tx, N> atomic_update(Tx *p,
10401040
/// update.
10411041
///
10421042
template <atomic_op Op, typename Tx, int N, typename Toffset>
1043-
__ESIMD_API std::enable_if_t<std::is_integral_v<Toffset>, simd<Tx, N>>
1043+
__ESIMD_API std::enable_if_t<
1044+
std::is_integral_v<Toffset> &&
1045+
((Op != atomic_op::store && Op != atomic_op::xchg) || N == 1),
1046+
simd<Tx, N>>
10441047
atomic_update(Tx *p, Toffset offset, simd<Tx, N> src0, simd_mask<N> mask) {
10451048
return atomic_update<Op, Tx, N>(p, simd<Toffset, N>(offset), src0, mask);
10461049
}

sycl/include/sycl/ext/intel/experimental/esimd/memory.hpp

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -963,7 +963,7 @@ template <typename T, int NElts = 1,
963963
lsc_data_size DS = lsc_data_size::default_size,
964964
cache_hint L1H = cache_hint::none, cache_hint L3H = cache_hint::none,
965965
int N, typename Toffset>
966-
__ESIMD_API std::enable_if_t<std::is_integral_v<Toffset>>
966+
__ESIMD_API std::enable_if_t<std::is_integral_v<Toffset> && N == 1>
967967
lsc_scatter(T *p, Toffset offset, __ESIMD_NS::simd<T, N * NElts> vals,
968968
__ESIMD_NS::simd_mask<N> pred = 1) {
969969
lsc_scatter<T, NElts, DS, L1H, L3H, N>(
@@ -1616,10 +1616,13 @@ template <__ESIMD_NS::atomic_op Op, typename T, int N,
16161616
lsc_data_size DS = lsc_data_size::default_size,
16171617
cache_hint L1H = cache_hint::none, cache_hint L3H = cache_hint::none,
16181618
typename Toffset>
1619-
__ESIMD_API
1620-
std::enable_if_t<std::is_integral_v<Toffset>, __ESIMD_NS::simd<T, N>>
1621-
lsc_atomic_update(T *p, Toffset offset, __ESIMD_NS::simd<T, N> src0,
1622-
__ESIMD_NS::simd_mask<N> pred = 1) {
1619+
__ESIMD_API std::enable_if_t<std::is_integral_v<Toffset> &&
1620+
((Op != __ESIMD_NS::atomic_op::store &&
1621+
Op != __ESIMD_NS::atomic_op::xchg) ||
1622+
N == 1),
1623+
__ESIMD_NS::simd<T, N>>
1624+
lsc_atomic_update(T *p, Toffset offset, __ESIMD_NS::simd<T, N> src0,
1625+
__ESIMD_NS::simd_mask<N> pred = 1) {
16231626
return lsc_atomic_update<Op, T, N, DS, L1H, L3H>(
16241627
p, __ESIMD_NS::simd<Toffset, N>(offset), src0, pred);
16251628
}

0 commit comments

Comments
 (0)