DPC++ Runtime
Runtime libraries for oneAPI DPC++
known_identity.hpp File Reference
#include <CL/sycl/detail/generic_type_traits.hpp>
#include <CL/sycl/functional.hpp>
#include <functional>
#include <limits>
#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  cl::sycl::detail::has_known_identity_impl< BinaryOperation, AccumulatorT >
 
struct  cl::sycl::detail::known_identity_impl< BinaryOperation, AccumulatorT, typename >
 
struct  cl::sycl::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  cl::sycl::detail::known_identity_impl< BinaryOperation, vec< sycl::half, NumElements >, std::enable_if_t< IsZeroIdentityOp< vec< sycl::half, NumElements >, BinaryOperation >::value > >
 
struct  cl::sycl::detail::known_identity_impl< BinaryOperation, half, std::enable_if_t< IsZeroIdentityOp< half, BinaryOperation >::value > >
 
struct  cl::sycl::detail::known_identity_impl< BinaryOperation, AccumulatorT, std::enable_if_t< IsOneIdentityOp< AccumulatorT, BinaryOperation >::value > >
 Returns one as identify for MULTIPLY operations. More...
 
struct  cl::sycl::detail::known_identity_impl< BinaryOperation, half, std::enable_if_t< IsOneIdentityOp< half, BinaryOperation >::value > >
 
struct  cl::sycl::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  cl::sycl::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  cl::sycl::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  cl::sycl::detail::known_identity_impl< BinaryOperation, AccumulatorT, std::enable_if_t< IsFalseIdentityOp< AccumulatorT, BinaryOperation >::value > >
 Returns false as identity for LOGICAL OR operations. More...
 
struct  cl::sycl::detail::known_identity_impl< BinaryOperation, AccumulatorT, std::enable_if_t< IsTrueIdentityOp< AccumulatorT, BinaryOperation >::value > >
 Returns true as identity for LOGICAL AND operations. More...
 
struct  cl::sycl::has_known_identity< BinaryOperation, AccumulatorT >
 
struct  cl::sycl::known_identity< BinaryOperation, AccumulatorT >
 

Namespaces

 cl
 We provide new interfaces for matrix muliply in this patch:
 
 cl::sycl
 
 cl::sycl::detail
 

Typedefs

template<typename T , class BinaryOperation >
using cl::sycl::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 cl::sycl::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 cl::sycl::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 cl::sycl::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 cl::sycl::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 cl::sycl::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 cl::sycl::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 cl::sycl::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 cl::sycl::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 , class BinaryOperation >
using cl::sycl::detail::IsZeroIdentityOp = bool_constant<(is_geninteger< T >::value &&(IsPlus< T, BinaryOperation >::value||IsBitOR< T, BinaryOperation >::value||IsBitXOR< T, BinaryOperation >::value))||(is_genfloat< T >::value &&IsPlus< T, BinaryOperation >::value)>
 
template<typename T , class BinaryOperation >
using cl::sycl::detail::IsOneIdentityOp = bool_constant<(is_geninteger< T >::value||is_genfloat< T >::value) &&IsMultiplies< T, BinaryOperation >::value >
 
template<typename T , class BinaryOperation >
using cl::sycl::detail::IsOnesIdentityOp = bool_constant< is_geninteger< T >::value &&IsBitAND< T, BinaryOperation >::value >
 
template<typename T , class BinaryOperation >
using cl::sycl::detail::IsMinimumIdentityOp = bool_constant<(is_geninteger< T >::value||is_genfloat< T >::value) &&IsMinimum< T, BinaryOperation >::value >
 
template<typename T , class BinaryOperation >
using cl::sycl::detail::IsMaximumIdentityOp = bool_constant<(is_geninteger< T >::value||is_genfloat< T >::value) &&IsMaximum< T, BinaryOperation >::value >
 
template<typename T , class BinaryOperation >
using cl::sycl::detail::IsFalseIdentityOp = bool_constant< IsLogicalOR< T, BinaryOperation >::value >
 
template<typename T , class BinaryOperation >
using cl::sycl::detail::IsTrueIdentityOp = bool_constant< IsLogicalAND< T, BinaryOperation >::value >
 
template<typename T , class BinaryOperation >
using cl::sycl::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 >
__SYCL_INLINE_CONSTEXPR bool cl::sycl::has_known_identity_v
 
template<typename BinaryOperation , typename AccumulatorT >
__SYCL_INLINE_CONSTEXPR AccumulatorT cl::sycl::known_identity_v