]> git.unchartedbackwaters.co.uk Git - francis/ofc.git/commitdiff
Add some more work on the expression evaluation strategy.
authorFrancis Russell <francis@unchartedbackwaters.co.uk>
Fri, 24 Feb 2012 19:14:06 +0000 (19:14 +0000)
committerFrancis Russell <francis@unchartedbackwaters.co.uk>
Fri, 24 Feb 2012 19:14:06 +0000 (19:14 +0000)
docs/expression_strategy.txt

index 66ddf7d1b3a4c90d076269620773392c8cd0ee60..e5baae169caeca0515aea99546b87fa95aee25c3 100644 (file)
@@ -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.
+
+
+
+
+