From bb68eef4084f7ccbcdce84b168c1e966ef422d71 Mon Sep 17 00:00:00 2001 From: Alexey Bader Date: Thu, 1 Oct 2020 00:20:09 +0300 Subject: [PATCH] [SYCL][ESIMD][NFC] Align namespace name with the spec guidelines (#2573) SYCL specification recommends using `detail` namespace for implementation details. This change should unify the name across the whole project. --- .../CL/sycl/INTEL/esimd/detail/esimd_util.hpp | 4 +- .../CL/sycl/INTEL/esimd/esimd_math.hpp | 242 +++++++++--------- 2 files changed, 117 insertions(+), 129 deletions(-) diff --git a/sycl/include/CL/sycl/INTEL/esimd/detail/esimd_util.hpp b/sycl/include/CL/sycl/INTEL/esimd/detail/esimd_util.hpp index 42ce828da229..4bd5755c8f33 100755 --- a/sycl/include/CL/sycl/INTEL/esimd/detail/esimd_util.hpp +++ b/sycl/include/CL/sycl/INTEL/esimd/detail/esimd_util.hpp @@ -77,7 +77,7 @@ constexpr unsigned int ElemsPerAddrDecoding(unsigned int ElemsPerAddrEncoded) { return (1 << ElemsPerAddrEncoded); } -namespace details { +namespace detail { /// type traits template struct is_esimd_vector { @@ -236,7 +236,7 @@ template <> struct word_type { using type = short; }; template <> struct word_type { using type = ushort; }; template <> struct word_type { using type = ushort; }; -} // namespace details +} // namespace detail } // namespace gpu } // namespace INTEL } // namespace sycl diff --git a/sycl/include/CL/sycl/INTEL/esimd/esimd_math.hpp b/sycl/include/CL/sycl/INTEL/esimd/esimd_math.hpp index 1f241c63745c..c97649f00f77 100644 --- a/sycl/include/CL/sycl/INTEL/esimd/esimd_math.hpp +++ b/sycl/include/CL/sycl/INTEL/esimd/esimd_math.hpp @@ -45,7 +45,7 @@ ESIMD_NODEBUG ESIMD_INLINE simd esimd_sat(simd src) { } // esimd_abs -namespace details { +namespace detail { template ESIMD_NODEBUG ESIMD_INLINE simd @@ -59,8 +59,8 @@ __esimd_abs_common_internal(simd src0, int flag = GENX_NOSAT) { template ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value && - details::is_esimd_scalar::value, + typename std::enable_if::value && + detail::is_esimd_scalar::value, typename std::remove_const::type>::type __esimd_abs_common_internal(T1 src0, int flag = GENX_NOSAT) { typedef typename std::remove_const::type TT0; @@ -70,7 +70,7 @@ ESIMD_NODEBUG ESIMD_INLINE simd Result = __esimd_abs_common_internal(Src0, flag); return Result[0]; } -} // namespace details +} // namespace detail template ESIMD_NODEBUG ESIMD_INLINE typename std::enable_if< @@ -78,32 +78,32 @@ ESIMD_NODEBUG ESIMD_INLINE typename std::enable_if< typename std::remove_const::type>::value, simd>::type esimd_abs(simd src0, int flag = GENX_NOSAT) { - return details::__esimd_abs_common_internal(src0, flag); + return detail::__esimd_abs_common_internal(src0, flag); } template ESIMD_NODEBUG ESIMD_INLINE typename std::enable_if< !std::is_same::type, typename std::remove_const::type>::value && - details::is_esimd_scalar::value && - details::is_esimd_scalar::value, + detail::is_esimd_scalar::value && + detail::is_esimd_scalar::value, typename std::remove_const::type>::type esimd_abs(T1 src0, int flag = GENX_NOSAT) { - return details::__esimd_abs_common_internal(src0, flag); + return detail::__esimd_abs_common_internal(src0, flag); } template ESIMD_NODEBUG ESIMD_INLINE simd esimd_abs(simd src0, int flag = GENX_NOSAT) { - return details::__esimd_abs_common_internal(src0, flag); + return detail::__esimd_abs_common_internal(src0, flag); } template ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value, + typename std::enable_if::value, typename std::remove_const::type>::type esimd_abs(T1 src0, int flag = GENX_NOSAT) { - return details::__esimd_abs_common_internal(src0, flag); + return detail::__esimd_abs_common_internal(src0, flag); } // esimd_shl @@ -115,8 +115,8 @@ ESIMD_NODEBUG ESIMD_INLINE simd>::type esimd_shl(simd src0, U src1, int flag = GENX_NOSAT) { typedef typename computation_type::type ComputationTy; - typename details::simd_type::type Src0 = src0; - typename details::simd_type::type Src1 = src1; + typename detail::simd_type::type Src0 = src0; + typename detail::simd_type::type Src1 = src1; if (flag != GENX_SAT) { if constexpr (std::is_unsigned::value) { @@ -147,15 +147,14 @@ ESIMD_NODEBUG ESIMD_INLINE template ESIMD_NODEBUG ESIMD_INLINE typename std::enable_if< - details::is_esimd_scalar::value && - details::is_esimd_scalar::value && - details::is_esimd_scalar::value && std::is_integral::value && + detail::is_esimd_scalar::value && detail::is_esimd_scalar::value && + detail::is_esimd_scalar::value && std::is_integral::value && std::is_integral::value && std::is_integral::value, typename std::remove_const::type>::type esimd_shl(T1 src0, T2 src1, int flag = GENX_NOSAT) { typedef typename computation_type::type ComputationTy; - typename details::simd_type::type Src0 = src0; - typename details::simd_type::type Src1 = src1; + typename detail::simd_type::type Src0 = src0; + typename detail::simd_type::type Src1 = src1; simd Result = esimd_shl(Src0, Src1, flag); return Result[0]; } @@ -169,9 +168,9 @@ ESIMD_NODEBUG ESIMD_INLINE simd>::type esimd_shr(simd src0, U src1, int flag = GENX_NOSAT) { typedef typename computation_type::type ComputationTy; - typename details::simd_type::type Src0 = src0; - typename details::simd_type::type Src1 = src1; - typename details::simd_type::type Result = + typename detail::simd_type::type Src0 = src0; + typename detail::simd_type::type Src1 = src1; + typename detail::simd_type::type Result = Src0.data() >> Src1.data(); if (flag != GENX_SAT) @@ -182,15 +181,14 @@ ESIMD_NODEBUG ESIMD_INLINE template ESIMD_NODEBUG ESIMD_INLINE typename std::enable_if< - details::is_esimd_scalar::value && - details::is_esimd_scalar::value && - details::is_esimd_scalar::value && std::is_integral::value && + detail::is_esimd_scalar::value && detail::is_esimd_scalar::value && + detail::is_esimd_scalar::value && std::is_integral::value && std::is_integral::value && std::is_integral::value, typename std::remove_const::type>::type esimd_shr(T1 src0, T2 src1, int flag = GENX_NOSAT) { typedef typename computation_type::type ComputationTy; - typename details::simd_type::type Src0 = src0; - typename details::simd_type::type Src1 = src1; + typename detail::simd_type::type Src0 = src0; + typename detail::simd_type::type Src1 = src1; simd Result = esimd_shr(Src0, Src1, flag); return Result[0]; } @@ -213,22 +211,21 @@ ESIMD_NODEBUG ESIMD_INLINE simd>::type esimd_rol(simd src0, U src1) { typedef typename computation_type::type ComputationTy; - typename details::simd_type::type Src0 = src0; - typename details::simd_type::type Src1 = src1; + typename detail::simd_type::type Src0 = src0; + typename detail::simd_type::type Src1 = src1; return __esimd_rol(Src0.data(), Src1.data()); } template ESIMD_NODEBUG ESIMD_INLINE typename std::enable_if< - details::is_esimd_scalar::value && - details::is_esimd_scalar::value && - details::is_esimd_scalar::value && std::is_integral::value && + detail::is_esimd_scalar::value && detail::is_esimd_scalar::value && + detail::is_esimd_scalar::value && std::is_integral::value && std::is_integral::value && std::is_integral::value, typename std::remove_const::type>::type esimd_rol(T1 src0, T2 src1) { typedef typename computation_type::type ComputationTy; - typename details::simd_type::type Src0 = src0; - typename details::simd_type::type Src1 = src1; + typename detail::simd_type::type Src0 = src0; + typename detail::simd_type::type Src1 = src1; simd Result = esimd_rol(Src0, Src1); return Result[0]; } @@ -251,22 +248,21 @@ ESIMD_NODEBUG ESIMD_INLINE simd>::type esimd_ror(simd src0, U src1) { typedef typename computation_type::type ComputationTy; - typename details::simd_type::type Src0 = src0; - typename details::simd_type::type Src1 = src1; + typename detail::simd_type::type Src0 = src0; + typename detail::simd_type::type Src1 = src1; return __esimd_ror(Src0.data(), Src1.data()); } template ESIMD_NODEBUG ESIMD_INLINE typename std::enable_if< - details::is_esimd_scalar::value && - details::is_esimd_scalar::value && - details::is_esimd_scalar::value && std::is_integral::value && + detail::is_esimd_scalar::value && detail::is_esimd_scalar::value && + detail::is_esimd_scalar::value && std::is_integral::value && std::is_integral::value && std::is_integral::value, typename std::remove_const::type>::type esimd_ror(T1 src0, T2 src1) { typedef typename computation_type::type ComputationTy; - typename details::simd_type::type Src0 = src0; - typename details::simd_type::type Src1 = src1; + typename detail::simd_type::type Src0 = src0; + typename detail::simd_type::type Src1 = src1; simd Result = esimd_ror(Src0, Src1); return Result[0]; } @@ -292,24 +288,23 @@ ESIMD_NODEBUG ESIMD_INLINE template ESIMD_NODEBUG ESIMD_INLINE typename std::enable_if< - details::is_esimd_scalar::value && - details::is_esimd_scalar::value && - details::is_esimd_scalar::value && std::is_integral::value && + detail::is_esimd_scalar::value && detail::is_esimd_scalar::value && + detail::is_esimd_scalar::value && std::is_integral::value && std::is_integral::value && std::is_integral::value, typename std::remove_const::type>::type esimd_lsr(T1 src0, T2 src1, int flag = GENX_NOSAT) { typedef typename computation_type::type ComputationTy; - typename details::simd_type::type Src0 = src0; - typename details::simd_type::type Src1 = src1; + typename detail::simd_type::type Src0 = src0; + typename detail::simd_type::type Src1 = src1; simd Result = esimd_lsr(Src0, Src1, flag); return Result[0]; } template ESIMD_NODEBUG ESIMD_INLINE typename std::enable_if< - details::is_esimd_scalar::value && - details::is_esimd_vector::value && std::is_integral::value && - std::is_integral::value && std::is_integral::value, + detail::is_esimd_scalar::value && detail::is_esimd_vector::value && + std::is_integral::value && std::is_integral::value && + std::is_integral::value, decltype(esimd_lsr(T2(), T1()))>::type esimd_lsr(T1 src0, T2 src1, int flag = GENX_NOSAT) { return esimd_lsr(src1, src0, flag); @@ -336,24 +331,23 @@ ESIMD_NODEBUG ESIMD_INLINE template ESIMD_NODEBUG ESIMD_INLINE typename std::enable_if< - details::is_esimd_scalar::value && - details::is_esimd_scalar::value && - details::is_esimd_scalar::value && std::is_integral::value && + detail::is_esimd_scalar::value && detail::is_esimd_scalar::value && + detail::is_esimd_scalar::value && std::is_integral::value && std::is_integral::value && std::is_integral::value, typename std::remove_const::type>::type esimd_asr(T1 src0, T2 src1, int flag = GENX_NOSAT) { typedef typename computation_type::type ComputationTy; - typename details::simd_type::type Src0 = src0; - typename details::simd_type::type Src1 = src1; + typename detail::simd_type::type Src0 = src0; + typename detail::simd_type::type Src1 = src1; simd Result = esimd_asr(Src0, Src1, flag); return Result[0]; } template ESIMD_NODEBUG ESIMD_INLINE typename std::enable_if< - details::is_esimd_scalar::value && - details::is_esimd_vector::value && std::is_integral::value && - std::is_integral::value && std::is_integral::value, + detail::is_esimd_scalar::value && detail::is_esimd_vector::value && + std::is_integral::value && std::is_integral::value && + std::is_integral::value, decltype(esimd_asr(T2(), T1()))>::type esimd_asr(T1 src0, T2 src1, int flag = GENX_NOSAT) { return esimd_asr(src1, src0, flag); @@ -364,14 +358,14 @@ esimd_asr(T1 src0, T2 src1, int flag = GENX_NOSAT) { // use mulh instruction for high half template ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value && - details::is_dword_type::value && - details::is_dword_type::value, + typename std::enable_if::value && + detail::is_dword_type::value && + detail::is_dword_type::value, simd>::type esimd_imul(simd &rmd, simd src0, U src1) { typedef typename computation_type::type ComputationTy; - typename details::simd_type::type Src0 = src0; - typename details::simd_type::type Src1 = src1; + typename detail::simd_type::type Src0 = src0; + typename detail::simd_type::type Src1 = src1; rmd = Src0 * Src1; if constexpr (std::is_unsigned::value) return __esimd_umulh(Src0.data(), Src1.data()); @@ -385,9 +379,9 @@ ESIMD_NODEBUG ESIMD_INLINE // stride must also be 1" on the selects. template ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value && - details::is_dword_type::value && - details::is_dword_type::value && SZ == 1, + typename std::enable_if::value && + detail::is_dword_type::value && + detail::is_dword_type::value && SZ == 1, simd>::type esimd_imul(simd &rmd, simd src0, U src1) { typedef @@ -400,9 +394,9 @@ ESIMD_NODEBUG ESIMD_INLINE template ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value && - details::is_dword_type::value && - details::is_dword_type::value && SZ != 1, + typename std::enable_if::value && + detail::is_dword_type::value && + detail::is_dword_type::value && SZ != 1, simd>::type esimd_imul(simd &rmd, simd src0, U src1) { typedef @@ -418,7 +412,7 @@ ESIMD_NODEBUG ESIMD_INLINE template ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value, + typename std::enable_if::value, simd>::type esimd_imul(simd &rmd, U src0, simd src1) { return esimd_imul(rmd, src1, src0); @@ -426,9 +420,9 @@ ESIMD_NODEBUG ESIMD_INLINE template ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value && - details::is_esimd_scalar::value && - details::is_esimd_scalar::value, + typename std::enable_if::value && + detail::is_esimd_scalar::value && + detail::is_esimd_scalar::value, T0>::type esimd_imul(simd &rmd, T src0, U src1) { simd src_0 = src0; @@ -446,13 +440,11 @@ esimd_quot(simd src0, U src1) { } template -ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value && - details::is_esimd_scalar::value && - std::is_integral::value && - std::is_integral::value, - typename std::remove_const::type>::type - esimd_quot(T0 src0, T1 src1) { +ESIMD_NODEBUG ESIMD_INLINE typename std::enable_if< + detail::is_esimd_scalar::value && detail::is_esimd_scalar::value && + std::is_integral::value && std::is_integral::value, + typename std::remove_const::type>::type +esimd_quot(T0 src0, T1 src1) { return src0 / src1; } @@ -465,13 +457,11 @@ esimd_mod(simd src0, U src1) { } template -ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value && - details::is_esimd_scalar::value && - std::is_integral::value && - std::is_integral::value, - typename std::remove_const::type>::type - esimd_mod(T0 src0, T1 src1) { +ESIMD_NODEBUG ESIMD_INLINE typename std::enable_if< + detail::is_esimd_scalar::value && detail::is_esimd_scalar::value && + std::is_integral::value && std::is_integral::value, + typename std::remove_const::type>::type +esimd_mod(T0 src0, T1 src1) { return src0 % src1; } @@ -488,7 +478,7 @@ template ESIMD_NODEBUG ESIMD_INLINE typename std::enable_if::value && std::is_integral::value && - details::is_esimd_scalar::value, + detail::is_esimd_scalar::value, simd>::type esimd_div(simd &remainder, U src0, simd src1) { remainder = src0 % src1; @@ -497,9 +487,9 @@ ESIMD_NODEBUG ESIMD_INLINE template ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value && - details::is_esimd_scalar::value && - details::is_esimd_scalar::value, + typename std::enable_if::value && + detail::is_esimd_scalar::value && + detail::is_esimd_scalar::value, typename std::remove_const::type>::type esimd_div(simd::type, 1> &remainder, T0 src0, T1 src1) { @@ -532,7 +522,7 @@ esimd_max(simd src0, simd src1, int flag = GENX_NOSAT) { template ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value, + typename std::enable_if::value, simd>::type esimd_max(simd src0, T src1, int flag = GENX_NOSAT) { simd Src1 = src1; @@ -542,7 +532,7 @@ ESIMD_NODEBUG ESIMD_INLINE template ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value, + typename std::enable_if::value, simd>::type esimd_max(T src0, simd src1, int flag = GENX_NOSAT) { simd Src0 = src0; @@ -552,7 +542,7 @@ ESIMD_NODEBUG ESIMD_INLINE template ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value, T>::type + typename std::enable_if::value, T>::type esimd_max(T src0, T src1, int flag = GENX_NOSAT) { simd Src0 = src0; simd Src1 = src1; @@ -579,7 +569,7 @@ esimd_min(simd src0, simd src1, int flag = GENX_NOSAT) { template ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value, + typename std::enable_if::value, simd>::type esimd_min(simd src0, T src1, int flag = GENX_NOSAT) { simd Src1 = src1; @@ -589,7 +579,7 @@ ESIMD_NODEBUG ESIMD_INLINE template ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value, + typename std::enable_if::value, simd>::type esimd_min(T src0, simd src1, int flag = GENX_NOSAT) { simd Src0 = src0; @@ -598,7 +588,7 @@ ESIMD_NODEBUG ESIMD_INLINE } template ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value, T>::type + typename std::enable_if::value, T>::type esimd_min(T src0, T src1, int flag = GENX_NOSAT) { simd Src0 = src0; simd Src1 = src1; @@ -700,9 +690,9 @@ esimd_line(float P, float Q, simd src1, int flag = GENX_NOSAT) { // using a less efficient implementation if not on GEN10 or above. template ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value && + typename std::enable_if::value && std::is_floating_point::value && - details::is_fp_or_dword_type::value && + detail::is_fp_or_dword_type::value && std::is_floating_point::value, simd>::type esimd_dp2(simd src0, U src1, int flag = GENX_NOSAT) { @@ -722,9 +712,9 @@ ESIMD_NODEBUG ESIMD_INLINE template ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value && + typename std::enable_if::value && std::is_floating_point::value && - details::is_fp_or_dword_type::value && + detail::is_fp_or_dword_type::value && std::is_floating_point::value, simd>::type esimd_dp3(simd src0, U src1, int flag = GENX_NOSAT) { @@ -745,9 +735,9 @@ ESIMD_NODEBUG ESIMD_INLINE template ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value && + typename std::enable_if::value && std::is_floating_point::value && - details::is_fp_or_dword_type::value && + detail::is_fp_or_dword_type::value && std::is_floating_point::value, simd>::type esimd_dp4(simd src0, U src1, int flag = GENX_NOSAT) { @@ -769,9 +759,9 @@ ESIMD_NODEBUG ESIMD_INLINE template ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value && + typename std::enable_if::value && std::is_floating_point::value && - details::is_fp_or_dword_type::value && + detail::is_fp_or_dword_type::value && std::is_floating_point::value, simd>::type esimd_dph(simd src0, U src1, int flag = GENX_NOSAT) { @@ -792,7 +782,7 @@ ESIMD_NODEBUG ESIMD_INLINE template ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value && + typename std::enable_if::value && std::is_floating_point::value, simd>::type esimd_line(simd src0, simd src1, int flag = GENX_NOSAT) { @@ -813,7 +803,7 @@ ESIMD_NODEBUG ESIMD_INLINE template ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value && + typename std::enable_if::value && std::is_floating_point::value, simd>::type esimd_line(float P, float Q, simd src1, int flag = GENX_NOSAT) { @@ -847,8 +837,8 @@ ESIMD_NODEBUG ESIMD_INLINE simd esimd_lzd(simd src0, template ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value && - details::is_esimd_scalar::value, + typename std::enable_if::value && + detail::is_esimd_scalar::value, typename std::remove_const::type>::type esimd_lzd(T0 src0, int flag = GENX_NOSAT) { simd Src0 = src0; @@ -888,9 +878,9 @@ esimd_lrp(simd src0, U src1, V src2, int flag = GENX_NOSAT) { // using less efficient implementation. template ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value && + typename std::enable_if::value && std::is_floating_point::value && - details::is_fp_or_dword_type::value && + detail::is_fp_or_dword_type::value && std::is_floating_point::value, simd>::type esimd_lrp(simd src0, U src1, V src2, int flag = GENX_NOSAT) { @@ -943,8 +933,8 @@ ESIMD_NODEBUG ESIMD_INLINE simd esimd_bf_reverse(simd src0) { template ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value && - details::is_esimd_scalar::value, + typename std::enable_if::value && + detail::is_esimd_scalar::value, typename std::remove_const::type>::type esimd_bf_reverse(T1 src0) { simd Src0 = src0; @@ -957,7 +947,7 @@ template ESIMD_NODEBUG ESIMD_INLINE typename std::enable_if::value, simd>::type esimd_bf_insert(U src0, V src1, W src2, simd src3) { - typedef typename details::dword_type::type DT1; + typedef typename detail::dword_type::type DT1; static_assert(std::is_integral::value && sizeof(DT1) == sizeof(int), "operand conversion failed"); simd Src0 = src0; @@ -970,8 +960,8 @@ ESIMD_NODEBUG ESIMD_INLINE template ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value && - details::is_esimd_scalar::value, + typename std::enable_if::value && + detail::is_esimd_scalar::value, typename std::remove_const::type>::type esimd_bf_insert(T1 src0, T2 src1, T3 src2, T4 src3) { simd Src3 = src3; @@ -984,7 +974,7 @@ template ESIMD_NODEBUG ESIMD_INLINE typename std::enable_if::value, simd>::type esimd_bf_extract(U src0, V src1, simd src2) { - typedef typename details::dword_type::type DT1; + typedef typename detail::dword_type::type DT1; static_assert(std::is_integral::value && sizeof(DT1) == sizeof(int), "operand conversion failed"); simd Src0 = src0; @@ -996,8 +986,8 @@ ESIMD_NODEBUG ESIMD_INLINE template ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value && - details::is_esimd_scalar::value, + typename std::enable_if::value && + detail::is_esimd_scalar::value, typename std::remove_const::type>::type esimd_bf_extract(T1 src0, T2 src1, T3 src2) { simd Src2 = src2; @@ -1082,7 +1072,7 @@ ESIMD_INTRINSIC_DEF(double, sqrt_ieee) } \ template \ ESIMD_NODEBUG ESIMD_INLINE \ - typename std::enable_if::value, \ + typename std::enable_if::value, \ simd>::type \ esimd_##name(U src0, simd src1, int flag = GENX_NOSAT) { \ simd Src0 = src0; \ @@ -1288,11 +1278,9 @@ ESIMD_NODEBUG ESIMD_INLINE } template -ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value && - details::is_esimd_scalar::value, - uint>::type - esimd_cbit(T src) { +ESIMD_NODEBUG ESIMD_INLINE typename std::enable_if< + std::is_integral::value && detail::is_esimd_scalar::value, uint>::type +esimd_cbit(T src) { simd Src = src; simd Result = esimd_cbit(Src); return Result[0]; @@ -1325,8 +1313,8 @@ esimd_fbh(simd src) { template ESIMD_NODEBUG ESIMD_INLINE - typename std::enable_if::value && - details::is_esimd_scalar::value, + typename std::enable_if::value && + detail::is_esimd_scalar::value, T>::type esimd_fbh(T src) { simd Src = src; @@ -1338,8 +1326,8 @@ template simd esimd_rdtsc(); template ESIMD_NODEBUG ESIMD_INLINE typename std::enable_if< - details::is_dword_type::value && details::is_dword_type::value && - details::is_dword_type::value && details::is_dword_type::value, + detail::is_dword_type::value && detail::is_dword_type::value && + detail::is_dword_type::value && detail::is_dword_type::value, simd>::type esimd_dp4a(simd src0, simd src1, simd src2, int flag = GENX_NOSAT) {