26 #ifndef VISIONCPP_INCLUDE_FRAMEWORK_EXPR_TREE_NEIGHBOUR_OPS_STENCIL_WITH_FILTER_HPP_
27 #define VISIONCPP_INCLUDE_FRAMEWORK_EXPR_TREE_NEIGHBOUR_OPS_STENCIL_WITH_FILTER_HPP_
46 template <
typename Conv_OP,
size_t Halo_T,
size_t Halo_L,
size_t Halo_B,
47 size_t Halo_R,
typename LHS,
typename RHS,
size_t Cols,
size_t Rows,
48 size_t LfType,
size_t LVL>
52 using OutType =
typename Conv_OP::OutType;
58 static constexpr
size_t Level = LVL;
59 static constexpr
size_t LeafType = Type::LeafType;
72 RHS::SubExpressionEvaluationNeeded;
74 template <
typename TmpLHS,
typename TmpRHS>
77 Cols, Rows, LfType, LVL>;
112 template <
bool ForcedToExec,
size_t LC,
size_t LR,
size_t LCT,
size_t LRT,
122 return execute_expr<Stencil_Conds, ForcedToExec, ExprExchange<LHS, RHS>, LC,
124 lhs.template sub_expression_evaluation<Stencil_Conds, LC, LR, LCT, LRT>(
126 rhs.template sub_expression_evaluation<Stencil_Conds, LC, LR, LCT, LRT>(
135 template <
typename OP,
size_t Cols,
size_t Rows,
size_t LeafType,
typename LHS,
139 RHS::Type::Rows / 2, RHS::Type::Cols / 2, RHS::Type::Rows / 2,
140 RHS::Type::Cols / 2, LHS, RHS, Cols, Rows, LeafType,
145 RHS::Type::Rows / 2, RHS::Type::Cols / 2, RHS::Type::Rows / 2,
146 RHS::Type::Cols / 2, LHS, RHS, Cols, Rows, LeafType,
148 RHS>::Type::Level>(lhs, rhs);
153 template <
typename OP,
typename LHS,
typename RHS>
156 RHS::Type::Rows / 2, RHS::Type::Cols / 2, RHS::Type::Rows / 2,
157 RHS::Type::Cols / 2, LHS, RHS, LHS::Type::Cols, LHS::Type::Rows,
163 RHS::Type::Rows / 2, RHS::Type::Cols / 2, RHS::Type::Rows / 2,
164 RHS::Type::Cols / 2, LHS, RHS, LHS::Type::Cols, LHS::Type::Rows,
167 RHS>::Type::Level>(lhs, rhs);
172 template <
typename OP,
size_t Halo_T,
size_t Halo_L,
size_t Halo_B,
173 size_t Halo_R,
size_t Cols,
size_t Rows,
size_t LeafType,
174 typename LHS,
typename RHS>
177 Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LeafType,
182 Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LeafType,
184 RHS>::Type::Level>(lhs, rhs);
190 template <
typename OP,
size_t Halo_T,
size_t Halo_L,
size_t Halo_B,
191 size_t Halo_R,
typename LHS,
typename RHS>
194 Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, LHS::Type::Cols, LHS::Type::Rows,
200 Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, LHS::Type::Cols,
201 LHS::Type::Rows, LHS::Type::LeafType,
203 RHS>::Type::Level>(lhs, rhs);
static constexpr size_t Binary
auto execute_expr(NestedExpr nestedExpr, const DeviceT &dev) -> decltype(internal::IfExprExecNeeded< Conds, ParentConds, internal::expr_category::Unary, Expr, DeviceT >::template execute_expr< LC, LR, LCT, LRT >(nestedExpr, dev))
template deduction for IfExprExecNeeded when the expression category is unary
auto neighbour_operation(RHS rhs) -> internal::RDCN< internal::LocalUnaryOp< OP, typename RHS::OutType >, RHS, Cols, Rows, LeafType, 1+RHS::Level >
template deduction function for RDCN when it is used for NeighbourOP.
This class is used to encapsulate the local binary functor and the types of each operand in this func...
OutputMemory is used to deduce the output type of each node in the expression tree by using certain p...
The definition is in StnFilt file.
static constexpr size_t ND_Category
bool subexpr_execution_reseter
static constexpr size_t Level
static constexpr size_t Operation_type
static constexpr size_t Halo_Left
static constexpr bool Stencil_Conds
typename visioncpp::internal::OutputMemory< OutType, LfType, Cols, Rows, LVL >::Type Type
static constexpr bool has_out
auto sub_expression_evaluation(const DeviceT &dev) -> decltype(execute_expr< Stencil_Conds, ForcedToExec, ExprExchange< LHS, RHS >, LC, LR, LCT, LRT >(lhs.template sub_expression_evaluation< Stencil_Conds, LC, LR, LRT, LCT >(dev), rhs.template sub_expression_evaluation< Stencil_Conds, LC, LR, LRT, LCT >(dev), dev))
sub_expression_evaluation
static constexpr size_t Halo_Right
static constexpr size_t CThread
static constexpr size_t Halo_Top
static constexpr bool SubExpressionEvaluationNeeded
static constexpr size_t Halo_Butt
static constexpr size_t RThread
StnFilt(LHS lhsArg, RHS rhsArg)
typename Conv_OP::OutType OutType
static constexpr size_t LeafType