Issues:
Some tests disabled in elements/indexexpr because of (at least 2) issues with lower stages
flattenIndexExpressions
Example statement that causes a bug: d(k, i) = (a(i, k) + b(j, i)) .* c(k, j);
The flatten stage extracted a(i, k) + b(j, i) as a temporary, as j is a reduction variable, a temporary tensor of dimensions i and k is made, which performs reduction on j too early. (The temporary should have dimensions i, j, and k, and reduction should only take place just before the reduction variable unscopes.
lowerIndexExpressions
Example statement that causes a bug: a(i, j) = b(i, i)
It triggers an assert in this stage because j does not appear on rhs. However this should be a valid expression.
Issues: Some tests disabled in
elements/indexexpr
because of (at least 2) issues with lower stagesflattenIndexExpressions
Example statement that causes a bug:d(k, i) = (a(i, k) + b(j, i)) .* c(k, j);
The flatten stage extracteda(i, k) + b(j, i)
as a temporary, asj
is a reduction variable, a temporary tensor of dimensionsi
andk
is made, which performs reduction onj
too early. (The temporary should have dimensionsi
,j
, andk
, and reduction should only take place just before the reduction variable unscopes.lowerIndexExpressions
Example statement that causes a bug:a(i, j) = b(i, i)
It triggers an assert in this stage becausej
does not appear on rhs. However this should be a valid expression.