Go to the documentation of this file.
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>
44 struct PlaceHolderExpression;
46 template<
size_t N,
typename... Args>
47 struct CalculateIndex;
49 template<
size_t N,
typename Arg>
50 struct CalculateIndex<
N, 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 >
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>
172 struct createPlaceHolderExpression {
173 static const size_t TotalLeaves = LeafCount<Expr>::Count;
181 #endif // UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_PLACEHOLDER_EXPR_HPP
#define SYCLREDUCTION(CVQual)
static constexpr size_t I
#define SELECTEXPR(CVQual)
LeafCount used to counting terminal nodes. The total number of leaf nodes is used by MakePlaceHolderE...
PlaceHolderExpression< Expr, TotalLeaves - 1 >::Type Type
#define FORCEDEVAL(CVQual)
#define ASSIGNEXPR(CVQual)
#define TENSORMAPEXPR(CVQual)
it is used to create the PlaceHolder expression. The PlaceHolder expression is a copy of expression t...
static const size_t TotalLeaves
is a fixed-size collection of heterogeneous values
#define OPEXPRCATEGORY(CVQual)
control_box_rst
Author(s): Christoph Rösmann
autogenerated on Wed Mar 2 2022 00:07:05