22 #ifndef UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_PLACEHOLDER_EXPR_HPP 23 #define UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_PLACEHOLDER_EXPR_HPP 26 namespace TensorSycl {
33 template <
typename Scalar,
size_t N>
35 static constexpr
size_t I =
N;
43 template <
typename Expr,
size_t N>
46 template<
size_t N,
typename... Args>
49 template<
size_t N,
typename Arg>
55 template<
size_t N,
typename Arg1,
typename Arg2>
63 template<
size_t N,
typename Arg1,
typename Arg2,
typename Arg3>
73 template<
template<
class...>
class Category ,
class OP,
class TPL>
76 template<
template<
class...>
class Category ,
class OP,
class ...T >
78 typedef Category<OP, T... >
Type;
81 template<
template<
class...>
class Category ,
class ...T >
83 typedef Category<T... >
Type;
88 #define OPEXPRCATEGORY(CVQual)\ 89 template <template <class, class... > class Category, typename OP, typename... SubExpr, size_t N>\ 90 struct PlaceHolderExpression<CVQual Category<OP, SubExpr...>, N>{\ 91 typedef CVQual typename CategoryHelper<Category, OP, typename CalculateIndex<N, SubExpr...>::ArgsTuple>::Type Type;\ 100 #define SELECTEXPR(CVQual)\ 101 template <typename IfExpr, typename ThenExpr, typename ElseExpr, size_t N>\ 102 struct PlaceHolderExpression<CVQual TensorSelectOp<IfExpr, ThenExpr, ElseExpr>, N> {\ 103 typedef CVQual typename CategoryHelper<TensorSelectOp, NoOP, typename CalculateIndex<N, IfExpr, ThenExpr, ElseExpr>::ArgsTuple>::Type Type;\ 112 #define ASSIGNEXPR(CVQual)\ 113 template <typename LHSExpr, typename RHSExpr, size_t N>\ 114 struct PlaceHolderExpression<CVQual TensorAssignOp<LHSExpr, RHSExpr>, N> {\ 115 typedef CVQual typename CategoryHelper<TensorAssignOp, NoOP, typename CalculateIndex<N, LHSExpr, RHSExpr>::ArgsTuple>::Type Type;\ 124 #define TENSORMAPEXPR(CVQual)\ 125 template <typename Scalar_, int Options_, int Options2_, int NumIndices_, typename IndexType_, template <class> class MakePointer_, size_t N>\ 126 struct PlaceHolderExpression< CVQual TensorMap< Tensor<Scalar_, NumIndices_, Options_, IndexType_>, Options2_, MakePointer_>, N> {\ 127 typedef CVQual PlaceHolder<CVQual TensorMap<Tensor<Scalar_, NumIndices_, Options_, IndexType_>, Options2_, MakePointer_>, N> Type;\ 136 #define FORCEDEVAL(CVQual)\ 137 template <typename Expr, size_t N>\ 138 struct PlaceHolderExpression<CVQual TensorForcedEvalOp<Expr>, N> {\ 139 typedef CVQual PlaceHolder<CVQual TensorForcedEvalOp<Expr>, N> Type;\ 148 #define EVALTO(CVQual)\ 149 template <typename Expr, size_t N>\ 150 struct PlaceHolderExpression<CVQual TensorEvalToOp<Expr>, N> {\ 151 typedef CVQual TensorEvalToOp<typename CalculateIndex <N, Expr>::ArgType> Type;\ 161 #define SYCLREDUCTION(CVQual)\ 162 template <typename OP, typename Dims, typename Expr, size_t N>\ 163 struct PlaceHolderExpression<CVQual TensorReductionOp<OP, Dims, Expr>, N>{\ 164 typedef CVQual PlaceHolder<CVQual TensorReductionOp<OP, Dims,Expr>, N> Type;\ 171 template <
typename Expr>
181 #endif // UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_PLACEHOLDER_EXPR_HPP #define OPEXPRCATEGORY(CVQual)
LeafCount used to counting terminal nodes. The total number of leaf nodes is used by MakePlaceHolderE...
utility::tuple::Tuple< ArgType > ArgsTuple
PlaceHolder is used to replace the TensorMap in the expression tree. PlaceHolder contains the order o...
#define SYCLREDUCTION(CVQual)
utility::tuple::Tuple< Arg1Type, Arg2Type > ArgsTuple
#define SELECTEXPR(CVQual)
static constexpr size_t I
#define TENSORMAPEXPR(CVQual)
PlaceHolderExpression< Arg, N >::Type ArgType
PlaceHolderExpression< Arg2, N >::Type Arg2Type
PlaceHolderExpression< Arg2, N-Arg3LeafCount >::Type Arg2Type
PlaceHolderExpression< Expr, TotalLeaves-1 >::Type Type
is a fixed-size collection of heterogeneous values Ts... - the types of the elements that the tuple ...
#define FORCEDEVAL(CVQual)
#define ASSIGNEXPR(CVQual)
template deduction for PlaceHolderExpression struct
Category< OP, T... > Type
PlaceHolderExpression< Arg1, N-Arg3LeafCount-Arg2LeafCount >::Type Arg1Type
utility::tuple::Tuple< Arg1Type, Arg2Type, Arg3Type > ArgsTuple
it is used to create the PlaceHolder expression. The PlaceHolder expression is a copy of expression t...
PlaceHolderExpression< Arg3, N >::Type Arg3Type
PlaceHolderExpression< Arg1, N-Arg2LeafCount >::Type Arg1Type