Skip to content

Commit 5ab1f76

Browse files
authored
[SYCL][ESIMD] Fix simd_view template argument and add nested simd_view tests (#13231)
Clean this up and add some tests. --------- Signed-off-by: Sarnie, Nick <[email protected]>
1 parent 9457144 commit 5ab1f76

File tree

3 files changed

+868
-228
lines changed

3 files changed

+868
-228
lines changed

sycl/doc/extensions/supported/sycl_ext_intel_esimd/sycl_ext_intel_esimd_functions.md

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -290,13 +290,13 @@ template <typename T, int N, typename OffsetT, typename PropertyListT = empty_pr
290290
PropertyListT props = {});
291291

292292
// gather from USM - general form accepting offsets as simd_view
293-
template <typename T, int N, int VS = 1, typename OffsetObjT,
294-
typename OffsetRegionT, typename PropertyListT = empty_props_t>
295-
/*usm-ga-7*/ simd <T, N> gather(const T *p, simd_view<OffsetObjT, OffsetRegionT> byte_offsets,
293+
template <typename T, int N, int VS = 1,
294+
typename OffsetSimdViewT, typename PropertyListT = empty_props_t>
295+
/*usm-ga-7*/ simd <T, N> gather(const T *p, OffsetSimdViewT byte_offsets,
296296
simd_mask<N / VS> mask, simd<T, N> pass_thru, PropertyListT props = {});
297-
/*usm-ga-8*/ simd <T, N> gather(const T *p, simd_view<OffsetObjT, OffsetRegionT> byte_offsets,
297+
/*usm-ga-8*/ simd <T, N> gather(const T *p, OffsetSimdViewT byte_offsets,
298298
simd_mask<N / VS> mask, PropertyListT props = {});
299-
/*usm-ga-9*/ simd <T, N> gather(const T *p, simd_view<OffsetObjT, OffsetRegionT> byte_offsets,
299+
/*usm-ga-9*/ simd <T, N> gather(const T *p, OffsetSimdViewT byte_offsets,
300300
PropertyListT props = {});
301301

302302

@@ -319,13 +319,13 @@ template <typename T, int N, typename AccessorT, typename OffsetT, typename Prop
319319
PropertyListT props = {});
320320

321321
// gather from memory accessed via device-accessor - general form accepting offsets as simd_view
322-
template <typename T, int N, int VS = 1, typename AccessorT, typename OffsetObjT,
323-
typename OffsetRegionT, typename PropertyListT = empty_props_t>
324-
/*acc-ga-7*/ simd <T, N> gather(AccessorT acc, simd_view<OffsetObjT, OffsetRegionT> byte_offsets,
322+
template <typename T, int N, int VS = 1, typename AccessorT,
323+
typename OffsetSimdViewT, typename PropertyListT = empty_props_t>
324+
/*acc-ga-7*/ simd <T, N> gather(AccessorT acc, OffsetSimdViewT byte_offsets,
325325
simd_mask<N / VS> mask, simd<T, N> pass_thru, PropertyListT props = {});
326-
/*acc-ga-8*/ simd <T, N> gather(AccessorT acc, simd_view<OffsetObjT, OffsetRegionT> byte_offsets,
326+
/*acc-ga-8*/ simd <T, N> gather(AccessorT acc, OffsetSimdViewT byte_offsets,
327327
simd_mask<N / VS> mask, PropertyListT props = {});
328-
/*acc-ga-9*/ simd <T, N> gather(AccessorT acc, simd_view<OffsetObjT, OffsetRegionT> byte_offsets,
328+
/*acc-ga-9*/ simd <T, N> gather(AccessorT acc, OffsetSimdViewT byte_offsets,
329329
PropertyListT props = {});
330330

331331

@@ -649,10 +649,10 @@ template <atomic_op Op, typename T, int N, typename Toffset, typename PropertyLi
649649
/*usm-au0-2*/ simd<T, N> atomic_update(T *p, simd<Toffset, N> byte_offset,props = {});
650650
651651
// Similar to (usm-au0-1,2), but `byte_offset` is `simd_view`.
652-
template <atomic_op Op, typename T, int N, typename OffsetObjT, typename RegionT,
652+
template <atomic_op Op, typename T, int N, typename OffsetSimdViewT,
653653
typename PropertyListT = detail::empty_properties_t>
654-
/*usm-au0-3*/ simd<T, N> atomic_update(T *p, simd_view<OffsetObjT, RegionT> byte_offset, simd_mask<N> mask, props = {});
655-
/*usm-au0-4*/simd<T, N> atomic_update(T *p, simd_view<OffsetObjT, RegionT> byte_offset, props = {});
654+
/*usm-au0-3*/ simd<T, N> atomic_update(T *p, OffsetSimdViewT byte_offset, simd_mask<N> mask, props = {});
655+
/*usm-au0-4*/ simd<T, N> atomic_update(T *p, OffsetSimdViewT byte_offset, props = {});
656656
657657
658658
// Atomic update the memory locations referenced by device-accessor - zero operands (dec, load, etc.).
@@ -664,11 +664,11 @@ template <atomic_op Op, typename T, int N, typename Toffset, typename AccessorT,
664664
props = {});
665665
666666
// Similar to (acc-au0-1,2), but `byte_offset` is `simd_view`.
667-
template <atomic_op Op, typename T, int N, typename OffsetObjT, typename AccessorT, typename RegionT,
667+
template <atomic_op Op, typename T, int N, typename AccessorT, typename OffsetSimdViewT,
668668
typename PropertyListT = empty_properties_t>
669-
/*acc-au0-3*/ simd<T, N> atomic_update(AccessorT acc, simd_view<OffsetObjT, RegionT> byte_offset,
669+
/*acc-au0-3*/ simd<T, N> atomic_update(AccessorT acc, OffsetSimdViewT byte_offset,
670670
simd_mask<N> mask, props = {});
671-
/*acc-au0-4*/ simd<T, N> atomic_update(AccessorT acc, simd_view<OffsetObjT, RegionT> byte_offset,
671+
/*acc-au0-4*/ simd<T, N> atomic_update(AccessorT acc, OffsetSimdViewT byte_offset,
672672
props = {});
673673
674674
@@ -691,9 +691,9 @@ template <atomic_op Op, typename T, int N>
691691
/*usm-au1-2*/ simd<T, N> atomic_update(T *ptr, simd<Toffset, N> byte_offset,
692692
simd<T, N> src0, props = {});
693693
// Similar to (usm-au1-1,2), but `byte_offset` is `simd_view`.
694-
/*usm-au1-3*/ simd<T, N> atomic_update(T *p, simd_view<OffsetObjT, OffsetRegionTy> byte_offset,
694+
/*usm-au1-3*/ simd<T, N> atomic_update(T *p, OffsetSimdViewT byte_offset,
695695
simd<T, N> src0, simd_mask<N> mask, props = {});
696-
/*usm-au1-4*/ simd<T, N> atomic_update(T *p, simd_view<OffsetObjT, OffsetRegionTy> byte_offset,
696+
/*usm-au1-4*/ simd<T, N> atomic_update(T *p, OffsetSimdViewT byte_offset,
697697
simd<T, N> src0, props = {});
698698

699699

@@ -706,11 +706,11 @@ template <atomic_op Op, typename T, int N, typename Toffset, typename AccessorT,
706706
simd<T, N> src0, props = {});
707707

708708
// Similar to (acc-au1-1,2), but `byte_offset` is `simd_view`.
709-
template <atomic_op Op, typename T, int N, typename OffsetObjT, typename AccessorT,
710-
typename RegionT, typename PropertyListT = empty_properties_t>
711-
/*acc-au1-3*/ simd<T, N> atomic_update(AccessorT acc, simd_view<OffsetObjT, RegionT> byte_offset,
709+
template <atomic_op Op, typename T, int N, typename AccessorT,
710+
typename OffsetSimdViewT, typename PropertyListT = empty_properties_t>
711+
/*acc-au1-3*/ simd<T, N> atomic_update(AccessorT acc, OffsetSimdViewT byte_offset,
712712
simd<T, N> src0, simd_mask<N> mask, props = {});
713-
/*acc-au1-4*/ simd<T, N> atomic_update(AccessorT acc, simd_view<OffsetObjT, RegionT> byte_offset,
713+
/*acc-au1-4*/ simd<T, N> atomic_update(AccessorT acc, OffsetSimdViewT byte_offset,
714714
simd<T, N> src0, props = {});
715715

716716
// Atomic update the memory locations referenced by local-accessor (SLM) - one operand (add, max, etc.).
@@ -731,9 +731,9 @@ template <atomic_op Op, typename T, int N>
731731
/*usm-au2-2*/ simd<T, N> atomic_update(T *ptr, simd<Toffset, N> byte_offset,
732732
simd<T, N> src0, simd<T, N> src1, props = {});
733733
// Similar to (usm-au2-1,2), but `byte_offset` is `simd_view`.
734-
/*usm-au2-3*/ simd<T, N> atomic_update(T *p, simd_view<OffsetObjT, OffsetRegionTy> byte_offset,
734+
/*usm-au2-3*/ simd<T, N> atomic_update(T *p, OffsetSimdViewT byte_offset,
735735
simd<T, N> src0, simd<T, N> src1, simd_mask<N> mask, props = {});
736-
/*usm-au2-4*/ simd<T, N> atomic_update(T *p, simd_view<OffsetObjT, OffsetRegionTy> byte_offset,
736+
/*usm-au2-4*/ simd<T, N> atomic_update(T *p, OffsetSimdViewT byte_offset,
737737
simd<T, N> src0, simd<T, N> src1, props = {});
738738
739739
@@ -746,11 +746,11 @@ template <atomic_op Op, typename T, int N, typename Toffset, typename AccessorT,
746746
simd<T, N> src0, simd<T, N> src1, props = {});
747747
748748
// Similar to (acc-au2-1,2), but `byte_offset` is `simd_view`.
749-
template <atomic_op Op, typename T, int N, typename OffsetObjT, typename AccessorT,
750-
typename RegionT, typename PropertyListT = empty_properties_t>
751-
/*acc-au2-3*/ simd<T, N> atomic_update(AccessorT acc, simd_view<OffsetObjT, RegionT> byte_offset,
749+
template <atomic_op Op, typename T, int N, typename AccessorT,
750+
typename OffsetSimdViewT, typename PropertyListT = empty_properties_t>
751+
/*acc-au2-3*/ simd<T, N> atomic_update(AccessorT acc, OffsetSimdViewT byte_offset,
752752
simd<T, N> src0, simd<T, N> src1, simd_mask<N> mask, props = {});
753-
/*acc-au2-4*/ simd<T, N> atomic_update(AccessorT acc, simd_view<OffsetObjT, RegionT> byte_offset,
753+
/*acc-au2-4*/ simd<T, N> atomic_update(AccessorT acc, OffsetSimdViewT byte_offset,
754754
simd<T, N> src0, simd<T, N> src1, props = {});
755755
756756
// Atomic update the memory locations referenced by local-accessor (SLM) - two operands: cmpxchg, fcmpxchg.

0 commit comments

Comments
 (0)