25 inline namespace _V1 {
27 namespace ext::intel::esimd {
28 template <
typename AccessorTy>
32 namespace ext::intel::esimd::detail {
35 class AccessorPrivateProxy {
37 template <
typename AccessorTy>
38 static auto getQualifiedPtrOrImageObj(
const AccessorTy &Acc) {
39 #ifdef __SYCL_DEVICE_ONLY__
40 if constexpr (sycl::detail::acc_properties::is_image_accessor_v<AccessorTy>)
41 return Acc.getNativeImageObj();
43 return Acc.getQualifiedPtr();
49 #ifndef __SYCL_DEVICE_ONLY__
50 static void *getPtr(
const sycl::detail::AccessorBaseHost &Acc) {
56 template <
int ElemsPerAddr,
57 typename = std::enable_if_t<(ElemsPerAddr == 1 || ElemsPerAddr == 2 ||
59 constexpr
unsigned int ElemsPerAddrEncoding() {
61 if constexpr (ElemsPerAddr == 1)
63 else if constexpr (ElemsPerAddr == 2)
65 else if constexpr (ElemsPerAddr == 4)
71 constexpr
unsigned int ElemsPerAddrDecoding(
unsigned int ElemsPerAddrEncoded) {
73 return (1 << ElemsPerAddrEncoded);
81 template <
typename Ty,
int N,
int NumBlk = 0,
int ElemsPerAddr = 0>
83 __ESIMD_DNS::vector_type_t<Ty,
84 N * __ESIMD_DNS::ElemsPerAddrDecoding(NumBlk)>
85 __esimd_svm_gather(__ESIMD_DNS::vector_type_t<uint64_t, N> addrs,
86 __ESIMD_DNS::simd_mask_storage_t<N> pred = 1)
90 template <typename Ty,
int N,
int NumBlk = 0,
int ElemsPerAddr = 0>
91 __ESIMD_INTRIN
void __esimd_svm_scatter(
92 __ESIMD_DNS::vector_type_t<uint64_t, N> addrs,
93 __ESIMD_DNS::vector_type_t<Ty,
94 N * __ESIMD_DNS::ElemsPerAddrDecoding(NumBlk)>
96 __ESIMD_DNS::simd_mask_storage_t<N> pred = 1) __ESIMD_INTRIN_END;
99 template <typename Ty,
int N, typename SurfIndAliasTy, int32_t IsModified = 0>
100 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<Ty, N>
101 __esimd_oword_ld_unaligned(SurfIndAliasTy surf_ind,
102 uint32_t offset) __ESIMD_INTRIN_END;
105 template <typename Ty,
int N, typename SurfIndAliasTy>
107 __esimd_oword_st(SurfIndAliasTy surf_ind, uint32_t owords_offset,
108 __ESIMD_DNS::vector_type_t<Ty, N> vals) __ESIMD_INTRIN_END;
111 template <typename Ty,
int N,
size_t Align>
112 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<Ty, N> __esimd_svm_block_ld(
113 const __ESIMD_DNS::vector_type_t<Ty, N> *addr) __ESIMD_INTRIN_END;
116 template <typename Ty,
int N,
size_t Align>
118 __esimd_slm_block_st(uint32_t offset,
119 __ESIMD_DNS::vector_type_t<Ty, N> vals) __ESIMD_INTRIN_END;
139 uint16_t AddressScale,
int ImmOffset, __ESIMD_DNS::
lsc_data_size DS,
142 __ESIMD_INTRIN
void __esimd_lsc_store_slm(
143 __ESIMD_DNS::simd_mask_storage_t<N> pred,
144 __ESIMD_DNS::vector_type_t<uint32_t, N> offsets,
145 __ESIMD_DNS::vector_type_t<Ty, N * __ESIMD_DNS::
to_int<VS>()> vals)
165 uint16_t AddressScale,
int ImmOffset, __ESIMD_DNS::
lsc_data_size DS,
168 __ESIMD_INTRIN
void __esimd_lsc_prefetch_stateless(
169 __ESIMD_DNS::simd_mask_storage_t<N> pred,
170 __ESIMD_DNS::vector_type_t<uintptr_t, N> addrs) __ESIMD_INTRIN_END;
191 uint16_t AddressScale,
int ImmOffset, __ESIMD_DNS::
lsc_data_size DS,
194 typename SurfIndAliasTy>
196 __esimd_lsc_prefetch_bti(__ESIMD_DNS::simd_mask_storage_t<N> pred,
197 __ESIMD_DNS::vector_type_t<uint32_t, N> offsets,
198 SurfIndAliasTy surf_ind) __ESIMD_INTRIN_END;
201 template <typename Ty,
int N,
size_t Align>
202 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<Ty, N>
203 __esimd_slm_block_ld(uint32_t offset) __ESIMD_INTRIN_END;
206 template <typename Ty,
int N,
size_t Align>
208 __esimd_svm_block_st(__ESIMD_DNS::vector_type_t<Ty, N> *addr,
209 __ESIMD_DNS::vector_type_t<Ty, N> vals) __ESIMD_INTRIN_END;
232 uint16_t AddressScale,
int ImmOffset, __ESIMD_DNS::
lsc_data_size DS,
235 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<Ty, N * __ESIMD_DNS::
to_int<VS>()>
236 __esimd_lsc_load_merge_slm(
237 __ESIMD_DNS::simd_mask_storage_t<N> pred,
238 __ESIMD_DNS::vector_type_t<uint32_t, N> offsets,
239 __ESIMD_DNS::vector_type_t<Ty, N * __ESIMD_DNS::
to_int<VS>()> pass_thru)
246 uint16_t AddressScale,
int ImmOffset, __ESIMD_DNS::
lsc_data_size DS,
249 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<Ty, N * __ESIMD_DNS::
to_int<VS>()>
250 __esimd_lsc_load_slm(__ESIMD_DNS::simd_mask_storage_t<N> pred,
251 __ESIMD_DNS::vector_type_t<uint32_t, N> offsets)
255 template <typename T,
int N,
size_t Align>
256 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<T, N> __esimd_gather_ld(
257 __ESIMD_DNS::vector_type_t<uint64_t, N> vptr,
258 __ESIMD_DNS::simd_mask_storage_t<N> pred,
259 __ESIMD_DNS::vector_type_t<T, N> pass_thru) __ESIMD_INTRIN_END;
262 template <typename T,
int N,
size_t Align>
263 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<T, N> __esimd_slm_gather_ld(
264 __ESIMD_DNS::vector_type_t<uint32_t, N> vptr,
265 __ESIMD_DNS::simd_mask_storage_t<N> pred,
266 __ESIMD_DNS::vector_type_t<T, N> pass_thru) __ESIMD_INTRIN_END;
269 template <typename T,
int N,
size_t Align>
271 __esimd_scatter_st(__ESIMD_DNS::vector_type_t<T, N> vals,
272 __ESIMD_DNS::vector_type_t<uint64_t, N> vptr,
273 __ESIMD_DNS::simd_mask_storage_t<N> pred) __ESIMD_INTRIN_END;
276 template <typename T,
int N,
size_t Align>
277 __ESIMD_INTRIN
void __esimd_slm_scatter_st(
278 __ESIMD_DNS::vector_type_t<T, N> vals,
279 __ESIMD_DNS::vector_type_t<uint32_t, N> vptr,
280 __ESIMD_DNS::simd_mask_storage_t<N> pred) __ESIMD_INTRIN_END;
307 uint16_t AddressScale,
int ImmOffset, __ESIMD_DNS::
lsc_data_size DS,
309 __ESIMD_DNS::
lsc_data_order Transposed,
int N, typename SurfIndAliasT>
310 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<T, N * __ESIMD_DNS::
to_int<VS>()>
311 __esimd_lsc_load_merge_bti(
312 __ESIMD_DNS::simd_mask_storage_t<N> pred,
313 __ESIMD_DNS::vector_type_t<uint32_t, N> offsets, SurfIndAliasT surf_ind,
314 __ESIMD_DNS::vector_type_t<T, N * __ESIMD_DNS::
to_int<VS>()> PassThru)
321 uint16_t AddressScale,
int ImmOffset, __ESIMD_DNS::
lsc_data_size DS,
323 __ESIMD_DNS::
lsc_data_order Transposed,
int N, typename SurfIndAliasT>
324 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<T, N * __ESIMD_DNS::
to_int<VS>()>
325 __esimd_lsc_load_bti(__ESIMD_DNS::simd_mask_storage_t<N> pred,
326 __ESIMD_DNS::vector_type_t<uint32_t, N> offsets,
327 SurfIndAliasT surf_ind) __ESIMD_INTRIN_END;
332 __ESIMD_INTRIN __esimd_svm_gather4_scaled(
333 __ESIMD_DNS::vector_type_t<uint64_t, N> addrs,
334 __ESIMD_DNS::simd_mask_storage_t<N> pred = 1) __ESIMD_INTRIN_END;
338 __ESIMD_INTRIN
void __esimd_svm_scatter4_scaled(
339 __ESIMD_DNS::vector_type_t<uint64_t, N> addrs,
341 __ESIMD_DNS::simd_mask_storage_t<N> pred = 1) __ESIMD_INTRIN_END;
365 template <typename Ty,
int N, typename SurfIndAliasTy,
int TySizeLog2,
367 __ESIMD_INTRIN
void __esimd_scatter_scaled(
368 __ESIMD_DNS::simd_mask_storage_t<N> pred, SurfIndAliasTy surf_ind,
369 uint32_t global_offset,
370 __ESIMD_DNS::vector_type_t<uint32_t, N> elem_offsets,
371 __ESIMD_DNS::vector_type_t<Ty, N> vals) __ESIMD_INTRIN_END;
374 template <__ESIMD_NS::
atomic_op Op, typename Ty,
int N>
375 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<Ty, N> __esimd_svm_atomic0(
376 __ESIMD_DNS::vector_type_t<uint64_t, N> addrs,
377 __ESIMD_DNS::simd_mask_storage_t<N> pred) __ESIMD_INTRIN_END;
379 template <__ESIMD_NS::
atomic_op Op, typename Ty,
int N>
380 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<Ty, N> __esimd_svm_atomic1(
381 __ESIMD_DNS::vector_type_t<uint64_t, N> addrs,
382 __ESIMD_DNS::vector_type_t<Ty, N>
src0,
383 __ESIMD_DNS::simd_mask_storage_t<N> pred) __ESIMD_INTRIN_END;
385 template <__ESIMD_NS::
atomic_op Op, typename Ty,
int N>
386 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<Ty, N> __esimd_svm_atomic2(
387 __ESIMD_DNS::vector_type_t<uint64_t, N> addrs,
388 __ESIMD_DNS::vector_type_t<Ty, N>
src0,
389 __ESIMD_DNS::vector_type_t<Ty, N>
src1,
390 __ESIMD_DNS::simd_mask_storage_t<N> pred) __ESIMD_INTRIN_END;
407 template <typename Ty,
int InternalOp, __ESIMD_NS::
cache_hint L1H,
408 __ESIMD_NS::
cache_hint L2H, uint16_t AddressScale,
int ImmOffset,
411 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<Ty, N * __ESIMD_DNS::
to_int<VS>()>
412 __esimd_lsc_xatomic_stateless_0(__ESIMD_DNS::simd_mask_storage_t<N> pred,
413 __ESIMD_DNS::vector_type_t<uintptr_t, N> addrs)
433 template <typename Ty,
int InternalOp, __ESIMD_NS::
cache_hint L1H,
434 __ESIMD_NS::
cache_hint L2H, uint16_t AddressScale,
int ImmOffset,
437 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<Ty, N * __ESIMD_DNS::
to_int<VS>()>
438 __esimd_lsc_xatomic_stateless_1(
439 __ESIMD_DNS::simd_mask_storage_t<N> pred,
440 __ESIMD_DNS::vector_type_t<uintptr_t, N> addrs,
441 __ESIMD_DNS::vector_type_t<Ty, N * __ESIMD_DNS::
to_int<VS>()>
src0)
461 template <typename Ty,
int InternalOp, __ESIMD_NS::
cache_hint L1H,
462 __ESIMD_NS::
cache_hint L2H, uint16_t AddressScale,
int ImmOffset,
465 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<Ty, N * __ESIMD_DNS::
to_int<VS>()>
466 __esimd_lsc_xatomic_stateless_2(
467 __ESIMD_DNS::simd_mask_storage_t<N> Pred,
468 __ESIMD_DNS::vector_type_t<uintptr_t, N> Addrs,
469 __ESIMD_DNS::vector_type_t<Ty, N * __ESIMD_DNS::
to_int<VS>()>
src0,
470 __ESIMD_DNS::vector_type_t<Ty, N * __ESIMD_DNS::
to_int<VS>()>
src1)
490 template <typename Ty,
int InternalOp, __ESIMD_NS::
cache_hint L1H,
491 __ESIMD_NS::
cache_hint L2H, uint16_t AddressScale,
int ImmOffset,
494 typename SurfIndAliasTy>
495 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<Ty, N * __ESIMD_DNS::
to_int<VS>()>
496 __esimd_lsc_xatomic_bti_0(__ESIMD_DNS::simd_mask_storage_t<N> pred,
497 __ESIMD_DNS::vector_type_t<uint32_t, N> offsets,
498 SurfIndAliasTy surf_ind) __ESIMD_INTRIN_END;
518 template <typename Ty,
int InternalOp, __ESIMD_NS::
cache_hint L1H,
519 __ESIMD_NS::
cache_hint L2H, uint16_t AddressScale,
int ImmOffset,
522 typename SurfIndAliasTy>
523 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<Ty, N * __ESIMD_DNS::
to_int<VS>()>
524 __esimd_lsc_xatomic_bti_1(
525 __ESIMD_DNS::simd_mask_storage_t<N> pred,
526 __ESIMD_DNS::vector_type_t<uint32_t, N> offsets,
527 __ESIMD_DNS::vector_type_t<Ty, N * __ESIMD_DNS::
to_int<VS>()>
src0,
528 SurfIndAliasTy surf_ind) __ESIMD_INTRIN_END;
549 template <typename Ty,
int InternalOp, __ESIMD_NS::
cache_hint L1H,
550 __ESIMD_NS::
cache_hint L2H, uint16_t AddressScale,
int ImmOffset,
553 typename SurfIndAliasTy>
554 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<Ty, N * __ESIMD_DNS::
to_int<VS>()>
555 __esimd_lsc_xatomic_bti_2(
556 __ESIMD_DNS::simd_mask_storage_t<N> pred,
557 __ESIMD_DNS::vector_type_t<uint32_t, N> offsets,
558 __ESIMD_DNS::vector_type_t<Ty, N * __ESIMD_DNS::
to_int<VS>()>
src0,
559 __ESIMD_DNS::vector_type_t<Ty, N * __ESIMD_DNS::
to_int<VS>()>
src1,
560 SurfIndAliasTy surf_ind) __ESIMD_INTRIN_END;
577 template <typename Ty,
int InternalOpOp, __ESIMD_NS::
cache_hint L1H,
578 __ESIMD_NS::
cache_hint L2H, uint16_t AddressScale,
int ImmOffset,
581 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<Ty, N * __ESIMD_DNS::
to_int<VS>()>
582 __esimd_lsc_xatomic_slm_0(__ESIMD_DNS::simd_mask_storage_t<N> pred,
583 __ESIMD_DNS::vector_type_t<uint32_t, N> offsets)
602 template <typename Ty,
int InternalOp, __ESIMD_NS::
cache_hint L1H,
603 __ESIMD_NS::
cache_hint L2H, uint16_t AddressScale,
int ImmOffset,
606 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<Ty, N * __ESIMD_DNS::
to_int<VS>()>
607 __esimd_lsc_xatomic_slm_1(
608 __ESIMD_DNS::simd_mask_storage_t<N> pred,
609 __ESIMD_DNS::vector_type_t<uint32_t, N> offsets,
610 __ESIMD_DNS::vector_type_t<Ty, N * __ESIMD_DNS::
to_int<VS>()>
src0)
630 template <typename Ty,
int InternalOp, __ESIMD_NS::
cache_hint L1H,
631 __ESIMD_NS::
cache_hint L2H, uint16_t AddressScale,
int ImmOffset,
634 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<Ty, N * __ESIMD_DNS::
to_int<VS>()>
635 __esimd_lsc_xatomic_slm_2(
636 __ESIMD_DNS::simd_mask_storage_t<N> pred,
637 __ESIMD_DNS::vector_type_t<uint32_t, N> offsets,
638 __ESIMD_DNS::vector_type_t<Ty, N * __ESIMD_DNS::
to_int<VS>()>
src0,
639 __ESIMD_DNS::vector_type_t<Ty, N * __ESIMD_DNS::
to_int<VS>()>
src1)
642 __ESIMD_INTRIN
void __esimd_slm_init(uint32_t size) __ESIMD_INTRIN_END;
645 __ESIMD_INTRIN
void __esimd_barrier() __ESIMD_INTRIN_END;
648 __ESIMD_INTRIN
void __esimd_fence(uint8_t cntl) __ESIMD_INTRIN_END;
658 template <uint8_t Kind, uint8_t FenceOp, uint8_t Scope,
int N>
660 __esimd_lsc_fence(__ESIMD_DNS::simd_mask_storage_t<N> pred) __ESIMD_INTRIN_END;
682 template <typename Ty,
int N, typename SurfIndAliasTy,
int TySizeLog2,
684 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<Ty, N> __esimd_gather_masked_scaled2(
685 SurfIndAliasTy surf_ind, uint32_t global_offset,
686 __ESIMD_DNS::vector_type_t<uint32_t, N> offsets,
687 __ESIMD_DNS::simd_mask_storage_t<N> pred) __ESIMD_INTRIN_END;
691 template <typename Ty,
int N, typename SurfIndAliasTy, int32_t IsModified = 0>
692 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<Ty, N>
693 __esimd_oword_ld(SurfIndAliasTy surf_ind,
694 uint32_t owords_offset) __ESIMD_INTRIN_END;
698 typename SurfIndAliasTy, int16_t Scale = 0>
701 __esimd_gather4_masked_scaled2(
702 SurfIndAliasTy surf_ind,
int global_offset,
703 __ESIMD_DNS::vector_type_t<uint32_t, N> offsets,
704 __ESIMD_DNS::simd_mask_storage_t<N> pred) __ESIMD_INTRIN_END;
707 template <typename Ty,
int N, typename SurfIndAliasTy,
709 __ESIMD_INTRIN
void __esimd_scatter4_scaled(
710 __ESIMD_DNS::simd_mask_storage_t<N> pred, SurfIndAliasTy surf_ind,
711 int global_offset, __ESIMD_DNS::vector_type_t<uint32_t, N> offsets,
716 template <__ESIMD_NS::
atomic_op Op, typename Ty,
int N, typename SurfIndAliasTy>
717 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<Ty, N> __esimd_dword_atomic0(
718 __ESIMD_DNS::simd_mask_storage_t<N> pred, SurfIndAliasTy surf_ind,
719 __ESIMD_DNS::vector_type_t<uint32_t, N> addrs) __ESIMD_INTRIN_END;
721 template <__ESIMD_NS::
atomic_op Op, typename Ty,
int N, typename SurfIndAliasTy>
722 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<Ty, N> __esimd_dword_atomic1(
723 __ESIMD_DNS::simd_mask_storage_t<N> pred, SurfIndAliasTy surf_ind,
724 __ESIMD_DNS::vector_type_t<uint32_t, N> addrs,
725 __ESIMD_DNS::vector_type_t<Ty, N>
src0) __ESIMD_INTRIN_END;
727 template <__ESIMD_NS::
atomic_op Op, typename Ty,
int N, typename SurfIndAliasTy>
728 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<Ty, N> __esimd_dword_atomic2(
729 __ESIMD_DNS::simd_mask_storage_t<N> pred, SurfIndAliasTy surf_ind,
730 __ESIMD_DNS::vector_type_t<uint32_t, N> addrs,
731 __ESIMD_DNS::vector_type_t<Ty, N>
src0,
732 __ESIMD_DNS::vector_type_t<Ty, N>
src1) __ESIMD_INTRIN_END;
749 template <typename Ty,
int M,
int N,
int Modifier, typename TACC,
int Plane,
751 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<Ty, M * N>
752 __esimd_media_ld(TACC handle,
unsigned x,
unsigned y) __ESIMD_INTRIN_END;
768 template <typename Ty,
int M,
int N,
int Modifier, typename TACC,
int Plane,
771 __esimd_media_st(TACC handle,
unsigned x,
unsigned y,
772 __ESIMD_DNS::vector_type_t<Ty, M * N> vals) __ESIMD_INTRIN_END;
794 template <typename MemObjTy>
795 ESIMD_INLINE __ESIMD_NS::
SurfaceIndex __esimd_get_surface_index(MemObjTy
obj) {
796 #ifdef __SYCL_DEVICE_ONLY__
797 return __spirv_ConvertPtrToU<MemObjTy, uint32_t>(
obj);
799 __ESIMD_UNSUPPORTED_ON_HOST;
827 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<Ty, N * __ESIMD_DNS::to_int<VS>()>
828 __esimd_lsc_load_merge_stateless(
829 __ESIMD_DNS::simd_mask_storage_t<N> pred,
830 __ESIMD_DNS::vector_type_t<uintptr_t, N> addrs,
831 __ESIMD_DNS::vector_type_t<Ty, N * __ESIMD_DNS::to_int<VS>()> pass_thru = 0)
852 uint16_t AddressScale,
int ImmOffset, __ESIMD_DNS::
lsc_data_size DS,
855 __ESIMD_INTRIN
void __esimd_lsc_store_stateless(
856 __ESIMD_DNS::simd_mask_storage_t<N> pred,
857 __ESIMD_DNS::vector_type_t<uintptr_t, N> addrs,
858 __ESIMD_DNS::vector_type_t<Ty, N * __ESIMD_DNS::
to_int<VS>()> vals)
881 uint16_t AddressScale,
int ImmOffset, __ESIMD_DNS::
lsc_data_size DS,
884 typename SurfIndAliasTy>
885 __ESIMD_INTRIN
void __esimd_lsc_store_bti(
886 __ESIMD_DNS::simd_mask_storage_t<N> pred,
887 __ESIMD_DNS::vector_type_t<uint32_t, N> offsets,
888 __ESIMD_DNS::vector_type_t<Ty, N * __ESIMD_DNS::
to_int<VS>()> vals,
889 SurfIndAliasTy surf_ind) __ESIMD_INTRIN_END;
922 template <typename Ty1,
int N1, typename Ty2,
int N2, typename Ty3,
int N3,
924 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<Ty1, N1> __esimd_raw_sends2(
925 uint8_t modifier, uint8_t execSize,
926 __ESIMD_DNS::simd_mask_storage_t<N> pred, uint8_t numSrc0, uint8_t numSrc1,
927 uint8_t numDst, uint8_t sfid, uint32_t exDesc, uint32_t msgDesc,
928 __ESIMD_DNS::vector_type_t<Ty2, N2> msgSrc0,
929 __ESIMD_DNS::vector_type_t<Ty3, N3> msgSrc1,
930 __ESIMD_DNS::vector_type_t<Ty1, N1> msgDst) __ESIMD_INTRIN_END;
958 template <typename Ty1,
int N1, typename Ty2,
int N2,
int N = 16>
959 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<Ty1, N1> __esimd_raw_send2(
960 uint8_t modifier, uint8_t execSize,
961 __ESIMD_DNS::simd_mask_storage_t<N> pred, uint8_t numSrc0, uint8_t numDst,
962 uint8_t sfid, uint32_t exDesc, uint32_t msgDesc,
963 __ESIMD_DNS::vector_type_t<Ty2, N2> msgSrc0,
964 __ESIMD_DNS::vector_type_t<Ty1, N1> msgDst) __ESIMD_INTRIN_END;
990 template <typename Ty1,
int N1, typename Ty2,
int N2,
int N = 16>
991 __ESIMD_INTRIN
void __esimd_raw_sends2_noresult(
992 uint8_t modifier, uint8_t execSize,
993 __ESIMD_DNS::simd_mask_storage_t<N> pred, uint8_t numSrc0, uint8_t numSrc1,
994 uint8_t sfid, uint32_t exDesc, uint32_t msgDesc,
995 __ESIMD_DNS::vector_type_t<Ty1, N1> msgSrc0,
996 __ESIMD_DNS::vector_type_t<Ty2, N2> msgSrc1) __ESIMD_INTRIN_END;
1017 template <typename Ty1,
int N1,
int N = 16>
1018 __ESIMD_INTRIN
void __esimd_raw_send2_noresult(
1019 uint8_t modifier, uint8_t execSize,
1020 __ESIMD_DNS::simd_mask_storage_t<N> pred, uint8_t numSrc0, uint8_t sfid,
1021 uint32_t exDesc, uint32_t msgDesc,
1022 __ESIMD_DNS::vector_type_t<Ty1, N1> msgSrc0) __ESIMD_INTRIN_END;
1056 uint8_t NBlocks,
int BlockWidth,
int BlockHeight,
bool Transformed,
1058 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<Ty, N>
1059 __esimd_lsc_load2d_stateless(__ESIMD_DNS::simd_mask_storage_t<N> Pred,
1060 uintptr_t Ptr,
int SurfaceWidth,
int SurfaceHeight,
1061 int SurfacePitch,
int X,
int Y) __ESIMD_INTRIN_END;
1089 uint8_t NBlocks,
int BlockWidth,
int BlockHeight,
bool Transformed,
1091 __ESIMD_INTRIN
void __esimd_lsc_prefetch2d_stateless(
1092 __ESIMD_DNS::simd_mask_storage_t<N> Pred, uintptr_t Ptr,
int SurfaceWidth,
1093 int SurfaceHeight,
int SurfacePitch,
int X,
int Y) __ESIMD_INTRIN_END;
1126 uint8_t NBlocks,
int BlockWidth,
int BlockHeight,
bool Transformed,
1128 __ESIMD_INTRIN
void __esimd_lsc_store2d_stateless(
1129 __ESIMD_DNS::simd_mask_storage_t<N> Pred, uintptr_t Ptr,
int SurfaceWidth,
1130 int SurfaceHeight,
int SurfacePitch,
int X,
int Y,
1131 __ESIMD_DNS::vector_type_t<Ty, N> vals) __ESIMD_INTRIN_END;
The file contains implementations of accessor class.
rgba_channel_mask
Represents a pixel's channel mask - all possible combinations of enabled channels.
unsigned int SurfaceIndex
Surface index type.
constexpr int get_num_channels_enabled(rgba_channel_mask M)
atomic_op
Represents an atomic operation.
__ESIMD_API SZ simd< T, SZ > src1
__ESIMD_API SurfaceIndex get_surface_index(AccessorTy acc)
Get surface index corresponding to a SYCL accessor.
constexpr uint8_t to_int()
lsc_data_size
Data size or format to read or store.
cache_hint
L1, L2 or L3 cache hints.
constexpr if(sizeof(T)==8)
return(x >> one)+(y >> one)+((y &x) &one)