27 #define __ESIMD_raw_vec_t(T, SZ) \
28 sycl::ext::intel::esimd::detail::vector_type_t< \
29 sycl::ext::intel::esimd::detail::__raw_t<T>, SZ>
30 #define __ESIMD_cpp_vec_t(T, SZ) \
31 sycl::ext::intel::esimd::detail::vector_type_t< \
32 sycl::ext::intel::esimd::detail::__cpp_t<T>, SZ>
34 template <
typename T,
int SZ>
35 __ESIMD_INTRIN __ESIMD_raw_vec_t(T,
SZ)
36 __esimd_umulh(__ESIMD_raw_vec_t(T,
SZ)
src0,
37 __ESIMD_raw_vec_t(T,
SZ)
src1) __ESIMD_INTRIN_END;
38 template <
typename T,
int SZ>
39 __ESIMD_INTRIN __ESIMD_raw_vec_t(T,
SZ)
40 __esimd_smulh(__ESIMD_raw_vec_t(T,
SZ)
src0,
41 __ESIMD_raw_vec_t(T,
SZ)
src1) __ESIMD_INTRIN_END;
44 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<float, SZ>
45 __esimd_frc(__ESIMD_DNS::vector_type_t<float, SZ>
src0) __ESIMD_INTRIN_END;
47 template <
typename T,
int SZ>
48 __ESIMD_INTRIN __ESIMD_raw_vec_t(T,
SZ)
49 __esimd_lzd(__ESIMD_raw_vec_t(T,
SZ)
src0) __ESIMD_INTRIN_END;
51 template <
typename T0,
typename T1,
int SZ>
52 __ESIMD_INTRIN __ESIMD_raw_vec_t(T0,
SZ)
53 __esimd_bfrev(__ESIMD_raw_vec_t(T1,
SZ)
src0) __ESIMD_INTRIN_END;
55 template <
typename T0,
int SZ>
56 __ESIMD_INTRIN __ESIMD_raw_vec_t(T0,
SZ)
57 __esimd_bfi(__ESIMD_raw_vec_t(T0,
SZ)
src0, __ESIMD_raw_vec_t(T0,
SZ)
src1,
58 __ESIMD_raw_vec_t(T0,
SZ) src2,
59 __ESIMD_raw_vec_t(T0,
SZ) src3) __ESIMD_INTRIN_END;
61 template <
typename T0,
int SZ>
62 __ESIMD_INTRIN __ESIMD_raw_vec_t(T0,
SZ)
63 __esimd_sbfe(__ESIMD_raw_vec_t(T0,
SZ)
src0, __ESIMD_raw_vec_t(T0,
SZ)
src1,
64 __ESIMD_raw_vec_t(T0,
SZ) src2) __ESIMD_INTRIN_END;
66 template <
typename T,
int N>
67 __ESIMD_INTRIN __ESIMD_raw_vec_t(T, N)
68 __esimd_dp4(__ESIMD_raw_vec_t(T, N) v1,
69 __ESIMD_raw_vec_t(T, N) v2) __ESIMD_INTRIN_END;
73 int repeat_count,
typename T,
typename T0,
typename T1,
typename T2,
74 int N,
int N1,
int N2,
int res_sign = std::is_signed_v<T>,
75 int acc_sign = std::is_signed_v<T0>>
76 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<T, N>
77 __esimd_dpas2(__ESIMD_DNS::vector_type_t<T0, N>
src0,
78 __ESIMD_DNS::vector_type_t<T1, N1>
src1,
79 __ESIMD_DNS::vector_type_t<T2, N2> src2) __ESIMD_INTRIN_END;
81 template <
int Info,
typename T,
typename T1,
typename T2,
int N,
int N1,
int N2>
82 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<T, N>
83 __esimd_dpas_nosrc0(__ESIMD_DNS::vector_type_t<T1, N1>
src1,
84 __ESIMD_DNS::vector_type_t<T2, N2> src2) __ESIMD_INTRIN_END;
86 template <
int Info,
typename T,
typename T1,
typename T2,
int N,
int N1,
int N2>
87 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<T, N>
88 __esimd_dpasw(__ESIMD_DNS::vector_type_t<T, N>
src0,
89 __ESIMD_DNS::vector_type_t<T1, N1>
src1,
90 __ESIMD_DNS::vector_type_t<T2, N2> src2) __ESIMD_INTRIN_END;
92 template <
int Info,
typename T,
typename T1,
typename T2,
int N,
int N1,
int N2>
93 __ESIMD_INTRIN __ESIMD_DNS::vector_type_t<T, N> __esimd_dpasw_nosrc0(
94 __ESIMD_DNS::vector_type_t<T1, N1>
src1,
95 __ESIMD_DNS::vector_type_t<T2, N2> src2) __ESIMD_INTRIN_END;
97 template <
typename T,
int N>
98 __ESIMD_INTRIN std::pair<__ESIMD_DNS::vector_type_t<T, N>,
99 __ESIMD_DNS::vector_type_t<T, N>>
100 __esimd_addc(__ESIMD_DNS::vector_type_t<T, N>
src0,
101 __ESIMD_DNS::vector_type_t<T, N>
src1) __ESIMD_INTRIN_END;
103 template <
typename T,
int N>
104 __ESIMD_INTRIN std::pair<__ESIMD_DNS::vector_type_t<T, N>,
105 __ESIMD_DNS::vector_type_t<T, N>>
106 __esimd_subb(__ESIMD_DNS::vector_type_t<T, N>
src0,
107 __ESIMD_DNS::vector_type_t<T, N>
src1) __ESIMD_INTRIN_END;
109 template <u
int8_t FuncControl,
typename T,
int N>
110 __ESIMD_INTRIN __ESIMD_raw_vec_t(T, N)
111 __esimd_bfn(__ESIMD_raw_vec_t(T, N)
src0, __ESIMD_raw_vec_t(T, N)
src1,
112 __ESIMD_raw_vec_t(T, N) src2) __ESIMD_INTRIN_END;
115 __ESIMD_INTRIN __ESIMD_raw_vec_t(
sycl::half, N)
116 __esimd_srnd(__ESIMD_DNS::vector_type_t<float, N>
src1,
117 __ESIMD_DNS::vector_type_t<uint16_t, N> src2)
121 template <
typename T,
int N>
123 __spirv_ocl_fma(__ESIMD_raw_vec_t(T, N)
a, __ESIMD_raw_vec_t(T, N)
b,
124 __ESIMD_raw_vec_t(T, N) c) __ESIMD_INTRIN_END;
127 template <
typename T,
int N>
129 __spirv_ocl_popcount(__ESIMD_raw_vec_t(T, N)
src0) __ESIMD_INTRIN_END;
132 template <
typename T,
int N>
134 __spirv_ocl_ctz(__ESIMD_raw_vec_t(T, N)
src0) __ESIMD_INTRIN_END;
137 template <
typename T,
int N>
139 __spirv_ocl_clz(__ESIMD_raw_vec_t(T, N)
src0) __ESIMD_INTRIN_END;
142 template <
typename T,
int N>
144 __spirv_FRem(__ESIMD_raw_vec_t(T, N)
src0,
145 __ESIMD_raw_vec_t(T, N)
src1) __ESIMD_INTRIN_END;
147 #undef __ESIMD_raw_vec_t
148 #undef __ESIMD_cpp_vec_t
#define __DPCPP_SYCL_EXTERNAL
__ESIMD_API SZ simd< T, SZ > src1
__ESIMD_API SZ simd< T, SZ > Sat int SZ
dpas_argument_type
Describes the element types in the input matrices.