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) { \ 271 SYCL_PMIN(cl::sycl::cl_half8, cl::sycl::fmin(a, b))
272 SYCL_PMIN(cl::sycl::cl_float4, cl::sycl::fmin(a, b))
273 SYCL_PMIN(cl::sycl::cl_double2, cl::sycl::fmin(a, 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) { \ 282 SYCL_PMAX(cl::sycl::cl_half8, cl::sycl::fmax(a, b))
283 SYCL_PMAX(cl::sycl::cl_float4, cl::sycl::fmax(a, b))
284 SYCL_PMAX(cl::sycl::cl_double2, cl::sycl::fmax(a, 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)
303 #endif // EIGEN_MATH_FUNCTIONS_SYCL_H Namespace containing all symbols from the Eigen library.
Definition: B01_Experimental.dox:1