Fold away divs and mods in affine maps exploiting operand info during
canonicalization. This simplifies affine map applications such as the ones
below:
// Simple ones. affine.for %i = 0 to 32 { affine.load %A[%i floordiv 32] affine.load %A[%i mod 32] affine.load %A[2 * %i floordiv 64] affine.load %A[(%i mod 16) floordiv 16] ... } // Others. affine.for %i = -8 to 32 { // Will be simplified %A[0]. affine.store %cst, %A[2 + (%i - 96) floordiv 64] : memref<64xf32> }
Would exprs with rhs = 0 not already be rejected by the verifier?