17 #include <type_traits>
20 #ifdef __SYCL_DEVICE_ONLY__
21 #define __SYCL_CONVERGENT__ __attribute__((convergent))
23 #define __SYCL_CONVERGENT__
26 #ifdef __SYCL_DEVICE_ONLY__
30 #ifndef __SPIRV_USE_COOPERATIVE_MATRIX
31 template <
typename T,
typename Tp, std::size_t R, std::size_t C,
37 __spirv_JointMatrixLoadINTEL(T *Ptr, std::size_t Stride,
41 template <
typename T,
typename Tp, std::size_t R, std::size_t C,
50 template <
typename T,
typename Tp, std::size_t R, std::size_t C,
56 __spirv_CooperativeMatrixConstructCheckedINTEL(int32_t CoordX,
62 template <
typename T,
typename Tp, std::size_t R, std::size_t C,
68 __spirv_CooperativeMatrixLoadCheckedINTEL(
70 uint32_t Height = 0, uint32_t Width = 0, std::size_t Stride = 0,
73 template <
typename T,
typename Tp, std::size_t R, std::size_t C,
78 T *Ptr, int32_t CoordX, int32_t CoordY,
81 std::size_t Stride = 0,
int MemOperand = 0);
83 template <
typename TA,
typename TB,
typename TC, std::size_t M, std::size_t K,
92 __spirv_JointMatrixMadINTEL(
98 template <
typename T1,
typename T2,
typename T3, std::size_t M, std::size_t K,
107 __spirv_JointMatrixUUMadINTEL(
113 template <
typename T1,
typename T2,
typename T3, std::size_t M, std::size_t K,
122 __spirv_JointMatrixUSMadINTEL(
128 template <
typename T1,
typename T2,
typename T3, std::size_t M, std::size_t K,
137 __spirv_JointMatrixSUMadINTEL(
143 template <
typename T,
typename Tp, std::size_t R, std::size_t C,
149 __spirv_CompositeConstruct(
const T v);
155 __spirv_JointMatrixGetElementCoordINTEL(
164 template <
typename Ts,
typename T, std::size_t R, std::size_t C,
171 template <
typename Ts,
typename T, std::size_t R, std::size_t C,
179 template <
typename T,
typename Tp, std::size_t R, std::size_t C,
184 __spv::__spirv_CooperativeMatrixKHR<Tp, S, R, C, U> *
186 std::size_t Stride = 0,
189 template <
typename T,
typename Tp, std::size_t R, std::size_t C,
194 T *Ptr, __spv::__spirv_CooperativeMatrixKHR<Tp, S, R, C, U> *Object,
201 __spv::__spirv_CooperativeMatrixKHR<T, S, R, C, U> *);
203 template <
typename T,
typename Tp, std::size_t R, std::size_t C,
208 __spv::__spirv_CooperativeMatrixKHR<Tp, S, R, C, U> *
209 __spirv_CooperativeMatrixConstructCheckedINTEL(
const T Value,
size_t Height,
210 size_t Stride,
size_t Width,
214 template <
typename T,
typename Tp, std::size_t R, std::size_t C,
219 __spv::__spirv_CooperativeMatrixKHR<Tp, S, R, C, U> *
220 __spirv_CooperativeMatrixLoadCheckedINTEL(T *Ptr, std::size_t Stride,
221 size_t Height,
size_t Width,
222 size_t CoordX,
size_t CoordY,
226 template <
typename T,
typename Tp, std::size_t R, std::size_t C,
231 T *Ptr, __spv::__spirv_CooperativeMatrixKHR<Tp, S, R, C, U> *Object,
232 std::size_t Stride,
size_t Height,
size_t Width,
size_t CoordX,
235 template <
typename TA,
typename TB,
typename TC, std::size_t M, std::size_t K,
243 __spv::__spirv_CooperativeMatrixKHR<TC, S, M, N, UC> *
244 __spirv_CooperativeMatrixMulAddKHR(
245 __spv::__spirv_CooperativeMatrixKHR<TA, S, M, K, UA> *A,
246 __spv::__spirv_CooperativeMatrixKHR<TB, S, K, N, UB> *B,
247 __spv::__spirv_CooperativeMatrixKHR<TC, S, M, N, UC> *C,
248 size_t Operands = 0);
250 template <
typename T,
typename Tp, std::size_t R, std::size_t C,
255 __spv::__spirv_CooperativeMatrixKHR<Tp, S, R, C, U> *
256 __spirv_CompositeConstruct(
const T v);
263 __spirv_JointMatrixGetElementCoordINTEL(
264 __spv::__spirv_CooperativeMatrixKHR<T, S, R, C, U> *,
size_t i);
268 template <
typename Ts,
typename T, std::size_t R, std::size_t C,
272 __spirv_AccessChain(__spv::__spirv_CooperativeMatrixKHR<T, S, R, C, U> **,
275 template <
typename T,
typename Tp, std::size_t R, std::size_t C,
280 __spv::__spirv_CooperativeMatrixKHR<Tp, S, R, C, U> *
281 __spirv_CooperativeMatrixConstructCheckedINTEL(int32_t CoordX,
287 template <
typename T,
typename Tp, std::size_t R, std::size_t C,
292 __spv::__spirv_CooperativeMatrixKHR<Tp, S, R, C, U> *
293 __spirv_CooperativeMatrixLoadCheckedINTEL(
295 uint32_t Height = 0, uint32_t Width = 0, std::size_t Stride = 0,
298 template <
typename T,
typename Tp, std::size_t R, std::size_t C,
303 T *Ptr, int32_t CoordX, int32_t CoordY,
304 __spv::__spirv_CooperativeMatrixKHR<Tp, S, R, C, U> *Object,
306 std::size_t Stride = 0,
int MemOperand = 0);
309 template <
typename T>
311 T *Ptr, uint32_t NumRows, uint32_t NumCols,
unsigned int CacheLevel,
314 #ifndef __SPIRV_BUILTIN_DECLARATIONS__
316 "SPIR-V built-ins are not available. Please set -fdeclare-spirv-builtins flag."
319 template <
typename RetT,
typename ImageT>
322 template <
typename RetT,
typename ImageT>
325 template <
typename RetT,
typename ImageT>
328 template <
typename ImageT,
typename CoordT,
typename ValT>
331 template <
class RetT,
typename ImageT,
typename TempArgT>
334 template <
class RetT,
typename ImageT,
typename TempArgT>
337 template <
class RetT,
typename ImageT,
typename TempArgT>
340 template <
class RetT,
typename ImageT,
typename TempArgT>
344 template <
class RetT,
typename ImageT,
typename TempArgT>
348 template <
class RetT,
typename ImageT,
typename TempArgT>
351 template <
typename ImageT,
typename CoordT,
typename ValT>
355 template <
typename ImageT,
typename SampledType>
359 template <
typename SampledType,
typename TempRetT,
typename TempArgT>
361 __spirv_ImageSampleExplicitLod(SampledType, TempArgT,
int,
float);
363 template <
typename SampledType,
typename TempRetT,
typename TempArgT>
365 __spirv_ImageSampleExplicitLod(SampledType, TempArgT,
int, TempArgT, TempArgT);
367 template <
typename SampledType,
typename TempRetT,
typename TempArgT>
371 template <
typename RetT,
class HandleT>
374 template <
typename RetT,
class HandleT>
377 template <
typename RetT,
class HandleT>
379 RetT __spirv_ConvertHandleToSampledImageINTEL(HandleT);
381 #define __SYCL_OpGroupAsyncCopyGlobalToLocal __spirv_GroupAsyncCopy
382 #define __SYCL_OpGroupAsyncCopyLocalToGlobal __spirv_GroupAsyncCopy
385 #define __SPIRV_ATOMIC_LOAD(AS, Type) \
386 extern __DPCPP_SYCL_EXTERNAL Type __spirv_AtomicLoad( \
387 AS const Type *P, __spv::Scope::Flag S, \
388 __spv::MemorySemanticsMask::Flag O);
389 #define __SPIRV_ATOMIC_STORE(AS, Type) \
390 extern __DPCPP_SYCL_EXTERNAL void __spirv_AtomicStore( \
391 AS Type *P, __spv::Scope::Flag S, __spv::MemorySemanticsMask::Flag O, \
393 #define __SPIRV_ATOMIC_EXCHANGE(AS, Type) \
394 extern __DPCPP_SYCL_EXTERNAL Type __spirv_AtomicExchange( \
395 AS Type *P, __spv::Scope::Flag S, __spv::MemorySemanticsMask::Flag O, \
397 #define __SPIRV_ATOMIC_CMP_EXCHANGE(AS, Type) \
398 extern __DPCPP_SYCL_EXTERNAL Type __spirv_AtomicCompareExchange( \
399 AS Type *P, __spv::Scope::Flag S, __spv::MemorySemanticsMask::Flag E, \
400 __spv::MemorySemanticsMask::Flag U, Type V, Type C);
401 #define __SPIRV_ATOMIC_IADD(AS, Type) \
402 extern __DPCPP_SYCL_EXTERNAL Type __spirv_AtomicIAdd( \
403 AS Type *P, __spv::Scope::Flag S, __spv::MemorySemanticsMask::Flag O, \
405 #define __SPIRV_ATOMIC_ISUB(AS, Type) \
406 extern __DPCPP_SYCL_EXTERNAL Type __spirv_AtomicISub( \
407 AS Type *P, __spv::Scope::Flag S, __spv::MemorySemanticsMask::Flag O, \
409 #define __SPIRV_ATOMIC_FADD(AS, Type) \
410 extern __DPCPP_SYCL_EXTERNAL Type __spirv_AtomicFAddEXT( \
411 AS Type *P, __spv::Scope::Flag S, __spv::MemorySemanticsMask::Flag O, \
413 #define __SPIRV_ATOMIC_SMIN(AS, Type) \
414 extern __DPCPP_SYCL_EXTERNAL Type __spirv_AtomicSMin( \
415 AS Type *P, __spv::Scope::Flag S, __spv::MemorySemanticsMask::Flag O, \
417 #define __SPIRV_ATOMIC_UMIN(AS, Type) \
418 extern __DPCPP_SYCL_EXTERNAL Type __spirv_AtomicUMin( \
419 AS Type *P, __spv::Scope::Flag S, __spv::MemorySemanticsMask::Flag O, \
421 #define __SPIRV_ATOMIC_FMIN(AS, Type) \
422 extern __DPCPP_SYCL_EXTERNAL Type __spirv_AtomicFMinEXT( \
423 AS Type *P, __spv::Scope::Flag S, __spv::MemorySemanticsMask::Flag O, \
425 #define __SPIRV_ATOMIC_SMAX(AS, Type) \
426 extern __DPCPP_SYCL_EXTERNAL Type __spirv_AtomicSMax( \
427 AS Type *P, __spv::Scope::Flag S, __spv::MemorySemanticsMask::Flag O, \
429 #define __SPIRV_ATOMIC_UMAX(AS, Type) \
430 extern __DPCPP_SYCL_EXTERNAL Type __spirv_AtomicUMax( \
431 AS Type *P, __spv::Scope::Flag S, __spv::MemorySemanticsMask::Flag O, \
433 #define __SPIRV_ATOMIC_FMAX(AS, Type) \
434 extern __DPCPP_SYCL_EXTERNAL Type __spirv_AtomicFMaxEXT( \
435 AS Type *P, __spv::Scope::Flag S, __spv::MemorySemanticsMask::Flag O, \
437 #define __SPIRV_ATOMIC_AND(AS, Type) \
438 extern __DPCPP_SYCL_EXTERNAL Type __spirv_AtomicAnd( \
439 AS Type *P, __spv::Scope::Flag S, __spv::MemorySemanticsMask::Flag O, \
441 #define __SPIRV_ATOMIC_OR(AS, Type) \
442 extern __DPCPP_SYCL_EXTERNAL Type __spirv_AtomicOr( \
443 AS Type *P, __spv::Scope::Flag S, __spv::MemorySemanticsMask::Flag O, \
445 #define __SPIRV_ATOMIC_XOR(AS, Type) \
446 extern __DPCPP_SYCL_EXTERNAL Type __spirv_AtomicXor( \
447 AS Type *P, __spv::Scope::Flag S, __spv::MemorySemanticsMask::Flag O, \
450 #define __SPIRV_ATOMIC_FLOAT(AS, Type) \
451 __SPIRV_ATOMIC_FADD(AS, Type) \
452 __SPIRV_ATOMIC_FMIN(AS, Type) \
453 __SPIRV_ATOMIC_FMAX(AS, Type) \
454 __SPIRV_ATOMIC_LOAD(AS, Type) \
455 __SPIRV_ATOMIC_STORE(AS, Type) \
456 __SPIRV_ATOMIC_EXCHANGE(AS, Type)
458 #define __SPIRV_ATOMIC_BASE(AS, Type) \
459 __SPIRV_ATOMIC_FLOAT(AS, Type) \
460 __SPIRV_ATOMIC_CMP_EXCHANGE(AS, Type) \
461 __SPIRV_ATOMIC_IADD(AS, Type) \
462 __SPIRV_ATOMIC_ISUB(AS, Type) \
463 __SPIRV_ATOMIC_AND(AS, Type) \
464 __SPIRV_ATOMIC_OR(AS, Type) \
465 __SPIRV_ATOMIC_XOR(AS, Type)
467 #define __SPIRV_ATOMIC_SIGNED(AS, Type) \
468 __SPIRV_ATOMIC_BASE(AS, Type) \
469 __SPIRV_ATOMIC_SMIN(AS, Type) \
470 __SPIRV_ATOMIC_SMAX(AS, Type)
472 #define __SPIRV_ATOMIC_UNSIGNED(AS, Type) \
473 __SPIRV_ATOMIC_BASE(AS, Type) \
474 __SPIRV_ATOMIC_UMIN(AS, Type) \
475 __SPIRV_ATOMIC_UMAX(AS, Type)
479 #define __SPIRV_ATOMIC_MINMAX(AS, Op) \
480 template <typename T> \
481 typename std::enable_if_t< \
482 std::is_integral<T>::value && std::is_signed<T>::value, T> \
483 __spirv_Atomic##Op(AS T *Ptr, __spv::Scope::Flag Memory, \
484 __spv::MemorySemanticsMask::Flag Semantics, \
486 return __spirv_AtomicS##Op(Ptr, Memory, Semantics, Value); \
488 template <typename T> \
489 typename std::enable_if_t< \
490 std::is_integral<T>::value && !std::is_signed<T>::value, T> \
491 __spirv_Atomic##Op(AS T *Ptr, __spv::Scope::Flag Memory, \
492 __spv::MemorySemanticsMask::Flag Semantics, \
494 return __spirv_AtomicU##Op(Ptr, Memory, Semantics, Value); \
496 template <typename T> \
497 typename std::enable_if_t<std::is_floating_point<T>::value, T> \
498 __spirv_Atomic##Op(AS T *Ptr, __spv::Scope::Flag Memory, \
499 __spv::MemorySemanticsMask::Flag Semantics, \
501 return __spirv_AtomicF##Op##EXT(Ptr, Memory, Semantics, Value); \
504 #define __SPIRV_ATOMICS(macro, Arg) \
505 macro(__attribute__((opencl_global)), Arg) \
506 macro(__attribute__((opencl_local)), Arg) macro(, Arg)
508 __SPIRV_ATOMICS(__SPIRV_ATOMIC_FLOAT, _Float16)
509 __SPIRV_ATOMICS(__SPIRV_ATOMIC_FLOAT,
float)
510 __SPIRV_ATOMICS(__SPIRV_ATOMIC_FLOAT,
double)
511 __SPIRV_ATOMICS(__SPIRV_ATOMIC_SIGNED,
int)
512 __SPIRV_ATOMICS(__SPIRV_ATOMIC_SIGNED,
long)
513 __SPIRV_ATOMICS(__SPIRV_ATOMIC_SIGNED,
long long)
514 __SPIRV_ATOMICS(__SPIRV_ATOMIC_UNSIGNED,
unsigned int)
515 __SPIRV_ATOMICS(__SPIRV_ATOMIC_UNSIGNED,
unsigned long)
516 __SPIRV_ATOMICS(__SPIRV_ATOMIC_UNSIGNED,
unsigned long long)
517 __SPIRV_ATOMICS(__SPIRV_ATOMIC_MINMAX, Min)
518 __SPIRV_ATOMICS(__SPIRV_ATOMIC_MINMAX, Max)
520 #undef __SPIRV_ATOMICS
521 #undef __SPIRV_ATOMIC_AND
522 #undef __SPIRV_ATOMIC_BASE
523 #undef __SPIRV_ATOMIC_CMP_EXCHANGE
524 #undef __SPIRV_ATOMIC_EXCHANGE
525 #undef __SPIRV_ATOMIC_FADD
526 #undef __SPIRV_ATOMIC_FLOAT
527 #undef __SPIRV_ATOMIC_FMAX
528 #undef __SPIRV_ATOMIC_FMIN
529 #undef __SPIRV_ATOMIC_IADD
530 #undef __SPIRV_ATOMIC_ISUB
531 #undef __SPIRV_ATOMIC_LOAD
532 #undef __SPIRV_ATOMIC_MINMAX
533 #undef __SPIRV_ATOMIC_OR
534 #undef __SPIRV_ATOMIC_SIGNED
535 #undef __SPIRV_ATOMIC_SMAX
536 #undef __SPIRV_ATOMIC_SMIN
537 #undef __SPIRV_ATOMIC_STORE
538 #undef __SPIRV_ATOMIC_UMAX
539 #undef __SPIRV_ATOMIC_UMIN
540 #undef __SPIRV_ATOMIC_UNSIGNED
541 #undef __SPIRV_ATOMIC_XOR
543 template <
typename dataT>
545 __SYCL_GenericCastToPtrExplicit_ToGlobal(
void *Ptr)
noexcept {
547 __spirv_GenericCastToPtrExplicit_ToGlobal(
551 template <
typename dataT>
553 __SYCL_GenericCastToPtrExplicit_ToGlobal(
const void *Ptr)
noexcept {
555 __spirv_GenericCastToPtrExplicit_ToGlobal(
559 template <
typename dataT>
561 __SYCL_GenericCastToPtrExplicit_ToGlobal(
volatile void *Ptr)
noexcept {
563 __spirv_GenericCastToPtrExplicit_ToGlobal(
567 template <
typename dataT>
569 __SYCL_GenericCastToPtrExplicit_ToGlobal(
const volatile void *Ptr)
noexcept {
570 return (
const volatile __attribute__((opencl_global)) dataT *)
571 __spirv_GenericCastToPtrExplicit_ToGlobal(
575 template <
typename dataT>
577 __SYCL_GenericCastToPtrExplicit_ToLocal(
void *Ptr)
noexcept {
579 __spirv_GenericCastToPtrExplicit_ToLocal(Ptr,
583 template <
typename dataT>
585 __SYCL_GenericCastToPtrExplicit_ToLocal(
const void *Ptr)
noexcept {
587 __spirv_GenericCastToPtrExplicit_ToLocal(Ptr,
591 template <
typename dataT>
593 __SYCL_GenericCastToPtrExplicit_ToLocal(
volatile void *Ptr)
noexcept {
595 __spirv_GenericCastToPtrExplicit_ToLocal(Ptr,
599 template <
typename dataT>
601 __SYCL_GenericCastToPtrExplicit_ToLocal(
const volatile void *Ptr)
noexcept {
602 return (
const volatile __attribute__((opencl_local)) dataT *)
603 __spirv_GenericCastToPtrExplicit_ToLocal(Ptr,
607 template <
typename dataT>
609 __SYCL_GenericCastToPtrExplicit_ToPrivate(
void *Ptr)
noexcept {
611 __spirv_GenericCastToPtrExplicit_ToPrivate(Ptr,
615 template <
typename dataT>
617 __SYCL_GenericCastToPtrExplicit_ToPrivate(
const void *Ptr)
noexcept {
619 __spirv_GenericCastToPtrExplicit_ToPrivate(Ptr,
623 template <
typename dataT>
625 __SYCL_GenericCastToPtrExplicit_ToPrivate(
volatile void *Ptr)
noexcept {
627 __spirv_GenericCastToPtrExplicit_ToPrivate(Ptr,
631 template <
typename dataT>
632 extern const volatile __attribute__((opencl_private)) dataT *
633 __SYCL_GenericCastToPtrExplicit_ToPrivate(
const volatile void *Ptr)
noexcept {
634 return (
const volatile __attribute__((opencl_private)) dataT *)
635 __spirv_GenericCastToPtrExplicit_ToPrivate(Ptr,
639 template <
typename dataT>
641 __SYCL_GenericCastToPtr_ToGlobal(
void *Ptr)
noexcept {
643 __spirv_GenericCastToPtr_ToGlobal(Ptr,
647 template <
typename dataT>
649 __SYCL_GenericCastToPtr_ToGlobal(
const void *Ptr)
noexcept {
651 __spirv_GenericCastToPtr_ToGlobal(Ptr,
655 template <
typename dataT>
657 __SYCL_GenericCastToPtr_ToGlobal(
volatile void *Ptr)
noexcept {
659 __spirv_GenericCastToPtr_ToGlobal(Ptr,
663 template <
typename dataT>
665 __SYCL_GenericCastToPtr_ToGlobal(
const volatile void *Ptr)
noexcept {
666 return (
const volatile __attribute__((opencl_global)) dataT *)
667 __spirv_GenericCastToPtr_ToGlobal(Ptr,
671 template <
typename dataT>
673 __SYCL_GenericCastToPtr_ToLocal(
void *Ptr)
noexcept {
678 template <
typename dataT>
680 __SYCL_GenericCastToPtr_ToLocal(
const void *Ptr)
noexcept {
685 template <
typename dataT>
687 __SYCL_GenericCastToPtr_ToLocal(
volatile void *Ptr)
noexcept {
692 template <
typename dataT>
694 __SYCL_GenericCastToPtr_ToLocal(
const volatile void *Ptr)
noexcept {
695 return (
const volatile __attribute__((opencl_local)) dataT *)
699 template <
typename dataT>
701 __SYCL_GenericCastToPtr_ToPrivate(
void *Ptr)
noexcept {
706 template <
typename dataT>
708 __SYCL_GenericCastToPtr_ToPrivate(
const void *Ptr)
noexcept {
713 template <
typename dataT>
715 __SYCL_GenericCastToPtr_ToPrivate(
volatile void *Ptr)
noexcept {
720 template <
typename dataT>
721 extern const volatile __attribute__((opencl_private)) dataT *
722 __SYCL_GenericCastToPtr_ToPrivate(
const volatile void *Ptr)
noexcept {
723 return (
const volatile __attribute__((opencl_private)) dataT *)
727 template <
typename dataT>
729 __spirv_SubgroupShuffleINTEL(dataT Data, uint32_t InvocationId)
noexcept;
730 template <
typename dataT>
732 __spirv_SubgroupShuffleDownINTEL(dataT Current, dataT Next,
734 template <
typename dataT>
736 __spirv_SubgroupShuffleUpINTEL(dataT Previous, dataT Current,
738 template <
typename dataT>
740 __spirv_SubgroupShuffleXorINTEL(dataT Data, uint32_t Value)
noexcept;
742 template <
typename dataT>
744 __spirv_SubgroupBlockReadINTEL(
const __attribute__((opencl_global))
747 template <
typename dataT>
749 __spirv_SubgroupBlockWriteINTEL(
__attribute__((opencl_global)) uint8_t *Ptr,
752 template <
typename dataT>
754 __spirv_SubgroupBlockReadINTEL(
const __attribute__((opencl_global))
757 template <
typename dataT>
759 __spirv_SubgroupBlockWriteINTEL(
__attribute__((opencl_global)) uint16_t *Ptr,
762 template <
typename dataT>
764 __spirv_SubgroupBlockReadINTEL(
const __attribute__((opencl_global))
767 template <
typename dataT>
769 __spirv_SubgroupBlockWriteINTEL(
__attribute__((opencl_global)) uint32_t *Ptr,
772 template <
typename dataT>
774 __spirv_SubgroupBlockReadINTEL(
const __attribute__((opencl_global))
777 template <
typename dataT>
779 __spirv_SubgroupBlockWriteINTEL(
__attribute__((opencl_global)) uint64_t *Ptr,
781 template <
int W,
int rW>
783 __spirv_FixedSqrtINTEL(sycl::detail::ap_int<W>
a,
bool S, int32_t I, int32_t rI,
784 int32_t Quantization = 0, int32_t Overflow = 0)
noexcept;
785 template <
int W,
int rW>
787 __spirv_FixedRecipINTEL(
sycl::detail::ap_int<W>
a,
bool S, int32_t I,
788 int32_t rI, int32_t Quantization = 0,
790 template <
int W,
int rW>
792 __spirv_FixedRsqrtINTEL(
sycl::detail::ap_int<W>
a,
bool S, int32_t I,
793 int32_t rI, int32_t Quantization = 0,
795 template <
int W,
int rW>
797 __spirv_FixedSinINTEL(
sycl::detail::ap_int<W>
a,
bool S, int32_t I, int32_t rI,
798 int32_t Quantization = 0, int32_t Overflow = 0)
noexcept;
799 template <
int W,
int rW>
801 __spirv_FixedCosINTEL(
sycl::detail::ap_int<W>
a,
bool S, int32_t I, int32_t rI,
802 int32_t Quantization = 0, int32_t Overflow = 0)
noexcept;
803 template <
int W,
int rW>
805 __spirv_FixedSinCosINTEL(
sycl::detail::ap_int<W>
a,
bool S, int32_t I,
806 int32_t rI, int32_t Quantization = 0,
808 template <
int W,
int rW>
810 __spirv_FixedSinPiINTEL(
sycl::detail::ap_int<W>
a,
bool S, int32_t I,
811 int32_t rI, int32_t Quantization = 0,
813 template <
int W,
int rW>
815 __spirv_FixedCosPiINTEL(
sycl::detail::ap_int<W>
a,
bool S, int32_t I,
816 int32_t rI, int32_t Quantization = 0,
818 template <
int W,
int rW>
820 __spirv_FixedSinCosPiINTEL(
sycl::detail::ap_int<W>
a,
bool S, int32_t I,
821 int32_t rI, int32_t Quantization = 0,
823 template <
int W,
int rW>
825 __spirv_FixedLogINTEL(
sycl::detail::ap_int<W>
a,
bool S, int32_t I, int32_t rI,
826 int32_t Quantization = 0, int32_t Overflow = 0)
noexcept;
827 template <
int W,
int rW>
829 __spirv_FixedExpINTEL(
sycl::detail::ap_int<W>
a,
bool S, int32_t I, int32_t rI,
830 int32_t Quantization = 0, int32_t Overflow = 0)
noexcept;
835 template <
int WA,
int Wout>
837 __spirv_ArbitraryFloatCastINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
838 int32_t Mout, int32_t EnableSubnormals = 0,
839 int32_t RoundingMode = 0,
840 int32_t RoundingAccuracy = 0)
noexcept;
842 template <
int WA,
int Wout>
844 __spirv_ArbitraryFloatCastFromIntINTEL(
sycl::detail::ap_int<WA> A, int32_t Mout,
845 bool FromSign = false,
846 int32_t EnableSubnormals = 0,
847 int32_t RoundingMode = 0,
848 int32_t RoundingAccuracy = 0)
noexcept;
850 template <
int WA,
int Wout>
852 __spirv_ArbitraryFloatCastToIntINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
854 int32_t EnableSubnormals = 0,
855 int32_t RoundingMode = 0,
856 int32_t RoundingAccuracy = 0)
noexcept;
858 template <
int WA,
int WB,
int Wout>
860 __spirv_ArbitraryFloatAddINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
861 sycl::detail::ap_int<WB> B, int32_t MB,
862 int32_t Mout, int32_t EnableSubnormals = 0,
863 int32_t RoundingMode = 0,
864 int32_t RoundingAccuracy = 0)
noexcept;
866 template <
int WA,
int WB,
int Wout>
868 __spirv_ArbitraryFloatSubINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
869 sycl::detail::ap_int<WB> B, int32_t MB,
870 int32_t Mout, int32_t EnableSubnormals = 0,
871 int32_t RoundingMode = 0,
872 int32_t RoundingAccuracy = 0)
noexcept;
874 template <
int WA,
int WB,
int Wout>
876 __spirv_ArbitraryFloatMulINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
877 sycl::detail::ap_int<WB> B, int32_t MB,
878 int32_t Mout, int32_t EnableSubnormals = 0,
879 int32_t RoundingMode = 0,
880 int32_t RoundingAccuracy = 0)
noexcept;
882 template <
int WA,
int WB,
int Wout>
884 __spirv_ArbitraryFloatDivINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
885 sycl::detail::ap_int<WB> B, int32_t MB,
886 int32_t Mout, int32_t EnableSubnormals = 0,
887 int32_t RoundingMode = 0,
888 int32_t RoundingAccuracy = 0)
noexcept;
892 template <
int WA,
int WB>
894 __spirv_ArbitraryFloatGTINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
897 template <
int WA,
int WB>
899 __spirv_ArbitraryFloatGEINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
902 template <
int WA,
int WB>
904 __spirv_ArbitraryFloatLTINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
907 template <
int WA,
int WB>
909 __spirv_ArbitraryFloatLEINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
912 template <
int WA,
int WB>
914 __spirv_ArbitraryFloatEQINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
917 template <
int WA,
int Wout>
919 __spirv_ArbitraryFloatRecipINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
920 int32_t Mout, int32_t EnableSubnormals = 0,
921 int32_t RoundingMode = 0,
922 int32_t RoundingAccuracy = 0)
noexcept;
924 template <
int WA,
int Wout>
926 __spirv_ArbitraryFloatRSqrtINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
927 int32_t Mout, int32_t EnableSubnormals = 0,
928 int32_t RoundingMode = 0,
929 int32_t RoundingAccuracy = 0)
noexcept;
931 template <
int WA,
int Wout>
933 __spirv_ArbitraryFloatCbrtINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
934 int32_t Mout, int32_t EnableSubnormals = 0,
935 int32_t RoundingMode = 0,
936 int32_t RoundingAccuracy = 0)
noexcept;
938 template <
int WA,
int WB,
int Wout>
940 __spirv_ArbitraryFloatHypotINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
941 sycl::detail::ap_int<WB> B, int32_t MB,
942 int32_t Mout, int32_t EnableSubnormals = 0,
943 int32_t RoundingMode = 0,
944 int32_t RoundingAccuracy = 0)
noexcept;
946 template <
int WA,
int Wout>
948 __spirv_ArbitraryFloatSqrtINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
949 int32_t Mout, int32_t EnableSubnormals = 0,
950 int32_t RoundingMode = 0,
951 int32_t RoundingAccuracy = 0)
noexcept;
953 template <
int WA,
int Wout>
955 __spirv_ArbitraryFloatLogINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
956 int32_t Mout, int32_t EnableSubnormals = 0,
957 int32_t RoundingMode = 0,
958 int32_t RoundingAccuracy = 0)
noexcept;
960 template <
int WA,
int Wout>
962 __spirv_ArbitraryFloatLog2INTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
963 int32_t Mout, int32_t EnableSubnormals = 0,
964 int32_t RoundingMode = 0,
965 int32_t RoundingAccuracy = 0)
noexcept;
967 template <
int WA,
int Wout>
969 __spirv_ArbitraryFloatLog10INTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
970 int32_t Mout, int32_t EnableSubnormals = 0,
971 int32_t RoundingMode = 0,
972 int32_t RoundingAccuracy = 0)
noexcept;
974 template <
int WA,
int Wout>
976 __spirv_ArbitraryFloatLog1pINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
977 int32_t Mout, int32_t EnableSubnormals = 0,
978 int32_t RoundingMode = 0,
979 int32_t RoundingAccuracy = 0)
noexcept;
981 template <
int WA,
int Wout>
983 __spirv_ArbitraryFloatExpINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
984 int32_t Mout, int32_t EnableSubnormals = 0,
985 int32_t RoundingMode = 0,
986 int32_t RoundingAccuracy = 0)
noexcept;
988 template <
int WA,
int Wout>
990 __spirv_ArbitraryFloatExp2INTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
991 int32_t Mout, int32_t EnableSubnormals = 0,
992 int32_t RoundingMode = 0,
993 int32_t RoundingAccuracy = 0)
noexcept;
995 template <
int WA,
int Wout>
997 __spirv_ArbitraryFloatExp10INTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
998 int32_t Mout, int32_t EnableSubnormals = 0,
999 int32_t RoundingMode = 0,
1000 int32_t RoundingAccuracy = 0)
noexcept;
1002 template <
int WA,
int Wout>
1004 __spirv_ArbitraryFloatExpm1INTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
1005 int32_t Mout, int32_t EnableSubnormals = 0,
1006 int32_t RoundingMode = 0,
1007 int32_t RoundingAccuracy = 0)
noexcept;
1009 template <
int WA,
int Wout>
1011 __spirv_ArbitraryFloatSinINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
1012 int32_t Mout, int32_t EnableSubnormals = 0,
1013 int32_t RoundingMode = 0,
1014 int32_t RoundingAccuracy = 0)
noexcept;
1016 template <
int WA,
int Wout>
1018 __spirv_ArbitraryFloatCosINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
1019 int32_t Mout, int32_t EnableSubnormals = 0,
1020 int32_t RoundingMode = 0,
1021 int32_t RoundingAccuracy = 0)
noexcept;
1025 template <
int WA,
int Wout>
1027 __spirv_ArbitraryFloatSinCosINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
1028 int32_t Mout, int32_t EnableSubnormals = 0,
1029 int32_t RoundingMode = 0,
1030 int32_t RoundingAccuracy = 0)
noexcept;
1032 template <
int WA,
int Wout>
1034 __spirv_ArbitraryFloatSinPiINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
1035 int32_t Mout, int32_t EnableSubnormals = 0,
1036 int32_t RoundingMode = 0,
1037 int32_t RoundingAccuracy = 0)
noexcept;
1039 template <
int WA,
int Wout>
1041 __spirv_ArbitraryFloatCosPiINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
1042 int32_t Mout, int32_t EnableSubnormals = 0,
1043 int32_t RoundingMode = 0,
1044 int32_t RoundingAccuracy = 0)
noexcept;
1048 template <
int WA,
int Wout>
1050 __spirv_ArbitraryFloatSinCosPiINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
1051 int32_t Mout, int32_t EnableSubnormals = 0,
1052 int32_t RoundingMode = 0,
1053 int32_t RoundingAccuracy = 0)
noexcept;
1055 template <
int WA,
int Wout>
1057 __spirv_ArbitraryFloatASinINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
1058 int32_t Mout, int32_t EnableSubnormals = 0,
1059 int32_t RoundingMode = 0,
1060 int32_t RoundingAccuracy = 0)
noexcept;
1062 template <
int WA,
int Wout>
1064 __spirv_ArbitraryFloatASinPiINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
1065 int32_t Mout, int32_t EnableSubnormals = 0,
1066 int32_t RoundingMode = 0,
1067 int32_t RoundingAccuracy = 0)
noexcept;
1069 template <
int WA,
int Wout>
1071 __spirv_ArbitraryFloatACosINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
1072 int32_t Mout, int32_t EnableSubnormals = 0,
1073 int32_t RoundingMode = 0,
1074 int32_t RoundingAccuracy = 0)
noexcept;
1076 template <
int WA,
int Wout>
1078 __spirv_ArbitraryFloatACosPiINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
1079 int32_t Mout, int32_t EnableSubnormals = 0,
1080 int32_t RoundingMode = 0,
1081 int32_t RoundingAccuracy = 0)
noexcept;
1083 template <
int WA,
int Wout>
1085 __spirv_ArbitraryFloatATanINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
1086 int32_t Mout, int32_t EnableSubnormals = 0,
1087 int32_t RoundingMode = 0,
1088 int32_t RoundingAccuracy = 0)
noexcept;
1090 template <
int WA,
int Wout>
1092 __spirv_ArbitraryFloatATanPiINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
1093 int32_t Mout, int32_t EnableSubnormals = 0,
1094 int32_t RoundingMode = 0,
1095 int32_t RoundingAccuracy = 0)
noexcept;
1097 template <
int WA,
int WB,
int Wout>
1099 __spirv_ArbitraryFloatATan2INTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
1100 sycl::detail::ap_int<WB> B, int32_t MB,
1101 int32_t Mout, int32_t EnableSubnormals = 0,
1102 int32_t RoundingMode = 0,
1103 int32_t RoundingAccuracy = 0)
noexcept;
1105 template <
int WA,
int WB,
int Wout>
1107 __spirv_ArbitraryFloatPowINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
1108 sycl::detail::ap_int<WB> B, int32_t MB,
1109 int32_t Mout, int32_t EnableSubnormals = 0,
1110 int32_t RoundingMode = 0,
1111 int32_t RoundingAccuracy = 0)
noexcept;
1113 template <
int WA,
int WB,
int Wout>
1115 __spirv_ArbitraryFloatPowRINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
1116 sycl::detail::ap_int<WB> B, int32_t MB,
1117 int32_t Mout, int32_t EnableSubnormals = 0,
1118 int32_t RoundingMode = 0,
1119 int32_t RoundingAccuracy = 0)
noexcept;
1124 template <
int WA,
int WB,
int Wout>
1126 __spirv_ArbitraryFloatPowNINTEL(
sycl::detail::ap_int<WA> A, int32_t MA,
1127 sycl::detail::ap_int<WB> B,
bool SignOfB,
1128 int32_t Mout, int32_t EnableSubnormals = 0,
1129 int32_t RoundingMode = 0,
1130 int32_t RoundingAccuracy = 0)
noexcept;
1132 template <typename dataT>
1134 __spirv_ReadPipe(__ocl_RPipeTy<dataT> Pipe, dataT *Data, int32_t Size,
1136 template <typename dataT>
1138 __spirv_WritePipe(__ocl_WPipeTy<dataT> Pipe, const dataT *Data, int32_t Size,
1140 template <typename dataT>
1142 __spirv_ReadPipeBlockingINTEL(__ocl_RPipeTy<dataT> Pipe, dataT *Data,
1144 template <typename dataT>
1146 __spirv_WritePipeBlockingINTEL(__ocl_WPipeTy<dataT> Pipe, const dataT *Data,
1148 template <typename dataT>
1150 __spirv_CreatePipeFromPipeStorage_read(
1151 const ConstantPipeStorage *Storage)
noexcept;
1152 template <typename dataT>
1154 __spirv_CreatePipeFromPipeStorage_write(
1155 const ConstantPipeStorage *Storage)
noexcept;
1162 __spirv_ConvertBF16ToFINTEL(uint16_t)
noexcept;
1164 __spirv_ConvertFToBF16INTEL(
float)
noexcept;
1167 __spirv_ConvertBF16ToFINTEL(__ocl_vec_t<uint16_t, N>)
noexcept;
1170 __spirv_ConvertFToBF16INTEL(__ocl_vec_t<
float, N>)
noexcept;
1173 __SYCL_EXPORT __ocl_vec_t<uint32_t, 4>
1174 __spirv_GroupNonUniformBallot(uint32_t Execution,
bool Predicate)
noexcept;
1179 __spirv_GroupNonUniformBallotBitCount(
__spv::Scope::Flag,
int,
1180 __ocl_vec_t<uint32_t, 4>)
noexcept;
1183 __spirv_GroupNonUniformBallotFindLSB(
__spv::Scope::Flag,
1184 __ocl_vec_t<uint32_t, 4>)
noexcept;
1186 template <typename ValueT, typename IdT>
1188 __spirv_GroupNonUniformBroadcast(
__spv::Scope::Flag, ValueT, IdT);
1190 template <typename ValueT, typename IdT>
1192 __spirv_GroupNonUniformShuffle(
__spv::Scope::Flag, ValueT, IdT)
noexcept;
1195 __spirv_GroupNonUniformAll(
__spv::Scope::Flag,
bool);
1198 __spirv_GroupNonUniformAny(
__spv::Scope::Flag,
bool);
1200 template <typename ValueT>
1202 __spirv_GroupNonUniformSMin(
__spv::Scope::Flag,
unsigned int, ValueT);
1204 template <typename ValueT>
1206 __spirv_GroupNonUniformUMin(
__spv::Scope::Flag,
unsigned int, ValueT);
1208 template <typename ValueT>
1210 __spirv_GroupNonUniformFMin(
__spv::Scope::Flag,
unsigned int, ValueT);
1212 template <typename ValueT>
1214 __spirv_GroupNonUniformSMax(
__spv::Scope::Flag,
unsigned int, ValueT);
1216 template <typename ValueT>
1218 __spirv_GroupNonUniformUMax(
__spv::Scope::Flag,
unsigned int, ValueT);
1220 template <typename ValueT>
1222 __spirv_GroupNonUniformFMax(
__spv::Scope::Flag,
unsigned int, ValueT);
1224 template <typename ValueT>
1226 __spirv_GroupNonUniformIAdd(
__spv::Scope::Flag,
unsigned int, ValueT);
1228 template <typename ValueT>
1230 __spirv_GroupNonUniformFAdd(
__spv::Scope::Flag,
unsigned int, ValueT);
1232 template <typename ValueT>
1234 __spirv_GroupNonUniformIMul(
__spv::Scope::Flag,
unsigned int, ValueT);
1236 template <typename ValueT>
1238 __spirv_GroupNonUniformFMul(
__spv::Scope::Flag,
unsigned int, ValueT);
1240 template <typename ValueT>
1242 __spirv_GroupNonUniformBitwiseOr(
__spv::Scope::Flag,
unsigned int, ValueT);
1244 template <typename ValueT>
1246 __spirv_GroupNonUniformBitwiseXor(
__spv::Scope::Flag,
unsigned int, ValueT);
1248 template <typename ValueT>
1250 __spirv_GroupNonUniformBitwiseAnd(
__spv::Scope::Flag,
unsigned int, ValueT);
1252 template <typename ValueT>
1254 __spirv_GroupNonUniformLogicalOr(
__spv::Scope::Flag,
unsigned int, ValueT);
1256 template <typename ValueT>
1258 __spirv_GroupNonUniformLogicalAnd(
__spv::Scope::Flag,
unsigned int, ValueT);
1260 template <typename ValueT>
1262 __spirv_GroupNonUniformSMin(
__spv::Scope::Flag,
unsigned int, ValueT,
1265 template <typename ValueT>
1267 __spirv_GroupNonUniformUMin(
__spv::Scope::Flag,
unsigned int, ValueT,
1270 template <typename ValueT>
1272 __spirv_GroupNonUniformFMin(
__spv::Scope::Flag,
unsigned int, ValueT,
1275 template <typename ValueT>
1277 __spirv_GroupNonUniformSMax(
__spv::Scope::Flag,
unsigned int, ValueT,
1280 template <typename ValueT>
1282 __spirv_GroupNonUniformUMax(
__spv::Scope::Flag,
unsigned int, ValueT,
1285 template <typename ValueT>
1287 __spirv_GroupNonUniformFMax(
__spv::Scope::Flag,
unsigned int, ValueT,
1290 template <typename ValueT>
1292 __spirv_GroupNonUniformIAdd(
__spv::Scope::Flag,
unsigned int, ValueT,
1295 template <typename ValueT>
1297 __spirv_GroupNonUniformFAdd(
__spv::Scope::Flag,
unsigned int, ValueT,
1300 template <typename ValueT>
1302 __spirv_GroupNonUniformIMul(
__spv::Scope::Flag,
unsigned int, ValueT,
1305 template <typename ValueT>
1307 __spirv_GroupNonUniformFMul(
__spv::Scope::Flag,
unsigned int, ValueT,
1310 template <typename ValueT>
1312 __spirv_GroupNonUniformBitwiseOr(
__spv::Scope::Flag,
unsigned int, ValueT,
1315 template <typename ValueT>
1317 __spirv_GroupNonUniformBitwiseXor(
__spv::Scope::Flag,
unsigned int, ValueT,
1320 template <typename ValueT>
1322 __spirv_GroupNonUniformBitwiseAnd(
__spv::Scope::Flag,
unsigned int, ValueT,
1325 template <typename ValueT>
1327 __spirv_GroupNonUniformLogicalOr(
__spv::Scope::Flag,
unsigned int, ValueT,
1330 template <typename ValueT>
1332 __spirv_GroupNonUniformLogicalAnd(
__spv::Scope::Flag,
unsigned int, ValueT,
1336 __clc_BarrierInitialize(
int64_t *state, int32_t expected_count)
noexcept;
1348 __clc_BarrierArriveNoComplete(
int64_t *state, int32_t count)
noexcept;
1351 __clc_BarrierArriveAndDropNoComplete(
int64_t *state, int32_t count)
noexcept;
1368 #ifdef __SYCL_USE_VARIADIC_SPIRV_OCL_PRINTF__
1370 __spirv_ocl_printf(
const __attribute__((opencl_constant))
char *Format, ...);
1373 template <
typename... Args>
1375 __spirv_ocl_printf(
const __attribute__((opencl_constant))
char *Format,
1377 template <
typename... Args>
1386 __clc_native_tanh(__ocl_vec_t<float, 2>);
1388 __clc_native_tanh(__ocl_vec_t<float, 3>);
1390 __clc_native_tanh(__ocl_vec_t<float, 4>);
1392 __clc_native_tanh(__ocl_vec_t<float, 8>);
1394 __clc_native_tanh(__ocl_vec_t<float, 16>);
1398 __clc_native_tanh(__ocl_vec_t<_Float16, 2>);
1400 __clc_native_tanh(__ocl_vec_t<_Float16, 3>);
1402 __clc_native_tanh(__ocl_vec_t<_Float16, 4>);
1404 __clc_native_tanh(__ocl_vec_t<_Float16, 8>);
1406 __clc_native_tanh(__ocl_vec_t<_Float16, 16>);
1410 __clc_native_exp2(__ocl_vec_t<_Float16, 2>);
1412 __clc_native_exp2(__ocl_vec_t<_Float16, 3>);
1414 __clc_native_exp2(__ocl_vec_t<_Float16, 4>);
1416 __clc_native_exp2(__ocl_vec_t<_Float16, 8>);
1418 __clc_native_exp2(__ocl_vec_t<_Float16, 16>);
1420 #define __CLC_BF16(...) \
1421 extern __DPCPP_SYCL_EXTERNAL __SYCL_EXPORT __VA_ARGS__ __clc_fabs( \
1422 __VA_ARGS__) noexcept; \
1423 extern __DPCPP_SYCL_EXTERNAL __SYCL_EXPORT __VA_ARGS__ __clc_fmin( \
1424 __VA_ARGS__, __VA_ARGS__) noexcept; \
1425 extern __DPCPP_SYCL_EXTERNAL __SYCL_EXPORT __VA_ARGS__ __clc_fmax( \
1426 __VA_ARGS__, __VA_ARGS__) noexcept; \
1427 extern __DPCPP_SYCL_EXTERNAL __SYCL_EXPORT __VA_ARGS__ __clc_fma( \
1428 __VA_ARGS__, __VA_ARGS__, __VA_ARGS__) noexcept;
1430 #define __CLC_BF16_SCAL_VEC(TYPE) \
1432 __CLC_BF16(__ocl_vec_t<TYPE, 2>) \
1433 __CLC_BF16(__ocl_vec_t<TYPE, 3>) \
1434 __CLC_BF16(__ocl_vec_t<TYPE, 4>) \
1435 __CLC_BF16(__ocl_vec_t<TYPE, 8>) \
1436 __CLC_BF16(__ocl_vec_t<TYPE, 16>)
1438 __CLC_BF16_SCAL_VEC(uint16_t)
1439 __CLC_BF16_SCAL_VEC(uint32_t)
1441 #undef __CLC_BF16_SCAL_VEC
1448 template <
typename from,
typename to>
1450 std::enable_if_t<std::is_integral_v<to> && std::is_unsigned_v<to>, to>
1451 __spirv_ConvertPtrToU(from val)
noexcept;
1453 template <
typename RetT,
typename... ArgsT>
1455 __spirv_TaskSequenceCreateINTEL(RetT (*f)(ArgsT...),
int Pipelined = -1,
1456 int ClusterMode = -1,
1460 template <typename... ArgsT>
1462 __spirv_TaskSequenceAsyncINTEL(
__spv::__spirv_TaskSequenceINTEL *TaskSequence,
1465 template <typename RetT>
1474 template <
typename dataT>
1477 const dataT *Src,
size_t NumElements,
1479 for (
size_t i = 0; i < NumElements; i++) {
1480 Dest[i] = Src[i * Stride];
1486 template <
typename dataT>
1489 const dataT *Src,
size_t NumElements,
1491 for (
size_t i = 0; i < NumElements; i++) {
1492 Dest[i * Stride] = Src[i];
#define __DPCPP_SYCL_EXTERNAL
conditional< sizeof(long)==8, long, long long >::type int64_t
__attribute__((always_inline)) auto invoke_simd(sycl
The invoke_simd free function invokes a SIMD function using all work-items in a sub_group.
__SYCL_CONVERGENT__ __ocl_event_t __SYCL_OpGroupAsyncCopyGlobalToLocal(__spv::Scope::Flag, dataT *Dest, const dataT *Src, size_t NumElements, size_t Stride, __ocl_event_t) noexcept
__SYCL_CONVERGENT__ __DPCPP_SYCL_EXTERNAL void __spirv_ControlBarrier(__spv::Scope Execution, __spv::Scope Memory, uint32_t Semantics) noexcept
__SYCL_CONVERGENT__ __DPCPP_SYCL_EXTERNAL void __spirv_MemoryBarrier(__spv::Scope Memory, uint32_t Semantics) noexcept
__SYCL_CONVERGENT__ __DPCPP_SYCL_EXTERNAL void __spirv_GroupWaitEvents(__spv::Scope Execution, uint32_t NumEvents, __ocl_event_t *WaitEvents) noexcept
#define __SYCL_CONVERGENT__
void __spirv_ocl_prefetch(const char *Ptr, size_t NumBytes) noexcept
__SYCL_CONVERGENT__ __ocl_event_t __SYCL_OpGroupAsyncCopyLocalToGlobal(__spv::Scope::Flag, dataT *Dest, const dataT *Src, size_t NumElements, size_t Stride, __ocl_event_t) noexcept
_Abi const simd< _Tp, _Abi > & noexcept