21 #ifndef EIGEN_MATH_FUNCTIONS_SYCL_H 22 #define EIGEN_MATH_FUNCTIONS_SYCL_H 30 #if defined(SYCL_DEVICE_ONLY) 31 #define SYCL_PLOG(packet_type) \ 33 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type plog<packet_type>( \ 34 const packet_type& a) { \ 35 return cl::sycl::log(a); \ 38 SYCL_PLOG(cl::sycl::cl_float4)
39 SYCL_PLOG(cl::sycl::cl_double2)
42 #define SYCL_PLOG1P(packet_type) \ 44 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type plog1p<packet_type>( \ 45 const packet_type& a) { \ 46 return cl::sycl::log1p(a); \ 49 SYCL_PLOG1P(cl::sycl::cl_float4)
50 SYCL_PLOG1P(cl::sycl::cl_double2)
53 #define SYCL_PLOG10(packet_type) \ 55 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type plog10<packet_type>( \ 56 const packet_type& a) { \ 57 return cl::sycl::log10(a); \ 60 SYCL_PLOG10(cl::sycl::cl_float4)
61 SYCL_PLOG10(cl::sycl::cl_double2)
64 #define SYCL_PEXP(packet_type) \ 66 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type pexp<packet_type>( \ 67 const packet_type& a) { \ 68 return cl::sycl::exp(a); \ 71 SYCL_PEXP(cl::sycl::cl_float4)
72 SYCL_PEXP(cl::sycl::cl_float)
73 SYCL_PEXP(cl::sycl::cl_double2)
76 #define SYCL_PEXPM1(packet_type) \ 78 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type pexpm1<packet_type>( \ 79 const packet_type& a) { \ 80 return cl::sycl::expm1(a); \ 83 SYCL_PEXPM1(cl::sycl::cl_float4)
84 SYCL_PEXPM1(cl::sycl::cl_double2)
87 #define SYCL_PSQRT(packet_type) \ 89 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type psqrt<packet_type>( \ 90 const packet_type& a) { \ 91 return cl::sycl::sqrt(a); \ 94 SYCL_PSQRT(cl::sycl::cl_float4)
95 SYCL_PSQRT(cl::sycl::cl_double2)
98 #define SYCL_PRSQRT(packet_type) \ 100 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type prsqrt<packet_type>( \ 101 const packet_type& a) { \ 102 return cl::sycl::rsqrt(a); \ 105 SYCL_PRSQRT(cl::sycl::cl_float4)
106 SYCL_PRSQRT(cl::sycl::cl_double2)
110 #define SYCL_PSIN(packet_type) \ 112 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type psin<packet_type>( \ 113 const packet_type& a) { \ 114 return cl::sycl::sin(a); \ 117 SYCL_PSIN(cl::sycl::cl_float4)
118 SYCL_PSIN(cl::sycl::cl_double2)
122 #define SYCL_PCOS(packet_type) \ 124 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type pcos<packet_type>( \ 125 const packet_type& a) { \ 126 return cl::sycl::cos(a); \ 129 SYCL_PCOS(cl::sycl::cl_float4)
130 SYCL_PCOS(cl::sycl::cl_double2)
134 #define SYCL_PTAN(packet_type) \ 136 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type ptan<packet_type>( \ 137 const packet_type& a) { \ 138 return cl::sycl::tan(a); \ 141 SYCL_PTAN(cl::sycl::cl_float4)
142 SYCL_PTAN(cl::sycl::cl_double2)
146 #define SYCL_PASIN(packet_type) \ 148 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type pasin<packet_type>( \ 149 const packet_type& a) { \ 150 return cl::sycl::asin(a); \ 153 SYCL_PASIN(cl::sycl::cl_float4)
154 SYCL_PASIN(cl::sycl::cl_double2)
158 #define SYCL_PACOS(packet_type) \ 160 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type pacos<packet_type>( \ 161 const packet_type& a) { \ 162 return cl::sycl::acos(a); \ 165 SYCL_PACOS(cl::sycl::cl_float4)
166 SYCL_PACOS(cl::sycl::cl_double2)
170 #define SYCL_PATAN(packet_type) \ 172 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type patan<packet_type>( \ 173 const packet_type& a) { \ 174 return cl::sycl::atan(a); \ 177 SYCL_PATAN(cl::sycl::cl_float4)
178 SYCL_PATAN(cl::sycl::cl_double2)
182 #define SYCL_PSINH(packet_type) \ 184 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type psinh<packet_type>( \ 185 const packet_type& a) { \ 186 return cl::sycl::sinh(a); \ 189 SYCL_PSINH(cl::sycl::cl_float4)
190 SYCL_PSINH(cl::sycl::cl_double2)
194 #define SYCL_PCOSH(packet_type) \ 196 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type pcosh<packet_type>( \ 197 const packet_type& a) { \ 198 return cl::sycl::cosh(a); \ 201 SYCL_PCOSH(cl::sycl::cl_float4)
202 SYCL_PCOSH(cl::sycl::cl_double2)
206 #define SYCL_PTANH(packet_type) \ 208 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type ptanh<packet_type>( \ 209 const packet_type& a) { \ 210 return cl::sycl::tanh(a); \ 213 SYCL_PTANH(cl::sycl::cl_float4)
214 SYCL_PTANH(cl::sycl::cl_double2)
217 #define SYCL_PCEIL(packet_type) \ 219 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type pceil<packet_type>( \ 220 const packet_type& a) { \ 221 return cl::sycl::ceil(a); \ 224 SYCL_PCEIL(cl::sycl::cl_float4)
225 SYCL_PCEIL(cl::sycl::cl_double2)
228 #define SYCL_PROUND(packet_type) \ 230 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type pround<packet_type>( \ 231 const packet_type& a) { \ 232 return cl::sycl::round(a); \ 235 SYCL_PROUND(cl::sycl::cl_float4)
236 SYCL_PROUND(cl::sycl::cl_double2)
239 #define SYCL_PRINT(packet_type) \ 241 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type print<packet_type>( \ 242 const packet_type& a) { \ 243 return cl::sycl::rint(a); \ 246 SYCL_PRINT(cl::sycl::cl_float4)
247 SYCL_PRINT(cl::sycl::cl_double2)
250 #define SYCL_FLOOR(packet_type) \ 252 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type pfloor<packet_type>( \ 253 const packet_type& a) { \ 254 return cl::sycl::floor(a); \ 257 SYCL_FLOOR(cl::sycl::cl_float4)
258 SYCL_FLOOR(cl::sycl::cl_double2)
261 #define SYCL_PMIN(packet_type, expr) \ 263 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type pmin<packet_type>( \ 264 const packet_type& a, const packet_type& b) { \ 272 #define SYCL_PMAX(packet_type, expr) \ 274 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type pmax<packet_type>( \ 275 const packet_type& a, const packet_type& b) { \ 283 #define SYCL_PLDEXP(packet_type) \ 285 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE packet_type pldexp( \ 286 const packet_type& a, const packet_type& exponent) { \ 287 return cl::sycl::ldexp( \ 288 a, exponent.template convert<cl::sycl::cl_int, \ 289 cl::sycl::rounding_mode::automatic>()); \ 292 SYCL_PLDEXP(cl::sycl::cl_float4)
293 SYCL_PLDEXP(cl::sycl::cl_double2)
301 #endif // EIGEN_MATH_FUNCTIONS_SYCL_H
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 fmin(const bfloat16 &a, const bfloat16 &b)
Namespace containing all symbols from the Eigen library.
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 fmax(const bfloat16 &a, const bfloat16 &b)