diff --git a/sycl/include/sycl/ext/intel/experimental/esimd/detail/math_intrin.hpp b/sycl/include/sycl/ext/intel/experimental/esimd/detail/math_intrin.hpp index 0ad3475156e6a..938d66b19c5bf 100644 --- a/sycl/include/sycl/ext/intel/experimental/esimd/detail/math_intrin.hpp +++ b/sycl/include/sycl/ext/intel/experimental/esimd/detail/math_intrin.hpp @@ -110,6 +110,10 @@ __ESIMD_INTRIN __ESIMD_raw_vec_t(T, N) } #endif // __SYCL_DEVICE_ONLY__ +#ifdef __SYCL_DEVICE_ONLY__ + +// TODO: __esimd_dpas* should have single declaration for host and device: +// Ret __esimd_dpas*(...) template SYCL_EXTERNAL SYCL_ESIMD_FUNCTION __ESIMD_DNS::vector_type_t @@ -135,7 +139,7 @@ SYCL_EXTERNAL SYCL_ESIMD_FUNCTION __ESIMD_DNS::vector_type_t __esimd_dpasw2(__ESIMD_DNS::vector_type_t src1, __ESIMD_DNS::vector_type_t src2, int dpas_info); -#ifndef __SYCL_DEVICE_ONLY__ +#else // __SYCL_DEVICE_ONLY__ template __ESIMD_INTRIN __ESIMD_raw_vec_t(T0, SZ) @@ -459,10 +463,10 @@ __esimd_dpas_bits_precision(__ESIMD_ENS::argument_type precisionType) { template <__ESIMD_ENS::argument_type src1_precision, __ESIMD_ENS::argument_type src2_precision, int systolic_depth, - int repeat_count, typename RT, typename T1, typename T2, + int repeat_count, typename RT, typename T0, typename T1, typename T2, __ESIMD_NS::uint SZ, __ESIMD_NS::uint N1, __ESIMD_NS::uint N2> inline __ESIMD_DNS::vector_type_t -__esimd_dpas_inner(const __ESIMD_DNS::vector_type_t *src0, +__esimd_dpas_inner(const __ESIMD_DNS::vector_type_t *src0, const __ESIMD_DNS::vector_type_t &src1, const __ESIMD_DNS::vector_type_t &src2) { __ESIMD_DNS::vector_type_t retv; @@ -647,7 +651,8 @@ __esimd_dpas_inner(const __ESIMD_DNS::vector_type_t *src0, static_cast(reinterpret_cast(tmpUint) >> 16); } else retv[r * SIMDSize + n] = - __ESIMD_EMU_DNS::satur::saturate(simdAcc[n], sat1); + __ESIMD_EMU_DNS::satur::template saturate(simdAcc[n], + sat1); } } // Repeat. @@ -663,14 +668,9 @@ inline __ESIMD_DNS::vector_type_t __esimd_dpas(__ESIMD_DNS::vector_type_t src0, __ESIMD_DNS::vector_type_t src1, __ESIMD_DNS::vector_type_t src2) { -#ifdef __SYCL_EXPLICIT_SIMD_PLUGIN__ return __esimd_dpas_inner( + repeat_count, T, T0, T1, T2, N, N1, N2>( std::addressof(src0), src1, src2); -#else // __SYCL_EXPLICIT_SIMD_PLUGIN__ - __ESIMD_UNSUPPORTED_ON_HOST; - return __ESIMD_DNS::vector_type_t(); -#endif // __SYCL_EXPLICIT_SIMD_PLUGIN__ } template <__ESIMD_ENS::argument_type src1_precision, @@ -680,14 +680,9 @@ template <__ESIMD_ENS::argument_type src1_precision, inline __ESIMD_DNS::vector_type_t __esimd_dpas2(__ESIMD_DNS::vector_type_t src1, __ESIMD_DNS::vector_type_t src2) { -#ifdef __SYCL_EXPLICIT_SIMD_PLUGIN__ return __esimd_dpas_inner(nullptr, src1, + repeat_count, T, T, T1, T2, N, N1, N2>(nullptr, src1, src2); -#else // __SYCL_EXPLICIT_SIMD_PLUGIN__ - __ESIMD_UNSUPPORTED_ON_HOST; - return __ESIMD_DNS::vector_type_t(); -#endif // __SYCL_EXPLICIT_SIMD_PLUGIN__ } template <__ESIMD_ENS::argument_type src1_precision,