DPC++ Runtime
Runtime libraries for oneAPI DPC++
known_identity.hpp File Reference
#include <sycl/aliases.hpp>
#include <sycl/detail/generic_type_traits.hpp>
#include <sycl/functional.hpp>
#include <sycl/half_type.hpp>
#include <sycl/marray.hpp>
#include <sycl/types.hpp>
#include <cstddef>
#include <functional>
#include <limits>
#include <stdint.h>
#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::isComplex< T, typename >
 
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
 
 sycl::_V1
 
 sycl::_V1::detail
 

Typedefs

template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsPlus = std::bool_constant< std::is_same_v< BinaryOperation, sycl::plus< T > >||std::is_same_v< BinaryOperation, sycl::plus< void > >>
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsMultiplies = std::bool_constant< std::is_same_v< BinaryOperation, sycl::multiplies< T > >||std::is_same_v< BinaryOperation, sycl::multiplies< void > >>
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsMinimum = std::bool_constant< std::is_same_v< BinaryOperation, sycl::minimum< T > >||std::is_same_v< BinaryOperation, sycl::minimum< void > >>
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsMaximum = std::bool_constant< std::is_same_v< BinaryOperation, sycl::maximum< T > >||std::is_same_v< BinaryOperation, sycl::maximum< void > >>
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsBitAND = std::bool_constant< std::is_same_v< BinaryOperation, sycl::bit_and< T > >||std::is_same_v< BinaryOperation, sycl::bit_and< void > >>
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsBitOR = std::bool_constant< std::is_same_v< BinaryOperation, sycl::bit_or< T > >||std::is_same_v< BinaryOperation, sycl::bit_or< void > >>
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsBitXOR = std::bool_constant< std::is_same_v< BinaryOperation, sycl::bit_xor< T > >||std::is_same_v< BinaryOperation, sycl::bit_xor< void > >>
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsLogicalAND = std::bool_constant< std::is_same_v< BinaryOperation, std::logical_and< T > >||std::is_same_v< BinaryOperation, std::logical_and< void > >||std::is_same_v< BinaryOperation, sycl::logical_and< T > >||std::is_same_v< BinaryOperation, sycl::logical_and< void > >>
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsLogicalOR = std::bool_constant< std::is_same_v< BinaryOperation, std::logical_or< T > >||std::is_same_v< BinaryOperation, std::logical_or< void > >||std::is_same_v< BinaryOperation, sycl::logical_or< T > >||std::is_same_v< BinaryOperation, sycl::logical_or< void > >>
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsZeroIdentityOp = std::bool_constant<((is_genbool_v< T >||is_geninteger_v< T >)&&(IsPlus< T, BinaryOperation >::value||IsBitOR< T, BinaryOperation >::value||IsBitXOR< T, BinaryOperation >::value))||(is_genfloat_v< T > &&IsPlus< T, BinaryOperation >::value)||(isComplex< T >::value &&IsPlus< T, BinaryOperation >::value)>
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsOneIdentityOp = std::bool_constant<(is_genbool_v< T >||is_geninteger_v< T >||is_genfloat_v< T >)&&IsMultiplies< T, BinaryOperation >::value >
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsOnesIdentityOp = std::bool_constant<(is_genbool_v< T >||is_geninteger_v< T >)&&IsBitAND< T, BinaryOperation >::value >
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsMinimumIdentityOp = std::bool_constant<(is_genbool_v< T >||is_geninteger_v< T >||is_genfloat_v< T >)&&IsMinimum< T, BinaryOperation >::value >
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsMaximumIdentityOp = std::bool_constant<(is_genbool_v< T >||is_geninteger_v< T >||is_genfloat_v< T >)&&IsMaximum< T, BinaryOperation >::value >
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsFalseIdentityOp = std::bool_constant< IsLogicalOR< T, BinaryOperation >::value >
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsTrueIdentityOp = std::bool_constant< IsLogicalAND< T, BinaryOperation >::value >
 
template<typename T , class BinaryOperation >
using sycl::_V1::detail::IsKnownIdentityOp = std::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