DPC++ Runtime
Runtime libraries for oneAPI DPC++
known_identity.hpp File Reference
#include <functional>
#include <limits>
#include <sycl/detail/generic_type_traits.hpp>
#include <sycl/functional.hpp>
#include <type_traits>
Include dependency graph for known_identity.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  sycl::_V1::detail::has_known_identity_impl< BinaryOperation, AccumulatorT >
 
struct  sycl::_V1::detail::known_identity_impl< BinaryOperation, AccumulatorT, typename >
 
struct  sycl::_V1::detail::known_identity_impl< BinaryOperation, AccumulatorT, std::enable_if_t< IsZeroIdentityOp< AccumulatorT, BinaryOperation >::value > >
 Returns zero as identity for ADD, OR, XOR operations. More...
 
struct  sycl::_V1::detail::known_identity_impl< BinaryOperation, vec< std::byte, NumElements >, std::enable_if_t< IsZeroIdentityOp< vec< std::byte, NumElements >, BinaryOperation >::value > >
 
struct  sycl::_V1::detail::known_identity_impl< BinaryOperation, marray< std::byte, NumElements >, std::enable_if_t< IsZeroIdentityOp< marray< std::byte, NumElements >, BinaryOperation >::value > >
 
struct  sycl::_V1::detail::known_identity_impl< BinaryOperation, vec< sycl::half, NumElements >, std::enable_if_t< IsZeroIdentityOp< vec< sycl::half, NumElements >, BinaryOperation >::value > >
 
struct  sycl::_V1::detail::known_identity_impl< BinaryOperation, half, std::enable_if_t< IsZeroIdentityOp< half, BinaryOperation >::value > >
 
struct  sycl::_V1::detail::known_identity_impl< BinaryOperation, AccumulatorT, std::enable_if_t< IsOneIdentityOp< AccumulatorT, BinaryOperation >::value > >
 Returns one as identify for MULTIPLY operations. More...
 
struct  sycl::_V1::detail::known_identity_impl< BinaryOperation, vec< std::byte, NumElements >, std::enable_if_t< IsOneIdentityOp< vec< std::byte, NumElements >, BinaryOperation >::value > >
 
struct  sycl::_V1::detail::known_identity_impl< BinaryOperation, marray< std::byte, NumElements >, std::enable_if_t< IsOneIdentityOp< marray< std::byte, NumElements >, BinaryOperation >::value > >
 
struct  sycl::_V1::detail::known_identity_impl< BinaryOperation, half, std::enable_if_t< IsOneIdentityOp< half, BinaryOperation >::value > >
 
struct  sycl::_V1::detail::known_identity_impl< BinaryOperation, AccumulatorT, std::enable_if_t< IsOnesIdentityOp< AccumulatorT, BinaryOperation >::value > >
 Returns bit image consisting of all ones as identity for AND operations. More...
 
struct  sycl::_V1::detail::known_identity_impl< BinaryOperation, vec< std::byte, NumElements >, std::enable_if_t< IsOnesIdentityOp< vec< std::byte, NumElements >, BinaryOperation >::value > >
 
struct  sycl::_V1::detail::known_identity_impl< BinaryOperation, marray< std::byte, NumElements >, std::enable_if_t< IsOnesIdentityOp< marray< std::byte, NumElements >, BinaryOperation >::value > >
 
struct  sycl::_V1::detail::known_identity_impl< BinaryOperation, AccumulatorT, std::enable_if_t< IsMinimumIdentityOp< AccumulatorT, BinaryOperation >::value > >
 Returns maximal possible value as identity for MIN operations. More...
 
struct  sycl::_V1::detail::known_identity_impl< BinaryOperation, vec< std::byte, NumElements >, std::enable_if_t< IsMinimumIdentityOp< vec< std::byte, NumElements >, BinaryOperation >::value > >
 
struct  sycl::_V1::detail::known_identity_impl< BinaryOperation, marray< std::byte, NumElements >, std::enable_if_t< IsMinimumIdentityOp< marray< std::byte, NumElements >, BinaryOperation >::value > >
 
struct  sycl::_V1::detail::known_identity_impl< BinaryOperation, AccumulatorT, std::enable_if_t< IsMaximumIdentityOp< AccumulatorT, BinaryOperation >::value > >
 Returns minimal possible value as identity for MAX operations. More...
 
struct  sycl::_V1::detail::known_identity_impl< BinaryOperation, vec< std::byte, NumElements >, std::enable_if_t< IsMaximumIdentityOp< vec< std::byte, NumElements >, BinaryOperation >::value > >
 
struct  sycl::_V1::detail::known_identity_impl< BinaryOperation, marray< std::byte, NumElements >, std::enable_if_t< IsMaximumIdentityOp< marray< std::byte, NumElements >, BinaryOperation >::value > >
 
struct  sycl::_V1::detail::known_identity_impl< BinaryOperation, AccumulatorT, std::enable_if_t< IsFalseIdentityOp< AccumulatorT, BinaryOperation >::value > >
 Returns false as identity for LOGICAL OR operations. More...
 
struct  sycl::_V1::detail::known_identity_impl< BinaryOperation, vec< std::byte, NumElements >, std::enable_if_t< IsFalseIdentityOp< vec< std::byte, NumElements >, BinaryOperation >::value > >
 
struct  sycl::_V1::detail::known_identity_impl< BinaryOperation, marray< std::byte, NumElements >, std::enable_if_t< IsFalseIdentityOp< marray< std::byte, NumElements >, BinaryOperation >::value > >
 
struct  sycl::_V1::detail::known_identity_impl< BinaryOperation, AccumulatorT, std::enable_if_t< IsTrueIdentityOp< AccumulatorT, BinaryOperation >::value > >
 Returns true as identity for LOGICAL AND operations. More...
 
struct  sycl::_V1::detail::known_identity_impl< BinaryOperation, vec< std::byte, NumElements >, std::enable_if_t< IsTrueIdentityOp< vec< std::byte, NumElements >, BinaryOperation >::value > >
 
struct  sycl::_V1::detail::known_identity_impl< BinaryOperation, marray< std::byte, NumElements >, std::enable_if_t< IsTrueIdentityOp< marray< std::byte, NumElements >, BinaryOperation >::value > >
 
struct  sycl::_V1::has_known_identity< BinaryOperation, AccumulatorT >
 
struct  sycl::_V1::known_identity< BinaryOperation, AccumulatorT >
 

Namespaces

 sycl
 ---— Error handling, matching OpenCL plugin semantics.
 
 sycl::_V1
 
 sycl::_V1::detail
 

Typedefs

template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsPlus = bool_constant< std::is_same< BinaryOperation, sycl::plus< T > >::value||std::is_same< BinaryOperation, sycl::plus< void > >::value >
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsMultiplies = bool_constant< std::is_same< BinaryOperation, sycl::multiplies< T > >::value||std::is_same< BinaryOperation, sycl::multiplies< void > >::value >
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsMinimum = bool_constant< std::is_same< BinaryOperation, sycl::minimum< T > >::value||std::is_same< BinaryOperation, sycl::minimum< void > >::value >
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsMaximum = bool_constant< std::is_same< BinaryOperation, sycl::maximum< T > >::value||std::is_same< BinaryOperation, sycl::maximum< void > >::value >
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsBitAND = bool_constant< std::is_same< BinaryOperation, sycl::bit_and< T > >::value||std::is_same< BinaryOperation, sycl::bit_and< void > >::value >
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsBitOR = bool_constant< std::is_same< BinaryOperation, sycl::bit_or< T > >::value||std::is_same< BinaryOperation, sycl::bit_or< void > >::value >
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsBitXOR = bool_constant< std::is_same< BinaryOperation, sycl::bit_xor< T > >::value||std::is_same< BinaryOperation, sycl::bit_xor< void > >::value >
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsLogicalAND = bool_constant< std::is_same< BinaryOperation, sycl::logical_and< T > >::value||std::is_same< BinaryOperation, sycl::logical_and< void > >::value >
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsLogicalOR = bool_constant< std::is_same< BinaryOperation, sycl::logical_or< T > >::value||std::is_same< BinaryOperation, sycl::logical_or< void > >::value >
 
template<typename T >
using sycl::_V1::detail::isComplex = bool_constant< std::is_same< T, std::complex< float > >::value||std::is_same< T, std::complex< double > >::value >
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsZeroIdentityOp = bool_constant<((is_genbool< T >::value||is_geninteger< T >::value) &&(IsPlus< T, BinaryOperation >::value||IsBitOR< T, BinaryOperation >::value||IsBitXOR< T, BinaryOperation >::value))||(is_genfloat< T >::value &&IsPlus< T, BinaryOperation >::value)||(isComplex< T >::value &&IsPlus< T, BinaryOperation >::value)>
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsOneIdentityOp = bool_constant<(is_genbool< T >::value||is_geninteger< T >::value||is_genfloat< T >::value) &&IsMultiplies< T, BinaryOperation >::value >
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsOnesIdentityOp = bool_constant<(is_genbool< T >::value||is_geninteger< T >::value) &&IsBitAND< T, BinaryOperation >::value >
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsMinimumIdentityOp = bool_constant<(is_genbool< T >::value||is_geninteger< T >::value||is_genfloat< T >::value) &&IsMinimum< T, BinaryOperation >::value >
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsMaximumIdentityOp = bool_constant<(is_genbool< T >::value||is_geninteger< T >::value||is_genfloat< T >::value) &&IsMaximum< T, BinaryOperation >::value >
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsFalseIdentityOp = bool_constant< IsLogicalOR< T, BinaryOperation >::value >
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsTrueIdentityOp = bool_constant< IsLogicalAND< T, BinaryOperation >::value >
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsKnownIdentityOp = bool_constant< IsZeroIdentityOp< T, BinaryOperation >::value||IsOneIdentityOp< T, BinaryOperation >::value||IsOnesIdentityOp< T, BinaryOperation >::value||IsMinimumIdentityOp< T, BinaryOperation >::value||IsMaximumIdentityOp< T, BinaryOperation >::value||IsFalseIdentityOp< T, BinaryOperation >::value||IsTrueIdentityOp< T, BinaryOperation >::value >
 

Variables

template<typename BinaryOperation , typename AccumulatorT >
constexpr bool sycl::_V1::has_known_identity_v
 
template<typename BinaryOperation , typename AccumulatorT >
constexpr AccumulatorT sycl::_V1::known_identity_v