21 #ifndef EIGEN_MATH_FUNCTIONS_SYCL_H
22 #define EIGEN_MATH_FUNCTIONS_SYCL_H
24 #include "../../InternalHeaderCheck.h"
33 #if defined(SYCL_DEVICE_ONLY)
34 #define SYCL_PLOG(packet_type) \
36 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type plog<packet_type>(const packet_type& a) { \
37 return cl::sycl::log(a); \
40 SYCL_PLOG(cl::sycl::cl_half8)
41 SYCL_PLOG(cl::sycl::cl_float4)
42 SYCL_PLOG(cl::sycl::cl_double2)
45 #define SYCL_PLOG1P(packet_type) \
47 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type plog1p<packet_type>(const packet_type& a) { \
48 return cl::sycl::log1p(a); \
51 SYCL_PLOG1P(cl::sycl::cl_half8)
52 SYCL_PLOG1P(cl::sycl::cl_float4)
53 SYCL_PLOG1P(cl::sycl::cl_double2)
56 #define SYCL_PLOG10(packet_type) \
58 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type plog10<packet_type>(const packet_type& a) { \
59 return cl::sycl::log10(a); \
62 SYCL_PLOG10(cl::sycl::cl_half8)
63 SYCL_PLOG10(cl::sycl::cl_float4)
64 SYCL_PLOG10(cl::sycl::cl_double2)
67 #define SYCL_PEXP(packet_type) \
69 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type pexp<packet_type>(const packet_type& a) { \
70 return cl::sycl::exp(a); \
73 SYCL_PEXP(cl::sycl::cl_half8)
74 SYCL_PEXP(cl::sycl::cl_half)
75 SYCL_PEXP(cl::sycl::cl_float4)
76 SYCL_PEXP(cl::sycl::cl_float)
77 SYCL_PEXP(cl::sycl::cl_double2)
80 #define SYCL_PEXPM1(packet_type) \
82 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type pexpm1<packet_type>(const packet_type& a) { \
83 return cl::sycl::expm1(a); \
86 SYCL_PEXPM1(cl::sycl::cl_half8)
87 SYCL_PEXPM1(cl::sycl::cl_float4)
88 SYCL_PEXPM1(cl::sycl::cl_double2)
91 #define SYCL_PSQRT(packet_type) \
93 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type psqrt<packet_type>(const packet_type& a) { \
94 return cl::sycl::sqrt(a); \
97 SYCL_PSQRT(cl::sycl::cl_half8)
98 SYCL_PSQRT(cl::sycl::cl_float4)
99 SYCL_PSQRT(cl::sycl::cl_double2)
102 #define SYCL_PRSQRT(packet_type) \
104 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type prsqrt<packet_type>(const packet_type& a) { \
105 return cl::sycl::rsqrt(a); \
108 SYCL_PRSQRT(cl::sycl::cl_half8)
109 SYCL_PRSQRT(cl::sycl::cl_float4)
110 SYCL_PRSQRT(cl::sycl::cl_double2)
114 #define SYCL_PSIN(packet_type) \
116 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type psin<packet_type>(const packet_type& a) { \
117 return cl::sycl::sin(a); \
120 SYCL_PSIN(cl::sycl::cl_half8)
121 SYCL_PSIN(cl::sycl::cl_float4)
122 SYCL_PSIN(cl::sycl::cl_double2)
126 #define SYCL_PCOS(packet_type) \
128 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type pcos<packet_type>(const packet_type& a) { \
129 return cl::sycl::cos(a); \
132 SYCL_PCOS(cl::sycl::cl_half8)
133 SYCL_PCOS(cl::sycl::cl_float4)
134 SYCL_PCOS(cl::sycl::cl_double2)
138 #define SYCL_PTAN(packet_type) \
140 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type ptan<packet_type>(const packet_type& a) { \
141 return cl::sycl::tan(a); \
144 SYCL_PTAN(cl::sycl::cl_half8)
145 SYCL_PTAN(cl::sycl::cl_float4)
146 SYCL_PTAN(cl::sycl::cl_double2)
150 #define SYCL_PASIN(packet_type) \
152 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type pasin<packet_type>(const packet_type& a) { \
153 return cl::sycl::asin(a); \
156 SYCL_PASIN(cl::sycl::cl_half8)
157 SYCL_PASIN(cl::sycl::cl_float4)
158 SYCL_PASIN(cl::sycl::cl_double2)
162 #define SYCL_PACOS(packet_type) \
164 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type pacos<packet_type>(const packet_type& a) { \
165 return cl::sycl::acos(a); \
168 SYCL_PACOS(cl::sycl::cl_half8)
169 SYCL_PACOS(cl::sycl::cl_float4)
170 SYCL_PACOS(cl::sycl::cl_double2)
174 #define SYCL_PATAN(packet_type) \
176 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type patan<packet_type>(const packet_type& a) { \
177 return cl::sycl::atan(a); \
180 SYCL_PATAN(cl::sycl::cl_half8)
181 SYCL_PATAN(cl::sycl::cl_float4)
182 SYCL_PATAN(cl::sycl::cl_double2)
186 #define SYCL_PSINH(packet_type) \
188 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type psinh<packet_type>(const packet_type& a) { \
189 return cl::sycl::sinh(a); \
192 SYCL_PSINH(cl::sycl::cl_half8)
193 SYCL_PSINH(cl::sycl::cl_float4)
194 SYCL_PSINH(cl::sycl::cl_double2)
198 #define SYCL_PCOSH(packet_type) \
200 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type pcosh<packet_type>(const packet_type& a) { \
201 return cl::sycl::cosh(a); \
204 SYCL_PCOSH(cl::sycl::cl_half8)
205 SYCL_PCOSH(cl::sycl::cl_float4)
206 SYCL_PCOSH(cl::sycl::cl_double2)
210 #define SYCL_PTANH(packet_type) \
212 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type ptanh<packet_type>(const packet_type& a) { \
213 return cl::sycl::tanh(a); \
216 SYCL_PTANH(cl::sycl::cl_half8)
217 SYCL_PTANH(cl::sycl::cl_float4)
218 SYCL_PTANH(cl::sycl::cl_double2)
221 #define SYCL_PCEIL(packet_type) \
223 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type pceil<packet_type>(const packet_type& a) { \
224 return cl::sycl::ceil(a); \
227 SYCL_PCEIL(cl::sycl::cl_half)
228 SYCL_PCEIL(cl::sycl::cl_float4)
229 SYCL_PCEIL(cl::sycl::cl_double2)
232 #define SYCL_PROUND(packet_type) \
234 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type pround<packet_type>(const packet_type& a) { \
235 return cl::sycl::round(a); \
238 SYCL_PROUND(cl::sycl::cl_half8)
239 SYCL_PROUND(cl::sycl::cl_float4)
240 SYCL_PROUND(cl::sycl::cl_double2)
243 #define SYCL_PRINT(packet_type) \
245 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type print<packet_type>(const packet_type& a) { \
246 return cl::sycl::rint(a); \
249 SYCL_PRINT(cl::sycl::cl_half8)
250 SYCL_PRINT(cl::sycl::cl_float4)
251 SYCL_PRINT(cl::sycl::cl_double2)
254 #define SYCL_FLOOR(packet_type) \
256 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type pfloor<packet_type>(const packet_type& a) { \
257 return cl::sycl::floor(a); \
260 SYCL_FLOOR(cl::sycl::cl_half8)
261 SYCL_FLOOR(cl::sycl::cl_float4)
262 SYCL_FLOOR(cl::sycl::cl_double2)
265 #define SYCL_PMIN(packet_type, expr) \
267 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type pmin<packet_type>(const packet_type& a, const packet_type& b) { \
276 #define SYCL_PMAX(packet_type, expr) \
278 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type pmax<packet_type>(const packet_type& a, const packet_type& b) { \
287 #define SYCL_PLDEXP(packet_type) \
289 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type pldexp(const packet_type& a, const packet_type& exponent) { \
290 return cl::sycl::ldexp(a, exponent.template convert<cl::sycl::cl_int, cl::sycl::rounding_mode::automatic>()); \
293 SYCL_PLDEXP(cl::sycl::cl_half8)
294 SYCL_PLDEXP(cl::sycl::cl_float4)
295 SYCL_PLDEXP(cl::sycl::cl_double2)
Scalar * b
Definition: benchVecAdd.cpp:17
const Scalar * a
Definition: level2_cplx_impl.h:32
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 fmin(const bfloat16 &a, const bfloat16 &b)
Definition: BFloat16.h:664
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 fmax(const bfloat16 &a, const bfloat16 &b)
Definition: BFloat16.h:670
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
Definition: Eigen_Colamd.h:49