This is a group of APIs implementing standard math operations which are also directly supported by the hardware.
More...
|
template<class T , int N, class Sat = saturation_off_tag, class = std::enable_if_t< detail::is_generic_floating_point_v<T> >> |
__ESIMD_API simd< T, N > | sycl::_V1::ext::intel::esimd::inv (simd< T, N > src, Sat sat={}) |
| Inversion - calculates (1/x). More...
|
|
template<typename T , class Sat = saturation_off_tag, class = std::enable_if_t< detail::is_generic_floating_point_v<T> >> |
__ESIMD_API T | sycl::_V1::ext::intel::esimd::inv (T src, Sat sat={}) |
| Scalar version. More...
|
|
template<class T , int N, class Sat = saturation_off_tag, class = std::enable_if_t< std::is_same_v<T, float> || std::is_same_v<T, sycl::half> >> |
__ESIMD_API simd< T, N > | sycl::_V1::ext::intel::esimd::log2 (simd< T, N > src, Sat sat={}) |
| Logarithm base 2. More...
|
|
template<typename T , class Sat = saturation_off_tag, class = std::enable_if_t< std::is_same_v<T, float> || std::is_same_v<T, sycl::half> >> |
__ESIMD_API T | sycl::_V1::ext::intel::esimd::log2 (T src, Sat sat={}) |
| Scalar version. More...
|
|
template<class T , int N, class Sat = saturation_off_tag, class = std::enable_if_t< std::is_same_v<T, float> || std::is_same_v<T, sycl::half> >> |
__ESIMD_API simd< T, N > | sycl::_V1::ext::intel::esimd::exp2 (simd< T, N > src, Sat sat={}) |
| Exponent base 2. More...
|
|
template<typename T , class Sat = saturation_off_tag, class = std::enable_if_t< std::is_same_v<T, float> || std::is_same_v<T, sycl::half> >> |
__ESIMD_API T | sycl::_V1::ext::intel::esimd::exp2 (T src, Sat sat={}) |
| Scalar version. More...
|
|
template<class T , int N, class Sat = saturation_off_tag, class = std::enable_if_t< detail::is_generic_floating_point_v<T> >> |
__ESIMD_API simd< T, N > | sycl::_V1::ext::intel::esimd::sqrt (simd< T, N > src, Sat sat={}) |
| Square root. More...
|
|
template<typename T , class Sat = saturation_off_tag, class = std::enable_if_t< detail::is_generic_floating_point_v<T> >> |
__ESIMD_API T | sycl::_V1::ext::intel::esimd::sqrt (T src, Sat sat={}) |
| Scalar version. More...
|
|
template<class T , int N, class Sat = saturation_off_tag, class = std::enable_if_t<__ESIMD_EMATH_IEEE_COND>> |
__ESIMD_API simd< T, N > | sycl::_V1::ext::intel::esimd::sqrt_ieee (simd< T, N > src, Sat sat={}) |
| IEEE754-compliant square root. Supports float and double . More...
|
|
template<typename T , class Sat = saturation_off_tag, class = std::enable_if_t<__ESIMD_EMATH_IEEE_COND>> |
__ESIMD_API T | sycl::_V1::ext::intel::esimd::sqrt_ieee (T src, Sat sat={}) |
| Scalar version. More...
|
|
template<class T , int N, class Sat = saturation_off_tag, class = std::enable_if_t< std::is_same_v<T, float> || std::is_same_v<T, sycl::half> >> |
__ESIMD_API simd< T, N > | sycl::_V1::ext::intel::esimd::rsqrt (simd< T, N > src, Sat sat={}) |
| Square root reciprocal - calculates 1/sqrt(x) . More...
|
|
template<typename T , class Sat = saturation_off_tag, class = std::enable_if_t< std::is_same_v<T, float> || std::is_same_v<T, sycl::half> >> |
__ESIMD_API T | sycl::_V1::ext::intel::esimd::rsqrt (T src, Sat sat={}) |
| Scalar version. More...
|
|
template<class T , int N, class Sat = saturation_off_tag, class = std::enable_if_t< std::is_same_v<T, float> || std::is_same_v<T, sycl::half> >> |
__ESIMD_API simd< T, N > | sycl::_V1::ext::intel::esimd::sin (simd< T, N > src, Sat sat={}) |
| Sine. More...
|
|
template<typename T , class Sat = saturation_off_tag, class = std::enable_if_t< std::is_same_v<T, float> || std::is_same_v<T, sycl::half> >> |
__ESIMD_API T | sycl::_V1::ext::intel::esimd::sin (T src, Sat sat={}) |
| Scalar version. More...
|
|
template<class T , int N, class Sat = saturation_off_tag, class = std::enable_if_t< std::is_same_v<T, float> || std::is_same_v<T, sycl::half> >> |
__ESIMD_API simd< T, N > | sycl::_V1::ext::intel::esimd::cos (simd< T, N > src, Sat sat={}) |
| Cosine. More...
|
|
template<typename T , class Sat = saturation_off_tag, class = std::enable_if_t< std::is_same_v<T, float> || std::is_same_v<T, sycl::half> >> |
__ESIMD_API T | sycl::_V1::ext::intel::esimd::cos (T src, Sat sat={}) |
| Scalar version. More...
|
|
template<class T , int N, class Sat = saturation_off_tag> |
__ESIMD_API std::enable_if_t< std::is_same_v< T, double >, simd< double, N > > | sycl::_V1::ext::intel::esimd::rsqrt (simd< T, N > src, Sat sat={}) |
| Square root reciprocal - calculates 1/sqrt(x) . More...
|
|
template<class T , class Sat = saturation_off_tag> |
__ESIMD_API std::enable_if_t< std::is_same_v< T, double >, double > | sycl::_V1::ext::intel::esimd::rsqrt (T src, Sat sat={}) |
| Scalar version. More...
|
|
template<class T , int N, class U , class Sat = saturation_off_tag, class = std::enable_if_t<__ESIMD_EMATH_SPIRV_COND>> |
__ESIMD_API simd< T, N > | sycl::_V1::ext::intel::esimd::pow (simd< T, N > src0, simd< U, N > src1, Sat sat={}) |
| Power - calculates src0 in power of src1 . More...
|
|
template<class T , int N, class U , class Sat = saturation_off_tag, class = std::enable_if_t<__ESIMD_EMATH_SPIRV_COND>> |
__ESIMD_API simd< T, N > | sycl::_V1::ext::intel::esimd::pow (simd< T, N > src0, U src1, Sat sat={}) |
| (vector, scalar) version. More...
|
|
template<class T , class U , class Sat = saturation_off_tag, class = std::enable_if_t<__ESIMD_EMATH_SPIRV_COND>> |
__ESIMD_API T | sycl::_V1::ext::intel::esimd::pow (T src0, U src1, Sat sat={}) |
| (scalar, scalar) version. More...
|
|
template<class T , int N, class U , class Sat = saturation_off_tag, class = std::enable_if_t< detail::is_generic_floating_point_v<T> && (sizeof(T) >= 4) >> |
__ESIMD_API simd< T, N > | sycl::_V1::ext::intel::esimd::div_ieee (simd< T, N > src0, simd< U, N > src1, Sat sat={}) |
| IEEE754-compliant floating-point division. Supports float and double . More...
|
|
template<class T , int N, class U , class Sat = saturation_off_tag, class = std::enable_if_t< detail::is_generic_floating_point_v<T> && (sizeof(T) >= 4) >> |
__ESIMD_API simd< T, N > | sycl::_V1::ext::intel::esimd::div_ieee (simd< T, N > src0, U src1, Sat sat={}) |
| (vector, scalar) version. More...
|
|
template<class T , class U , class Sat = saturation_off_tag, class = std::enable_if_t< detail::is_generic_floating_point_v<T> && (sizeof(T) >= 4) >> |
__ESIMD_API T | sycl::_V1::ext::intel::esimd::div_ieee (T src0, U src1, Sat sat={}) |
| (scalar, scalar) version. More...
|
|
This is a group of APIs implementing standard math operations which are also directly supported by the hardware.
Usually the hardware support is a specific message to the "extended math" GPU "shared function" unit, sent via the math
instruction. Most of the operations do not conform to OpenCL requirements for accuracy, so should be used with care.
TODO Provide detailed spec of each operation.