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); \
40SYCL_PLOG(cl::sycl::cl_half8)
41SYCL_PLOG(cl::sycl::cl_float4)
42SYCL_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); \
51SYCL_PLOG1P(cl::sycl::cl_half8)
52SYCL_PLOG1P(cl::sycl::cl_float4)
53SYCL_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); \
62SYCL_PLOG10(cl::sycl::cl_half8)
63SYCL_PLOG10(cl::sycl::cl_float4)
64SYCL_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); \
73SYCL_PEXP(cl::sycl::cl_half8)
74SYCL_PEXP(cl::sycl::cl_half)
75SYCL_PEXP(cl::sycl::cl_float4)
76SYCL_PEXP(cl::sycl::cl_float)
77SYCL_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); \
86SYCL_PEXPM1(cl::sycl::cl_half8)
87SYCL_PEXPM1(cl::sycl::cl_float4)
88SYCL_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); \
97SYCL_PSQRT(cl::sycl::cl_half8)
98SYCL_PSQRT(cl::sycl::cl_float4)
99SYCL_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); \
108SYCL_PRSQRT(cl::sycl::cl_half8)
109SYCL_PRSQRT(cl::sycl::cl_float4)
110SYCL_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); \
120SYCL_PSIN(cl::sycl::cl_half8)
121SYCL_PSIN(cl::sycl::cl_float4)
122SYCL_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); \
132SYCL_PCOS(cl::sycl::cl_half8)
133SYCL_PCOS(cl::sycl::cl_float4)
134SYCL_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); \
144SYCL_PTAN(cl::sycl::cl_half8)
145SYCL_PTAN(cl::sycl::cl_float4)
146SYCL_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); \
156SYCL_PASIN(cl::sycl::cl_half8)
157SYCL_PASIN(cl::sycl::cl_float4)
158SYCL_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); \
168SYCL_PACOS(cl::sycl::cl_half8)
169SYCL_PACOS(cl::sycl::cl_float4)
170SYCL_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); \
180SYCL_PATAN(cl::sycl::cl_half8)
181SYCL_PATAN(cl::sycl::cl_float4)
182SYCL_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); \
192SYCL_PSINH(cl::sycl::cl_half8)
193SYCL_PSINH(cl::sycl::cl_float4)
194SYCL_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); \
204SYCL_PCOSH(cl::sycl::cl_half8)
205SYCL_PCOSH(cl::sycl::cl_float4)
206SYCL_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); \
216SYCL_PTANH(cl::sycl::cl_half8)
217SYCL_PTANH(cl::sycl::cl_float4)
218SYCL_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); \
227SYCL_PCEIL(cl::sycl::cl_half)
228SYCL_PCEIL(cl::sycl::cl_float4)
229SYCL_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); \
238SYCL_PROUND(cl::sycl::cl_half8)
239SYCL_PROUND(cl::sycl::cl_float4)
240SYCL_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); \
249SYCL_PRINT(cl::sycl::cl_half8)
250SYCL_PRINT(cl::sycl::cl_float4)
251SYCL_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); \
260SYCL_FLOOR(cl::sycl::cl_half8)
261SYCL_FLOOR(cl::sycl::cl_float4)
262SYCL_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) { \
271SYCL_PMIN(cl::sycl::cl_half8, cl::sycl::fmin(a, b))
272SYCL_PMIN(cl::sycl::cl_float4, cl::sycl::fmin(a, b))
273SYCL_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) { \
282SYCL_PMAX(cl::sycl::cl_half8, cl::sycl::fmax(a, b))
283SYCL_PMAX(cl::sycl::cl_float4, cl::sycl::fmax(a, b))
284SYCL_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>()); \
293SYCL_PLDEXP(cl::sycl::cl_half8)
294SYCL_PLDEXP(cl::sycl::cl_float4)
295SYCL_PLDEXP(cl::sycl::cl_double2)
Namespace containing all symbols from the Eigen library.
Definition Core:137