From: Francis Russell Date: Fri, 24 Feb 2012 19:14:06 +0000 (+0000) Subject: Add some more work on the expression evaluation strategy. X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=5c596d1fec0ebf30f80d2d986bba2e86b456501a;p=francis%2Fofc.git Add some more work on the expression evaluation strategy. --- diff --git a/docs/expression_strategy.txt b/docs/expression_strategy.txt index 66ddf7d..e5baae1 100644 --- a/docs/expression_strategy.txt +++ b/docs/expression_strategy.txt @@ -56,5 +56,44 @@ Code generation: Handling assignments: - The integrals_kinetic assignment is tricky since we only want to handle values in the sparsity pattern. - - Correct iteration over non-zero values is preferable + - Correct iteration over non-zero values is preferable. + +Predicates: + LowerBound(index) + UpperBound(index) + IsKnown(conditional) + Require(conditional) + where conditionals are (expression {<,==,>} expression) + +Expressions: + Expressions are integer or floating point + IntegerExpressions are {Constant, a+b, a-b, a*b, IntegerArrayAccess[IntegerExpression]} + FloatingPointExpressions are {Constant, a+b, a-b, a*b, a/b, FloatingPointArrayAccess[IntegerExpression]} + +Dimensionality of Expressions: + All variables on the rhs of an expression determine a unique instance in which it is valid. + +Reduction operations: + Disjoint reduction, we remove an index. + Summation reduction, we sum over an index. + + In disjoint reduction, we are removing an actual index. + In the summation reduction, we want to reduce over a derived index. + +Buffer allocation: + Buffers in our tree define explicit rhs indices. + We try to define explicit bounds and widths for the rhs indices. + + Reductions explictly name stored values. + We look for IsKnowns conditions on size of the buffer. + + For any buffer within some synthesized loop set + We need to determine the correct size. + Only iterative over approprate ranges. + Store the invertable index mapping. + + + + +