22 #include <type_traits>
27 #ifdef __SYCL_DEVICE_ONLY__
28 #define __SYCL_CONSTANT_AS __attribute__((opencl_constant))
30 #define __SYCL_CONSTANT_AS
34 inline namespace _V1 {
35 namespace ext::oneapi::experimental {
78 template <
typename FormatT,
typename... Args>
79 int printf(
const FormatT *__format, Args... args) {
80 #if defined(__SYCL_DEVICE_ONLY__) && (defined(__SPIR__) || defined(__SPIRV__))
81 return __spirv_ocl_printf(__format, args...);
95 sycl::detail::is_svgenfloatf_v<T> || sycl::detail::is_svgenfloath_v<T>, T>
97 #if defined(__NVPTX__)
98 return sycl::detail::convertFromOpenCLTypeFor<T>(
112 template <
typename T,
size_t N>
114 std::enable_if_t<std::is_same_v<T, half> || std::is_same_v<T, float>,
119 for (
size_t i = 0; i < N / 2; i++) {
120 #if defined(__SYCL_DEVICE_ONLY__) && defined(__NVPTX__)
125 sycl::detail::memcpy(&res[i * 2], &partial_res,
sizeof(
vec<T, 2>));
128 #if defined(__SYCL_DEVICE_ONLY__) && defined(__NVPTX__)
141 template <
typename T>
143 std::enable_if_t<sycl::detail::is_svgenfloath_v<T>, T>
145 #if defined(__NVPTX__)
146 return sycl::detail::convertFromOpenCLTypeFor<T>(
160 for (
size_t i = 0; i < N / 2; i++) {
161 #if defined(__SYCL_DEVICE_ONLY__) && defined(__NVPTX__)
166 sycl::detail::memcpy(&res[i * 2], &partial_res,
sizeof(
vec<half, 2>));
169 #if defined(__SYCL_DEVICE_ONLY__) && defined(__NVPTX__)
184 #undef __SYCL_CONSTANT_AS
Provides a cross-platform math array class template that works on SYCL devices as well as in host C++...
class sycl::vec ///////////////////////// Provides a cross-patform vector class template that works e...
#define __SYCL_ALWAYS_INLINE
auto convertToOpenCLType(T &&x)
vec< T, 2 > to_vec2(marray< T, N > X, size_t Start)
__SYCL_ALWAYS_INLINE std::enable_if_t< std::is_same_v< T, half >||std::is_same_v< T, float >, sycl::marray< T, N > > tanh(sycl::marray< T, N > x) __NOEXC
__SYCL_ALWAYS_INLINE std::enable_if_t< sycl::detail::is_svgenfloatf_v< T >||sycl::detail::is_svgenfloath_v< T >, T > tanh(T x) __NOEXC
__SYCL_ALWAYS_INLINE std::enable_if_t< sycl::detail::is_svgenfloath_v< T >, T > exp2(T x) __NOEXC
__SYCL_ALWAYS_INLINE sycl::marray< half, N > exp2(sycl::marray< half, N > x) __NOEXC
int printf(const FormatT *__format, Args... args)