Node in the expression parse tree. Every expression in ultimately represented by this class.
More...
Inherits ExprBase< ExprNode< A, N >, N >, and ltl::LTLIterator.
List of all members.
Public Types
- typedef A::value_type value_type
- the result data type of the parse tree node
- enum
Public Member Functions
Detailed Description
template<typename A, int N>
class ltl::ExprNode< A, N >
Node in the expression parse tree. Every expression in ultimately represented by this class.
This class represents a node in the parse tree of an expression. Any operation or operand is captured as a type ExprNode<Op,N>
, where Op
represents the operation or operand and N the number of dimensions. This way, there is a single data type ExprNode<>
associated with any parse tree element.
The operation or operand Op
are of the types ExprLiteralNode
ExprBinopNode
ExprUnopNode
MArrayIter
MergeExpr
ApplyExpr
ApplyExprBin
ConvolveExpr
Like all parse tree elements, this class implements the iterator interface. It forwards all iterator calls to the operation or operand it wraps.
Member Typedef Documentation
template<typename A, int N>
the result data type of the parse tree node
Member Enumeration Documentation
template<typename A, int N>
The number of dimensions.
- Enumerator:
-
template<typename A, int N>
The number of ltl::IndexIter index iterators in all the parse tree below this node.
- Enumerator:
-
template<typename A, int N>
The number of convolution operations in the parse tree below this node.
- Enumerator:
-
template<typename A, int N>
Is the whole parse tree below this node vectorizable.
- Enumerator:
-
anonymous enum [inherited] |
Constructor & Destructor Documentation
template<typename A, int N>
Member Function Documentation
template<typename A, int N>
Move all iterators in the parse tree below us forward. Slowest, but works for all expressions.
template<typename A, int N>
compute and return the value of the subexpression in the parse tree below us.
template<typename A, int N>
Move all iterators in the parse tree below us forward. Used in unrolling/combining the expression evaluation loops when possible.
template<typename A, int N>
template<typename A, int N>
template<typename A, int N>
template<typename A, int N>
template<typename A, int N>
template<typename A, int N>
Compute and return the value of the subexpression in the parse tree below us. Used in unrolling/combining the expression evaluation loops when possible.
template<typename A, int N>
template<typename A, int N>
template<typename A, int N>
Compute and return the value of the subexpression in the parse tree below us at an offset in dimension 1, 2, and/or 3. Used for evaluating convolutions
template<typename A, int N>
template<typename A, int N>
template<typename A, int N>
template<typename A, int N>
Return the width of the lower/upper boundary in dimension dim
to be left unevaluated. Zero in most cases except for convolutions, which do require padding of the half-width of the kernel.
template<typename A, int N>
template<typename A, int N>
bool ltl::ExprNode< A, N >::isStorageContiguous |
( |
void |
|
) |
const [inline] |
template<typename A, int N>
true if the innermost stride is unity
template<typename A, int N>
bool ltl::ExprNode< A, N >::isConformable |
( |
const Shape< N > & |
other |
) |
const [inline] |
true if we are conformable with another shape
template<typename A, int N>
template<typename A, int N>
template<typename A, int N>
template<typename A, int N>